let appId = '12345'
let originReplace = VueRouter.prototype.replace;
let originPush = VueRouter.prototype.push;
function makeNewLocation(location) {
//由于原来的前端书写不规范导致location可能是string
if (typeof location == 'string') {
var newLocation = {
path: location.split('?')[0],
query: {
appId: appId
}
}
//如果原来有带了参数也要加上
if (location.indexOf('?') != -1) {
var arr = location.split('?')[1].split('&')
for (var i = 0; i < arr.length; i++) {
newLocation.query[arr[i].split('=')[0]] = arr[i].split('=')[1]
}
}
location = newLocation
}
//原来有query就直接拼上
if (location.query) {
if (!location.query.appId) {
location.query = {
...location.query,
appId: appId
}
}
} else {
//原来没有query就定义一个
location.query = {
appId: appId
}
}
return location
}
VueRouter.prototype.replace = function (location, resolve, reject) {
location = makeNewLocation(location)
if (resolve && reject) {
originReplace.call(this, location, resolve, reject);
} else {
originReplace.call(
this,
location,
() => {},
() => {}
);
}
}
VueRouter.prototype.push = function (location, resolve, reject) {
location = makeNewLocation(location)
if (resolve && reject) {
originPush.call(this, location, resolve, reject);
} else {
originPush.call(
this,
location,
() => {},
() => {}
);
}
};