feat:guide

This commit is contained in:
maggieyyy
2024-08-23 15:41:26 +08:00
parent 97154f97f1
commit 3d8a1eb8ae
15 changed files with 217 additions and 1163 deletions
@@ -46,15 +46,16 @@ const themeToken = {
const mainPage = project === 'core' ?'/service/list':'/serviceHub/list'
const TOTAL_MENU_ITEMS:MenuProps['items'] = useMemo(() => [
getNavItem($t('工作空间'), 'workspace','/tenantManagement',<Icon icon="ic:baseline-space-dashboard" width="18" height="18"/>, [
getNavItem($t('我的'), 'my','/tenantManagement',null,[
getNavItem($t('工作空间'), 'workspace','/guide',<Icon icon="ic:baseline-space-dashboard" width="18" height="18"/>, [
getNavItem($t('我的'), 'my','/guide',null,[
getNavItem(<a>{$t('首页')}</a>, 'guide','/guide',<Icon icon="ic:baseline-home" width="18" height="18"/>,undefined,undefined,''),
getNavItem(<a>{$t('应用')}</a>, 'tenantManagement','/tenantManagement',<Icon icon="ic:baseline-apps" width="18" height="18"/>,undefined,undefined,''),
getNavItem(<a>{$t('服务')}</a>, 'service','/service',<Icon icon="ic:baseline-blinds-closed" width="18" height="18"/>,undefined,undefined,''),
getNavItem(<a>{$t('团队')}</a>, 'team','/team',<Icon icon="ic:baseline-people-alt" width="18" height="18"/>,undefined,undefined,''),
],undefined,''),
getNavItem(<a>{$t('API 市场')}</a>, 'serviceHub','/serviceHub',<Icon icon="ic:baseline-hub" width="18" height="18"/>,undefined,undefined,'system.workspace.api_market.view'),
]),
getNavItem(<a>{$t('API 市场')}</a>, 'serviceHub','/serviceHub',<Icon icon="ic:baseline-hub" width="18" height="18"/>,undefined,undefined,'system.workspace.api_market.view'),
getNavItem($t('仪表盘'), 'mainPage', APP_MODE === 'pro' ? '/dashboard' : '/dashboard/total',<Icon icon="ic:baseline-bar-chart" width="18" height="18"/>,[
getNavItem(<a >{$t('运行视图')}</a>, 'dashboard',APP_MODE === 'pro' ? '/dashboard' : '/dashboard/total' ,<ProjectFilled />,undefined,undefined,'system.dashboard.dashboard.view'),
APP_MODE === 'pro' ? getNavItem(<a >{$t('系统拓扑图')}</a>, 'systemrunning','/systemrunning',<ProjectFilled />,undefined,undefined,'system.dashboard.systemrunning.view') : null,
@@ -119,7 +120,6 @@ const themeToken = {
// 初始过滤操作
const res = [...TOTAL_MENU_ITEMS]!.filter(x => x).map((x: any) => (x.routes ? { ...x, routes: filterMenu(x.routes) } : x));
console.log(res)
// 返回处理后的数据
return { path: '/', routes: res.map(x=> ({...x, routes: x.routes?.filter(x=> (x.access || x.routes?.length > 0))})).filter(x=> (x.access || x.routes?.length > 0)) };
}, [accessData, state.language]);
@@ -9,23 +9,24 @@ import { $t } from "@common/locales";
class InsidePageProps {
showBanner?:boolean = true
pageTitle:string = ''
pageTitle:string| React.ReactNode = ''
tagList?:Array<{label:string|ReactNode}> = []
children:React.ReactNode
showBtn?:boolean = false
btnTitle?:string = ''
description?:string = ''
description?:string | React.ReactNode= ''
onBtnClick?:()=>void
backUrl?:string = '/'
btnAccess?:string
showBorder?:boolean = true
className?:string = ''
contentClassName?:string=''
headerClassName?:string=''
/** 整个页面滚动 */
scrollPage?:boolean = true
}
const InsidePage:FC<InsidePageProps> = ({showBanner=true,pageTitle,tagList,showBtn,btnTitle,btnAccess,description,children,onBtnClick,backUrl,showBorder=true,className='',contentClassName='',scrollPage=true})=>{
const InsidePage:FC<InsidePageProps> = ({showBanner=true,pageTitle,tagList,showBtn,btnTitle,btnAccess,description,children,onBtnClick,backUrl,showBorder=true,className='',contentClassName='',headerClassName='',scrollPage=true})=>{
const navigate = useNavigate();
const goBack = () => {
@@ -34,7 +35,7 @@ const InsidePage:FC<InsidePageProps> = ({showBanner=true,pageTitle,tagList,showB
return (
// <div className="h-full flex flex-col flex-1 overflow-hidden bg-[#f7f8fa]">
<div className={`h-full flex flex-col flex-1 overflow-hidden ${className}`}>
{ showBanner && <div className={`border-[0px] mr-PAGE_INSIDE_X ${showBorder ? 'border-b-[1px] border-solid border-BORDER' : ''}`}>
{ showBanner && <div className={`border-[0px] mr-PAGE_INSIDE_X ${showBorder ? 'border-b-[1px] border-solid border-BORDER' : ''} ${headerClassName}`}>
<div className="mb-[30px]">
{backUrl &&<div className="text-[18px] leading-[25px] mb-[12px]">
<Button type="text" onClick={goBack}><ArrowLeftOutlined className="max-h-[14px]" />{$t('返回')}</Button>
@@ -55,7 +56,7 @@ const InsidePage:FC<InsidePageProps> = ({showBanner=true,pageTitle,tagList,showB
</p>
</div>
</div>}
<div className={`h-full ${scrollPage ? 'overflow-hidden' : 'overflow-auto'} ${contentClassName || ''}`}>{children}</div>
<div className={`max-h-full ${scrollPage ? 'overflow-hidden' : 'overflow-auto'} ${contentClassName || ''}`}>{children}</div>
</div>
)
}
@@ -0,0 +1,17 @@
import { $t } from "@common/locales"
/* 本组件不在页面渲染,只是为了让i18next-scanner能找到从接口传递的、需要翻译的字段 */
export const TranslateWord = ()=>{
return (
<>
{$t('文件日志')}
{$t('HTTP日志')}
{$t('Kafka文件日志')}
{$t('NSQ文件日志')}
{$t('Syslog文件日志')}
{$t('文件日志')}
{$t('文件日志')}
{$t('文件日志')}
</>
)
}
+1 -1
View File
@@ -21,7 +21,7 @@ export const STATUS_COLOR = {
// avoid changing route within ths same category
export const routerKeyMap = new Map<string, string[]|string>([
['workspace',['tenantManagement','service','team','serviceHub']],
['workspace',['tenantManagement','service','team','guide']],
['my',['tenantManagement','service','team']],
['mainPage',['dashboard','systemrunning']],
['operationCenter',['member','user','role','servicecategories']],
@@ -107,7 +107,7 @@ export const GlobalProvider: FC<{children:ReactNode}> = ({ children }) => {
version: '1.0.0',
updateDate: '2024-07-01',
powered:'Powered by https://apipark.com',
mainPage:'/service/list',
mainPage:'/guide',
language:'en'
});
const [accessData,setAccessData] = useState<Map<string,string[]>>(new Map())
@@ -1,570 +1 @@
{
"Kc0e5ef9f": "workspace",
"K48325b6": "Search for (0) names",
"K3d7465f7":"file log",
"K3863c722": "我的",
"Kfe93ef35": "应用",
"Kb58e0c3f": "服务",
"Kc9e489f5": "团队",
"K61c89f5f": "API 市场",
"K16d71239": "仪表盘",
"K714c192d": "运行视图",
"Kd57dfe97": "系统拓扑图",
"K3fe97dcc": "系统设置",
"K67ef3525": "组织",
"K74aef1ad": "成员",
"Kf644225f": "角色",
"K958da71f": "服务分类管理",
"Kf270ca55": "运维与集成",
"Ke93d36ed": "集群",
"K481e8a05": "证书",
"Kca53edd0": "日志",
"Kb283e720": "资源",
"K631d646f": "Open API",
"K6535ff9c": "账号设置",
"Kf15499b4": "退出登录",
"Kabbd6e6": "文档",
"K1196b104": "APIPark - 企业API数据开放平台",
"K1f42de3": "HTTP 状态码",
"K4770dff4": "系统状态码",
"Kf89e58f1": "描述",
"K9e53c664": "提交",
"Kf8e7294c": "上一步",
"Ka0451c97": "取消",
"Kb1dedda3": "关闭",
"Kb2fc7600": "添加配置",
"K4e07217d": "编辑配置",
"K4ea968fe": "编辑(0)",
"Ka7aaaeb": "添加(0)",
"Kaff78ecf": "请输入Key",
"K65d46535": "请输入Value",
"Kc14b2ea3": "返回",
"K11d3633a": "ID",
"Kbff43de3": "名称",
"K16ca79ef": "Driver",
"K7a369eef": "已发布",
"Kcfa1a4d2": "下线",
"K771dc3b7": "上线",
"K530f5951": "查看",
"Kecbd7449": "删除",
"K1cbe2507": "确认",
"Ka1d885c1": "添加",
"Kad207008": "编辑",
"K1ff96ff": "申请系统",
"K9bf855d6": "所属团队",
"K11b994ed": "申请人",
"K939baba7": "申请时间",
"Kdab2e63b": "版本号",
"K8b29c460": "版本说明",
"K36a72ad1": "API 列表",
"K54e44357": "上游列表",
"Kb8e8e6f5": "备注",
"K1ab0ae5b": "申请原因",
"K53c00c3c": "审核意见",
"K7edf331d": "时间",
"Kef45b208": "近1小时",
"K9dbf22b8": "近24小时",
"K820fbfab": "近3天",
"Kd6d28fc": "近7天",
"K23fda291": "暂无操作权限,请联系管理员分配。",
"K4618cb0a": "微信小程序",
"Ka854f511": "获取文件,需填路径",
"Kaa11a695": "暂不支持生成非 HTTPS 或非 HTTP 协议的代码示例",
"Kbe46924e": "搜索编程语言...",
"Ke8e4f258": "编程语言",
"K29c07a47": "成功示例",
"K1f5c814d": "失败示例",
"K4ef022d7": "默认 text/html;charset=UTF-8",
"Kd061b5bf": "暂未填写示例",
"Kc14cec33": "Binary",
"K48b4d9e3": "请求头部",
"Kcd347eaf": "请求体",
"K9e100bfe": "Query 参数",
"K3e9f12fd": "REST 参数",
"K2bfa290c": "api request editor",
"Kb36d111a": "返回头部",
"K980bde79": "返回值",
"Kb04d201a": "更多设置",
"Kee74f5b4": "添加子参数",
"Kc7d3106c": "向下添加行",
"Keaabd222": "标签",
"K8ad2c50e": "参数名",
"K67d68dd1": "类型",
"K29245f47": "必需",
"Ke32cbcd3": "示例",
"Kc13936c6": "输入 URL 或 cURL",
"Ka1ede006": "HTTP",
"K152ac44e": "参数位置",
"K1660ae72": "匹配类型",
"K91ced765": "参数值",
"K5b265628": "操作类型",
"K1826982d": "新增或修改",
"Kd65b55f5": "匹配参数值",
"K15f35bf2": "转发上游路径",
"K79dec0dd": "请求超时时间",
"K7d465645": "绑定上游服务",
"K63a6404d": "重试时间",
"K47740727": "转发上游请求头",
"K2b605d42": "More",
"K1df9fbd5": "导入",
"K5e85df18": "导入格式",
"K9eaf7885": "全量替换",
"Kf8c3a80b": "在末端插入",
"Kd96b2d7d": "增量更新",
"Kf2fc08eb": "请求头",
"Ka45f1d8": "Rest 参数",
"K94bb113a": "大小",
"K359919b5": "另存为文件",
"K38bf1b90": "响应",
"K59f4186e": "响应头",
"K5f1e23fd": "正文",
"Kf404ef7d": "发送(Enter)",
"K2dbfd648": "中止",
"Kacabc771": "秒",
"K13ae6a93": "复制",
"Ke54a14a3": "格式化",
"K43934f6d": "搜索",
"K741decac": "替代",
"Kd507abff": "确定",
"Kca2d1624": "The (0) must not be negative.",
"K792b255a": "The (0) must be greater than or equal to the (1).",
"Kf0bed26d": "值枚举",
"K633a03ca": "枚举",
"Kd2766caf": "最小长度",
"Kd6d52485": "最大长度",
"Kea15f66c": "最小值",
"K1af340ff": "最大值",
"K68691e16": "将文件拖拽至此处上传,或点击选择文件上传",
"Kcec46ae": "Upload Files",
"K760fb044": "Files Selected",
"Kea2bdee0": "请填写接口名称",
"K49053438": "详细说明",
"K148f6fa4": "高级匹配",
"K3ae4c789": "转发配置",
"K2f4d0a37": "请求参数",
"Kde2d6dbd": "返回示例",
"K70e6069c": "测试 API",
"Ke4603448": "请求 Header",
"K89fd86b3": "请求 Body",
"K8747e3c4": "请求示例代码",
"K8613e6e7": "响应示例",
"Kab1c2159": "响应 Header",
"Kd2be51d1": "响应 Body",
"K831aa6c0": "申请方-应用",
"K58ca9485": "申请服务",
"K283f55b4": "服务所属系统",
"Kd60d204": "服务所属团队",
"K3a9a3b75": "审批状态",
"K4f57b2de": "审批人",
"K31dabc6b": "审批时间",
"K8582af3f": "拒绝",
"K54e27f57": "通过",
"K7eeca185": "审批完成",
"Kd4061161": "发布审批中",
"K823bfe63": "在线",
"K97ddb3f8": "-",
"Kc9315fa1": "已拒绝",
"K3fbe7511": "发布异常",
"Ke64e695c": "发布中",
"K17f93984": "API 名称",
"K1365fe45": "请求方式",
"Kc380335f": "路径",
"K4ee62e8": "该 API 缺失(0)(1)(2)请先补充",
"K385591f3": "转发信息,",
"K68415c14": "文档信息,",
"K133b75e9": "上游信息,",
"Kad98e030": "上游类型",
"Kdeed8399": "静态上游",
"K78b1ca25": "地址",
"K6208054": "待审批",
"K1be7f021": "审批通过",
"K677a4959": "发布终止",
"Kfd6d2d3d": "已关闭",
"K9d7e880a": "发布版本",
"K855135f": "创建版本时间",
"Kcbf39b82": "版本状态",
"K339d15b5": "创建人",
"K7194cea2": "审核时间",
"K69827c60": "发布状态",
"K1644b775": "新增",
"K4fdf4dcc": "变更",
"K33d66e26": "无变更",
"K9b70c007": "缺失字段",
"Kd85208a3": "驳回",
"K8adf7f8b": "审核中",
"Kad6aa439": "已订阅",
"K3118fdb0": "取消订阅",
"K9a68443b": "取消申请",
"K18307d56": "手动添加",
"K705fe9f5": "订阅申请",
"Kbc96ebec": "申请方应用",
"K1f89176d": "申请方所属团队",
"Kfe731dfc": "操作",
"K71661ee8": "必填项",
"Kcbee3f8": "不是有效邮箱地址",
"K442cfba1": "请输入",
"K3bb646e4": "请选择",
"Ka4ecfa40": "英文数字下划线任意一种,首字母必须为英文",
"K39686a7f": "支持字母开头、英文数字中横线下划线组合",
"K4d6a0190": "选择拒绝时,审批意见为必填",
"K37318b68": "无法连接集群,请检查集群地址是否正确或防火墙配置",
"K7f0c746d": "操作成功",
"K6a365d01": "操作失败",
"K978062b6": "正在操作",
"Kca7bd6d4": "正在加载数据",
"K3c93b77e": "获取数据失败",
"Ke108c369": "登录成功",
"K9168d3e": "退出成功,将跳转至登录页",
"K2f8a7ab7": "未填写审核意见",
"Kb858d78a": "复制成功",
"K26e85d15": "复制失败,请手动复制",
"K5cfdd950": "该数据删除后将无法找回,请确认是否删除?",
"K2a3f24ac": "默认工作表",
"K7e1ab4b0": "至",
"Kf1b166e7": "详情",
"K28555332": "暂不支持带有双斜杠//的url",
"Keb9fcdad": "用户名",
"Kc654b275": "邮箱",
"Kbe2ecc69": "部门",
"K759fb403": "状态",
"K52c8a730": "启用",
"K718c9310": "禁用",
"K2c5882be": "绑定域名",
"K1cc07937": "过期日期",
"K8b7c2592": "更新者",
"Keefda53d": "更新时间",
"K9f3db3ca": "集群名称",
"Ke7487049": "集群 ID",
"Kb660ffe8": "节点名称",
"Kf12b3034": "管理地址",
"K867e6faf": "服务地址",
"K37348a5e": "集群同步地址",
"K151d2bb7": "环境名称",
"Kfa744afd": "集群数量",
"K23a3bd72": "异常",
"Ke039b9b5": "正常",
"K5c123bad": "角色名称",
"K76036e25": "HTTP 请求头",
"K8d4cbf50": "Cookie",
"K44607e3f": "全等匹配",
"Kc287500a": "前缀匹配",
"Kfc0b1147": "后缀匹配",
"Ka4a92043": "子串匹配",
"K30b2e44f": "非等匹配",
"Kb1587991": "空值匹配",
"K1e97dbd8": "存在匹配",
"Kc8ee3e62": "不存在匹配",
"K87c5a801": "区分大小写的正则匹配",
"K95f062f1": "不区分大小写的正则匹配",
"Kfbd230a5": "任意匹配",
"K413b9869": "服务名称",
"K1e84ad04": "服务 ID",
"K72b0c0b3": "API 数量",
"Kf7200cd9": "负责人",
"Kefaf9956": "创建时间",
"K98db2cb9": "申请状态",
"Ke792d01c": "所属服务",
"K61b62ace": "来源",
"Ke63767cf": "添加时间",
"K3a67ea90": "订阅方",
"K442937c4": "订阅时间",
"K34111022": "协议/方法",
"K62d10724": "URL",
"Ka9481f95": "创建者",
"Kf88d56fd": "上游 ID",
"K11a92fb2": "更新人",
"K2c2bc64f": "动态服务发现",
"Kc9a2a716": "HTTPS",
"Ka7f8266f": "带权轮询",
"Kd17edabd": "IP Hash",
"Kaeba0229": "透传客户端请求 Host",
"K6d7e2fd0": "使用上游服务 Host",
"K31332633": "重写 Host",
"Ke65db976": "权重",
"Kf966b12d": "内部服务:可通过网关访问,但不展示在服务广场",
"Kfc939e49": "公开服务:可通过网关访问,展示在服务广场,可被其他应用订阅",
"Ke96ccf45": " ",
"K5582ac8": "请求路径",
"K92485dd1": "所有 API",
"Ke64e43a": "隐藏鉴权信息",
"K1a78e6f0": "过期时间",
"K40bbb0a3": "服务ID",
"K9919285b": "服务类型",
"K63938137": "公开服务",
"Kfb20a12": "内部服务",
"Kedd64e4d": "停用",
"Ka29b346f": "地址(IP 端口或域名)",
"K63b1e0dc": "权重(0-999",
"K74ab00a3": "已审批",
"Kea996156": "发布申请记录",
"Kbea7d266": "所属系统",
"Ka36c13cc": "调用系统名称",
"Kd78d73a7": "调用服务名称",
"K73c144eb": "当前系统名称",
"K285bd65e": "被调用服务名称",
"K5cbab635": "被调用系统名称",
"K93c2696e": "上线结果",
"K43fcaf94": "成功",
"Kc71c6a9": "上线失败",
"K56c686f8": "失败",
"K3ba29a85": "API",
"Kda8d5ea1": "上游",
"Kdefa9caa": "使用说明",
"K36856e71": "发布",
"K6382bbfd": "订阅管理",
"K2eef4e4": "订阅审批",
"Ka97bd9e5": "订阅方管理",
"K5974bf24": "管理",
"K3fa5c4c3": "调用拓扑图",
"Kb5c7b82d": "设置",
"K2472615e": "服务数量",
"Kc02aa5f1": "API数量",
"Ke08ff808": "添加日期",
"Kd7d84192": "姓名",
"Kc88e03b6": "团队角色",
"Kdf35c48c": "所有成员",
"K3818f03d": "审批",
"K56b4254f": "发布申请",
"Kd2c1a316": "登录",
"Kf076f63c": "请输入账号",
"K80a560a1": "账号",
"K25c895d5": "请输入密码",
"K551b0348": "密码",
"K480045ce": "Version (0)-(1)",
"Kadee8e49": "日志配置",
"K3453272": "APIPark 提供详尽的 API 调用日志,帮助企业监控、分析和审计 API 的运行状况。",
"K33c76dbc": "部门名称",
"K84829ca9": "父部门 ID",
"K4d7fc74b": "子部门名称",
"Ka16e6c44": "未激活、已禁用的成员无法加入到部门",
"Ked03ba97": "请选择成员需要新加入的部门",
"K5e237e06": "name",
"K184d3473": "添加账号",
"K1ecb35f2": "编辑成员信息",
"Ke6f00b44": "加入部门",
"K501cb1e7": "确定删除成员?此操作无法恢复,确认操作?",
"Kf20863b5": "成员与部门",
"K5f27a546": "输入用户名、邮箱查找成员",
"K26c698bb": "添加部门",
"Kb9cf2a7d": "添加子部门",
"Kc83551f5": "重命名",
"K3f1077c9": "设置成员和对应的角色,成员只能够看到权限范围内的功能和数据。",
"Kdce62a6": "搜索部门",
"K8ef69ee2": "密钥",
"Kba3507d6": "上传密钥",
"K93ac0f23": "密钥文件的后缀名一般为 .key 的文件内容",
"K7cdd1331": "上传证书",
"K6d91905d": "证书文件的后缀名一般为 .crt 或 .pem 的文件内容",
"Kd0f6ded7": "添加证书",
"Ke5732d60": "修改证书",
"K3ca07a70": "证书管理",
"Kdb927f83": "通过为 API 服务配置和管理 SSL 证书,企业可以加密数据传输,防止敏感信息被窃取或篡改。",
"K877985b7": "修改配置",
"Kdf66a675": "设置访问 API 的集群,让 API 在分布式环境中稳定运行,并且能够根据业务需求进行灵活扩展和优化。",
"Kaf074220": "未配置",
"K5878440c": "集群地址",
"K5e9022f8": "下一步",
"K8e7a0f80": "资源配置",
"Kabfe9512": "保存",
"K95c3fd8b": "设置角色的权限范围。",
"K138facd3": "系统级别角色",
"K6eac768d": "添加角色",
"Kb9c2cf02": "团队级别角色",
"Kb4ceecea": "添加子分类",
"K67479e88": "修改分类名称",
"K2bc75e2c": "添加分类",
"Kab4aab44": "重命名分类",
"K8e0e6977": "设置服务可选择的分类,方便团队成员快速找到API。",
"Ke595a20a": "分类名称",
"K9679728f": "父分类 ID",
"K9b2d08fd": "子分类名称",
"Kf14e76e5": "副本",
"K2e050340": "API 基础信息",
"K90f3c02f": "转发规则设置",
"K6ea8d549": "编辑文档",
"Kff5c18ac": "最后编辑人",
"K2eb99415": "转发规则",
"Ke93388fd": "编辑 API",
"K1b1ae3b0": "复制 API",
"K84aabfd4": "添加 API",
"K6a662463": "输入名称、URL 查找 API",
"K59bc6280": "API 详情",
"K2a16c93b": "单位:ms,最小值:1",
"K469e475a": "重试次数",
"Kd568e15c": "发布结果",
"K35f990b0": "查看详情",
"Kdbc1f6cb": "申请发布",
"Kb6860a3f": "回滚",
"Ka3494f4b": "请确认是否回滚?",
"Kb397a99f": "撤销申请",
"K7d401c0f": "请确认是否撤销申请?",
"Ke1b79b93": "终止发布",
"Ka2449180": "请确认是否终止发布?",
"K2cb02f38": "新建版本",
"Ka9c08390": "只允许上传PNG、JPG或SVG格式的图片",
"Kcf756b7a": "API 调用前缀",
"K43d101a": "选填,作为服务内所有API的前缀,比如host/{service_name}/{api_path},一旦保存无法修改",
"Kdc840242": "图标",
"K427a5bd5": "仅支持 .png .jpg .jpeg .svg 格式的图片文件, 大于 1KB 的文件将被压缩",
"K44bc352d": "Logo",
"Kf52a584d": "所属服务分类",
"K72b21be5": "设置服务展示在服务市场中的哪个分类下",
"Kde6bae17": "删除服务",
"K885ea699": "删除操作不可恢复,请谨慎操作!",
"K617f34f1": "最近一次更新者",
"K6ebca204": "最近一次更新时间",
"K39ab0358": "新增订阅方",
"K2d6658ed": "添加服务",
"K7b8f623f": "输入名称、ID、所属团队、负责人查找服务",
"Kdd9b5008": "后端默认使用的IP地址",
"K6bc47edb": "请求协议",
"Kc9acdb25": "负载均衡",
"K632dba5c": "转发 Host",
"Kc1f08a63": "重写域名",
"K628f6851": "超时时间",
"Kaff62621": "超时重试次数",
"Kc41ca30e": "调用频率限制",
"K813e1c0a": "团队名称",
"K692f5aa6": "团队 ID",
"K5de0bc2": "团队 ID(team_id)可用于检索团队,一旦保存无法修改。",
"Ka63dd985": "团队负责人",
"Ka6bcd272": "负责人对团队内的团队、服务、成员有管理权限",
"Ka2012bdd": "删除团队",
"Kbde1f3d": "服务数据清除后,方可删除",
"K395acc14": "移除成员",
"Kec46a57f": "添加成员",
"K48724410": "输入姓名查找",
"Kb9052305": "搜索用户名、邮箱",
"K5ece3bac": "设置团队和成员,然后你可以在团队内创建服务和应用、订阅API,成员只能看到所属团队内的服务和应用。",
"K510cdd27": "添加团队",
"K9244ae14": "输入名称、ID、负责人查找团队",
"Kc7b24b4b": "配置团队",
"Kecb51e2c": "旧密码",
"K8266bcf2": "新密码",
"Ka9aef039": "确认密码",
"Kcf42dcda": "两次密码不一致",
"Kf876a42d": "修改密码",
"K8ed884f": "管理个人账号",
"K9be8e1d7": "API调用统计",
"K521ab28e": "选择服务",
"Kcc8265e1": "选择API",
"K8aefc1e4": "请输入请求路径进行搜索",
"K50d471b2": "重置",
"Kee8ae330": "查询",
"Ka2c794a2": "导出",
"Kaf70c3b": "退出全屏",
"Kd22841a4": "(0)调用详情",
"K1512e983": "应用调用统计",
"Kb4d2007f": "请选择应用",
"K8c7f2d2e": "调用趋势",
"K657c3452": "(0)-(1)调用趋势",
"Kc04efb87": "调用量统计",
"Keb98266e": "加入总体数据对比",
"K18c2ed46": "(0)调用量",
"Kc3741830": "(0)调用成功率",
"Ka6aa5863": "请求总数",
"K9eaef42": "请求成功率",
"K7082a4af": "转发总数",
"K1ce386fb": "转发成功率",
"K87d6877e": "状态码4xx数",
"K4c8a54db": "状态码5xx数",
"Kd566283e": "调用总体趋势",
"Kd23a0be6": "请求报文量",
"Kec3e8361": "响应报文量",
"Ke6250744": "状态码4XX数",
"K2d79d4e1": "状态码5XX数",
"Kcf6553c6": "服务调用统计",
"Kffcfe375": "请选择服务",
"Ka65f739c": "调用详情",
"K89b7ac79": "API 请求量 Top10",
"Kc0915603": "应用调用量 Top10",
"Kf90b54": "服务被调用量 Top10",
"Kfb26388": "暂无请求统计数据",
"Kc8cbd8f8": "请求统计",
"K8dece48": "暂无转发统计数据",
"K1ee32434": "转发统计",
"Kcd125e4d": "暂无调用量统计数据",
"Kaa114e8b": "暂无报文量统计数据",
"K3ad84406": "报文量统计",
"K19a3ebe0": "请求成功数",
"Kcaa8259": "转发成功数",
"K888f038f": "失败状态码数",
"K42d2bef2": "平均响应时间(ms)",
"K9197c994": "最大响应时间(ms)",
"K7c2f3fee": "最小响应时间(ms)",
"K3d85ea54": "平均请求流量(KB)",
"Keec09d32": "最大请求流量(KB)",
"K3786b48": "最小请求流量(KB)",
"K5168eb63": "应用名称",
"K546e46f": "应用 ID",
"K4a1a14": "监控总览",
"K69741ea7": "服务被调用统计",
"K9c8d9933": "API 调用统计",
"K28cf9613": "每分钟",
"K18f25019": "每5分钟",
"Kf00f01ca": "每小时",
"Kfcda87fc": "每天",
"K29ec75dc": "每周",
"K145e4941": "亿",
"Ke6a935d": "万",
"K8f7abcab": " 次",
"K146477a8": "服务标签",
"K4de0af74": "服务分类",
"Kcce1af60": "订阅的服务",
"Kb6e9328f": "访问授权",
"Kb7e869a4": "应用管理",
"Kd59290a2": "搜索分类或标签",
"K6b75bdbc": "暂无API数据",
"Kd8a7a689": "搜索或选择应用",
"K4b15d6f5": "申请理由",
"Kb71b5a13": "鉴权类型",
"K4d1465ee": "Iss",
"K5dcd7ed8": "签名算法",
"K5b0eedd3": "Secret",
"K44f4ffe1": "RSA 公钥",
"Kc5ecd7d9": "用户名 JsonPath",
"K417d85cf": "校验字段",
"K3b82fe1d": "是否 Base64 加密",
"K49b5f4a3": "AK",
"K31418470": "SK",
"Kbfeb5297": "Apikey",
"K95764d1d": "删除应用",
"K217cb125": "鉴权详情",
"K2bb63eca": "添加鉴权",
"Kd74d69b7": "编辑鉴权",
"K9cbe1e0": "修改",
"Kd23d1716": "添加授权",
"K9dfa2c97": "永不过期",
"Kfa920c0": "到期时间",
"Kbeb4e991": "审批详情",
"Ked811bb1": "请确认是否取消订阅?",
"K50c39a62": "取消订阅申请",
"K1856c229": "请确认是否取消订阅申请?",
"K66ea2f0": "搜索服务",
"Kfeb2559b": "审批中",
"Ka2b6d281": "API 文档",
"K667bbbe7": "添加应用",
"Ka4b45550": "暂无服务描述",
"K3c7b175f": "订阅的服务数量:已通过 (0) 个,申请中 (1) 个",
"K850b4b2d": "状态码",
"Kbe3e9335": "退出测试",
"K370a3eb2": "服务市场",
"Kf7ec36d": "服务详情",
"K59cdbec3": "介绍",
"K4aa9ed2c": "申请",
"K6c060779": "服务信息",
"K8723422e": "接入应用",
"Kb97544cb": "供应方",
"Kb32f0afe": "分类",
"K81634069": "版本",
"K96a2f1c8": "无标签",
"K93d5a66e": "接入应用数量",
"K3e770a75": "鉴权 Token",
"K96059c69": "关联标签",
"K32263abd": "添加 Open Api",
"K7829bb78": "配置 Open Api",
"Kcdf76005": "Open Api",
"Ke2601944": "调用服务",
"K8504bca8": "放大",
"K693c1b41": "缩小"
}
{}
@@ -1,6 +1,7 @@
{
"Kc0e5ef9f": "工作空间",
"K3863c722": "我的",
"K4de11e23": "首页",
"Kfe93ef35": "应用",
"Kb58e0c3f": "服务",
"Kc9e489f5": "团队",
@@ -15,6 +16,7 @@
"K958da71f": "服务分类管理",
"Kf270ca55": "运维与集成",
"Ke93d36ed": "集群",
"K9708a557": "监控报表",
"K481e8a05": "证书",
"Kca53edd0": "日志",
"Kb283e720": "资源",
@@ -49,6 +51,8 @@
"K48325b6": "搜索(0)名称",
"Ka1d885c1": "添加",
"Kad207008": "编辑",
"Ke4b7722": "简体",
"Kd185073d": "英文",
"K1ff96ff": "申请系统",
"K9bf855d6": "所属团队",
"K11b994ed": "申请人",
@@ -65,6 +69,11 @@
"K9dbf22b8": "近24小时",
"K820fbfab": "近3天",
"Kd6d28fc": "近7天",
"K3d7465f7": "文件日志",
"Kc87167a0": "HTTP日志",
"K80ef19d3": "Kafka文件日志",
"K398cc3c5": "NSQ文件日志",
"K2bcdb54": "Syslog文件日志",
"K23fda291": "暂无操作权限,请联系管理员分配。",
"K4618cb0a": "微信小程序",
"Ka854f511": "获取文件,需填路径",
@@ -324,11 +333,30 @@
"Kdf35c48c": "所有成员",
"K3818f03d": "审批",
"K56b4254f": "发布申请",
"Kd518ba3e": "Hello!欢迎使用 APIPark",
"Ke66e4182": "你能通过 APIPark 快速在企业内部构建 API 开放门户/市场,享受极致的转发性能、API 可观测、服务治理、多租户管理、订阅审批流程等诸多好处。",
"Kedd41c18": "如果你喜欢我们的产品,欢迎给我们 Star 或提供产品反馈意见。",
"Kef02fd87": "快速入门",
"K43a3b38d": "我们提供了一些任务来帮你快速了解 APIPark",
"Kc8239422": "团队中包含了人员、应用和服务,不同团队之间的应用和服务数据是隔离的,可用于管理企业内部不同的部门/项目组/团队。",
"Kd5be0cd7": "服务内包含一组 API,并且可以发布到 API 市场被其他团队使用。",
"K4ea67613": "应用是申请服务和调用 API 的身份,可以在 API 市场申请调用服务,并且每个应用拥有独立的 API 访问鉴权。",
"Ka4748416": "检索服务和 API",
"K383e17e5": "你可以在 API 市场中查看所有公开的服务。",
"K8f7808e6": "订阅服务",
"Kb0755523": "如果需要调用某个服务的 API,需要先订阅该服务,并且等待提供服务的团队审批后才可发起 API 请求。",
"Kd28a1aa5": "审批订阅申请",
"K4472e361": "提供服务的团队可以审批来自其他团队的订阅申请,审批通过后的应用才可发起 API请求。",
"K297d8563": "仪表盘中提供了多种统计图表,帮助我们了解 API 的运行情况。",
"K48f7e21f": "了解更多功能",
"Ka3626c8c": "隐藏快速入门",
"Kd2c1a316": "登录",
"Kf076f63c": "请输入账号",
"K80a560a1": "账号",
"K25c895d5": "请输入密码",
"K551b0348": "密码",
"K192b3e38": "访客模式",
"K91aa4801": "您可通过访客模式查看所有页面和功能,但是无法编辑数据。访客模式仅用于了解产品功能,您可以在正式产品中关闭该功能。",
"K480045ce": "Version (0)-(1)",
"Kadee8e49": "日志配置",
"K3453272": "APIPark 提供详尽的 API 调用日志,帮助企业监控、分析和审计 API 的运行状况。",
@@ -363,6 +391,11 @@
"Kaf074220": "未配置",
"K5878440c": "集群地址",
"K5e9022f8": "下一步",
"Kdbafd6f9": "设置监控报表的数据来源,设置完成之后即可获得详细的API调用统计图表。",
"K1358acf": "统计图表",
"K8fa58214": "数据源",
"K62dabdf6": "地址(IP:端口)",
"K2db12335": "组织(Organization",
"K8e7a0f80": "资源配置",
"Kabfe9512": "保存",
"K95c3fd8b": "设置角色的权限范围。",
@@ -1,6 +1,7 @@
{
"Kc0e5ef9f": "工作空间",
"K3863c722": "我的",
"K4de11e23": "首页",
"Kfe93ef35": "应用",
"Kb58e0c3f": "服务",
"Kc9e489f5": "团队",
@@ -15,6 +16,7 @@
"K958da71f": "服务分类管理",
"Kf270ca55": "运维与集成",
"Ke93d36ed": "集群",
"K9708a557": "监控报表",
"K481e8a05": "证书",
"Kca53edd0": "日志",
"Kb283e720": "资源",
@@ -49,6 +51,8 @@
"K48325b6": "搜索(0)名称",
"Ka1d885c1": "添加",
"Kad207008": "编辑",
"Ke4b7722": "简体",
"Kd185073d": "英文",
"K1ff96ff": "申请系统",
"K9bf855d6": "所属团队",
"K11b994ed": "申请人",
@@ -65,6 +69,11 @@
"K9dbf22b8": "近24小时",
"K820fbfab": "近3天",
"Kd6d28fc": "近7天",
"K3d7465f7": "文件日志",
"Kc87167a0": "HTTP日志",
"K80ef19d3": "Kafka文件日志",
"K398cc3c5": "NSQ文件日志",
"K2bcdb54": "Syslog文件日志",
"K23fda291": "暂无操作权限,请联系管理员分配。",
"K4618cb0a": "微信小程序",
"Ka854f511": "获取文件,需填路径",
@@ -324,11 +333,30 @@
"Kdf35c48c": "所有成员",
"K3818f03d": "审批",
"K56b4254f": "发布申请",
"Kd518ba3e": "Hello!欢迎使用 APIPark",
"Ke66e4182": "你能通过 APIPark 快速在企业内部构建 API 开放门户/市场,享受极致的转发性能、API 可观测、服务治理、多租户管理、订阅审批流程等诸多好处。",
"Kedd41c18": "如果你喜欢我们的产品,欢迎给我们 Star 或提供产品反馈意见。",
"Kef02fd87": "快速入门",
"K43a3b38d": "我们提供了一些任务来帮你快速了解 APIPark",
"Kc8239422": "团队中包含了人员、应用和服务,不同团队之间的应用和服务数据是隔离的,可用于管理企业内部不同的部门/项目组/团队。",
"Kd5be0cd7": "服务内包含一组 API,并且可以发布到 API 市场被其他团队使用。",
"K4ea67613": "应用是申请服务和调用 API 的身份,可以在 API 市场申请调用服务,并且每个应用拥有独立的 API 访问鉴权。",
"Ka4748416": "检索服务和 API",
"K383e17e5": "你可以在 API 市场中查看所有公开的服务。",
"K8f7808e6": "订阅服务",
"Kb0755523": "如果需要调用某个服务的 API,需要先订阅该服务,并且等待提供服务的团队审批后才可发起 API 请求。",
"Kd28a1aa5": "审批订阅申请",
"K4472e361": "提供服务的团队可以审批来自其他团队的订阅申请,审批通过后的应用才可发起 API请求。",
"K297d8563": "仪表盘中提供了多种统计图表,帮助我们了解 API 的运行情况。",
"K48f7e21f": "了解更多功能",
"Ka3626c8c": "隐藏快速入门",
"Kd2c1a316": "登录",
"Kf076f63c": "请输入账号",
"K80a560a1": "账号",
"K25c895d5": "请输入密码",
"K551b0348": "密码",
"K192b3e38": "访客模式",
"K91aa4801": "您可通过访客模式查看所有页面和功能,但是无法编辑数据。访客模式仅用于了解产品功能,您可以在正式产品中关闭该功能。",
"K480045ce": "Version (0)-(1)",
"Kadee8e49": "日志配置",
"K3453272": "APIPark 提供详尽的 API 调用日志,帮助企业监控、分析和审计 API 的运行状况。",
@@ -363,6 +391,11 @@
"Kaf074220": "未配置",
"K5878440c": "集群地址",
"K5e9022f8": "下一步",
"Kdbafd6f9": "设置监控报表的数据来源,设置完成之后即可获得详细的API调用统计图表。",
"K1358acf": "统计图表",
"K8fa58214": "数据源",
"K62dabdf6": "地址(IP:端口)",
"K2db12335": "组织(Organization",
"K8e7a0f80": "资源配置",
"Kabfe9512": "保存",
"K95c3fd8b": "设置角色的权限范围。",
@@ -1,570 +1 @@
{
"Kc0e5ef9f": "工作空间",
"K48325b6": "搜索(0)名称",
"K3d7465f7":"文件日志",
"K3863c722": "我的",
"Kfe93ef35": "应用",
"Kb58e0c3f": "服务",
"Kc9e489f5": "团队",
"K61c89f5f": "API 市场",
"K16d71239": "仪表盘",
"K714c192d": "运行视图",
"Kd57dfe97": "系统拓扑图",
"K3fe97dcc": "系统设置",
"K67ef3525": "组织",
"K74aef1ad": "成员",
"Kf644225f": "角色",
"K958da71f": "服务分类管理",
"Kf270ca55": "运维与集成",
"Ke93d36ed": "集群",
"K481e8a05": "证书",
"Kca53edd0": "日志",
"Kb283e720": "资源",
"K631d646f": "Open API",
"K6535ff9c": "账号设置",
"Kf15499b4": "退出登录",
"Kabbd6e6": "文档",
"K1196b104": "APIPark - 企业API数据开放平台",
"K1f42de3": "HTTP 状态码",
"K4770dff4": "系统状态码",
"Kf89e58f1": "描述",
"K9e53c664": "提交",
"Kf8e7294c": "上一步",
"Ka0451c97": "取消",
"Kb1dedda3": "关闭",
"Kb2fc7600": "添加配置",
"K4e07217d": "编辑配置",
"K4ea968fe": "编辑(0)",
"Ka7aaaeb": "添加(0)",
"Kaff78ecf": "请输入Key",
"K65d46535": "请输入Value",
"Kc14b2ea3": "返回",
"K11d3633a": "ID",
"Kbff43de3": "名称",
"K16ca79ef": "Driver",
"K7a369eef": "已发布",
"Kcfa1a4d2": "下线",
"K771dc3b7": "上线",
"K530f5951": "查看",
"Kecbd7449": "删除",
"K1cbe2507": "确认",
"Ka1d885c1": "添加",
"Kad207008": "编辑",
"K1ff96ff": "申请系统",
"K9bf855d6": "所属团队",
"K11b994ed": "申请人",
"K939baba7": "申请时间",
"Kdab2e63b": "版本号",
"K8b29c460": "版本说明",
"K36a72ad1": "API 列表",
"K54e44357": "上游列表",
"Kb8e8e6f5": "备注",
"K1ab0ae5b": "申请原因",
"K53c00c3c": "审核意见",
"K7edf331d": "时间",
"Kef45b208": "近1小时",
"K9dbf22b8": "近24小时",
"K820fbfab": "近3天",
"Kd6d28fc": "近7天",
"K23fda291": "暂无操作权限,请联系管理员分配。",
"K4618cb0a": "微信小程序",
"Ka854f511": "获取文件,需填路径",
"Kaa11a695": "暂不支持生成非 HTTPS 或非 HTTP 协议的代码示例",
"Kbe46924e": "搜索编程语言...",
"Ke8e4f258": "编程语言",
"K29c07a47": "成功示例",
"K1f5c814d": "失败示例",
"K4ef022d7": "默认 text/html;charset=UTF-8",
"Kd061b5bf": "暂未填写示例",
"Kc14cec33": "Binary",
"K48b4d9e3": "请求头部",
"Kcd347eaf": "请求体",
"K9e100bfe": "Query 参数",
"K3e9f12fd": "REST 参数",
"K2bfa290c": "api request editor",
"Kb36d111a": "返回头部",
"K980bde79": "返回值",
"Kb04d201a": "更多设置",
"Kee74f5b4": "添加子参数",
"Kc7d3106c": "向下添加行",
"Keaabd222": "标签",
"K8ad2c50e": "参数名",
"K67d68dd1": "类型",
"K29245f47": "必需",
"Ke32cbcd3": "示例",
"Kc13936c6": "输入 URL 或 cURL",
"Ka1ede006": "HTTP",
"K152ac44e": "参数位置",
"K1660ae72": "匹配类型",
"K91ced765": "参数值",
"K5b265628": "操作类型",
"K1826982d": "新增或修改",
"Kd65b55f5": "匹配参数值",
"K15f35bf2": "转发上游路径",
"K79dec0dd": "请求超时时间",
"K7d465645": "绑定上游服务",
"K63a6404d": "重试时间",
"K47740727": "转发上游请求头",
"K2b605d42": "More",
"K1df9fbd5": "导入",
"K5e85df18": "导入格式",
"K9eaf7885": "全量替换",
"Kf8c3a80b": "在末端插入",
"Kd96b2d7d": "增量更新",
"Kf2fc08eb": "请求头",
"Ka45f1d8": "Rest 参数",
"K94bb113a": "大小",
"K359919b5": "另存为文件",
"K38bf1b90": "响应",
"K59f4186e": "响应头",
"K5f1e23fd": "正文",
"Kf404ef7d": "发送(Enter)",
"K2dbfd648": "中止",
"Kacabc771": "秒",
"K13ae6a93": "复制",
"Ke54a14a3": "格式化",
"K43934f6d": "搜索",
"K741decac": "替代",
"Kd507abff": "确定",
"Kca2d1624": "The (0) must not be negative.",
"K792b255a": "The (0) must be greater than or equal to the (1).",
"Kf0bed26d": "值枚举",
"K633a03ca": "枚举",
"Kd2766caf": "最小长度",
"Kd6d52485": "最大长度",
"Kea15f66c": "最小值",
"K1af340ff": "最大值",
"K68691e16": "将文件拖拽至此处上传,或点击选择文件上传",
"Kcec46ae": "Upload Files",
"K760fb044": "Files Selected",
"Kea2bdee0": "请填写接口名称",
"K49053438": "详细说明",
"K148f6fa4": "高级匹配",
"K3ae4c789": "转发配置",
"K2f4d0a37": "请求参数",
"Kde2d6dbd": "返回示例",
"K70e6069c": "测试 API",
"Ke4603448": "请求 Header",
"K89fd86b3": "请求 Body",
"K8747e3c4": "请求示例代码",
"K8613e6e7": "响应示例",
"Kab1c2159": "响应 Header",
"Kd2be51d1": "响应 Body",
"K831aa6c0": "申请方-应用",
"K58ca9485": "申请服务",
"K283f55b4": "服务所属系统",
"Kd60d204": "服务所属团队",
"K3a9a3b75": "审批状态",
"K4f57b2de": "审批人",
"K31dabc6b": "审批时间",
"K8582af3f": "拒绝",
"K54e27f57": "通过",
"K7eeca185": "审批完成",
"Kd4061161": "发布审批中",
"K823bfe63": "在线",
"K97ddb3f8": "-",
"Kc9315fa1": "已拒绝",
"K3fbe7511": "发布异常",
"Ke64e695c": "发布中",
"K17f93984": "API 名称",
"K1365fe45": "请求方式",
"Kc380335f": "路径",
"K4ee62e8": "该 API 缺失(0)(1)(2)请先补充",
"K385591f3": "转发信息,",
"K68415c14": "文档信息,",
"K133b75e9": "上游信息,",
"Kad98e030": "上游类型",
"Kdeed8399": "静态上游",
"K78b1ca25": "地址",
"K6208054": "待审批",
"K1be7f021": "审批通过",
"K677a4959": "发布终止",
"Kfd6d2d3d": "已关闭",
"K9d7e880a": "发布版本",
"K855135f": "创建版本时间",
"Kcbf39b82": "版本状态",
"K339d15b5": "创建人",
"K7194cea2": "审核时间",
"K69827c60": "发布状态",
"K1644b775": "新增",
"K4fdf4dcc": "变更",
"K33d66e26": "无变更",
"K9b70c007": "缺失字段",
"Kd85208a3": "驳回",
"K8adf7f8b": "审核中",
"Kad6aa439": "已订阅",
"K3118fdb0": "取消订阅",
"K9a68443b": "取消申请",
"K18307d56": "手动添加",
"K705fe9f5": "订阅申请",
"Kbc96ebec": "申请方应用",
"K1f89176d": "申请方所属团队",
"Kfe731dfc": "操作",
"K71661ee8": "必填项",
"Kcbee3f8": "不是有效邮箱地址",
"K442cfba1": "请输入",
"K3bb646e4": "请选择",
"Ka4ecfa40": "英文数字下划线任意一种,首字母必须为英文",
"K39686a7f": "支持字母开头、英文数字中横线下划线组合",
"K4d6a0190": "选择拒绝时,审批意见为必填",
"K37318b68": "无法连接集群,请检查集群地址是否正确或防火墙配置",
"K7f0c746d": "操作成功",
"K6a365d01": "操作失败",
"K978062b6": "正在操作",
"Kca7bd6d4": "正在加载数据",
"K3c93b77e": "获取数据失败",
"Ke108c369": "登录成功",
"K9168d3e": "退出成功,将跳转至登录页",
"K2f8a7ab7": "未填写审核意见",
"Kb858d78a": "复制成功",
"K26e85d15": "复制失败,请手动复制",
"K5cfdd950": "该数据删除后将无法找回,请确认是否删除?",
"K2a3f24ac": "默认工作表",
"K7e1ab4b0": "至",
"Kf1b166e7": "详情",
"K28555332": "暂不支持带有双斜杠//的url",
"Keb9fcdad": "用户名",
"Kc654b275": "邮箱",
"Kbe2ecc69": "部门",
"K759fb403": "状态",
"K52c8a730": "启用",
"K718c9310": "禁用",
"K2c5882be": "绑定域名",
"K1cc07937": "过期日期",
"K8b7c2592": "更新者",
"Keefda53d": "更新时间",
"K9f3db3ca": "集群名称",
"Ke7487049": "集群 ID",
"Kb660ffe8": "节点名称",
"Kf12b3034": "管理地址",
"K867e6faf": "服务地址",
"K37348a5e": "集群同步地址",
"K151d2bb7": "环境名称",
"Kfa744afd": "集群数量",
"K23a3bd72": "异常",
"Ke039b9b5": "正常",
"K5c123bad": "角色名称",
"K76036e25": "HTTP 请求头",
"K8d4cbf50": "Cookie",
"K44607e3f": "全等匹配",
"Kc287500a": "前缀匹配",
"Kfc0b1147": "后缀匹配",
"Ka4a92043": "子串匹配",
"K30b2e44f": "非等匹配",
"Kb1587991": "空值匹配",
"K1e97dbd8": "存在匹配",
"Kc8ee3e62": "不存在匹配",
"K87c5a801": "区分大小写的正则匹配",
"K95f062f1": "不区分大小写的正则匹配",
"Kfbd230a5": "任意匹配",
"K413b9869": "服务名称",
"K1e84ad04": "服务 ID",
"K72b0c0b3": "API 数量",
"Kf7200cd9": "负责人",
"Kefaf9956": "创建时间",
"K98db2cb9": "申请状态",
"Ke792d01c": "所属服务",
"K61b62ace": "来源",
"Ke63767cf": "添加时间",
"K3a67ea90": "订阅方",
"K442937c4": "订阅时间",
"K34111022": "协议/方法",
"K62d10724": "URL",
"Ka9481f95": "创建者",
"Kf88d56fd": "上游 ID",
"K11a92fb2": "更新人",
"K2c2bc64f": "动态服务发现",
"Kc9a2a716": "HTTPS",
"Ka7f8266f": "带权轮询",
"Kd17edabd": "IP Hash",
"Kaeba0229": "透传客户端请求 Host",
"K6d7e2fd0": "使用上游服务 Host",
"K31332633": "重写 Host",
"Ke65db976": "权重",
"Kf966b12d": "内部服务:可通过网关访问,但不展示在服务广场",
"Kfc939e49": "公开服务:可通过网关访问,展示在服务广场,可被其他应用订阅",
"Ke96ccf45": " ",
"K5582ac8": "请求路径",
"K92485dd1": "所有 API",
"Ke64e43a": "隐藏鉴权信息",
"K1a78e6f0": "过期时间",
"K40bbb0a3": "服务ID",
"K9919285b": "服务类型",
"K63938137": "公开服务",
"Kfb20a12": "内部服务",
"Kedd64e4d": "停用",
"Ka29b346f": "地址(IP 端口或域名)",
"K63b1e0dc": "权重(0-999",
"K74ab00a3": "已审批",
"Kea996156": "发布申请记录",
"Kbea7d266": "所属系统",
"Ka36c13cc": "调用系统名称",
"Kd78d73a7": "调用服务名称",
"K73c144eb": "当前系统名称",
"K285bd65e": "被调用服务名称",
"K5cbab635": "被调用系统名称",
"K93c2696e": "上线结果",
"K43fcaf94": "成功",
"Kc71c6a9": "上线失败",
"K56c686f8": "失败",
"K3ba29a85": "API",
"Kda8d5ea1": "上游",
"Kdefa9caa": "使用说明",
"K36856e71": "发布",
"K6382bbfd": "订阅管理",
"K2eef4e4": "订阅审批",
"Ka97bd9e5": "订阅方管理",
"K5974bf24": "管理",
"K3fa5c4c3": "调用拓扑图",
"Kb5c7b82d": "设置",
"K2472615e": "服务数量",
"Kc02aa5f1": "API数量",
"Ke08ff808": "添加日期",
"Kd7d84192": "姓名",
"Kc88e03b6": "团队角色",
"Kdf35c48c": "所有成员",
"K3818f03d": "审批",
"K56b4254f": "发布申请",
"Kd2c1a316": "登录",
"Kf076f63c": "请输入账号",
"K80a560a1": "账号",
"K25c895d5": "请输入密码",
"K551b0348": "密码",
"K480045ce": "Version (0)-(1)",
"Kadee8e49": "日志配置",
"K3453272": "APIPark 提供详尽的 API 调用日志,帮助企业监控、分析和审计 API 的运行状况。",
"K33c76dbc": "部门名称",
"K84829ca9": "父部门 ID",
"K4d7fc74b": "子部门名称",
"Ka16e6c44": "未激活、已禁用的成员无法加入到部门",
"Ked03ba97": "请选择成员需要新加入的部门",
"K5e237e06": "name",
"K184d3473": "添加账号",
"K1ecb35f2": "编辑成员信息",
"Ke6f00b44": "加入部门",
"K501cb1e7": "确定删除成员?此操作无法恢复,确认操作?",
"Kf20863b5": "成员与部门",
"K5f27a546": "输入用户名、邮箱查找成员",
"K26c698bb": "添加部门",
"Kb9cf2a7d": "添加子部门",
"Kc83551f5": "重命名",
"K3f1077c9": "设置成员和对应的角色,成员只能够看到权限范围内的功能和数据。",
"Kdce62a6": "搜索部门",
"K8ef69ee2": "密钥",
"Kba3507d6": "上传密钥",
"K93ac0f23": "密钥文件的后缀名一般为 .key 的文件内容",
"K7cdd1331": "上传证书",
"K6d91905d": "证书文件的后缀名一般为 .crt 或 .pem 的文件内容",
"Kd0f6ded7": "添加证书",
"Ke5732d60": "修改证书",
"K3ca07a70": "证书管理",
"Kdb927f83": "通过为 API 服务配置和管理 SSL 证书,企业可以加密数据传输,防止敏感信息被窃取或篡改。",
"K877985b7": "修改配置",
"Kdf66a675": "设置访问 API 的集群,让 API 在分布式环境中稳定运行,并且能够根据业务需求进行灵活扩展和优化。",
"Kaf074220": "未配置",
"K5878440c": "集群地址",
"K5e9022f8": "下一步",
"K8e7a0f80": "资源配置",
"Kabfe9512": "保存",
"K95c3fd8b": "设置角色的权限范围。",
"K138facd3": "系统级别角色",
"K6eac768d": "添加角色",
"Kb9c2cf02": "团队级别角色",
"Kb4ceecea": "添加子分类",
"K67479e88": "修改分类名称",
"K2bc75e2c": "添加分类",
"Kab4aab44": "重命名分类",
"K8e0e6977": "设置服务可选择的分类,方便团队成员快速找到API。",
"Ke595a20a": "分类名称",
"K9679728f": "父分类 ID",
"K9b2d08fd": "子分类名称",
"Kf14e76e5": "副本",
"K2e050340": "API 基础信息",
"K90f3c02f": "转发规则设置",
"K6ea8d549": "编辑文档",
"Kff5c18ac": "最后编辑人",
"K2eb99415": "转发规则",
"Ke93388fd": "编辑 API",
"K1b1ae3b0": "复制 API",
"K84aabfd4": "添加 API",
"K6a662463": "输入名称、URL 查找 API",
"K59bc6280": "API 详情",
"K2a16c93b": "单位:ms,最小值:1",
"K469e475a": "重试次数",
"Kd568e15c": "发布结果",
"K35f990b0": "查看详情",
"Kdbc1f6cb": "申请发布",
"Kb6860a3f": "回滚",
"Ka3494f4b": "请确认是否回滚?",
"Kb397a99f": "撤销申请",
"K7d401c0f": "请确认是否撤销申请?",
"Ke1b79b93": "终止发布",
"Ka2449180": "请确认是否终止发布?",
"K2cb02f38": "新建版本",
"Ka9c08390": "只允许上传PNG、JPG或SVG格式的图片",
"Kcf756b7a": "API 调用前缀",
"K43d101a": "选填,作为服务内所有API的前缀,比如host/{service_name}/{api_path},一旦保存无法修改",
"Kdc840242": "图标",
"K427a5bd5": "仅支持 .png .jpg .jpeg .svg 格式的图片文件, 大于 1KB 的文件将被压缩",
"K44bc352d": "Logo",
"Kf52a584d": "所属服务分类",
"K72b21be5": "设置服务展示在服务市场中的哪个分类下",
"Kde6bae17": "删除服务",
"K885ea699": "删除操作不可恢复,请谨慎操作!",
"K617f34f1": "最近一次更新者",
"K6ebca204": "最近一次更新时间",
"K39ab0358": "新增订阅方",
"K2d6658ed": "添加服务",
"K7b8f623f": "输入名称、ID、所属团队、负责人查找服务",
"Kdd9b5008": "后端默认使用的IP地址",
"K6bc47edb": "请求协议",
"Kc9acdb25": "负载均衡",
"K632dba5c": "转发 Host",
"Kc1f08a63": "重写域名",
"K628f6851": "超时时间",
"Kaff62621": "超时重试次数",
"Kc41ca30e": "调用频率限制",
"K813e1c0a": "团队名称",
"K692f5aa6": "团队 ID",
"K5de0bc2": "团队 ID(team_id)可用于检索团队,一旦保存无法修改。",
"Ka63dd985": "团队负责人",
"Ka6bcd272": "负责人对团队内的团队、服务、成员有管理权限",
"Ka2012bdd": "删除团队",
"Kbde1f3d": "服务数据清除后,方可删除",
"K395acc14": "移除成员",
"Kec46a57f": "添加成员",
"K48724410": "输入姓名查找",
"Kb9052305": "搜索用户名、邮箱",
"K5ece3bac": "设置团队和成员,然后你可以在团队内创建服务和应用、订阅API,成员只能看到所属团队内的服务和应用。",
"K510cdd27": "添加团队",
"K9244ae14": "输入名称、ID、负责人查找团队",
"Kc7b24b4b": "配置团队",
"Kecb51e2c": "旧密码",
"K8266bcf2": "新密码",
"Ka9aef039": "确认密码",
"Kcf42dcda": "两次密码不一致",
"Kf876a42d": "修改密码",
"K8ed884f": "管理个人账号",
"K9be8e1d7": "API调用统计",
"K521ab28e": "选择服务",
"Kcc8265e1": "选择API",
"K8aefc1e4": "请输入请求路径进行搜索",
"K50d471b2": "重置",
"Kee8ae330": "查询",
"Ka2c794a2": "导出",
"Kaf70c3b": "退出全屏",
"Kd22841a4": "(0)调用详情",
"K1512e983": "应用调用统计",
"Kb4d2007f": "请选择应用",
"K8c7f2d2e": "调用趋势",
"K657c3452": "(0)-(1)调用趋势",
"Kc04efb87": "调用量统计",
"Keb98266e": "加入总体数据对比",
"K18c2ed46": "(0)调用量",
"Kc3741830": "(0)调用成功率",
"Ka6aa5863": "请求总数",
"K9eaef42": "请求成功率",
"K7082a4af": "转发总数",
"K1ce386fb": "转发成功率",
"K87d6877e": "状态码4xx数",
"K4c8a54db": "状态码5xx数",
"Kd566283e": "调用总体趋势",
"Kd23a0be6": "请求报文量",
"Kec3e8361": "响应报文量",
"Ke6250744": "状态码4XX数",
"K2d79d4e1": "状态码5XX数",
"Kcf6553c6": "服务调用统计",
"Kffcfe375": "请选择服务",
"Ka65f739c": "调用详情",
"K89b7ac79": "API 请求量 Top10",
"Kc0915603": "应用调用量 Top10",
"Kf90b54": "服务被调用量 Top10",
"Kfb26388": "暂无请求统计数据",
"Kc8cbd8f8": "请求统计",
"K8dece48": "暂无转发统计数据",
"K1ee32434": "转发统计",
"Kcd125e4d": "暂无调用量统计数据",
"Kaa114e8b": "暂无报文量统计数据",
"K3ad84406": "报文量统计",
"K19a3ebe0": "请求成功数",
"Kcaa8259": "转发成功数",
"K888f038f": "失败状态码数",
"K42d2bef2": "平均响应时间(ms)",
"K9197c994": "最大响应时间(ms)",
"K7c2f3fee": "最小响应时间(ms)",
"K3d85ea54": "平均请求流量(KB)",
"Keec09d32": "最大请求流量(KB)",
"K3786b48": "最小请求流量(KB)",
"K5168eb63": "应用名称",
"K546e46f": "应用 ID",
"K4a1a14": "监控总览",
"K69741ea7": "服务被调用统计",
"K9c8d9933": "API 调用统计",
"K28cf9613": "每分钟",
"K18f25019": "每5分钟",
"Kf00f01ca": "每小时",
"Kfcda87fc": "每天",
"K29ec75dc": "每周",
"K145e4941": "亿",
"Ke6a935d": "万",
"K8f7abcab": " 次",
"K146477a8": "服务标签",
"K4de0af74": "服务分类",
"Kcce1af60": "订阅的服务",
"Kb6e9328f": "访问授权",
"Kb7e869a4": "应用管理",
"Kd59290a2": "搜索分类或标签",
"K6b75bdbc": "暂无API数据",
"Kd8a7a689": "搜索或选择应用",
"K4b15d6f5": "申请理由",
"Kb71b5a13": "鉴权类型",
"K4d1465ee": "Iss",
"K5dcd7ed8": "签名算法",
"K5b0eedd3": "Secret",
"K44f4ffe1": "RSA 公钥",
"Kc5ecd7d9": "用户名 JsonPath",
"K417d85cf": "校验字段",
"K3b82fe1d": "是否 Base64 加密",
"K49b5f4a3": "AK",
"K31418470": "SK",
"Kbfeb5297": "Apikey",
"K95764d1d": "删除应用",
"K217cb125": "鉴权详情",
"K2bb63eca": "添加鉴权",
"Kd74d69b7": "编辑鉴权",
"K9cbe1e0": "修改",
"Kd23d1716": "添加授权",
"K9dfa2c97": "永不过期",
"Kfa920c0": "到期时间",
"Kbeb4e991": "审批详情",
"Ked811bb1": "请确认是否取消订阅?",
"K50c39a62": "取消订阅申请",
"K1856c229": "请确认是否取消订阅申请?",
"K66ea2f0": "搜索服务",
"Kfeb2559b": "审批中",
"Ka2b6d281": "API 文档",
"K667bbbe7": "添加应用",
"Ka4b45550": "暂无服务描述",
"K3c7b175f": "订阅的服务数量:已通过 (0) 个,申请中 (1) 个",
"K850b4b2d": "状态码",
"Kbe3e9335": "退出测试",
"K370a3eb2": "服务市场",
"Kf7ec36d": "服务详情",
"K59cdbec3": "介绍",
"K4aa9ed2c": "申请",
"K6c060779": "服务信息",
"K8723422e": "接入应用",
"Kb97544cb": "供应方",
"Kb32f0afe": "分类",
"K81634069": "版本",
"K96a2f1c8": "无标签",
"K93d5a66e": "接入应用数量",
"K3e770a75": "鉴权 Token",
"K96059c69": "关联标签",
"K32263abd": "添加 Open Api",
"K7829bb78": "配置 Open Api",
"Kcdf76005": "Open Api",
"Ke2601944": "调用服务",
"K8504bca8": "放大",
"K693c1b41": "缩小"
}
{}
@@ -12,7 +12,6 @@ export const checkAccess:(access:AccessDataType, accessData:Map<string,string[]>
console.warn('权限字段有误:',access)
return false
}
console.log(access, PERMISSION_DEFINITION)
const neededBackendAccessArr = PERMISSION_DEFINITION[0]?.[access]?.granted?.anyOf[0].backend || []
return accessData?.has(accLevel)&& accessData.get(accLevel)!.length > 0 ? hasIntersection(neededBackendAccessArr, accessData.get(accLevel)!) : false
}
@@ -12,6 +12,7 @@ import {FC,lazy} from 'react';
import { TeamProvider } from '@core/contexts/TeamContext.tsx';
import SystemOutlet from '@core/pages/system/SystemOutlet.tsx';
import { TenantManagementProvider } from '@market/contexts/TenantManagementContext.tsx';
import Guide from '@core/pages/guide/Guide';
type RouteConfig = {
path:string
@@ -59,9 +60,14 @@ const PUBLIC_ROUTES:RouteConfig[] = [
component:<ProtectedRoute/>,
key: uuidv4(),
children:[
// {
// path:'approval/*',
// component:<ApprovalPage />,
// key:uuidv4()
// },
{
path:'approval/*',
component:<ApprovalPage />,
path:'guide/*',
component:<Guide />,
key:uuidv4()
},
{
@@ -0,0 +1,101 @@
import InsidePage from "@common/components/aoplatform/InsidePage"
import { $t } from "@common/locales"
import { Icon } from "@iconify/react/dist/iconify.js"
import { Button, Card, Collapse } from "antd"
import { Dispatch, SetStateAction, useEffect, useState } from "react"
export default function Guide(){
const [showGuide, setShowGuide] = useState(localStorage.getItem('showGuide') !== 'false' )
useEffect(()=>{
localStorage.setItem('showGuide', showGuide.toString())
},[showGuide])
return (
<InsidePage
pageTitle={<div className="flex items-center gap-[8px]">
<span>👋</span>
<span>{$t('Hello!欢迎使用 APIPark')}</span>
<a className="" href="https://github.com/APIParkLab/APIPark" target="_blank"><img src="https://img.shields.io/github/stars/APIParkLab/APIPark?style=social"alt="" /></a>
</div>}
description={<div className="flex flex-col gap-[8px]">
<p>{$t("你能通过 APIPark 快速在企业内部构建 API 开放门户/市场,享受极致的转发性能、API 可观测、服务治理、多租户管理、订阅审批流程等诸多好处。")}</p>
<p>{$t("如果你喜欢我们的产品,欢迎给我们 Star 或提供产品反馈意见。")}</p>
</div>}
showBorder={false}
contentClassName=" pr-PAGE_INSIDE_X pb-PAGE_INSIDE_B"
>
{showGuide &&
<Collapse
size="large"
expandIconPosition='end'
defaultActiveKey={['1']}
className="bg-[linear-gradient(153.41deg,rgba(244,245,255,1)_0.23%,rgba(255,255,255,1)_83.32%)] rounded-[10px] h-full [&>.ant-collapse-item]:h-full [&>.ant-collapse-item]:flex [&>.ant-collapse-item]:flex-col [&>.ant-collapse-item>.ant-collapse-content]:bg-transparent [&>.ant-collapse-item>.ant-collapse-content]:overflow-auto "
items={[{ key: '1',
label:
<div className="">
<p className="text-[14px] mb-[10px] flex gap-[8px] items-center font-bold">
<span>🚀</span><span>{`${$t('快速入门')}`}</span> </p>
<p className="text-[12px]" >{$t("我们提供了一些任务来帮你快速了解 APIPark")}</p></div>,
children:<QuickGuideContent changeGuideShow={setShowGuide} /> }]}
/>}
</InsidePage>)
}
const QuickGuideContent = ({changeGuideShow}:{changeGuideShow:Dispatch<SetStateAction<boolean>>})=>{
return (<>
<div className="">
<p className="flex gap-[8px] items-center text-[14px] font-bold"><Icon icon="ic:baseline-info" width="18" height="18" className="text-theme "
/>{$t('工作空间')}</p>
<div className="ml-[9px] border-[0px] border-l-[1px] my-[10px] border-dashed border-BORDER">
<div className="grid gap-[20px] px-[20px] py-[10px] justify-start content-start" style={{
gridTemplateColumns: 'repeat(auto-fill, minmax(300px, 0fr))',
gridAutoRows: '1fr'
}}>
<Card title={$t("团队")} className="shadow-[0_5px_10px_0_rgba(0,0,0,0.05)] rounded-[10px] overflow-visible cursor-pointer w-[300px] transition duration-500 hover:shadow-[0_5px_20px_0_rgba(0,0,0,0.15)] hover:scale-[1.05]" classNames={{header:'border-b-[0px] p-[20px] pb-[10px] text-[14px] font-normal ', body:"p-[20px] pt-0 text-[12px] text-[#666]"}} onClick={()=>{window.open('https://docs.apipark.com/docs/category/%E5%9B%A2%E9%98%9F','_blank')}}>
<span className="">{$t('团队中包含了人员、应用和服务,不同团队之间的应用和服务数据是隔离的,可用于管理企业内部不同的部门/项目组/团队。')}</span>
</Card>
<Card title={$t("服务")} className="shadow-[0_5px_10px_0_rgba(0,0,0,0.05)] rounded-[10px] overflow-visible cursor-pointer w-[300px] transition duration-500 hover:shadow-[0_5px_20px_0_rgba(0,0,0,0.15)] hover:scale-[1.05]" classNames={{header:'border-b-[0px] p-[20px] pb-[10px] text-[14px] font-normal', body:"p-[20px] pt-0 text-[12px] text-[#666]"}} onClick={()=>{window.open('https://docs.apipark.com/docs/category/%E6%9C%8D%E5%8A%A1','_blank')}}>
<span className="">{$t('服务内包含一组 API,并且可以发布到 API 市场被其他团队使用。')}</span>
</Card>
<Card title={$t("应用")} className="shadow-[0_5px_10px_0_rgba(0,0,0,0.05)] rounded-[10px] overflow-visible cursor-pointer w-[300px] transition duration-500 hover:shadow-[0_5px_20px_0_rgba(0,0,0,0.15)] hover:scale-[1.05]" classNames={{header:'border-b-[0px] p-[20px] pb-[10px] text-[14px] font-normal', body:"p-[20px] pt-0 text-[12px] text-[#666]"}} onClick={()=>{window.open('https://docs.apipark.com/docs/category/%E5%BA%94%E7%94%A8','_blank')}}>
<span className="">{$t('应用是申请服务和调用 API 的身份,可以在 API 市场申请调用服务,并且每个应用拥有独立的 API 访问鉴权。')}</span>
</Card>
</div>
</div>
<p className="flex gap-[8px] items-center text-[14px] font-bold"><Icon icon="ic:baseline-info" width="18" height="18" className="text-theme"/>{$t('API 市场')}</p>
<div className="ml-[9px] border-[0px] border-l-[1px] my-[10px] border-dashed border-BORDER">
<div className="grid gap-[20px] px-[20px] py-[10px] justify-start content-start" style={{
gridTemplateColumns: 'repeat(auto-fill, minmax(300px, 0fr))',
gridAutoRows: '1fr'
}}>
<Card title={$t("检索服务和 API")} className="shadow-[0_5px_10px_0_rgba(0,0,0,0.05)] rounded-[10px] overflow-visible cursor-pointer w-[300px] transition duration-500 hover:shadow-[0_5px_20px_0_rgba(0,0,0,0.15)] hover:scale-[1.05]" classNames={{header:'border-b-[0px] p-[20px] pb-[10px] text-[14px] font-normal', body:"p-[20px] pt-0 text-[12px] text-[#666]"}} onClick={()=>{window.open('https://docs.apipark.com/docs/category/api-market','_blank')}}>
<span className="">{$t('你可以在 API 市场中查看所有公开的服务。')}</span>
</Card>
<Card title={$t("订阅服务")} className="shadow-[0_5px_10px_0_rgba(0,0,0,0.05)] rounded-[10px] overflow-visible cursor-pointer w-[300px] transition duration-500 hover:shadow-[0_5px_20px_0_rgba(0,0,0,0.15)] hover:scale-[1.05]" classNames={{header:'border-b-[0px] p-[20px] pb-[10px] text-[14px] font-normal', body:"p-[20px] pt-0 text-[12px] text-[#666]"}} onClick={()=>{window.open('https://docs.apipark.com/docs/tutorials/application/subscribe-service','_blank')}}>
<span className="">{$t('如果需要调用某个服务的 API,需要先订阅该服务,并且等待提供服务的团队审批后才可发起 API 请求。')}</span>
</Card>
<Card title={$t("审批订阅申请")} className="shadow-[0_5px_10px_0_rgba(0,0,0,0.05)] rounded-[10px] overflow-visible cursor-pointer w-[300px] transition duration-500 hover:shadow-[0_5px_20px_0_rgba(0,0,0,0.15)] hover:scale-[1.05]" classNames={{header:'border-b-[0px] p-[20px] pb-[10px] text-[14px] font-normal', body:"p-[20px] pt-0 text-[12px] text-[#666]"}} onClick={()=>{window.open('https://docs.apipark.com/docs/tutorials/service/subscriber-approve','_blank')}}>
<span className="">{$t('提供服务的团队可以审批来自其他团队的订阅申请,审批通过后的应用才可发起 API请求。')}</span>
</Card>
</div>
</div>
<p className="flex gap-[8px] items-center text-[14px] font-bold"><Icon icon="ic:baseline-info" width="18" height="18" className="text-theme"/>{$t('仪表盘')}</p>
<div className="ml-[9px] border-[0px] border-l-[1px] my-[10px] border-dashed border-BORDER">
<div className="grid gap-[20px] px-[20px] py-[10px] justify-start content-start" style={{
gridTemplateColumns: 'repeat(auto-fill, minmax(300px, 0fr))',
gridAutoRows: '1fr'
}}>
<Card title={$t("运行视图")} className="shadow-[0_5px_10px_0_rgba(0,0,0,0.05)] rounded-[10px] overflow-visible cursor-pointer w-[300px] transition duration-500 hover:shadow-[0_5px_20px_0_rgba(0,0,0,0.15)] hover:scale-[1.05]" classNames={{header:'border-b-[0px] p-[20px] pb-[10px] text-[14px] font-normal', body:"p-[20px] pt-0 text-[12px] text-[#666]"}} onClick={()=>{window.open('https://docs.apipark.com/docs/quick/','_blank')}}>
<span className="">{$t('仪表盘中提供了多种统计图表,帮助我们了解 API 的运行情况。')}</span>
</Card>
</div>
</div>
<p className="flex gap-[8px] items-center">
<Icon icon="ic:baseline-info" width="18" height="18" className="text-theme"/>
<div className="flex justify-between items-center w-full">
<Button type="link" icon={<Icon icon="ic:baseline-open-in-new" width="18" height="18" />} iconPosition="end" classNames={{icon:'h-[22px] flex items-center'}} href="https://docs.apipark.com" target="_blank" className="text-[14px] font-bold px-0">{$t('了解更多功能')}</Button>
<Button type="text" icon={<Icon icon="ic:baseline-visibility-off" width="18" height="18" />} onClick={()=>changeGuideShow((prev)=>!prev)} classNames={{icon:'h-[22px] flex items-center'}} className="text-[14px] font-bold">{$t('隐藏快速入门')}</Button>
</div>
</p>
</div>
</>)
}
@@ -142,7 +142,7 @@ const SystemList:FC = ()=>{
return (
<div className="h-full w-full pr-PAGE_INSIDE_X pb-PAGE_INSIDE_B">
<Joyride steps={steps} run={true} />
{/* <Joyride steps={steps} run={true} /> */}
<PageList
id="global_system"
ref={pageListRef}
@@ -600,6 +600,7 @@ const MonitorLineGraph: FC<LineGraphProps> = ({ className, lineData, titles, yAx
legend: {
orient: 'horizontal',
top: '50',
left:'10',
selected: {...MONITOR_LINE_CHART_BASIC_MESSAGE_SELECTED}
},
grid: {
@@ -686,11 +687,10 @@ const MonitorLineGraph: FC<LineGraphProps> = ({ className, lineData, titles, yAx
option.title = {
text: titles[0],
left: 'center',
top: '0',
left: '10',
textStyle: {
fontSize: 16,
fontWeight: 500
color: '#666666'
}
}
// 当勾选请求成功率或转发成功率其中之一时,显示右侧y轴
@@ -722,7 +722,7 @@ const MonitorLineGraph: FC<LineGraphProps> = ({ className, lineData, titles, yAx
// }, 400), []);
return (
<div ref={containerRef} className={`${className} m-btnbase mb-mbase rounded`}>
<div ref={containerRef} className={`${className} mb-mbase rounded`}>
<ECharts ref={chartRef} option={option} style={{ height: compare ? '672px' :'320px', width: '100%',minWidth:'300px' }} onEvents={{'legendselectchanged':handleLegendSelectChange}}/>
</div>
)
@@ -276,8 +276,9 @@ const MonitorTotalPage = (props:MonitorTotalPageProps) => {
/>}
</div>
{/* 折线图区域 */}
{/* 调用量统计折线图 */}
{invokeStaticError ? <Empty className="pt-[80px] m-btnbase mb-[16px] h-[200px] bg-MAIN_BG" image={Empty.PRESENTED_IMAGE_SIMPLE} description={$t("暂无调用量统计数据")}/>: <MonitorLineGraph
<div className=" px-btnbase mt-[12px] mb-[16px] grid gap-[20px]" style={{ gridTemplateColumns: 'repeat(auto-fill, minmax(570px, 1fr))'}}>
{/* 调用量统计折线图 */}
{invokeStaticError ? <Empty className="pt-[80px] mb-[16px] h-[200px] bg-MAIN_BG" image={Empty.PRESENTED_IMAGE_SIMPLE} description={$t("暂无调用量统计数据")}/>: <MonitorLineGraph
className=" bg-MAIN_BG pt-[16px]"
lineData={invokeStatic}
titles={[$t('调用量统计')]}
@@ -285,13 +286,14 @@ const MonitorTotalPage = (props:MonitorTotalPageProps) => {
type="invoke"
/>}
{/* 报文量统计折线图 */}
{trafficStaticError ? <Empty className=" bg-MAIN_BG pt-[80px] m-btnbase mb-0 h-[200px]" image={Empty.PRESENTED_IMAGE_SIMPLE} description={$t("暂无报文量统计数据")}/>:<MonitorLineGraph
{trafficStaticError ? <Empty className=" bg-MAIN_BG pt-[80px] mb-0 h-[200px]" image={Empty.PRESENTED_IMAGE_SIMPLE} description={$t("暂无报文量统计数据")}/>:<MonitorLineGraph
className=" bg-MAIN_BG pt-[16px]"
lineData={trafficStatic}
titles={[$t('报文量统计')]}
yAxisTitle={timeUnit || '-'}
type="traffic"
/>}
</div>
{/* 表格区域 */}
<div className="bg-MAIN_BG pt-[4px] m-btnbase mt-[16px] rounded">
<Tabs defaultActiveKey={'total'} items={monitorTopDataTabItems} destroyInactiveTabPane={true} className="h-auto mt-[4px] not-top-border-table not-top-padding-table mx-[12px]" size="small" tabBarStyle={{paddingLeft:'10px',marginTop:'0px',marginBottom:'0px'}} />