123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /**
- * 行排序
- */
- export default class Orderable {
- constructor(Helper, opts) {
- this.options = $.extend({
- button: null,
- url: '',
- }, opts);
- this.helper = Helper;
- this.direction = this.key = this.depth = this.row = this._req = null;
- this._init();
- }
- _init() {
- let _this = this;
- $(_this.options.button).off('click').click(function () {
- if (_this._req) {
- return;
- }
- _this._req = 1;
- Dcat.loading();
- let $this = $(this);
- _this.key = $this.data('id');
- _this.direction = $this.data('direction');
- _this.row = $this.closest('tr');
- _this.depth = _this.helper.getDepth(_this.row);
- _this.request();
- })
- }
- request() {
- var _this = this,
- helper = _this.helper,
- key = _this.key,
- row = _this.row,
- depth = _this.depth,
- direction = _this.direction,
- prevAll = row.prevAll(),
- nextAll = row.nextAll(),
- prev = row.prevAll('tr').first(),
- next = row.nextAll('tr').first();
- $.put({
- url: _this.options.url.replace(':key', key),
- data: {_orderable: direction},
- success: function(data){
- Dcat.loading(false);
- _this._req = 0;
- if (! data.status) {
- return data.data.message && Dcat.warning(data.data.message);
- }
- Dcat.success(data.data.message);
- if (direction) {
- var prevRow = helper.sibling(prevAll, depth);
- if (helper.swapable(prevRow, depth) && prev.length && helper.getDepth(prev) >= depth) {
- prevRow.before(row);
- // 把所有子节点上移
- helper.getChildren(nextAll, row).forEach(function (v) {
- prevRow.before(v)
- });
- }
- } else {
- var nextRow = helper.sibling(nextAll, depth),
- nextRowChildren = nextRow ? helper.getChildren(nextRow.nextAll(), nextRow) : [];
- if (helper.swapable(nextRow, depth) && next.length && helper.getDepth(next) >= depth) {
- nextAll = row.nextAll();
- if (nextRowChildren.length) {
- nextRow = $(nextRowChildren.pop())
- }
- // 把所有子节点下移
- var all = [];
- helper.getChildren(nextAll, row).forEach(function (v) {
- all.unshift(v)
- });
- all.forEach(function(v) {
- nextRow.after(v)
- });
- nextRow.after(row);
- }
- }
- },
- error: function (a, b, c) {
- _this._req = 0;
- Dcat.loading(false);
- Dcat.handleAjaxError(a, b, c)
- }
- });
- }
- }
|