jqh 5 years ago
parent
commit
cc9eb5610c

+ 123 - 0
resources/assets/dcat/js/bootstrappers/DataActions.js

@@ -0,0 +1,123 @@
+
+let actions = {
+    // 刷新按钮
+    refreshAction: function (Dcat) {
+        $('[data-action="refresh"]').off('click').click(function () {
+            Dcat.reload($(this).data('url'));
+        });
+    },
+    // 删除按钮初始化
+    deleteAction: function (Dcat) {
+        let lang = Dcat.lang;
+
+        $('[data-action="delete"]').off('click').click(function() {
+            let url = $(this).data('url'),
+                redirect = $(this).data('redirect'),
+                id = $(this).data('id');
+
+            Dcat.confirm(lang.delete_confirm, url, function () {
+                Dcat.NP.start();
+                $.ajax({
+                    method: 'post',
+                    url: url,
+                    data: {
+                        _method: 'delete',
+                        _token: Dcat.token,
+                    },
+                    success: function (data) {
+                        Dcat.NP.done();
+                        if (data.status) {
+                            Dcat.reload(redirect);
+                            Dcat.swal.success(data.message);
+                        } else {
+                            Dcat.swal.error(data.message);
+                        }
+                    }
+                });
+            });
+        });
+    },
+    // 批量删除按钮初始化
+    batchDeleteAction: function (Dcat) {
+        $('[data-action="batch-delete"]').off('click').on('click', function() {
+            let url = $(this).data('url'),
+                name = $(this).data('name'),
+                keys = Dcat.grid.selected(name),
+                lang = Dcat.lang;
+
+            if (! keys.length) {
+                return;
+            }
+            Dcat.confirm(lang.delete_confirm, keys.join(', '), function () {
+                Dcat.NP.start();
+                $.ajax({
+                    method: 'post',
+                    url: url + '/' + keys.join(','),
+                    data: {
+                        _method: 'delete',
+                        _token: Dcat.token,
+                    },
+                    success: function (data) {
+                        Dcat.NP.done();
+                        if (data.status) {
+                            Dcat.reload();
+                            Dcat.swal.success(data.message);
+                        } else {
+                            Dcat.swal.error(data.message);
+                        }
+                    }
+                });
+            });
+        });
+    },
+
+    // 进度条初始化
+    progressBar: function () {
+        $('.progress-bar').each(function (k, v) {
+            v = $(v);
+            var w = v.data('width');
+            if (w) {
+                setTimeout(function () {
+                    v.css({width: w});
+                }, 80);
+            }
+        });
+    },
+
+    // 图片预览
+    imagePreview: function (Dcat) {
+        $('[data-action="preview"]').off('click').click(function () {
+            return Dcat.previewImage($(this).attr('src'));
+        });
+    },
+
+    // 数字动画初始化
+    counterUp: function() {
+        var boot = function(k, obj) {
+            try {
+                obj = $(obj);
+                obj.counterUp({
+                    delay: obj.attr('data-delay') || 100,
+                    time: obj.attr('data-time') || 1200
+                });
+            } catch (e) {}
+        };
+        $('[data-action="counterup"]').each(boot);
+
+        $('number').each(boot);
+    },
+
+    popover: function () {
+        $('.popover').remove();
+
+        $('[data-action="popover"]').popover();
+    },
+};
+
+export default class DataActions {
+    constructor(Dcat) {
+        for (let name in actions) {
+            actions[name](Dcat)
+        }
+    }
+}

+ 5 - 0
resources/assets/dcat/js/dcat-app.js

@@ -19,10 +19,12 @@ import RowSelector from './extensions/RowSelector'
 import Grid from './extensions/Grid'
 import Form from './extensions/Form'
 import DialogForm from './extensions/DialogForm'
+import Loading from './extensions/Loading'
 
 import Menu from './bootstrappers/Menu'
 import Footer from './bootstrappers/Footer'
 import Pjax from './bootstrappers/Pjax'
+import DataActions from './bootstrappers/DataActions'
 
 let win = window,
     $ = jQuery;
