zcloud-ui
Version:
A Component Library for Vue.js.
66 lines (59 loc) • 1.91 kB
JavaScript
;
exports.__esModule = true;
/**
* 页面跳转 mixin
* 使用this.handleLinkTo('purchase/purchaseOrder',params);
*/
exports.default = {
methods: {
/**
* @param {String} link 需要跳转的path
* @param {Sting|Object} params query参数
* @param {Sting} num 使用首页,>1时可跳
*/
handleLinkTo: function handleLinkTo(link, params) {
var _this = this;
var num = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
var routers = this.$store.getters.routers;
if (!num) return;
this.getURL(routers, link, function (url) {
if (params) {
var query = {};
if (typeof params === 'string') {
query = { state: params };
} else if (Object.prototype.toString.call(params) === '[object Object]') {
query = params;
} else {
throw new Error('params只支持object和string');
}
_this.$router.push({ path: url, query: query });
} else {
_this.$router.push({ path: url });
}
});
},
getURL: function getURL(routers, name, callback) {
var reg = new RegExp(name + '$');
for (var _iterator = routers, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var item = _ref;
if (item.path && item.path.includes(name) && reg.test(item.path)) {
callback(item.path);
return;
} else {
if (item.children && item.children.length) {
this.getURL(item.children, name, callback);
}
}
}
}
}
};