TradeRecord_Admin.js 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678
  1. var ExcelData;
  2. function ConfirmImport() {
  3. $.ajax({
  4. type: "POST",
  5. url: "/Admin/TradeRecord/Import?r=" + Math.random(1),
  6. data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
  7. dataType: "text",
  8. success: function (data) {
  9. if (data == "success") {
  10. layer.msg("导入成功", { time: 2000 }, function () {
  11. window.location.reload();
  12. });
  13. } else {
  14. layer.msg(data);
  15. }
  16. }
  17. });
  18. }
  19. function ConfirmImportTrade() {
  20. $.ajax({
  21. type: "POST",
  22. url: "/Admin/TradeRecord/ImportTrade?r=" + Math.random(1),
  23. data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
  24. dataType: "text",
  25. success: function (data) {
  26. if (data == "success") {
  27. layer.msg("导入成功", { time: 2000 }, function () {
  28. window.location.reload();
  29. });
  30. } else {
  31. layer.msg(data);
  32. }
  33. }
  34. });
  35. }
  36. function CheckImport(table, key, loadindex, index) {
  37. $.ajax({
  38. url: "/Admin/TradeRecord/CheckImportV2?r=" + Math.random(1),
  39. data: "key=" + key,
  40. dataType: "json",
  41. success: function (data) {
  42. console.log(data);
  43. if (data.status == 1) {
  44. layer.msg("成功操作" + data.data + "条", {
  45. time: 2000
  46. }, function () {
  47. layer.close(index); //关闭弹层
  48. layer.close(loadindex);
  49. table.reload('LAY-list-manage'); //数据刷新
  50. });
  51. } else if (data.status == 2) {
  52. layer.close(index); //关闭弹层
  53. layer.close(loadindex);
  54. var content = '';
  55. for (var i = 0; i < data.errList.length; i++) {
  56. content += data.errList[i] + '<br/>'
  57. }
  58. layer.alert(content);
  59. } else {
  60. layer.msg(data.data, {
  61. time: 1000
  62. }, function () {
  63. CheckImport(table, key, loadindex, index);
  64. });
  65. }
  66. }
  67. });
  68. }
  69. var excel;
  70. layui.config({
  71. base: '/layuiadmin/' //静态资源所在路径
  72. }).extend({
  73. myexcel: 'layui/lay/modules/excel',
  74. index: 'lib/index' //主入口模块
  75. }).use(['index', 'table', 'excel', 'laydate'], function () {
  76. var $ = layui.$
  77. , form = layui.form
  78. , table = layui.table;
  79. //- 筛选条件-日期
  80. var laydate = layui.laydate;
  81. var layCreateDate = laydate.render({
  82. elem: '#CreateDate',
  83. type: 'date',
  84. range: true,
  85. trigger: 'click',
  86. change: function (value, date, endDate) {
  87. var op = true;
  88. if (date.year == endDate.year && endDate.month - date.month <= 1) {
  89. if (endDate.month - date.month == 1 && endDate.date > date.date) {
  90. op = false;
  91. layCreateDate.hint('日期范围请不要超过1个月');
  92. setTimeout(function () {
  93. $(".laydate-btns-confirm").addClass("laydate-disabled");
  94. }, 1);
  95. }
  96. } else {
  97. op = false;
  98. layCreateDate.hint('日期范围请不要超过1个月');
  99. setTimeout(function () {
  100. $(".laydate-btns-confirm").addClass("laydate-disabled");
  101. }, 1);
  102. }
  103. if (op) {
  104. $('#CreateDate').val(value);
  105. }
  106. }
  107. });
  108. var layTradeDate = laydate.render({
  109. elem: '#TradeDate',
  110. trigger: 'click',
  111. type: 'date',
  112. range: true,
  113. change: function (value, date, endDate) {
  114. var op = true;
  115. if (date.year == endDate.year && endDate.month - date.month <= 2) {
  116. if (endDate.month - date.month == 2 && endDate.date > date.date) {
  117. op = false;
  118. layTradeDate.hint('日期范围请不要超过2个月');
  119. setTimeout(function () {
  120. $(".laydate-btns-confirm").addClass("laydate-disabled");
  121. }, 1);
  122. }
  123. } else {
  124. op = false;
  125. layTradeDate.hint('日期范围请不要超过2个月');
  126. setTimeout(function () {
  127. $(".laydate-btns-confirm").addClass("laydate-disabled");
  128. }, 1);
  129. }
  130. if (op) {
  131. $('#TradeDate').val(value);
  132. }
  133. }
  134. });
  135. //excel导入
  136. excel = layui.excel;
  137. $('#ExcelFile').change(function (e) {
  138. var files = e.target.files;
  139. excel.importExcel(files, {}, function (data) {
  140. ExcelData = data[0].sheet1;
  141. });
  142. });
  143. //监听单元格编辑
  144. table.on('edit(LAY-list-manage)', function (obj) {
  145. var value = obj.value //得到修改后的值
  146. , data = obj.data //得到所在行所有键值
  147. , field = obj.field; //得到字段
  148. if (field == "Sort") {
  149. $.ajax({
  150. type: "POST",
  151. url: "/Admin/TradeRecord/Sort?r=" + Math.random(1),
  152. data: "Id=" + data.Id + "&Sort=" + value,
  153. dataType: "text",
  154. success: function (data) {
  155. }
  156. });
  157. }
  158. });
  159. //列表数据
  160. table.render({
  161. elem: '#LAY-list-manage'
  162. , url: '/Admin/TradeRecord/IndexData' //模拟接口
  163. , cols: [[
  164. { type: 'checkbox', fixed: 'left' }
  165. , { field: 'MakerCode', width: 200, title: '创客编码', sort: true }
  166. , { field: 'RealName', width: 200, title: '创客姓名', sort: true }
  167. // , { field: 'TopMakerCode', width: 200, title: '顶级创客编码', sort: true }
  168. // , { field: 'TopRealName', width: 200, title: '顶级创客名称', sort: true }
  169. , { field: 'MerchantNo', width: 200, title: '商户编号', sort: true }
  170. , { field: 'MerchantName', width: 200, title: '商户名称', sort: true }
  171. , { field: 'MerMakerCode', width: 200, title: '商户直属创客编号', sort: true }
  172. , { field: 'MerRealName', width: 200, title: '商户直属创客姓名', sort: true }
  173. , { field: 'MerNo', width: 200, title: '快钱商户编号', sort: true }
  174. , { field: 'MerBuddyType', width: 200, title: '商户创客类型', sort: true }
  175. , { field: 'SnNo', width: 200, title: '快钱SN号', sort: true }
  176. , { field: 'MerHelpFlag', width: 200, title: '是否属于扶持周期内商户', sort: true }
  177. , { field: 'HelpMonthCount', width: 200, title: '扶持第几个月', sort: true }
  178. // ,{field:'TradeDate', width: 200, title:'交易日期', sort: true}
  179. , { field: 'CreateDate', width: 200, title: '交易日期', sort: true }
  180. , { field: 'TradeSerialNo', width: 200, title: '交易流水号', sort: true }
  181. , { field: 'TradeAmount', width: 200, title: '交易金额(元)', sort: true }
  182. , { field: 'BankCardType', width: 200, title: '银行卡类型', sort: true }
  183. , { field: 'CapFlag', width: 200, title: '借记卡封顶交易标志', sort: true }
  184. , { field: 'QrPayFlag', width: 200, title: '云闪付标识', sort: true }
  185. , { field: 'DirectFlag', width: 200, title: '是否直营', sort: true }
  186. ]]
  187. , where: {
  188. BrandId: BrandId
  189. }
  190. , page: true
  191. , limit: 30
  192. , height: 'full-' + String($('.layui-card-header').height() + 130)
  193. , text: '对不起,加载出现异常!'
  194. , done: function (res, curr, count) {
  195. $("#TotalTrade0").text(res.other.TotalTrade0);
  196. $("#TotalTrade1").text(res.other.TotalTrade1);
  197. $(".layui-none").text("无数据");
  198. }
  199. });
  200. //监听工具条
  201. table.on('tool(LAY-list-manage)', function (obj) {
  202. var data = obj.data;
  203. if (obj.event === 'del') {
  204. var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
  205. $.ajax({
  206. type: "POST",
  207. url: "/Admin/TradeRecord/Delete?r=" + Math.random(1),
  208. data: "Id=" + data.Id,
  209. dataType: "text",
  210. success: function (data) {
  211. if (data == "success") {
  212. obj.del();
  213. layer.close(index);
  214. } else {
  215. parent.layer.msg(data);
  216. }
  217. }
  218. });
  219. });
  220. } else if (obj.event === 'edit') {
  221. var tr = $(obj.tr);
  222. var perContent = layer.open({
  223. type: 2
  224. , title: '交易记录-编辑'
  225. , content: 'Edit?Id=' + data.Id + ''
  226. , maxmin: true
  227. , area: ['500px', '450px']
  228. , btn: ['确定', '取消']
  229. , yes: function (index, layero) {
  230. var iframeWindow = window['layui-layer-iframe' + index]
  231. , submitID = 'LAY-list-front-submit'
  232. , submit = layero.find('iframe').contents().find('#' + submitID);
  233. setTimeout(function () {
  234. layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
  235. var errObj = $(this).find('.layui-form-danger');
  236. if (errObj.length > 0) {
  237. iframeWindow.element.tabChange('mytabbar', String(i + 1));
  238. submit.click();
  239. }
  240. });
  241. }, 300);
  242. //监听提交
  243. iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
  244. var field = data.field; //获取提交的字段
  245. var userdata = "";
  246. for (var prop in field) {
  247. userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
  248. }
  249. //提交 Ajax 成功后,静态更新表格中的数据
  250. //$.ajax({});
  251. $.ajax({
  252. type: "POST",
  253. url: "/Admin/TradeRecord/Edit?r=" + Math.random(1),
  254. data: userdata,
  255. dataType: "text",
  256. success: function (data) {
  257. layer.close(index); //关闭弹层
  258. if (data == "success") {
  259. table.reload('LAY-list-manage'); //数据刷新
  260. } else {
  261. layer.msg(data);
  262. }
  263. }
  264. });
  265. });
  266. submit.trigger('click');
  267. }
  268. , success: function (layero, index) {
  269. }
  270. });
  271. layer.full(perContent);
  272. }
  273. });
  274. //监听搜索
  275. form.on('submit(LAY-list-front-search)', function (data) {
  276. var field = data.field;
  277. //执行重载
  278. table.reload('LAY-list-manage', {
  279. where: field,
  280. page: {
  281. curr: 1
  282. }
  283. });
  284. });
  285. form.on('submit(LAY-list-front-searchall)', function (data) {
  286. table.reload('LAY-list-manage', {
  287. where: null,
  288. page: {
  289. curr: 1
  290. }
  291. });
  292. });
  293. //事件
  294. var active = {
  295. batchdel: function () {
  296. var checkStatus = table.checkStatus('LAY-list-manage')
  297. , data = checkStatus.data; //得到选中的数据
  298. if (data.length < 1) {
  299. parent.layer.msg("请选择要删除的项");
  300. } else {
  301. var ids = "";
  302. $.each(data, function (index, value) {
  303. ids += data[index].Id + ",";
  304. });
  305. ids = ids.substring(0, ids.length - 1);
  306. var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
  307. $.ajax({
  308. type: "POST",
  309. url: "/Admin/TradeRecord/Delete?r=" + Math.random(1),
  310. data: "Id=" + ids,
  311. dataType: "text",
  312. success: function (data) {
  313. layer.close(index);
  314. if (data == "success") {
  315. table.reload('LAY-list-manage');
  316. } else {
  317. layer.msg(data);
  318. }
  319. }
  320. });
  321. });
  322. }
  323. }
  324. , add: function () {
  325. var perContent = layer.open({
  326. type: 2
  327. , title: '交易记录-添加'
  328. , content: 'Add'
  329. , maxmin: true
  330. , area: ['500px', '450px']
  331. , btn: ['确定', '取消']
  332. , yes: function (index, layero) {
  333. var iframeWindow = window['layui-layer-iframe' + index]
  334. , submitID = 'LAY-list-front-submit'
  335. , submit = layero.find('iframe').contents().find('#' + submitID);
  336. setTimeout(function () {
  337. layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
  338. var errObj = $(this).find('.layui-form-danger');
  339. if (errObj.length > 0) {
  340. iframeWindow.element.tabChange('mytabbar', String(i + 1));
  341. submit.click();
  342. }
  343. });
  344. }, 300);
  345. //监听提交
  346. iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
  347. var field = data.field; //获取提交的字段
  348. var userdata = "";
  349. for (var prop in field) {
  350. userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
  351. }
  352. //提交 Ajax 成功后,静态更新表格中的数据
  353. //$.ajax({});
  354. $.ajax({
  355. type: "POST",
  356. url: "/Admin/TradeRecord/Add?r=" + Math.random(1),
  357. data: userdata,
  358. dataType: "text",
  359. success: function (data) {
  360. layer.close(index); //关闭弹层
  361. if (data == "success") {
  362. table.reload('LAY-list-manage'); //数据刷新
  363. } else {
  364. layer.msg(data);
  365. }
  366. }
  367. });
  368. });
  369. submit.trigger('click');
  370. }
  371. });
  372. layer.full(perContent);
  373. }
  374. , Import: function () {
  375. // var perContent = layer.open({
  376. // type: 2,
  377. // title: '导激活',
  378. // content: 'Import',
  379. // maxmin: true,
  380. // area: ['650px', '350px'],
  381. // btn: ['确定', '取消'],
  382. // yes: function (index, layero) {
  383. // var iframeWindow = window['layui-layer-iframe' + index],
  384. // submitID = 'LAY-list-front-submit',
  385. // submit = layero.find('iframe').contents().find('#' + submitID);
  386. // //监听提交
  387. // iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
  388. // var field = data.field; //获取提交的字段
  389. // var userdata = "";
  390. // for (var prop in field) {
  391. // userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
  392. // }
  393. // //提交 Ajax 成功后,静态更新表格中的数据
  394. // //$.ajax({});
  395. // var loadindex = layer.load(1, {
  396. // shade: [0.5, '#000']
  397. // });
  398. // $.ajax({
  399. // type: "POST",
  400. // url: "/Admin/TradeRecord/ImportPost?r=" + Math.random(1),
  401. // data: userdata,
  402. // dataType: "text",
  403. // success: function (data) {
  404. // layer.close(loadindex);
  405. // if (data == 'success') {
  406. // layer.msg('导入成功', {time:2000}, function(){
  407. // window.location.reload();
  408. // });
  409. // } else {
  410. // layer.msg(data);
  411. // }
  412. // }
  413. // });
  414. // });
  415. // submit.trigger('click');
  416. // }
  417. // });
  418. var perContent = layer.open({
  419. type: 2,
  420. title: '导激活',
  421. content: 'ImportTrade?ExcelKind=1',
  422. maxmin: true,
  423. area: ['650px', '350px'],
  424. btn: ['确定', '取消'],
  425. yes: function (index, layero) {
  426. var iframeWindow = window['layui-layer-iframe' + index],
  427. submitID = 'LAY-list-front-submit',
  428. submit = layero.find('iframe').contents().find('#' + submitID);
  429. //监听提交
  430. iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
  431. var field = data.field; //获取提交的字段
  432. var userdata = "";
  433. for (var prop in field) {
  434. userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
  435. }
  436. //提交 Ajax 成功后,静态更新表格中的数据
  437. //$.ajax({});
  438. var loadindex = layer.load(1, {
  439. shade: [0.5, '#000']
  440. });
  441. $.ajax({
  442. type: "POST",
  443. url: "/Admin/TradeRecord/ImportByQueuePost?r=" + Math.random(1),
  444. data: userdata,
  445. dataType: "text",
  446. success: function (data) {
  447. if (data.indexOf("success") == 0) {
  448. var datalist = data.split('|');
  449. var key = datalist[1];
  450. CheckImport(table, key, loadindex, index);
  451. } else {
  452. layer.msg(data);
  453. }
  454. }
  455. });
  456. });
  457. submit.trigger('click');
  458. }
  459. });
  460. }
  461. , ImportTrade: function () {
  462. // var perContent = layer.open({
  463. // type: 2,
  464. // title: '导交易',
  465. // content: 'ImportTrade',
  466. // maxmin: true,
  467. // area: ['650px', '350px'],
  468. // btn: ['确定', '取消'],
  469. // yes: function (index, layero) {
  470. // var iframeWindow = window['layui-layer-iframe' + index],
  471. // submitID = 'LAY-list-front-submit',
  472. // submit = layero.find('iframe').contents().find('#' + submitID);
  473. // //监听提交
  474. // iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
  475. // var field = data.field; //获取提交的字段
  476. // var userdata = "";
  477. // for (var prop in field) {
  478. // userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
  479. // }
  480. // //提交 Ajax 成功后,静态更新表格中的数据
  481. // //$.ajax({});
  482. // var loadindex = layer.load(1, {
  483. // shade: [0.5, '#000']
  484. // });
  485. // $.ajax({
  486. // type: "POST",
  487. // url: "/Admin/TradeRecord/ImportTradePost?r=" + Math.random(1),
  488. // data: userdata,
  489. // dataType: "text",
  490. // success: function (data) {
  491. // layer.close(loadindex);
  492. // if (data.indexOf('success') == 0) {
  493. // var count = data.split('|')[1];
  494. // layer.msg('成功导入' + count + '条');
  495. // } else {
  496. // layer.msg(data);
  497. // }
  498. // }
  499. // });
  500. // });
  501. // submit.trigger('click');
  502. // }
  503. // });
  504. var perContent = layer.open({
  505. type: 2,
  506. title: '导交易',
  507. content: 'ImportTrade?ExcelKind=2',
  508. maxmin: true,
  509. area: ['650px', '350px'],
  510. btn: ['确定', '取消'],
  511. yes: function (index, layero) {
  512. var iframeWindow = window['layui-layer-iframe' + index],
  513. submitID = 'LAY-list-front-submit',
  514. submit = layero.find('iframe').contents().find('#' + submitID);
  515. //监听提交
  516. iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
  517. var field = data.field; //获取提交的字段
  518. var userdata = "";
  519. for (var prop in field) {
  520. userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
  521. }
  522. //提交 Ajax 成功后,静态更新表格中的数据
  523. //$.ajax({});
  524. var loadindex = layer.load(1, {
  525. shade: [0.5, '#000']
  526. });
  527. $.ajax({
  528. type: "POST",
  529. url: "/Admin/TradeRecord/ImportByQueuePost?r=" + Math.random(1),
  530. data: userdata,
  531. dataType: "text",
  532. success: function (data) {
  533. if (data.indexOf("success") == 0) {
  534. var datalist = data.split('|');
  535. var key = datalist[1];
  536. CheckImport(table, key, loadindex, index);
  537. } else {
  538. layer.msg(data);
  539. }
  540. }
  541. });
  542. });
  543. submit.trigger('click');
  544. }
  545. });
  546. }
  547. , ExportExcel: function () {
  548. var userdata = '';
  549. $(".layuiadmin-card-header-auto input").each(function (i) {
  550. userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
  551. });
  552. $(".layuiadmin-card-header-auto select").each(function (i) {
  553. userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
  554. });
  555. $.ajax({
  556. type: "GET",
  557. url: "/Admin/TradeRecord/ExportExcel?r=" + Math.random(1),
  558. data: userdata,
  559. dataType: "json",
  560. success: function (data) {
  561. data.Obj.unshift(data.Fields);
  562. excel.exportExcel(data.Obj, data.Info, 'xlsx');
  563. }
  564. });
  565. }
  566. , Open: function () {
  567. var checkStatus = table.checkStatus('LAY-list-manage')
  568. , data = checkStatus.data; //得到选中的数据
  569. if (data.length < 1) {
  570. parent.layer.msg("请选择要开启的项");
  571. } else {
  572. var ids = "";
  573. $.each(data, function (index, value) {
  574. ids += data[index].Id + ",";
  575. });
  576. ids = ids.substring(0, ids.length - 1);
  577. var index = layer.confirm('确定要开启吗?', function (index) {
  578. $.ajax({
  579. type: "POST",
  580. url: "/Admin/TradeRecord/Open?r=" + Math.random(1),
  581. data: "Id=" + ids,
  582. dataType: "text",
  583. success: function (data) {
  584. layer.close(index);
  585. if (data == "success") {
  586. table.reload('LAY-list-manage');
  587. } else {
  588. layer.msg(data);
  589. }
  590. }
  591. });
  592. });
  593. }
  594. }
  595. , Close: function () {
  596. var checkStatus = table.checkStatus('LAY-list-manage')
  597. , data = checkStatus.data; //得到选中的数据
  598. if (data.length < 1) {
  599. parent.layer.msg("请选择要关闭的项");
  600. } else {
  601. var ids = "";
  602. $.each(data, function (index, value) {
  603. ids += data[index].Id + ",";
  604. });
  605. ids = ids.substring(0, ids.length - 1);
  606. var index = layer.confirm('确定要关闭吗?', function (index) {
  607. $.ajax({
  608. type: "POST",
  609. url: "/Admin/TradeRecord/Close?r=" + Math.random(1),
  610. data: "Id=" + ids,
  611. dataType: "text",
  612. success: function (data) {
  613. layer.close(index);
  614. if (data == "success") {
  615. table.reload('LAY-list-manage');
  616. } else {
  617. layer.msg(data);
  618. }
  619. }
  620. });
  621. });
  622. }
  623. }
  624. };
  625. $('.layui-btn').on('click', function () {
  626. var type = $(this).data('type');
  627. active[type] ? active[type].call(this) : '';
  628. });
  629. });