@@ -34,6 +36,7 @@ function extend (Dcat) {
     new Toastr(Dcat);
     new SweetAlert2(Dcat);
     new Grid(Dcat);
+    new Loading(Dcat);
 
     // NProgress
     Dcat.NP = NProgress;
@@ -84,6 +87,8 @@ function listen(Dcat) {
     Dcat.bootingEveryRequest(() => {
         // pjax初始化功能
         new Pjax(Dcat);
+        // data-action 动作绑定
+        new DataActions(Dcat);
 
     });
 }

+ 10 - 0
resources/assets/dcat/js/extensions/Loading.js

@@ -0,0 +1,10 @@
+
+export default class Loading {
+    constructor(Dcat) {
+        Dcat.loading = this.loading;
+    }
+
+    loading() {
+
+    }
+}

+ 4 - 5
resources/assets/dcat/js/extensions/SweetAlert2.js

@@ -33,16 +33,16 @@ export default class SweetAlert2 {
     }
 
     confirm(title, message, success, fail, options) {
-        let btnClass = 'btn btn-outline-dark',
-            lang = Dcat.lang;
+        let lang = Dcat.lang;
 
         options = $.extend({
             showCancelButton: true,
             showLoaderOnConfirm: true,
             confirmButtonText: lang['confirm'],
             cancelButtonText: lang['cancel'],
-            confirmButtonClass: btnClass,
-            cancelButtonClass: btnClass + 'ml-1',
+            confirmButtonClass: 'btn btn-info',
+            cancelButtonClass: 'btn btn-white ml-1',
+            buttonsStyling: false,
         }, options);
 
         this.fire(title, message, 'question', options).then(function (result) {
@@ -59,7 +59,6 @@ export default class SweetAlert2 {
             title: title,
             text: message,
             type: type,
-            // buttonsStyling: false,
         }, options);
 
         return this.swal.fire(options);

+ 3 - 1
resources/assets/dcat/sass/components/_dropdown.scss

@@ -7,12 +7,14 @@
   border-left: 1px solid rgba(0, 0, 0, 0.07);
 }
 .dropdown .dropdown-menu .dropdown-item, .dropup .dropdown-menu .dropdown-item, .dropright .dropdown-menu .dropdown-item, .dropleft .dropdown-menu .dropdown-item {
-  padding: 0.35rem 1.38rem;
+  padding: 0;
   color: #333;
 }
 .dropdown-item a, .dropdown-menu label {
   font-size: 1rem;
   color: #333;
+  padding: 0.35rem 1.38rem;
+  display: block;
 }
 .dropdown .dropdown-menu .dropdown-item:hover {
   background-color: $dark30;

+ 1 - 0
resources/assets/dcat/sass/dcat-app.scss

@@ -91,4 +91,5 @@ code {
 }
 pre {
   padding: 7px;
+  white-space: pre-wrap;
 }

+ 4 - 1
resources/dist/dcat/css/app.css

@@ -1960,7 +1960,7 @@ table.data-thumb-view.dataTable tbody tr:hover {
 .dropup .dropdown-menu .dropdown-item,
 .dropright .dropdown-menu .dropdown-item,
 .dropleft .dropdown-menu .dropdown-item {
-  padding: 0.35rem 1.38rem;
+  padding: 0;
   color: #333;
 }
 
@@ -1968,6 +1968,8 @@ table.data-thumb-view.dataTable tbody tr:hover {
 .dropdown-menu label {
   font-size: 1rem;
   color: #333;
+  padding: 0.35rem 1.38rem;
+  display: block;
 }
 
 .dropdown .dropdown-menu .dropdown-item:hover {
@@ -2096,5 +2098,6 @@ code {
 
 pre {
   padding: 7px;
+  white-space: pre-wrap;
 }
 

+ 192 - 13
resources/dist/dcat/js/app.js

@@ -292,6 +292,144 @@ var Dcat = /*#__PURE__*/function () {
 
 
 
+/***/ }),
+
+/***/ "./resources/assets/dcat/js/bootstrappers/DataActions.js":
+/*!***************************************************************!*\
+  !*** ./resources/assets/dcat/js/bootstrappers/DataActions.js ***!
+  \***************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return DataActions; });
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var actions = {
+  // 刷新按钮
+  refreshAction: function refreshAction(Dcat) {
+    $('[data-action="refresh"]').off('click').click(function () {
+      Dcat.reload($(this).data('url'));
+    });
+  },
+  // 删除按钮初始化
+  deleteAction: function deleteAction(Dcat) {
+    var lang = Dcat.lang;
+    $('[data-action="delete"]').off('click').click(function () {
+      var url = $(this).data('url'),
+          redirect = $(this).data('redirect'),
+          id = $(this).data('id');
+      Dcat.confirm(lang.delete_confirm, url, function () {
+        Dcat.NP.start();
+        $.ajax({
+          method: 'post',
+          url: url,
+          data: {
+            _method: 'delete',
+            _token: Dcat.token
+          },
+          success: function success(data) {
+            Dcat.NP.done();
+
+            if (data.status) {
+              Dcat.reload(redirect);
+              Dcat.swal.success(data.message);
+            } else {
+              Dcat.swal.error(data.message);
+            }
+          }
+        });
+      });
+    });
+  },
+  // 批量删除按钮初始化
+  batchDeleteAction: function batchDeleteAction(Dcat) {
+    $('[data-action="batch-delete"]').off('click').on('click', function () {
+      var url = $(this).data('url'),
+          name = $(this).data('name'),
+          keys = Dcat.grid.selected(name),
+          lang = Dcat.lang;
+
+      if (!keys.length) {
+        return;
+      }
+
+      Dcat.confirm(lang.delete_confirm, keys.join(', '), function () {
+        Dcat.NP.start();
+        $.ajax({
+          method: 'post',
+          url: url + '/' + keys.join(','),
+          data: {
+            _method: 'delete',
+            _token: Dcat.token
+          },
+          success: function success(data) {
+            Dcat.NP.done();
+
+            if (data.status) {
+              Dcat.reload();
+              Dcat.swal.success(data.message);
+            } else {
+              Dcat.swal.error(data.message);
+            }
+          }
+        });
+      });
+    });
+  },
+  // 进度条初始化
+  progressBar: function progressBar() {
+    $('.progress-bar').each(function (k, v) {
+      v = $(v);
+      var w = v.data('width');
+
+      if (w) {
+        setTimeout(function () {
+          v.css({
+            width: w
+          });
+        }, 80);
+      }
+    });
+  },
+  // 图片预览
+  imagePreview: function imagePreview(Dcat) {
+    $('[data-action="preview"]').off('click').click(function () {
+      return Dcat.previewImage($(this).attr('src'));
+    });
+  },
+  // 数字动画初始化
+  counterUp: function counterUp() {
+    var boot = function boot(k, obj) {
+      try {
+        obj = $(obj);
+        obj.counterUp({
+          delay: obj.attr('data-delay') || 100,
+          time: obj.attr('data-time') || 1200
+        });
+      } catch (e) {}
+    };
+
+    $('[data-action="counterup"]').each(boot);
+    $('number').each(boot);
+  },
+  popover: function popover() {
+    $('.popover').remove();
+    $('[data-action="popover"]').popover();
+  }
+};
+
+var DataActions = function DataActions(Dcat) {
+  _classCallCheck(this, DataActions);
+
+  for (var name in actions) {
+    actions[name](Dcat);
+  }
+};
+
+
+
 /***/ }),
 
 /***/ "./resources/assets/dcat/js/bootstrappers/Footer.js":
@@ -498,9 +636,11 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony import */ var _extensions_Grid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./extensions/Grid */ "./resources/assets/dcat/js/extensions/Grid.js");
 /* harmony import */ var _extensions_Form__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./extensions/Form */ "./resources/assets/dcat/js/extensions/Form.js");
 /* harmony import */ var _extensions_DialogForm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./extensions/DialogForm */ "./resources/assets/dcat/js/extensions/DialogForm.js");
-/* harmony import */ var _bootstrappers_Menu__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./bootstrappers/Menu */ "./resources/assets/dcat/js/bootstrappers/Menu.js");
-/* harmony import */ var _bootstrappers_Footer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./bootstrappers/Footer */ "./resources/assets/dcat/js/bootstrappers/Footer.js");
-/* harmony import */ var _bootstrappers_Pjax__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./bootstrappers/Pjax */ "./resources/assets/dcat/js/bootstrappers/Pjax.js");
+/* harmony import */ var _extensions_Loading__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./extensions/Loading */ "./resources/assets/dcat/js/extensions/Loading.js");
+/* harmony import */ var _bootstrappers_Menu__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./bootstrappers/Menu */ "./resources/assets/dcat/js/bootstrappers/Menu.js");
+/* harmony import */ var _bootstrappers_Footer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./bootstrappers/Footer */ "./resources/assets/dcat/js/bootstrappers/Footer.js");
+/* harmony import */ var _bootstrappers_Pjax__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./bootstrappers/Pjax */ "./resources/assets/dcat/js/bootstrappers/Pjax.js");
+/* harmony import */ var _bootstrappers_DataActions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./bootstrappers/DataActions */ "./resources/assets/dcat/js/bootstrappers/DataActions.js");
 /*=========================================================================================
   File Name: app.js
   Description: Dcat Admin JS脚本.
@@ -522,6 +662,8 @@ __webpack_require__.r(__webpack_exports__);
 
 
 
+
+
 var win = window,
     $ = jQuery; // 扩展Dcat对象
 
@@ -530,7 +672,8 @@ function extend(Dcat) {
   new _extensions_Ajax__WEBPACK_IMPORTED_MODULE_3__["default"](Dcat);
   new _extensions_Toastr__WEBPACK_IMPORTED_MODULE_4__["default"](Dcat);
   new _extensions_SweetAlert2__WEBPACK_IMPORTED_MODULE_5__["default"](Dcat);
-  new _extensions_Grid__WEBPACK_IMPORTED_MODULE_7__["default"](Dcat); // NProgress
+  new _extensions_Grid__WEBPACK_IMPORTED_MODULE_7__["default"](Dcat);
+  new _extensions_Loading__WEBPACK_IMPORTED_MODULE_10__["default"](Dcat); // NProgress
 
   Dcat.NP = _nprogress_NProgress_min__WEBPACK_IMPORTED_MODULE_1___default.a; // 行选择器
 
@@ -557,9 +700,9 @@ function listen(Dcat) {
   // 只初始化一次
   Dcat.booting(function () {
     // 菜单点击选中效果
-    new _bootstrappers_Menu__WEBPACK_IMPORTED_MODULE_10__["default"](Dcat); // 返回顶部按钮
+    new _bootstrappers_Menu__WEBPACK_IMPORTED_MODULE_11__["default"](Dcat); // 返回顶部按钮
 
-    new _bootstrappers_Footer__WEBPACK_IMPORTED_MODULE_11__["default"](Dcat); // layer弹窗设置
+    new _bootstrappers_Footer__WEBPACK_IMPORTED_MODULE_12__["default"](Dcat); // layer弹窗设置
 
     layer.config({
       maxmin: true,
@@ -578,7 +721,9 @@ function listen(Dcat) {
 
   Dcat.bootingEveryRequest(function () {
     // pjax初始化功能
-    new _bootstrappers_Pjax__WEBPACK_IMPORTED_MODULE_12__["default"](Dcat);
+    new _bootstrappers_Pjax__WEBPACK_IMPORTED_MODULE_13__["default"](Dcat); // data-action 动作绑定
+
+    new _bootstrappers_DataActions__WEBPACK_IMPORTED_MODULE_14__["default"](Dcat);
   });
 } // 开始初始化
 
@@ -1727,6 +1872,41 @@ var Helpers = /*#__PURE__*/function () {
 
 
 
+/***/ }),
+
+/***/ "./resources/assets/dcat/js/extensions/Loading.js":
+/*!********************************************************!*\
+  !*** ./resources/assets/dcat/js/extensions/Loading.js ***!
+  \********************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Loading; });
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var Loading = /*#__PURE__*/function () {
+  function Loading(Dcat) {
+    _classCallCheck(this, Loading);
+
+    Dcat.loading = this.loading;
+  }
+
+  _createClass(Loading, [{
+    key: "loading",
+    value: function loading() {}
+  }]);
+
+  return Loading;
+}();
+
+
+
 /***/ }),
 
 /***/ "./resources/assets/dcat/js/extensions/RowSelector.js":
@@ -1922,15 +2102,15 @@ var SweetAlert2 = /*#__PURE__*/function () {
   }, {
     key: "confirm",
     value: function confirm(title, message, success, fail, options) {
-      var btnClass = 'btn btn-outline-dark',
-          lang = Dcat.lang;
+      var lang = Dcat.lang;
       options = $.extend({
         showCancelButton: true,
         showLoaderOnConfirm: true,
         confirmButtonText: lang['confirm'],
         cancelButtonText: lang['cancel'],
-        confirmButtonClass: btnClass,
-        cancelButtonClass: btnClass + 'ml-1'
+        confirmButtonClass: 'btn btn-info',
+        cancelButtonClass: 'btn btn-white ml-1',
+        buttonsStyling: false
       }, options);
       this.fire(title, message, 'question', options).then(function (result) {
         if (result.value) {
@@ -1946,8 +2126,7 @@ var SweetAlert2 = /*#__PURE__*/function () {
       options = $.extend({
         title: title,
         text: message,
-        type: type // buttonsStyling: false,
-
+        type: type
       }, options);
       return this.swal.fire(options);
     }