Commit f51e3fe9 authored by tianhongyang's avatar tianhongyang

tab页签 以fullpath为基准打开页面

parent 363bcf08
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
<script> <script>
import iframeToggle from "./IframeToggle/index" import iframeToggle from "./IframeToggle/index"
export default { export default {
name: 'AppMain', name: 'AppMain',
components: { iframeToggle }, components: { iframeToggle },
...@@ -20,7 +19,7 @@ export default { ...@@ -20,7 +19,7 @@ export default {
return this.$store.state.tagsView.cachedViews return this.$store.state.tagsView.cachedViews
}, },
key() { key() {
return this.$route.path return this.$route.fullPath
} }
} }
} }
......
...@@ -7,7 +7,7 @@ const state = { ...@@ -7,7 +7,7 @@ const state = {
const mutations = { const mutations = {
ADD_IFRAME_VIEW: (state, view) => { ADD_IFRAME_VIEW: (state, view) => {
if (state.iframeViews.some(v => v.path === view.path)) return if (state.iframeViews.some(v => v.fullPath === view.fullPath)) return
state.iframeViews.push( state.iframeViews.push(
Object.assign({}, view, { Object.assign({}, view, {
title: view.meta.title || 'no-name' title: view.meta.title || 'no-name'
...@@ -15,7 +15,7 @@ const mutations = { ...@@ -15,7 +15,7 @@ const mutations = {
) )
}, },
ADD_VISITED_VIEW: (state, view) => { ADD_VISITED_VIEW: (state, view) => {
if (state.visitedViews.some(v => v.path === view.path)) return if (state.visitedViews.some(v => v.fullPath === view.fullPath)) return
state.visitedViews.push( state.visitedViews.push(
Object.assign({}, view, { Object.assign({}, view, {
title: view.meta.title || 'no-name' title: view.meta.title || 'no-name'
...@@ -30,15 +30,15 @@ const mutations = { ...@@ -30,15 +30,15 @@ const mutations = {
}, },
DEL_VISITED_VIEW: (state, view) => { DEL_VISITED_VIEW: (state, view) => {
for (const [i, v] of state.visitedViews.entries()) { for (const [i, v] of state.visitedViews.entries()) {
if (v.path === view.path) { if (v.fullPath === view.fullPath) {
state.visitedViews.splice(i, 1) state.visitedViews.splice(i, 1)
break break
} }
} }
state.iframeViews = state.iframeViews.filter(item => item.path !== view.path) state.iframeViews = state.iframeViews.filter(item => item.fullPath !== view.fullPath)
}, },
DEL_IFRAME_VIEW: (state, view) => { DEL_IFRAME_VIEW: (state, view) => {
state.iframeViews = state.iframeViews.filter(item => item.path !== view.path) state.iframeViews = state.iframeViews.filter(item => item.fullPath !== view.fullPath)
}, },
DEL_CACHED_VIEW: (state, view) => { DEL_CACHED_VIEW: (state, view) => {
const index = state.cachedViews.indexOf(view.name) const index = state.cachedViews.indexOf(view.name)
...@@ -47,9 +47,9 @@ const mutations = { ...@@ -47,9 +47,9 @@ const mutations = {
DEL_OTHERS_VISITED_VIEWS: (state, view) => { DEL_OTHERS_VISITED_VIEWS: (state, view) => {
state.visitedViews = state.visitedViews.filter(v => { state.visitedViews = state.visitedViews.filter(v => {
return v.meta.affix || v.path === view.path return v.meta.affix || v.fullPath === view.fullPath
}) })
state.iframeViews = state.iframeViews.filter(item => item.path === view.path) state.iframeViews = state.iframeViews.filter(item => item.fullPath === view.fullPath)
}, },
DEL_OTHERS_CACHED_VIEWS: (state, view) => { DEL_OTHERS_CACHED_VIEWS: (state, view) => {
const index = state.cachedViews.indexOf(view.name) const index = state.cachedViews.indexOf(view.name)
...@@ -70,14 +70,14 @@ const mutations = { ...@@ -70,14 +70,14 @@ const mutations = {
}, },
UPDATE_VISITED_VIEW: (state, view) => { UPDATE_VISITED_VIEW: (state, view) => {
for (let v of state.visitedViews) { for (let v of state.visitedViews) {
if (v.path === view.path) { if (v.fullPath === view.fullPath) {
v = Object.assign(v, view) v = Object.assign(v, view)
break break
} }
} }
}, },
DEL_RIGHT_VIEWS: (state, view) => { DEL_RIGHT_VIEWS: (state, view) => {
const index = state.visitedViews.findIndex(v => v.path === view.path) const index = state.visitedViews.findIndex(v => v.fullPath === view.fullPath)
if (index === -1) { if (index === -1) {
return return
} }
...@@ -90,14 +90,14 @@ const mutations = { ...@@ -90,14 +90,14 @@ const mutations = {
state.cachedViews.splice(i, 1) state.cachedViews.splice(i, 1)
} }
if(item.meta.link) { if(item.meta.link) {
const fi = state.iframeViews.findIndex(v => v.path === item.path) const fi = state.iframeViews.findIndex(v => v.fullPath === item.fullPath)
state.iframeViews.splice(fi, 1) state.iframeViews.splice(fi, 1)
} }
return false return false
}) })
}, },
DEL_LEFT_VIEWS: (state, view) => { DEL_LEFT_VIEWS: (state, view) => {
const index = state.visitedViews.findIndex(v => v.path === view.path) const index = state.visitedViews.findIndex(v => v.fullPath === view.fullPath)
if (index === -1) { if (index === -1) {
return return
} }
...@@ -110,7 +110,7 @@ const mutations = { ...@@ -110,7 +110,7 @@ const mutations = {
state.cachedViews.splice(i, 1) state.cachedViews.splice(i, 1)
} }
if(item.meta.link) { if(item.meta.link) {
const fi = state.iframeViews.findIndex(v => v.path === item.path) const fi = state.iframeViews.findIndex(v => v.fullPath === item.fullPath)
state.iframeViews.splice(fi, 1) state.iframeViews.splice(fi, 1)
} }
return false return false
......
import { login, logout, getInfo } from '@/api/login' import { login, logout, getInfo } from '@/api/login';
import { getToken, setToken, removeToken ,setTenantid} from '@/utils/auth' import { getToken, setToken, removeToken, setTenantid } from '@/utils/auth';
const user = { const user = {
state: { state: {
...@@ -8,100 +8,100 @@ const user = { ...@@ -8,100 +8,100 @@ const user = {
avatar: '', avatar: '',
roles: [], roles: [],
permissions: [], permissions: [],
userId:'', userId: '',
phonenumber:'', phonenumber: '',
}, },
mutations: { mutations: {
SET_TOKEN: (state, token) => { SET_TOKEN: (state, token) => {
state.token = token state.token = token;
}, },
SET_NAME: (state, name) => { SET_NAME: (state, name) => {
state.name = name state.name = name;
}, },
SET_AVATAR: (state, avatar) => { SET_AVATAR: (state, avatar) => {
state.avatar = avatar state.avatar = avatar;
}, },
SET_ROLES: (state, roles) => { SET_ROLES: (state, roles) => {
state.roles = roles state.roles = roles;
}, },
SET_PERMISSIONS: (state, permissions) => { SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions state.permissions = permissions;
}, },
SET_USERID: (state, userId) => { SET_USERID: (state, userId) => {
state.userId = userId state.userId = userId;
}, },
SET_USERPHONE: (state, phonenumber) => { SET_USERPHONE: (state, phonenumber) => {
state.phonenumber = phonenumber state.phonenumber = phonenumber;
} }
}, },
actions: { actions: {
// 登录 // 登录
Login({ commit }, userInfo) { Login({ commit }, userInfo) {
const username = userInfo.username.trim() const username = userInfo.username.trim();
const password = userInfo.password const password = userInfo.password;
const code = userInfo.code const code = userInfo.code;
const uuid = userInfo.uuid const uuid = userInfo.uuid;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
login(username, password, code, uuid).then(res => { login(username, password, code, uuid).then(res => {
setToken(res.data.token) setToken(res.data.token);
commit('SET_TOKEN', res.data.token) commit('SET_TOKEN', res.data.token);
setTenantid(res.data.tenantId) setTenantid(res.data.tenantId);
resolve() resolve();
}).catch(error => { }).catch(error => {
reject(error) reject(error);
}) });
}) });
}, },
// 获取用户信息 // 获取用户信息
GetInfo({ commit, state }) { GetInfo({ commit, state }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getInfo().then(res => { getInfo().then(res => {
const user = res.data.user const user = res.data.user;
const avatar = user.avatar ? process.env.VUE_APP_BASE_API + user.avatar : ''; const avatar = user.avatar ? user.avatar : '';
if (res.data.roles && res.data.roles.length > 0) { // 验证返回的roles是否是一个非空数组 if (res.data.roles && res.data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.data.roles) commit('SET_ROLES', res.data.roles);
commit('SET_PERMISSIONS', res.data.permissions) commit('SET_PERMISSIONS', res.data.permissions);
} else { } else {
commit('SET_ROLES', ['ROLE_DEFAULT']) commit('SET_ROLES', ['ROLE_DEFAULT']);
} }
commit('SET_NAME', user.nickName) commit('SET_NAME', user.nickName);
commit('SET_AVATAR', avatar) commit('SET_AVATAR', avatar);
commit('SET_USERID', user.userId) commit('SET_USERID', user.userId);
commit('SET_USERPHONE', user.phonenumber) commit('SET_USERPHONE', user.phonenumber);
resolve(res) resolve(res);
}).catch(error => { }).catch(error => {
reject(error) reject(error);
}) });
}) });
}, },
// 退出系统 // 退出系统
LogOut({ commit, state }) { LogOut({ commit, state }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
logout(state.token).then(() => { logout(state.token).then(() => {
commit('SET_TOKEN', '') commit('SET_TOKEN', '');
commit('SET_ROLES', []) commit('SET_ROLES', []);
commit('SET_PERMISSIONS', []) commit('SET_PERMISSIONS', []);
removeToken() removeToken();
resolve() resolve();
}).catch(error => { }).catch(error => {
reject(error) reject(error);
}) });
}) });
}, },
// 前端 登出 // 前端 登出
FedLogOut({ commit }) { FedLogOut({ commit }) {
return new Promise(resolve => { return new Promise(resolve => {
commit('SET_TOKEN', '') commit('SET_TOKEN', '');
removeToken() removeToken();
resolve() resolve();
}) });
} }
} }
} };
export default user export default user;
...@@ -401,6 +401,62 @@ export function isNumberStr(str) { ...@@ -401,6 +401,62 @@ export function isNumberStr(str) {
return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str); return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str);
} }
/**
*
* @param {string} originUrl 需要获取参数的url 默认当前url
* @param {RegExp} reg key需要剔除的特殊字符 默认过滤问号
* @returns {{[key : string] : any}} 查询对象 键值对
*/
export const getUrlSearchQuery = (originUrl = location.href, reg = new RegExp("\\?", "gi")) => {
const url = new URL(originUrl);
const params = url.searchParams.entries();
let _temp = {};
for (const [key, value] of params) {
_temp[key.replace(reg, "")] = (value ? decodeURIComponent(value) : "");
}
return _temp;
};
/**
* 对象转换为查询字符串
* @param {{[key:string] : any}} query
*/
export const paramsToQuery = (query) => {
try {
if (Object.prototype.toString.call(query) !== "[object Object]") return "";
const params = new URLSearchParams(query);
let searchStrArray = [];
params.forEach((value, key) => {
if (params.has(key)) {
searchStrArray.push(`${key}=${decodeURIComponent(value)}`);
}
});
searchStrArray = searchStrArray.join("&");
return searchStr;
} catch (error) {
console.log(error);
}
};
/**
* 查询字符串转对象
* @param {string} text
*/
export const searchTextToQuery = (text) => {
try {
if (text) {
const url = new URLSearchParams(text);
const _temp = {};
url.forEach((value, key) => {
_temp[key] = value;
});
return JSON.parse(JSON.stringify(_temp));
}
} catch (error) {
console.log(error);
}
};
// 甲方详情左侧菜单映射 // 甲方详情左侧菜单映射
export const detailSideBar = new Map([ export const detailSideBar = new Map([
// 企业速览 // 企业速览
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
<template slot="suffix"> <template slot="suffix">
<transition mode="out-in" appear name="fade"> <transition mode="out-in" appear name="fade">
<img src="@/assets/images/enterprise/search-input-clear-icon.svg" alt="" <img src="@/assets/images/enterprise/search-input-clear-icon.svg" alt=""
@click.stop="searchParam.companyName = '';handleSearch" v-show="showClearIcon"> @click.stop="searchParam.companyName = '';handleSearch()" v-show="showClearIcon">
</transition> </transition>
</template> </template>
</el-input> </el-input>
......
...@@ -194,9 +194,6 @@ export default { ...@@ -194,9 +194,6 @@ export default {
companyName: this.customerInfo.companyName companyName: this.customerInfo.companyName
}; };
document.getElementById('tagTitle').innerText = this.customerInfo.companyName; document.getElementById('tagTitle').innerText = this.customerInfo.companyName;
// let lists = this.$store.state.tagsView.visitedViews
// lists.forEach(item=>{
// if(item.fullPath == this.$route.fullPath){
let titlename = document.getElementById('tagTitles'); let titlename = document.getElementById('tagTitles');
if (titlename) { if (titlename) {
titlename.innerText = this.customerInfo.companyName; titlename.innerText = this.customerInfo.companyName;
......
<template> <template>
<div class="subsystem-iframe-container"> <div class="subsystem-iframe-container">
<div @click="$router.push({path : '/subsystem',query : ({id:1})})">11</div>
</div> </div>
</template> </template>
<script> <script>
import { getUrlSearchQuery } from "@/utils/";
export default { export default {
name: "", name: "subsystemIframeContainer",
data() { data() {
return { return {
...@@ -13,7 +14,8 @@ export default { ...@@ -13,7 +14,8 @@ export default {
}, },
//可访问data属性 //可访问data属性
created() { created() {
console.log(this.$route);
console.log(getUrlSearchQuery());
}, },
//计算集 //计算集
computed: { computed: {
...@@ -25,6 +27,7 @@ export default { ...@@ -25,6 +27,7 @@ export default {
}, },
// 渲染方法 // 渲染方法
render(createElement) { render(createElement) {
} }
} }
</script> </script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment