You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.7 KiB

6 months ago
<template>
<a-config-provider :locale="locale">
<router-view v-if="isLogin" />
<template v-else>
<ns-layout v-if="ifShowHeader" />
<ns-content v-else />
</template>
</a-config-provider>
</template>
<script lang="ts">
import { computed, defineComponent, ref, watch } from 'vue';
import NsLayout from '../layout/layout.vue';
import { useRoute } from 'vue-router';
import zhCN from 'ant-design-vue/es/locale/zh_CN';
import { authorizationService } from '/nerv-base/store/modules/authorization-service';
import { appConfigStore } from '/nerv-base/store/modules/app-config';
export default defineComponent({
name: 'NsApplication',
components: { NsLayout },
props: {
layout: {
type: Boolean,
default: true,
},
},
setup(props) {
const route = useRoute();
const isLogin = ref(false);
const switchData = computed(() => authorizationService().switches);
let ifShowHeader = ref(props.layout);
watch(
() => route.path,
(e) => {
isLogin.value = e === '/login';
},
);
console.log('window.self === window.top', window.self === window.top);
//判断页面是否被嵌在iframe中
if (!(window.self === window.top)) {
console.log('在iframe中');
ifShowHeader.value = false;
}
return {
appConfig: appConfigStore(),
switchData,
isLogin,
locale: zhCN,
ifShowHeader,
};
},
watch: {
switchData: {
handler() {
if (!this.appConfig.customAppTitle) {
this.setHead();
}
},
deep: true,
},
},
methods: {
setHead() {
/** stack和cloud平台分别设置标签页信息 */
try {
const switchData = authorizationService().switches;
const app = authorizationService().getApp();
if (switchData && switchData.isNervStack) {
console.log(document.getElementsByTagName('link')[0]);
document.getElementsByTagName('title')[0].innerText = 'OP Console';
document
.getElementsByTagName('link')[0]
.setAttribute('href', `/${app}/favicon-stack.ico`);
} else {
document.getElementsByTagName('title')[0].innerText = 'Cloud Console';
document.getElementsByTagName('link')[0].setAttribute('href', `/${app}/favicon.ico`);
}
} catch (error) {
document.getElementsByTagName('title')[0].innerText = 'Cloud Console';
document.getElementsByTagName('link')[0].setAttribute('href', `/${app}/favicon.ico`);
console.error(error);
}
},
},
});
</script>
<style lang="less" scoped></style>