|
@@ -27,6 +27,15 @@
|
|
|
<div class="mt-5 font-normal text-white text-md dark:text-gray-500 -enter-x">
|
|
|
{{ t('sys.login.signInDesc') }}
|
|
|
</div>
|
|
|
+ <div class="appcode">
|
|
|
+ <div v-for="item in getAppList" :key="item.name">
|
|
|
+ <img :src="item.url" alt="" />
|
|
|
+ <div class="title">
|
|
|
+ <Icon :icon="item.icon" />
|
|
|
+ {{ item.name }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="flex w-full h-full py-5 xl:h-auto xl:py-0 xl:my-0 xl:w-6/12">
|
|
@@ -58,6 +67,7 @@
|
|
|
import { useI18n } from '/@/hooks/web/useI18n';
|
|
|
import { useDesign } from '/@/hooks/web/useDesign';
|
|
|
import { useLocaleStore } from '/@/store/modules/locale';
|
|
|
+ import Icon from '/@/components/Icon/src/Icon.vue';
|
|
|
|
|
|
defineProps({
|
|
|
sessionTimeout: {
|
|
@@ -71,6 +81,10 @@
|
|
|
const localeStore = useLocaleStore();
|
|
|
const showLocale = localeStore.getShowPicker;
|
|
|
const title = computed(() => globSetting?.title ?? '');
|
|
|
+ const { getAppList } = localeStore;
|
|
|
+ defineExpose({
|
|
|
+ getAppList,
|
|
|
+ });
|
|
|
</script>
|
|
|
<style lang="less">
|
|
|
@prefix-cls: ~'@{namespace}-login';
|
|
@@ -155,6 +169,27 @@
|
|
|
}
|
|
|
|
|
|
.container {
|
|
|
+ .my-auto {
|
|
|
+ .appcode {
|
|
|
+ margin-top: 1.25rem;
|
|
|
+ width: 325px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-around;
|
|
|
+ img {
|
|
|
+ width: 120px;
|
|
|
+ padding: 2px;
|
|
|
+ background: #fff;
|
|
|
+ }
|
|
|
+ .title {
|
|
|
+ text-align: center;
|
|
|
+ margin-top: 10px;
|
|
|
+ background: rgb(130, 166, 230);
|
|
|
+ padding: 5px;
|
|
|
+ border-radius: 3px;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
.@{logo-prefix-cls} {
|
|
|
display: flex;
|
|
|
width: 60%;
|
|
@@ -164,7 +199,6 @@
|
|
|
font-size: 24px;
|
|
|
color: #fff;
|
|
|
}
|
|
|
-
|
|
|
img {
|
|
|
width: 48px;
|
|
|
}
|