@aliretail/react-materials-components
Version:
115 lines (97 loc) • 2.92 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
var _this = this;
import get from 'lodash.get';
import queryString from 'query-string';
function createTargetUrl(_ref) {
var app = _ref.app,
page = _ref.page,
params = _ref.params;
var _location = location,
protocol = _location.protocol,
host = _location.host,
pathname = _location.pathname;
var targetUrl = '';
var appCode = pathname.split('/')[2];
var urlObj = queryString.parseUrl(location.href, {
parseFragmentIdentifier: true
});
if (!app) {
app = appCode;
}
if (host.indexOf('localhost') > -1) {
targetUrl = queryString.stringifyUrl({
url: protocol + "//" + host + "/" + page + ".html",
query: _extends({}, params)
});
} else {
targetUrl = queryString.stringifyUrl({
url: protocol + "//" + host + "/ui/" + app + "/blank/" + page,
query: _extends({}, urlObj.query, params),
fragmentIdentifier: urlObj.fragmentIdentifier
});
}
return targetUrl;
}
export var Router = {
openPage: function openPage(pageInfo, config) {
var openInTab = get(window, 'retailforce.openInTab'); // 在 TabLayout 下
if (openInTab) {
openInTab.apply(_this, [pageInfo, config]);
} else {
var targetUrl = createTargetUrl(pageInfo);
window.open(targetUrl);
}
},
goToPage: function goToPage(pageInfo, config) {
if (config === void 0) {
config = {};
}
var goToTab = get(window, 'retailforce.goToTab');
if (goToTab) {
goToTab.apply(_this, [pageInfo, config]);
} else {
var targetUrl = createTargetUrl(pageInfo);
location.href = targetUrl;
}
},
closePage: function closePage(pageInfo) {
var closeTab = get(window, 'retailforce.closeTab');
if (closeTab) {
closeTab.call(_this, pageInfo);
}
},
closeCurrentPage: function closeCurrentPage() {
var closeCurrentTab = get(window, 'retailforce.closeCurrentTab');
if (closeCurrentTab) {
closeCurrentTab.call(_this);
}
},
setPageTitle: function setPageTitle(title) {
var setPageTitle = get(window, 'retailforce.setPageTitle');
if (setPageTitle) {
setPageTitle.call(_this, title);
} else {
document.title = title;
}
},
getURLParameter: function getURLParameter(name) {
if (!name) {
console.warn('请输入 url 查询的 name!');
return '';
}
var openInTab = get(window, 'retailforce.openInTab');
var queryObj = {}; // 在 TabLayout 下
if (openInTab) {
var _location2 = location,
hash = _location2.hash; // 查询参数需要从 hash 里面去取!!!
var queryStr = hash.split('?')[1];
if (queryStr) {
queryObj = queryString.parse("?" + queryStr);
}
} else {
queryObj = queryString.parse(location.search);
}
return queryObj[name];
}
};
export default Router;