index.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. ;
  2. layui.config({
  3. base: "../../../admin/js/layuiPlugins/"
  4. }).use(['form', 'layer', 'jquery', 'laypage', 'element', 'table', 'laydate', 'laytpl', 'cascade'], function() {
  5. var form = layui.form,
  6. layer = layui.layer,
  7. laytpl = layui.laytpl,
  8. laypage = layui.laypage,
  9. $ = layui.jquery,
  10. table = layui.table,
  11. element = layui.element,
  12. laydate = layui.laydate,
  13. cascade = layui.cascade;
  14. //自定义验证
  15. form.verify({
  16. namelength: [
  17. /^.{0,18}$/,
  18. "长度限制在0-18个字符噢"
  19. ]
  20. });
  21. //监听一级Tab切换
  22. element.on('tab(tabBrief)', function(obj) {
  23. switch (obj.index) {
  24. case 0:
  25. tradeTableVm.reload();
  26. break;
  27. }
  28. });
  29. var vm = function(obj) {
  30. var _this = this;
  31. _this.dataId = obj.dataId || 'dataListId'; //数据表ID
  32. _this.elem = obj.elem || 'dataListBox'; //数据表容器
  33. _this.toolbar = obj.toolbar || '';
  34. _this.url = obj.url || ''; //数据表接口URL
  35. _this.page = obj.page; //分页
  36. _this.limit = obj.limit;
  37. _this.cols = obj.cols || []; //表头
  38. _this.done = obj.done || ''; //表头
  39. _this.formObj = {}; //当前表单对象
  40. _this.searchParameter = {}; //搜索参数
  41. _this.config = {};
  42. _this.where = obj.where;
  43. _this.config.dateTime = obj.dateTime;
  44. _this.dateTime = {
  45. year: 365 * 1 * 24 * 3600 * 1000,
  46. month: 30 * 1 * 24 * 3600 * 1000,
  47. day: 24 * 3600 * 1000,
  48. }
  49. _this.main();
  50. };
  51. //入口函数
  52. vm.prototype.main = function() {
  53. var _this = this;
  54. _this.initializationData()
  55. };
  56. //初始化表格
  57. vm.prototype.initializationData = function() {
  58. var _this = this;
  59. _this.dataListObj = table.render({
  60. id: _this.dataId,
  61. elem: _this.elem,
  62. toolbar: _this.toolbar,
  63. defaultToolbar: ['filter'],
  64. url: _this.url,
  65. page: _this.page,
  66. cols: _this.cols,
  67. done: _this.done,
  68. where: $.extend(_this.where, _this.searchParameter),
  69. limit: _this.limit,
  70. });
  71. };
  72. //重新加载数据表
  73. vm.prototype.reload = function() {
  74. var _this = this;
  75. _this.dataListObj = table.reload(_this.dataId, { //执行重载数据表
  76. where: _this.searchParameter,
  77. page: {
  78. curr: 1
  79. }
  80. });
  81. };
  82. //初始化组件
  83. vm.prototype.initializationModule = function(obj) {
  84. var _this = this;
  85. $.ajax({
  86. url: obj.url,
  87. data: obj.data,
  88. success: function(res) {
  89. var html = '<option value="">' + obj.prompt + '</option>';
  90. for (var i in res.data) {
  91. html += '<option value="' + res.data[i].id + '">' + res.data[i].name +
  92. '</option>';
  93. }
  94. $(obj.elem).html(html);
  95. form.render();
  96. }
  97. });
  98. };
  99. //初始化事件监听
  100. vm.prototype.eventMonitor = function(id) {
  101. var _this = this;
  102. //监听搜索表单事件
  103. if (typeof(_this.formEvent) == "object") {
  104. form.on('submit(' + _this.formEvent + ')', function(obj) {
  105. _this.formInfoSearch(_this.formEvent, obj);
  106. return false;
  107. });
  108. }
  109. return _this;
  110. };
  111. //搜索处理函数
  112. vm.prototype.formInfoSearch = function(id, obj) {
  113. var _this = this;
  114. _this.searchParameter = obj.field;
  115. if (obj.field.dateRange) {
  116. _this.searchParameter.beginTime = obj.field.dateRange.substring(0, 10);
  117. _this.searchParameter.endTime = obj.field.dateRange.substring(13, 23);
  118. }else{
  119. _this.searchParameter.beginTime = "";
  120. _this.searchParameter.endTime = "";
  121. }
  122. delete _this.searchParameter.dateRange;
  123. _this.reload();
  124. };
  125. //渲染时间选择器
  126. vm.prototype.showTimeSelect = function() {
  127. var _this = this;
  128. laydate.render({
  129. elem: _this.datePicker,
  130. range: true,
  131. max: 30
  132. });
  133. };
  134. //jquer事件绑定
  135. vm.prototype.$event = function() {
  136. var _this = this;
  137. //监听头部工具栏
  138. table.on('toolbar(' + _this.dataId + ')', function(obj) {
  139. switch (obj.event) {
  140. case 'export':
  141. _this.dataExport();
  142. break;
  143. };
  144. });
  145. };
  146. //数据导出处理函数
  147. vm.prototype.dataExport = function() {
  148. var _this = this;
  149. _this.downloadParameter = '?';
  150. for (var i in _this.dataListObj.config.where) {
  151. _this.downloadParameter += "&" + i + '=' + _this.dataListObj.config.where[i];
  152. }
  153. _this.startDownload();
  154. };
  155. //启动下载
  156. vm.prototype.startDownload = function() {
  157. var _this = this;
  158. window.open(window.hywa.config.href + window.hywa.config.port[_this.dataDownload] + _this.downloadParameter);
  159. };
  160. //模板引擎
  161. function typeTpl(obj) {
  162. laytpl(selectTpl.innerHTML).render(obj, function(html) {
  163. $(obj.elem).html(html);
  164. form.render();
  165. });
  166. }
  167. // 交易统计
  168. var tradeTableVm = new vm({
  169. dataId: 'tradeTableData',
  170. elem: '#tradeTableData',
  171. url: 'tradeTableUrl',
  172. toolbar: '#tradeToolbar',
  173. dateTime: {
  174. year: 1,
  175. day: 1,
  176. },
  177. page: true,
  178. cols: [
  179. [{
  180. field: 'payTime',
  181. title: '日期',
  182. align: 'center'
  183. }, {
  184. field: 'tradingAmount',
  185. title: '交易流水(元)',
  186. align: 'center'
  187. }, {
  188. field: 'numberOfOrders',
  189. title: '有效单数',
  190. align: 'center'
  191. }, {
  192. field: 'numberOfSellers',
  193. title: '供货商家数',
  194. align: 'center'
  195. }, {
  196. field: 'numberOfUsers',
  197. title: '购买用户数',
  198. align: 'center'
  199. }]
  200. ],
  201. done: function(res) {
  202. $.ajax({
  203. type: 'get',
  204. url: "tradeTotalUrl",
  205. data: {
  206. beginTime: tradeTableVm.searchParameter.beginTime,
  207. endTime: tradeTableVm.searchParameter.endTime,
  208. },
  209. success: function(res) {
  210. $('#tradeCounter').text('合计:' + (res.data[0].amount || 0) + '元,' + (res.data[0].totalOrders || 0) + '单');
  211. },
  212. })
  213. if (!layui.data('auth').data.output) {
  214. $('.output-btn').hide();
  215. }
  216. }
  217. });
  218. //初始化事件监听
  219. tradeTableVm.formEvent = ['tradeTableSearch'];
  220. tradeTableVm.eventMonitor();
  221. tradeTableVm.$event();
  222. tradeTableVm.datePicker = '#datePicker'; //时间容器
  223. tradeTableVm.showTimeSelect();
  224. tradeTableVm.dataDownload = 'tradeExportUrl';
  225. });