|
|
@@ -3,6 +3,11 @@
|
|
|
<div style="height: 70%">
|
|
|
<img @click="onPath('/')" class="head" src="@/assets/images/head.png" alt="" />
|
|
|
<div class="login-info flex-row-between">
|
|
|
+ <el-carousel class="carousel-bos" v-if="carousel.length > 0">
|
|
|
+ <el-carousel-item v-for="item in carousel" :key="item">
|
|
|
+ <el-image class="carousel-img" :src="item.value" fit="cover"></el-image>
|
|
|
+ </el-carousel-item>
|
|
|
+ </el-carousel>
|
|
|
<div></div>
|
|
|
<div class="login-bos" :class="{ 'customer-login': type === 3 }">
|
|
|
<el-form ref="loginRef" :model="loginForm" :rules="loginRules">
|
|
|
@@ -94,28 +99,27 @@
|
|
|
|
|
|
<div class="login-foot flex-column-between">
|
|
|
<div class="font-bos flex-row-center">
|
|
|
- <div>客户管理</div>
|
|
|
- <div style="margin: 0 10px">|</div>
|
|
|
- <div>供应商合作</div>
|
|
|
- <div style="margin: 0 10px">|</div>
|
|
|
- <div>关于我们</div>
|
|
|
- <div style="margin: 0 10px">|</div>
|
|
|
- <div @click="onPath('/i/help')">帮助中心</div>
|
|
|
- <div style="margin: 0 10px">|</div>
|
|
|
- <div>联系我们</div>
|
|
|
+ <template v-for="(navItem, index) in bottomNavList" :key="index">
|
|
|
+ <div class="info-text" @click="onPath(navItem.url)">{{ navItem.navigationName }}</div>
|
|
|
+ <div v-if="index < bottomNavList.length - 1" style="margin: 0 10px">|</div>
|
|
|
+ </template>
|
|
|
</div>
|
|
|
- <div class="font-box">CopyRight @ 优易365 2026</div>
|
|
|
+ <div class="font-box">{{ icpNo }}增值电信业务经营许可证编号:{{ license }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import { useUserStore } from '@/store/modules/user';
|
|
|
-import { smsCode } from '@/api/breg/index';
|
|
|
+import { smsCode, getLoginConfigList } from '@/api/breg/index';
|
|
|
import { LoginData } from '@/api/types';
|
|
|
import { to } from 'await-to-js';
|
|
|
import { User, Lock, Iphone, Message } from '@element-plus/icons-vue';
|
|
|
import { onPath } from '@/utils/siteConfig';
|
|
|
+import { getPlatformConfigList } from '@/api/breg/index';
|
|
|
+import { getBottomNav } from '@/api/home/index';
|
|
|
+import { handleTree } from '@/utils/ruoyi';
|
|
|
+import { on } from 'events';
|
|
|
|
|
|
const userStore = useUserStore();
|
|
|
const router = useRouter();
|
|
|
@@ -123,6 +127,9 @@ const router = useRouter();
|
|
|
const type = ref<number>(1);
|
|
|
const loading = ref(false);
|
|
|
const timer = ref<any>(null);
|
|
|
+const icpNo = ref<any>('');
|
|
|
+const license = ref<any>('');
|
|
|
+const bottomNavList = ref<any[]>([]);
|
|
|
|
|
|
const loginRef = ref<ElFormInstance>();
|
|
|
const redirect = ref('/');
|
|
|
@@ -152,6 +159,8 @@ const loginRules: ElFormRules = {
|
|
|
loginName: [{ required: true, trigger: 'blur', message: '请输入联系人登录名称' }]
|
|
|
};
|
|
|
|
|
|
+const carousel = ref<any>([]);
|
|
|
+
|
|
|
const onType = (val: number) => {
|
|
|
type.value = val;
|
|
|
// 切换登录类型时更新 grantType
|
|
|
@@ -164,6 +173,43 @@ const onType = (val: number) => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+getLoginConfigList({}).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ carousel.value = res.data;
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+getPlatformConfigList({ configKey: 'icpNo' }).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ if (res.rows && res.rows.length > 0) {
|
|
|
+ icpNo.value = res.rows[0].value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+getPlatformConfigList({ configKey: 'license' }).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ if (res.rows && res.rows.length > 0) {
|
|
|
+ license.value = res.rows[0].value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+// 获取底部导航数据
|
|
|
+const fetchBottomNav = async () => {
|
|
|
+ try {
|
|
|
+ const res = await getBottomNav(''); // 使用 footer 作为页面类型参数
|
|
|
+ if (res.code == 200 && res.data) {
|
|
|
+ // 后端返回的是扁平列表,使用 handleTree 转换为树形结构
|
|
|
+ // parentId 为 0、null 或 undefined 的是父级节点
|
|
|
+ bottomNavList.value = handleTree(res.data, 'id', 'parentId', 'children');
|
|
|
+ console.log('bottomNavList.value:', bottomNavList.value);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('获取底部导航失败:', error);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
/**
|
|
|
* 监听路由变化,获取重定向地址
|
|
|
*/
|
|
|
@@ -295,6 +341,7 @@ const getLoginData = () => {
|
|
|
|
|
|
onMounted(() => {
|
|
|
getLoginData();
|
|
|
+ fetchBottomNav();
|
|
|
});
|
|
|
</script>
|
|
|
|
|
|
@@ -321,10 +368,11 @@ onMounted(() => {
|
|
|
}
|
|
|
|
|
|
.login-info {
|
|
|
+ position: relative;
|
|
|
width: 100%;
|
|
|
// height: 600px;
|
|
|
height: 100%;
|
|
|
- background-image: url('@/assets/images/login/login2.png');
|
|
|
+ // background-image: url('@/assets/images/login/login2.png');
|
|
|
overflow: hidden;
|
|
|
background-position: center center;
|
|
|
background-repeat: no-repeat;
|
|
|
@@ -451,6 +499,12 @@ onMounted(() => {
|
|
|
font-size: 13px;
|
|
|
color: #999999;
|
|
|
margin-top: 30px;
|
|
|
+ .info-text {
|
|
|
+ cursor: pointer;
|
|
|
+ &:hover {
|
|
|
+ color: #c8102e;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
.font-box {
|
|
|
width: 100%;
|
|
|
@@ -459,5 +513,21 @@ onMounted(() => {
|
|
|
margin-top: 20px;
|
|
|
text-align: center;
|
|
|
}
|
|
|
+
|
|
|
+ .carousel-bos {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ z-index: -1;
|
|
|
+ :deep(.el-carousel__container) {
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ .carousel-img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|