index.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393
  1. layui.config({
  2. base: "../../../admin/js/layuiPlugins/"
  3. }).use(['form', 'layer', 'jquery', 'laypage', 'element', 'table', 'laydate', 'cascade'], function() {
  4. var form = layui.form,
  5. layer = layui.layer,
  6. laypage = layui.laypage,
  7. $ = layui.jquery,
  8. table = layui.table,
  9. element = layui.element,
  10. laydate = layui.laydate,
  11. cascade = layui.cascade;
  12. //自定义验证
  13. form.verify({
  14. namelength: [
  15. /^.{0,18}$/,
  16. "长度限制在0-18个字符噢"
  17. ]
  18. });
  19. //监听一级Tab切换
  20. element.on('tab(productTabBrief)', function(obj) {
  21. switch (obj.index) {
  22. case 0:
  23. tableVm.reload();
  24. break;
  25. }
  26. });
  27. var vm = function(obj) {
  28. var _this = this;
  29. _this.dataId = obj.dataId || 'dataListId'; //数据表ID
  30. _this.elem = obj.elem || 'dataListBox'; //数据表容器
  31. _this.url = obj.url || ''; //数据表接口URL
  32. _this.page = obj.page; //分页
  33. _this.limit = obj.limit;
  34. _this.cols = obj.cols || []; //表头
  35. _this.done = obj.done || ''; //表头
  36. _this.formObj = {}; //当前表单对象
  37. _this.searchParameter = {}; //搜索参数
  38. _this.config = {};
  39. _this.where = obj.where;
  40. _this.config.dateTime = obj.dateTime;
  41. _this.dateTime = {
  42. year: 365 * 1 * 24 * 3600 * 1000,
  43. month: 30 * 1 * 24 * 3600 * 1000,
  44. day: 24 * 3600 * 1000,
  45. }
  46. _this.main();
  47. };
  48. //入口函数
  49. vm.prototype.main = function() {
  50. var _this = this;
  51. _this.initializationData()
  52. };
  53. //初始化表格
  54. vm.prototype.initializationData = function() {
  55. var _this = this;
  56. _this.dataListObj = table.render({
  57. id: _this.dataId,
  58. elem: _this.elem,
  59. url: _this.url,
  60. page: _this.page,
  61. cols: _this.cols,
  62. done: _this.done,
  63. where: $.extend(_this.where, _this.searchParameter),
  64. limit: _this.limit,
  65. });
  66. };
  67. //重新加载数据表
  68. vm.prototype.reload = function() {
  69. var _this = this;
  70. _this.dataListObj = table.reload(_this.dataId, { //执行重载数据表
  71. where: _this.searchParameter,
  72. page: {
  73. curr: 1
  74. }
  75. });
  76. };
  77. //初始化组件
  78. vm.prototype.initializationModule = function(obj) {
  79. var _this = this;
  80. $.ajax({
  81. url: obj.url,
  82. data: obj.data,
  83. success: function(res) {
  84. var html = '<option value="">' + obj.prompt + '</option>';
  85. for (var i in res.data) {
  86. html += '<option value="' + res.data[i].id + '">' + res.data[i].name +
  87. '</option>';
  88. }
  89. $(obj.elem).html(html);
  90. form.render();
  91. }
  92. });
  93. };
  94. //初始化事件监听
  95. vm.prototype.eventMonitor = function(id) {
  96. var _this = this;
  97. //监听搜索表单事件
  98. if (typeof(_this.formEvent) == "object") {
  99. form.on('submit(' + _this.formEvent + ')', function(obj) {
  100. _this.formInfoSearch(_this.formEvent, obj);
  101. return false;
  102. });
  103. }
  104. return _this;
  105. };
  106. //搜索处理函数
  107. vm.prototype.formInfoSearch = function(id, obj) {
  108. var _this = this;
  109. _this.searchParameter = obj.field;
  110. if (obj.field.dateRange) {
  111. _this.searchParameter.startDate = obj.field.dateRange.substring(0, 10);
  112. _this.searchParameter.endDate = obj.field.dateRange.substring(13, 23);
  113. }else{
  114. _this.searchParameter.startDate = "";
  115. _this.searchParameter.endDate = "";
  116. }
  117. delete _this.searchParameter.dateRange;
  118. _this.reload();
  119. };
  120. //渲染时间选择器
  121. vm.prototype.showTimeSelect = function() {
  122. var _this = this;
  123. laydate.render({
  124. elem: _this.datePicker,
  125. range: true
  126. });
  127. };
  128. //jquer事件绑定
  129. vm.prototype.$event = function() {
  130. var _this = this;
  131. $(_this.dataExportBtn).on("click", function(e) {
  132. _this.dataExport();
  133. });
  134. };
  135. //数据导出处理函数
  136. vm.prototype.dataExport = function() {
  137. var _this = this;
  138. _this.downloadParameter = '?';
  139. for (var i in _this.dataListObj.config.where) {
  140. _this.downloadParameter += "&" + i + '=' + _this.dataListObj.config.where[i];
  141. }
  142. _this.startDownload();
  143. };
  144. //启动下载
  145. vm.prototype.startDownload = function() {
  146. var _this = this;
  147. window.open(window.hywa.config.href + window.hywa.config.port[_this.dataDownload] + _this.downloadParameter);
  148. };
  149. // 表格列表
  150. var tableVm = new vm({
  151. dataId: 'purchaseOrderTableData',
  152. elem: '#purchaseOrderTableData',
  153. url: 'purchaseOrderTableUrl',
  154. dateTime: {
  155. year: 1,
  156. day: 1,
  157. },
  158. page: true,
  159. cols: [
  160. [{
  161. field: 'purchaseOrderNumber',
  162. title: '采购订单号',
  163. minWidth: 220,
  164. align: 'center',
  165. fixed: 'left',
  166. }, {
  167. field: 'createTime',
  168. title: '下单时间',
  169. align: 'center',
  170. minWidth: 180
  171. }, {
  172. field: 'orderAmount',
  173. title: '订单金额(元)',
  174. align: 'center',
  175. minWidth:140
  176. }, {
  177. field: 'payWay',
  178. title: '支付方式',
  179. align: 'center',
  180. templet: "<span>{{ d.payWay == 1 ? '微信支付' : '其它' }}</span>",
  181. minWidth:120
  182. }, {
  183. field: 'realPay',
  184. title: '支付金额(元)',
  185. align: 'center',
  186. minWidth:140
  187. }, {
  188. field: 'payNumber',
  189. title: '支付订单编号',
  190. align: 'center',
  191. minWidth:220
  192. }, {
  193. field: 'name',
  194. title: '用户名',
  195. align: 'center',
  196. minWidth:120
  197. }, {
  198. field: 'status',
  199. title: '订单状态',
  200. align: 'center',
  201. templet: '#orderStatusTpl',
  202. minWidth:80
  203. }, {
  204. field: 'operating',
  205. title: '操作',
  206. toolbar: "#operatingTool",
  207. align: 'center',
  208. fixed: 'right',
  209. minWidth: 80
  210. }]
  211. ] //设置表头
  212. ,
  213. done: function(res) {
  214. setTimeout(function() {
  215. table.resize('purchaseOrderTableData');
  216. }, 100)
  217. if (res.data.length === 0) {
  218. flowOrderRender()
  219. } else {
  220. flowOrderRender(res.data[0].id)
  221. }
  222. }
  223. });
  224. //初始化事件监听
  225. tableVm.formEvent = ['purchaseOrderTableSearch'];
  226. tableVm.eventMonitor();
  227. tableVm.$event();
  228. tableVm.datePicker = '#datePicker'; //时间容器
  229. tableVm.showTimeSelect();
  230. function flowOrderRender(id) {
  231. table.render({
  232. id: 'flowOrderTableData',
  233. elem: '#flowOrderTableData',
  234. data:[],
  235. page: false,
  236. cols: [
  237. [{
  238. field: 'waterNumber',
  239. title: '流转订单',
  240. align: 'center',
  241. minWidth:60,
  242. fixed: 'left',
  243. }, {
  244. field: 'productName',
  245. title: '商品名称',
  246. align: 'center',
  247. minWidth:160,
  248. fixed: 'left',
  249. }, {
  250. field: 'specification',
  251. title: '规格',
  252. align: 'center',
  253. minWidth:60
  254. }, {
  255. field: 'amount',
  256. title: '数量',
  257. align: 'center',
  258. minWidth:60
  259. }, {
  260. field: 'price',
  261. title: '金额(元)',
  262. align: 'center',
  263. minWidth:80
  264. }, {
  265. field: 'sellerName',
  266. title: '供应商',
  267. align: 'center',
  268. minWidth:140
  269. }, {
  270. field: 'customerNote',
  271. title: '客户备注',
  272. align: 'center',
  273. minWidth:140
  274. }, {
  275. field: 'status',
  276. title: '备货状态',
  277. align: 'center',
  278. templet: '#flowerOrderStatusTpl',
  279. minWidth:140,
  280. fixed: 'right',
  281. }]
  282. ]
  283. });
  284. }
  285. //监听行单击事件
  286. table.on('row(' + tableVm.dataId + ')', function(obj) {
  287. obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
  288. table.reload('flowOrderTableData',{
  289. url:'flowOrderTableUrl?orderId=' + obj.data.id
  290. });
  291. });
  292. //注册按钮事件
  293. $('.layui-btn[data-type]').on('click', function() {
  294. var type = $(this).data('type');
  295. activeByType(type);
  296. });
  297. //激活事件
  298. var activeByType = function(type, arg) {
  299. if (arguments.length === 2) {
  300. active[type] ? active[type].call(this, arg) : '';
  301. } else {
  302. active[type] ? active[type].call(this) : '';
  303. }
  304. }
  305. //定义事件集合
  306. var active = {
  307. add: function() {
  308. layer.open({
  309. type: 2,
  310. title: "新增",
  311. area: ['600px', '500px'],
  312. maxmin: true,
  313. content: 'add_change.html',
  314. btn: ['确定', '取消'],
  315. yes: function(index, layero) {
  316. //点击确认触发 iframe 内容中的按钮提交
  317. var submit = layero.find('iframe').contents().find("#formSubmit");
  318. submit.click();
  319. },
  320. });
  321. },
  322. updateRow: function(obj) {
  323. var oldData = table.cache[layTableId];
  324. for (var i = 0, row; i < oldData.length; i++) {
  325. row = oldData[i];
  326. if (row.tempId == obj.tempId) {
  327. $.extend(oldData[i], obj);
  328. return;
  329. }
  330. }
  331. tableIns.reload({
  332. data: oldData
  333. });
  334. }
  335. }
  336. //可用性修改
  337. form.on('switch(isUserble)', function(data) {
  338. console.log('sdhahdiehie', data.elem.title)
  339. var field = {
  340. id: data.elem.id,
  341. isUserble: '',
  342. isRecommend: parseInt(data.elem.title)
  343. }
  344. if (data.elem.checked == false) {
  345. field.isUserble = 0
  346. } else {
  347. field.isUserble = 1
  348. }
  349. $.ajax({
  350. type: 'post',
  351. url: 'addImgTextContent',
  352. data: JSON.stringify(field),
  353. contentType: 'application/json',
  354. success: function(res) {
  355. if (!(res.code - 0)) {
  356. layer.msg(res.msg, {
  357. icon: 1
  358. });
  359. tableVm.reload();
  360. } else {
  361. data.elem.checked = !data.elem.checked;
  362. form.render();
  363. }
  364. }
  365. });
  366. });
  367. //工具条处理
  368. function toolOperating(name, obj) {
  369. if (obj.event === 'detail') {
  370. let index = layer.open({
  371. type: 2,
  372. title: "详情",
  373. area: ['1200px', '700px'],
  374. maxmin: true,
  375. content: 'detail.html?id=' + obj.data.id,
  376. //btn: ['确定', '取消'],
  377. yes: function(index, layero) {
  378. var submit = layero.find('iframe').contents().find("#formSubmit");
  379. submit.click();
  380. },
  381. });
  382. layer.full(index);
  383. }
  384. }
  385. //监听事件条
  386. table.on('tool(' + tableVm.dataId + ')', function(obj) {
  387. toolOperating(tableVm.dataId, obj);
  388. });
  389. });