后台界面

1. 演示帐号动态配置
2. vite 动态加载异常问题修复
This commit is contained in:
tak
2025-07-04 14:17:03 +08:00
parent c9af5ae093
commit 6f8761756a
4 changed files with 78 additions and 51 deletions

43
web/src/debug/account.ts Normal file
View File

@@ -0,0 +1,43 @@
import { isArray } from "@/utils/is";
interface Account {
/**
* 账号名称
*/
name: string;
/**
* 用户名
*/
username: string;
/**
* 密码
*/
password: string;
}
/**
* 获取配置的账号信息
* @returns {[]Account} 返回账号信息数组
*/
export function getDemoAccounts() {
let envConf = import.meta.env.VITE_APP_DEMO_ACCOUNT || "";
// 帐号密码一样
// [["username"],["username","password"],["username","password","name"]]
try {
let accounts = JSON.parse(envConf);
if (accounts && isArray(accounts)) {
return accounts.map((item: String[]) => {
let [username = "", password = "", name = ""] = item;
username = username;
password = password || username;
name = name || username;
return {
name,
username,
password,
} as Account;
});
}
} catch (error) {}
return [] as Account[];
}

View File

@@ -1,60 +1,37 @@
<template>
<n-space :vertical="true">
<n-divider>演示角色登录</n-divider>
<n-space justify="center">
<n-button
v-for="item in accounts"
:key="item.username"
type="primary"
@click="login(item.username, item.password)"
>
{{ item.label }}
</n-button>
<template v-if="accounts && accounts.length > 0">
<n-space :vertical="true">
<n-divider>演示角色登录</n-divider>
<n-space justify="center">
<n-button
v-for="item in accounts"
:key="item.username"
type="primary"
@click="login(item.username, item.password)"
>
{{ item.name }}
</n-button>
</n-space>
<n-space justify="center" class="mt-2">
<n-text depth="3">SaaS系统多租户多应用设计</n-text>
</n-space>
</n-space>
<n-space justify="center" class="mt-2">
<n-text depth="3">SaaS系统多租户多应用设计</n-text>
</n-space>
</n-space>
</template>
</template>
<script lang="ts" setup>
interface Emits {
(e: 'login', param: { username: string; password: string }): void;
}
import { getDemoAccounts } from "@/debug/account";
interface Emits {
(e: "login", param: { username: string; password: string }): void;
}
const emit = defineEmits<Emits>();
const emit = defineEmits<Emits>();
const accounts = [
{
label: '超管',
username: 'admin',
password: '123456',
},
{
label: '管理员',
username: 'test',
password: '123456',
},
{
label: '租户',
username: 'ameng',
password: '123456',
},
{
label: '商户',
username: 'abai',
password: '123456',
},
{
label: '用户',
username: 'asong',
password: '123456',
},
];
const accounts = getDemoAccounts();
function login(username: string, password: string) {
emit('login', { username, password });
}
function login(username: string, password: string) {
emit("login", { username, password });
}
</script>
<style scoped></style>