This commit is contained in:
carey036 2024-09-25 12:56:06 +00:00 committed by GitHub
commit f235e42f8f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 53 additions and 2 deletions

View File

@ -8,11 +8,12 @@ import {
IconKey, IconKey,
IconGardenCart, IconGardenCart,
IconUser, IconUser,
IconUserScan IconUserScan,
IconFileTextAi
} from '@tabler/icons-react'; } from '@tabler/icons-react';
// constant // constant
const icons = { IconDashboard, IconSitemap, IconArticle, IconCoin, IconAdjustments, IconKey, IconGardenCart, IconUser, IconUserScan }; const icons = { IconDashboard, IconSitemap, IconArticle, IconCoin, IconAdjustments, IconKey, IconGardenCart, IconUser, IconUserScan,IconFileTextAi };
// ==============================|| DASHBOARD MENU ITEMS ||============================== // // ==============================|| DASHBOARD MENU ITEMS ||============================== //
@ -29,6 +30,14 @@ const panel = {
breadcrumbs: false, breadcrumbs: false,
isAdmin: false isAdmin: false
}, },
{
id: 'chat',
title: '聊天',
type: 'item',
url: '/panel/chat',
icon: icons.IconFileTextAi,
breadcrumbs: false
},
{ {
id: 'channel', id: 'channel',
title: '渠道', title: '渠道',

View File

@ -9,6 +9,7 @@ const Log = Loadable(lazy(() => import('views/Log')));
const Redemption = Loadable(lazy(() => import('views/Redemption'))); const Redemption = Loadable(lazy(() => import('views/Redemption')));
const Setting = Loadable(lazy(() => import('views/Setting'))); const Setting = Loadable(lazy(() => import('views/Setting')));
const Token = Loadable(lazy(() => import('views/Token'))); const Token = Loadable(lazy(() => import('views/Token')));
const Chat = Loadable(lazy(() => import('views/Chat')));
const Topup = Loadable(lazy(() => import('views/Topup'))); const Topup = Loadable(lazy(() => import('views/Topup')));
const User = Loadable(lazy(() => import('views/User'))); const User = Loadable(lazy(() => import('views/User')));
const Profile = Loadable(lazy(() => import('views/Profile'))); const Profile = Loadable(lazy(() => import('views/Profile')));
@ -39,6 +40,10 @@ const MainRoutes = {
path: 'log', path: 'log',
element: <Log /> element: <Log />
}, },
{
path: 'chat',
element: <Chat />
},
{ {
path: 'redemption', path: 'redemption',
element: <Redemption /> element: <Redemption />

View File

@ -0,0 +1,37 @@
import React, { useEffect, useState } from "react";
import { API } from 'utils/api';
import { showError, showSuccess } from 'utils/common';
const Chat = () => {
const [value, setValue] = useState([]);
const [isLoading, setIsLoading] = useState(true); // 加载状态
const loadTokens = async () => {
setIsLoading(true); // 开始加载
const res = await API.get(`/api/token/?p=0`);
const { success, message, data } = res.data;
setValue(data);
setIsLoading(false); // 加载完成
};
useEffect(() => {
loadTokens();
}, []);
if (isLoading) {
return <div>Loading...</div>;
} else if (value.length) {
const siteInfo = JSON.parse(localStorage.getItem("siteInfo"));
const chatLink = siteInfo.chat_link + `#/?settings={"key":"sk-${value[0]?.key}","url":"${siteInfo.server_address}"}`;
return (
<iframe
src={chatLink}
style={{ width: "100%", height: "85vh", border: "none" }}
/>
);
} else {
showError("未找到可用令牌,请先创建令牌");
}
};
export default Chat;