Merge branch 'dev' of https://fcd.gdyditc.com/itc-framework/ma/2024/front into dev
This commit is contained in:
@ -47,6 +47,17 @@ export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal')
|
||||
},
|
||||
);
|
||||
}
|
||||
export function singleLoginApi(params, mode) {
|
||||
return defHttp.post(
|
||||
{
|
||||
url: Api.Login + '/' + params.ltpasToken,
|
||||
params:{},
|
||||
},
|
||||
{
|
||||
errorMessageMode: mode,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: getUserInfo
|
||||
|
||||
@ -90,7 +90,7 @@
|
||||
});
|
||||
</script>
|
||||
<style scoped>
|
||||
.commonInfo /deep/.ant-input-disabled {
|
||||
.commonInfo :deep(.ant-input-disabled){
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
color: inherit;
|
||||
|
||||
@ -2,6 +2,7 @@ import { ref } from 'vue';
|
||||
|
||||
const isEditorOpen = ref(false);
|
||||
const hasAjaxError = ref(false);
|
||||
const isSingleLogin = ref(false);
|
||||
|
||||
function ajaxError() {
|
||||
hasAjaxError.value = true;
|
||||
@ -14,7 +15,8 @@ export default function() {
|
||||
return {
|
||||
isEditorOpen,
|
||||
hasAjaxError,
|
||||
ajaxError
|
||||
ajaxError,
|
||||
isSingleLogin
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<Layout :class="prefixCls" v-bind="lockEvents">
|
||||
<LayoutFeatures />
|
||||
<LayoutHeader fixed v-if="getShowFullHeaderRef" />
|
||||
<Layout :class="prefixCls" v-bind="lockEvents">z
|
||||
<LayoutFeatures v-if="showSide"/>
|
||||
<LayoutHeader fixed v-if="getShowFullHeaderRef && showSide"/>
|
||||
<Layout :class="[layoutClass]">
|
||||
<LayoutSideBar v-if="getShowSidebar || getIsMobile" />
|
||||
<LayoutSideBar v-if="(getShowSidebar || getIsMobile) && showSide"/>
|
||||
<Layout :class="`${prefixCls}-main`">
|
||||
<LayoutMultipleHeader />
|
||||
<LayoutMultipleHeader v-if="showSide"/>
|
||||
<LayoutContent />
|
||||
<LayoutFooter />
|
||||
</Layout>
|
||||
@ -14,7 +14,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed, unref } from 'vue';
|
||||
import { defineComponent, computed, unref, ref } from 'vue';
|
||||
import { Layout } from 'ant-design-vue';
|
||||
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
|
||||
|
||||
@ -29,6 +29,8 @@
|
||||
import { useLockPage } from '/@/hooks/web/useLockPage';
|
||||
|
||||
import { useAppInject } from '/@/hooks/web/useAppInject';
|
||||
import useGlobalFlag from '/@/hooks/core/useGlobalFlag';
|
||||
import { useRoute } from 'vue-router';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'DefaultLayout',
|
||||
@ -46,6 +48,16 @@
|
||||
const { getIsMobile } = useAppInject();
|
||||
const { getShowFullHeaderRef } = useHeaderSetting();
|
||||
const { getShowSidebar, getIsMixSidebar, getShowMenu } = useMenuSetting();
|
||||
const globalFlag = useGlobalFlag();
|
||||
const route = useRoute();
|
||||
let showSide = ref(true)
|
||||
const { isSingleLogin } = globalFlag;
|
||||
if (route.query.isSingleLogin) {
|
||||
isSingleLogin.value = true
|
||||
}
|
||||
if (isSingleLogin.value) {
|
||||
showSide.value = false
|
||||
}
|
||||
|
||||
// Create a lock screen monitor
|
||||
const lockEvents = useLockPage();
|
||||
@ -66,6 +78,7 @@
|
||||
getIsMixSidebar,
|
||||
layoutClass,
|
||||
lockEvents,
|
||||
showSide
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@ -6,7 +6,7 @@ import { PageEnum } from '/@/enums/pageEnum';
|
||||
import { ROLES_KEY, TOKEN_KEY, USER_INFO_KEY } from '/@/enums/cacheEnum';
|
||||
import { getAuthCache, setAuthCache } from '/@/utils/auth';
|
||||
import { GetUserInfoModel, LoginParams, RoleInfo } from '/@/api/system/login/model';
|
||||
import { doLogout, getUserInfo, loginApi } from '/@/api/system/login';
|
||||
import { doLogout, getUserInfo, loginApi, singleLoginApi } from '/@/api/system/login';
|
||||
import { useI18n } from '/@/hooks/web/useI18n';
|
||||
import { useMessage } from '/@/hooks/web/useMessage';
|
||||
import { router } from '/@/router';
|
||||
@ -123,6 +123,25 @@ export const useUserStore = defineStore({
|
||||
return Promise.reject(error);
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description: singleLogin
|
||||
*/
|
||||
async singleLogin(
|
||||
params: any
|
||||
): Promise<GetUserInfoModel | null> {
|
||||
try {
|
||||
const data = await singleLoginApi(params, params.mode);
|
||||
|
||||
const { token } = data;
|
||||
// save token
|
||||
this.setToken(token);
|
||||
router.replace(params.targetURL)
|
||||
|
||||
return await this.afterLoginAction(false);
|
||||
} catch (error) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
},
|
||||
async afterLoginAction(goHome?: boolean): Promise<GetUserInfoModel | null> {
|
||||
if (!this.getToken) return null;
|
||||
|
||||
|
||||
@ -793,7 +793,7 @@ ${hasTemplatePrint ? ' reactive ' : ''}
|
||||
|
||||
import useEventBus from '/@/hooks/event/useEventBus';
|
||||
|
||||
const { bus, CREATE_FLOW, FLOW_PROCESSED } = useEventBus();
|
||||
const { bus, CREATE_FLOW, FLOW_PROCESSED, FORM_LIST_MODIFIED } = useEventBus();
|
||||
|
||||
const { notification } = useMessage();
|
||||
const { t } = useI18n();
|
||||
@ -1450,12 +1450,20 @@ ${hasTemplatePrint ? ' reactive ' : ''}
|
||||
|
||||
onMounted(() => {
|
||||
${ model.listConfig.isLeftMenu ? `fetch();` : ''}
|
||||
if (schemaIdComputedRef.value) {
|
||||
bus.on(FLOW_PROCESSED, handleRefresh);
|
||||
bus.on(CREATE_FLOW, handleRefresh);
|
||||
} else {
|
||||
bus.on(FORM_LIST_MODIFIED, handleRefresh);
|
||||
}
|
||||
});
|
||||
onUnmounted(() => {
|
||||
if (schemaIdComputedRef.value) {
|
||||
bus.off(FLOW_PROCESSED, handleRefresh);
|
||||
bus.off(CREATE_FLOW, handleRefresh);
|
||||
} else {
|
||||
bus.off(FORM_LIST_MODIFIED, handleRefresh);
|
||||
}
|
||||
});
|
||||
function getActions(record: Recordable):ActionItem[] {
|
||||
${
|
||||
|
||||
24
src/views/secondDev/SingleLogin.vue
Normal file
24
src/views/secondDev/SingleLogin.vue
Normal file
@ -0,0 +1,24 @@
|
||||
<template>
|
||||
<div style="width: 100%; height: 300px; display: flex;justify-content: center;align-items: center;">
|
||||
<a-spin />
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { useUserStore } from '/@/store/modules/user';
|
||||
import { onMounted } from 'vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
|
||||
const { currentRoute } = useRouter();
|
||||
const userStore = useUserStore();
|
||||
onMounted(async () => {
|
||||
const fullPath = currentRoute.value.fullPath;
|
||||
const list = fullPath.split('targetURL=');
|
||||
const targetURL = list[1];
|
||||
let params = {...currentRoute.value.query, targetURL: targetURL, mode: 'none' }; //不要默认的错误提示
|
||||
await userStore.singleLogin(params);
|
||||
});
|
||||
|
||||
</script>
|
||||
<style lang="less">
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user