diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index a699fbe..a3d1beb 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -156,6 +156,7 @@ const local: App.I18n.Schema = { 'function_toggle-auth': 'Toggle Auth', 'function_super-page': 'Super Admin Visible', pods: 'Online Machine', + namepase: 'Namepase', manage: 'System Manage', manage_user: 'User Manage', 'manage_user-detail': 'User Detail', @@ -173,6 +174,10 @@ const local: App.I18n.Schema = { exception_500: '500' }, page: { + common: { + upadteTime: 'Update Time', + createTime: 'Create Time' + }, login: { common: { loginOrRegister: 'Login / Register', @@ -300,6 +305,19 @@ const local: App.I18n.Schema = { server: 'Server' } }, + namespace: { + title: 'Namespace', + name: 'Name', + keyword: 'Name/UniqueId', + uniqueId: 'UniqueId', + form: { + name: 'Please enter name', + keyword: 'Please enter name/uniqueId', + uniqueId: 'Please enter UniqueId' + }, + addNamespace: 'Add Namespaces', + editNamespace: 'Edit Namespaces' + }, function: { tab: { tabOperate: { diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index cae491c..7880de8 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -156,6 +156,7 @@ const local: App.I18n.Schema = { 'function_toggle-auth': '切换权限', 'function_super-page': '超级管理员可见', pods: '在线机器', + namepase: '命名空间', manage: '系统管理', manage_user: '用户管理', 'manage_user-detail': '用户详情', @@ -173,6 +174,10 @@ const local: App.I18n.Schema = { exception_500: '500' }, page: { + common: { + upadteTime: '更新时间', + createTime: '创建时间' + }, login: { common: { loginOrRegister: '登录 / 注册', @@ -296,6 +301,19 @@ const local: App.I18n.Schema = { server: '服务端' } }, + namespace: { + title: '命名空间', + name: '名称', + keyword: '空间名称/唯一标识', + uniqueId: 'UniqueId', + form: { + name: '请输入名称', + keyword: '请输入空间名称/唯一标识', + uniqueId: '请输入UniqueId' + }, + addNamespace: '新增命名空间', + editNamespace: '编辑命名空间' + }, function: { tab: { tabOperate: { diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts index 5b3380c..5b8ae53 100644 --- a/src/router/elegant/imports.ts +++ b/src/router/elegant/imports.ts @@ -35,6 +35,7 @@ export const views: Record Promise import("@/views/manage/user/index.vue"), "multi-menu_first_child": () => import("@/views/multi-menu/first_child/index.vue"), "multi-menu_second_child_home": () => import("@/views/multi-menu/second_child_home/index.vue"), + namepase: () => import("@/views/namepase/index.vue"), pods: () => import("@/views/pods/index.vue"), "user-center": () => import("@/views/user-center/index.vue"), }; diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts index 589010a..c0d3369 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -327,6 +327,17 @@ export const generatedRoutes: GeneratedRoute[] = [ icon: 'ant-design:database-outlined', order: 1 } + }, + { + name: 'namepase', + path: '/namepase', + component: 'layout.base$view.namepase', + meta: { + title: 'namepase', + i18nKey: 'route.namepase', + icon: 'oui:app-spaces', + order: 2 + } }, { name: 'user-center', diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts index 9730a86..5dc6e98 100644 --- a/src/router/elegant/transform.ts +++ b/src/router/elegant/transform.ts @@ -174,6 +174,7 @@ const routeMap: RouteMap = { "multi-menu_second": "/multi-menu/second", "multi-menu_second_child": "/multi-menu/second/child", "multi-menu_second_child_home": "/multi-menu/second/child/home", + "namepase": "/namepase", "pods": "/pods", "user-center": "/user-center" }; diff --git a/src/service/api/index.ts b/src/service/api/index.ts index 888f20f..eeb1586 100644 --- a/src/service/api/index.ts +++ b/src/service/api/index.ts @@ -2,4 +2,5 @@ export * from './auth'; export * from './route'; export * from './system'; export * from './dashboard'; +export * from './namespace'; export * from './system-manage'; diff --git a/src/service/api/namespace.ts b/src/service/api/namespace.ts new file mode 100644 index 0000000..55c09f7 --- /dev/null +++ b/src/service/api/namespace.ts @@ -0,0 +1,10 @@ +import { request } from '../request'; + +/** Namespace */ +export function fetchGetNamespaceList(params?: Api.Namespace.NamespaceSearchParams) { + return request({ + url: '/namespace/list', + method: 'get', + params + }); +} diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index b86895c..8679356 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -41,15 +41,15 @@ declare namespace Api { /** common record */ type CommonRecord = { /** record id */ - id?: number; + id?: string; /** record creator */ createBy?: string; /** record create time */ - createTime?: string; + createDt?: string; /** record updater */ updateBy?: string; /** record update time */ - updateTime?: string; + updateDt?: string; /** record status */ status?: EnableStatus | null; } & T; @@ -243,6 +243,31 @@ declare namespace Api { >; } + /** + * namespace Namespace + * + * backend api module: "Namespace" + */ + namespace Namespace { + type CommonSearchParams = Pick; + + /** namespace */ + type Namespace = Common.CommonRecord<{ + /** 主键 */ + id: string; + /** 名称 */ + name: string; + /** UniqueId */ + uniqueId: string; + }>; + + /** namespace search params */ + type NamespaceSearchParams = CommonType.RecordNullable<{ keyword: string } & CommonSearchParams>; + + /** namespace list */ + type NamespaceList = Common.PaginatingQueryRecord; + } + /** * namespace SystemManage * @@ -253,7 +278,7 @@ declare namespace Api { /** role */ type Role = Common.CommonRecord<{ - id: number; + id: string; /** role name */ roleName: string; /** role code */ @@ -334,7 +359,7 @@ declare namespace Api { type IconType = '1' | '2'; type Menu = Common.CommonRecord<{ - id: number; + id: string; /** parent menu id */ parentId: number; /** menu type */ @@ -388,7 +413,7 @@ declare namespace Api { type MenuList = Common.PaginatingQueryRecord; type MenuTree = { - id: number; + id: string; label: string; pId: number; children?: MenuTree[]; diff --git a/src/typings/app.d.ts b/src/typings/app.d.ts index 458154a..c56dbbc 100644 --- a/src/typings/app.d.ts +++ b/src/typings/app.d.ts @@ -352,6 +352,10 @@ declare namespace App { }; route: Record; page: { + common: { + upadteTime: string; + createTime: string; + }; login: { common: { loginOrRegister: string; @@ -475,6 +479,19 @@ declare namespace App { server: string; }; }; + namespace: { + title: string; + name: string; + keyword: string; + uniqueId: string; + form: { + name: string; + keyword: string; + uniqueId: string; + }; + addNamespace: string; + editNamespace: string; + }; function: { tab: { tabOperate: { diff --git a/src/typings/elegant-router.d.ts b/src/typings/elegant-router.d.ts index e1da6aa..2203731 100644 --- a/src/typings/elegant-router.d.ts +++ b/src/typings/elegant-router.d.ts @@ -48,6 +48,7 @@ declare module "@elegant-router/types" { "multi-menu_second": "/multi-menu/second"; "multi-menu_second_child": "/multi-menu/second/child"; "multi-menu_second_child_home": "/multi-menu/second/child/home"; + "namepase": "/namepase"; "pods": "/pods"; "user-center": "/user-center"; }; @@ -94,6 +95,7 @@ declare module "@elegant-router/types" { | "login" | "manage" | "multi-menu" + | "namepase" | "pods" | "user-center" >; @@ -133,6 +135,7 @@ declare module "@elegant-router/types" { | "manage_user" | "multi-menu_first_child" | "multi-menu_second_child_home" + | "namepase" | "pods" | "user-center" >; diff --git a/src/views/home/modules/header-banner.vue b/src/views/home/modules/header-banner.vue index d06bd07..c8d07ad 100644 --- a/src/views/home/modules/header-banner.vue +++ b/src/views/home/modules/header-banner.vue @@ -14,24 +14,24 @@ const authStore = useAuthStore(); const gap = computed(() => (appStore.isMobile ? 0 : 16)); interface StatisticData { - id: number; + id: string; label: string; value: string; } const statisticData = computed(() => [ { - id: 0, + id: '0', label: $t('page.home.userCount'), value: '2' }, { - id: 1, + id: '1', label: $t('page.home.jobTaskCount'), value: '8' }, { - id: 2, + id: '2', label: $t('page.home.retryTaskCount'), value: '3' } diff --git a/src/views/home/modules/project-news.vue b/src/views/home/modules/project-news.vue index 5561567..3af3e0f 100644 --- a/src/views/home/modules/project-news.vue +++ b/src/views/home/modules/project-news.vue @@ -7,17 +7,17 @@ defineOptions({ }); interface NewsItem { - id: number; + id: string; content: string; time: string; } const newses = computed(() => [ - { id: 1, content: $t('page.home.projectNews.desc1'), time: '2021-05-28 22:22:22' }, - { id: 2, content: $t('page.home.projectNews.desc2'), time: '2021-10-27 10:24:54' }, - { id: 3, content: $t('page.home.projectNews.desc3'), time: '2021-10-31 22:43:12' }, - { id: 4, content: $t('page.home.projectNews.desc4'), time: '2021-11-03 20:33:31' }, - { id: 5, content: $t('page.home.projectNews.desc5'), time: '2021-11-07 22:45:32' } + { id: '1', content: $t('page.home.projectNews.desc1'), time: '2021-05-28 22:22:22' }, + { id: '2', content: $t('page.home.projectNews.desc2'), time: '2021-10-27 10:24:54' }, + { id: '3', content: $t('page.home.projectNews.desc3'), time: '2021-10-31 22:43:12' }, + { id: '4', content: $t('page.home.projectNews.desc4'), time: '2021-11-03 20:33:31' }, + { id: '5', content: $t('page.home.projectNews.desc5'), time: '2021-11-07 22:45:32' } ]); diff --git a/src/views/manage/menu/index.vue b/src/views/manage/menu/index.vue index 610fa14..e7b0bad 100644 --- a/src/views/manage/menu/index.vue +++ b/src/views/manage/menu/index.vue @@ -186,7 +186,7 @@ async function handleBatchDelete() { onBatchDeleted(); } -function handleDelete(id: number) { +function handleDelete(id: string) { // request console.log(id); diff --git a/src/views/manage/role/index.vue b/src/views/manage/role/index.vue index 40938c5..6eb5518 100644 --- a/src/views/manage/role/index.vue +++ b/src/views/manage/role/index.vue @@ -115,14 +115,14 @@ async function handleBatchDelete() { onBatchDeleted(); } -function handleDelete(id: number) { +function handleDelete(id: string) { // request console.log(id); onDeleted(); } -function edit(id: number) { +function edit(id: string) { handleEdit(id); } diff --git a/src/views/manage/role/modules/button-auth-modal.vue b/src/views/manage/role/modules/button-auth-modal.vue index 9477d7b..fcfbc09 100644 --- a/src/views/manage/role/modules/button-auth-modal.vue +++ b/src/views/manage/role/modules/button-auth-modal.vue @@ -8,7 +8,7 @@ defineOptions({ interface Props { /** the roleId */ - roleId: number; + roleId: string | number; } const props = defineProps(); @@ -24,7 +24,7 @@ function closeModal() { const title = computed(() => $t('common.edit') + $t('page.manage.role.buttonAuth')); type ButtonConfig = { - id: number; + id: string; label: string; code: string; }; @@ -34,16 +34,16 @@ const tree = shallowRef([]); async function getAllButtons() { // request tree.value = [ - { id: 1, label: 'button1', code: 'code1' }, - { id: 2, label: 'button2', code: 'code2' }, - { id: 3, label: 'button3', code: 'code3' }, - { id: 4, label: 'button4', code: 'code4' }, - { id: 5, label: 'button5', code: 'code5' }, - { id: 6, label: 'button6', code: 'code6' }, - { id: 7, label: 'button7', code: 'code7' }, - { id: 8, label: 'button8', code: 'code8' }, - { id: 9, label: 'button9', code: 'code9' }, - { id: 10, label: 'button10', code: 'code10' } + { id: '1', label: 'button1', code: 'code1' }, + { id: '2', label: 'button2', code: 'code2' }, + { id: '3', label: 'button3', code: 'code3' }, + { id: '4', label: 'button4', code: 'code4' }, + { id: '5', label: 'button5', code: 'code5' }, + { id: '6', label: 'button6', code: 'code6' }, + { id: '7', label: 'button7', code: 'code7' }, + { id: '8', label: 'button8', code: 'code8' }, + { id: '9', label: 'button9', code: 'code9' }, + { id: '10', label: 'button10', code: 'code10' } ]; } diff --git a/src/views/manage/role/modules/menu-auth-modal.vue b/src/views/manage/role/modules/menu-auth-modal.vue index 9fed521..3009bfc 100644 --- a/src/views/manage/role/modules/menu-auth-modal.vue +++ b/src/views/manage/role/modules/menu-auth-modal.vue @@ -9,7 +9,7 @@ defineOptions({ interface Props { /** the roleId */ - roleId: number; + roleId: string | number; } const props = defineProps(); diff --git a/src/views/manage/user/index.vue b/src/views/manage/user/index.vue index 226894b..ca7ce0e 100644 --- a/src/views/manage/user/index.vue +++ b/src/views/manage/user/index.vue @@ -145,14 +145,14 @@ async function handleBatchDelete() { onBatchDeleted(); } -function handleDelete(id: number) { +function handleDelete(id: string) { // request console.log(id); onDeleted(); } -function edit(id: number) { +function edit(id: string) { handleEdit(id); } diff --git a/src/views/namepase/index.vue b/src/views/namepase/index.vue new file mode 100644 index 0000000..8d82f8a --- /dev/null +++ b/src/views/namepase/index.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/src/views/namepase/modules/namespace-operate-drawer.vue b/src/views/namepase/modules/namespace-operate-drawer.vue new file mode 100644 index 0000000..0eecaf2 --- /dev/null +++ b/src/views/namepase/modules/namespace-operate-drawer.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/src/views/namepase/modules/namespace-search.vue b/src/views/namepase/modules/namespace-search.vue new file mode 100644 index 0000000..196a8fa --- /dev/null +++ b/src/views/namepase/modules/namespace-search.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/views/pods/index.vue b/src/views/pods/index.vue index ebd56c9..3d0265e 100644 --- a/src/views/pods/index.vue +++ b/src/views/pods/index.vue @@ -117,7 +117,13 @@ const { checkedRowKeys } = useTableOperate(data, getData);