DataActions.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. let defaultActions = {
  2. // 刷新按钮
  3. refresh: function ($action, Dcat) {
  4. return function () {
  5. Dcat.reload($(this).data('url'));
  6. };
  7. },
  8. // 删除按钮初始化
  9. delete: function ($action, Dcat) {
  10. let lang = Dcat.lang;
  11. return function() {
  12. let url = $(this).data('url'),
  13. redirect = $(this).data('redirect');
  14. Dcat.confirm(lang.delete_confirm, url, function () {
  15. Dcat.NP.start();
  16. $.ajax({
  17. method: 'post',
  18. url: url,
  19. data: {
  20. _method: 'delete',
  21. _token: Dcat.token,
  22. },
  23. success: function (data) {
  24. Dcat.NP.done();
  25. if (data.status) {
  26. Dcat.reload(redirect);
  27. Dcat.swal.success(data.message);
  28. } else {
  29. Dcat.swal.error(data.message);
  30. }
  31. }
  32. });
  33. });
  34. };
  35. },
  36. // 批量删除按钮初始化
  37. 'batch-delete': function ($action, Dcat) {
  38. return function() {
  39. let url = $(this).data('url'),
  40. name = $(this).data('name'),
  41. keys = Dcat.grid.selected(name),
  42. lang = Dcat.lang;
  43. if (! keys.length) {
  44. return;
  45. }
  46. Dcat.confirm(lang.delete_confirm, keys.join(', '), function () {
  47. Dcat.NP.start();
  48. $.ajax({
  49. method: 'post',
  50. url: url + '/' + keys.join(','),
  51. data: {
  52. _method: 'delete',
  53. _token: Dcat.token,
  54. },
  55. success: function (data) {
  56. Dcat.NP.done();
  57. if (data.status) {
  58. Dcat.reload();
  59. Dcat.swal.success(data.message);
  60. } else {
  61. Dcat.swal.error(data.message);
  62. }
  63. }
  64. });
  65. });
  66. };
  67. },
  68. // 图片预览
  69. 'preview-img': function ($action, Dcat) {
  70. return function () {
  71. return Dcat.previewImage($(this).attr('src'));
  72. };
  73. },
  74. 'popover': function ($action) {
  75. $('.popover').remove();
  76. return function () {
  77. $action.popover()
  78. };
  79. },
  80. 'box-actions': function () {
  81. $('.box [data-action="collapse"]').click(function (e) {
  82. e.preventDefault();
  83. $(this).find('i').toggleClass('icon-minus icon-plus');
  84. $(this).closest('.box').find('.box-body').first().collapse("toggle");
  85. });
  86. // Close box
  87. $('.box [data-action="remove"]').click(function () {
  88. $(this).closest(".box").removeClass().slideUp("fast");
  89. });
  90. }
  91. };
  92. export default class DataActions {
  93. constructor(Dcat) {
  94. let actions = $.extend(defaultActions, Dcat.actions()),
  95. $action,
  96. name,
  97. func;
  98. for (name in actions) {
  99. $action = $(`[data-action="${name}"]`);
  100. func = actions[name]($action, Dcat);
  101. if (typeof func === 'function') {
  102. // 必须先取消再绑定,否则可能造成重复绑定的效果
  103. $action.off('click').click(func);
  104. }
  105. }
  106. }
  107. }