diff --git a/src/Auth.tsx b/src/Auth.tsx index a21f5cc..9481707 100644 --- a/src/Auth.tsx +++ b/src/Auth.tsx @@ -1,7 +1,7 @@ import React from 'react' import { Props } from './global' import { useAtomValue } from 'jotai' -import { authAtom } from './store/user.ts' +import { authAtom } from './store/system/user.ts' export type AuthProps = Props & { diff --git a/src/components/avatar/index.tsx b/src/components/avatar/index.tsx index d272a21..bba548d 100644 --- a/src/components/avatar/index.tsx +++ b/src/components/avatar/index.tsx @@ -1,6 +1,6 @@ import Icon from '@/components/icon' import { useTranslation } from '@/i18n.ts' -import { currentUserAtom, logoutAtom } from '@/store/user.ts' +import { currentUserAtom, logoutAtom } from '@/store/system/user.ts' import { Avatar as AntAvatar, Dropdown, Spin } from 'antd' import { useAtomValue } from 'jotai' import { useNavigate } from '@tanstack/react-router' diff --git a/src/components/department-tree/DepartmentCascader.tsx b/src/components/department-tree/DepartmentCascader.tsx index 90724be..135f64e 100644 --- a/src/components/department-tree/DepartmentCascader.tsx +++ b/src/components/department-tree/DepartmentCascader.tsx @@ -1,6 +1,6 @@ import { Cascader, CascaderProps } from '@/components/cascader' import { useAtomValue } from 'jotai/index' -import { departTreeAtom } from '@/store/department.ts' +import { departTreeAtom } from '@/store/system/department.ts' import { usePageStoreOptions } from '@/store' import { Spin } from 'antd' import { useTranslation } from '@/i18n.ts' diff --git a/src/components/department-tree/DepartmentTree.tsx b/src/components/department-tree/DepartmentTree.tsx index 832f947..48d6216 100644 --- a/src/components/department-tree/DepartmentTree.tsx +++ b/src/components/department-tree/DepartmentTree.tsx @@ -2,12 +2,12 @@ import { usePageStoreOptions } from '@/store' import { Empty, Spin, Tree, TreeDataNode, TreeProps } from 'antd' import { useStyle } from './style.ts' import { useTranslation } from '@/i18n.ts' -import { departTreeAtom, } from '@/store/department.ts' +import { departTreeAtom, } from '@/store/system/department.ts' import { useAtomValue } from 'jotai' import { useRef } from 'react' import { flattenTree } from '@/utils' import { useDeepCompareEffect } from 'react-use' -import { IDepartment } from '@/types/department' +import { IDepartment } from '@/types/system/department' export interface DepartmentTreeProps extends TreeProps { root?: TreeDataNode | boolean | string diff --git a/src/components/error/404.tsx b/src/components/error/404.tsx index 7145e55..e2b69bb 100644 --- a/src/components/error/404.tsx +++ b/src/components/error/404.tsx @@ -2,7 +2,7 @@ import { useTranslation } from '@/i18n.ts' import { useNavigate } from '@tanstack/react-router' import { Button, Result } from 'antd' import { useAtomValue } from 'jotai' -import { userMenuDataAtom } from '@/store/user.ts' +import { userMenuDataAtom } from '@/store/system/user.ts' const NotFound = () => { diff --git a/src/components/role-picker/RolePicker.tsx b/src/components/role-picker/RolePicker.tsx index b763dc4..82cc480 100644 --- a/src/components/role-picker/RolePicker.tsx +++ b/src/components/role-picker/RolePicker.tsx @@ -1,7 +1,7 @@ import { convertToBool } from '@/utils' import { Select, SelectProps } from 'antd' import { useAtomValue } from 'jotai' -import { rolesAtom } from '@/store/role.ts' +import { rolesAtom } from '@/store/system/role.ts' import { memo } from 'react' import { useTranslation } from '@/i18n.ts' diff --git a/src/components/user-picker/UserPicker.tsx b/src/components/user-picker/UserPicker.tsx index e849ac2..2853679 100644 --- a/src/components/user-picker/UserPicker.tsx +++ b/src/components/user-picker/UserPicker.tsx @@ -7,7 +7,7 @@ import { useTranslation } from '@/i18n.ts' import DepartmentTree from '@/components/department-tree/DepartmentTree.tsx' import { DraggablePanel } from '@/components/draggable-panel' import { useAtom, useAtomValue } from 'jotai' -import { userListAtom, userSearchAtom, } from '@/store/user.ts' +import { userListAtom, userSearchAtom, } from '@/store/system/user.ts' import { IUser } from '@/types' import EmptyWrap from '@/components/empty/EmptyWrap.tsx' diff --git a/src/components/user-picker/store.ts b/src/components/user-picker/store.ts index 3ec8af6..66597c2 100644 --- a/src/components/user-picker/store.ts +++ b/src/components/user-picker/store.ts @@ -1,4 +1,4 @@ -import { IUser } from '@/types/user' +import { IUser } from '@/types/system/user' import { atom } from 'jotai' export const userSelectedAtom = atom([]) diff --git a/src/global.d.ts b/src/global.d.ts index a21d1db..a33ae76 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -1,4 +1,4 @@ -import { IMenu } from '@/types/menus' +import { IMenu } from '@/types/system/menus' import { QueryClient } from '@tanstack/react-query' import { Router } from '@tanstack/react-router' import { RouteOptions } from '@tanstack/react-router/src/route.ts' diff --git a/src/layout/RootLayout.tsx b/src/layout/RootLayout.tsx index 9b6f639..45ef9bd 100644 --- a/src/layout/RootLayout.tsx +++ b/src/layout/RootLayout.tsx @@ -3,7 +3,7 @@ import PageBreadcrumb from '@/components/breadcrumb' import ErrorPage from '@/components/error/error.tsx' import SelectLang from '@/components/select-lang' import { appAtom } from '@/store/system.ts' -import { userMenuDataAtom } from '@/store/user.ts' +import { userMenuDataAtom } from '@/store/system/user.ts' import { MenuItem } from '@/global' import { ProConfigProvider, ProLayout, } from '@ant-design/pro-components' import { zhCNIntl, enUSIntl } from '@ant-design/pro-provider/es/intl' diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx index 9262330..b61c222 100644 --- a/src/pages/login/index.tsx +++ b/src/pages/login/index.tsx @@ -3,7 +3,7 @@ import { createFileRoute } from '@tanstack/react-router' import { Button, Form, Input, Space } from 'antd' import { useAtom, useAtomValue } from 'jotai' import { useTranslation } from '@/i18n.ts' -import { loginAtom, loginFormAtom } from '@/store/user.ts' +import { loginAtom, loginFormAtom } from '@/store/system/user.ts' import { memo, useLayoutEffect } from 'react' import { useStyles } from './style.ts' diff --git a/src/pages/system/departments/components/DepartmentTree.tsx b/src/pages/system/departments/components/DepartmentTree.tsx index ef8b87f..2a553f5 100644 --- a/src/pages/system/departments/components/DepartmentTree.tsx +++ b/src/pages/system/departments/components/DepartmentTree.tsx @@ -3,14 +3,14 @@ import { Empty, Spin, Tree } from 'antd' import { useStyle } from '../style.ts' import { useTranslation } from '@/i18n.ts' import { useSetAtom } from 'jotai' -import { selectedDepartAtom, departTreeAtom, batchIdsAtom } from '@/store/department.ts' +import { selectedDepartAtom, departTreeAtom, batchIdsAtom } from '@/store/system/department.ts' import { FormInstance } from 'antd/lib' import { useAtomValue } from 'jotai' import { TreeNodeRender } from './TreeNodeRender.tsx' import { useEffect, useRef } from 'react' import { flattenTree } from '@/utils' import { useDeepCompareEffect } from 'react-use' -import { IDepartment } from '@/types/department' +import { IDepartment } from '@/types/system/department' export const DepartmentTree = ({ form }: { form: FormInstance }) => { diff --git a/src/pages/system/departments/components/TreeNodeRender.tsx b/src/pages/system/departments/components/TreeNodeRender.tsx index 0365b53..2554c82 100644 --- a/src/pages/system/departments/components/TreeNodeRender.tsx +++ b/src/pages/system/departments/components/TreeNodeRender.tsx @@ -6,7 +6,7 @@ import { FormInstance } from 'antd/lib' import { useTranslation } from '@/i18n.ts' import { useStyle } from '../style.ts' import { useAtomValue, useSetAtom } from 'jotai' -import { selectedDepartAtom, deleteDepartAtom, defaultDepart } from '@/store/department.ts' +import { selectedDepartAtom, deleteDepartAtom, defaultDepart } from '@/store/system/department.ts' import { PlusOutlined } from '@ant-design/icons' import ActionIcon, { DeleteAction } from '@/components/icon/action' diff --git a/src/pages/system/departments/index.tsx b/src/pages/system/departments/index.tsx index 3f6f384..a6b7abc 100644 --- a/src/pages/system/departments/index.tsx +++ b/src/pages/system/departments/index.tsx @@ -4,7 +4,7 @@ import { useStyle } from './style.ts' import DepartmentTree from './components/DepartmentTree.tsx' import { Alert, Button, Divider, Form, Input, InputNumber, InputRef, notification, TreeSelect } from 'antd' import { PlusOutlined } from '@ant-design/icons' -import { defaultDepart, selectedDepartAtom, departTreeAtom, saveOrUpdateDepartAtom } from '@/store/department.ts' +import { defaultDepart, selectedDepartAtom, departTreeAtom, saveOrUpdateDepartAtom } from '@/store/system/department.ts' import { useAtom, useAtomValue, } from 'jotai' import Glass from '@/components/glass' import { useEffect, useRef } from 'react' diff --git a/src/pages/system/logs/login/index.tsx b/src/pages/system/logs/login/index.tsx index 1fce3cf..43feaeb 100644 --- a/src/pages/system/logs/login/index.tsx +++ b/src/pages/system/logs/login/index.tsx @@ -11,7 +11,7 @@ import { useAtom, useAtomValue } from 'jotai' import { useTranslation } from '@/i18n.ts' import { Button, Space, Table, Popconfirm } from 'antd' -import { deleteLoginLogAtom, loginLogPageAtom, loginLogsAtom, loginLogSearchAtom } from '@/store/logs.ts' +import { deleteLoginLogAtom, loginLogPageAtom, loginLogsAtom, loginLogSearchAtom } from '@/store/system/logs.ts' const LoginLog = memo(() => { diff --git a/src/pages/system/menus/components/BatchButton.tsx b/src/pages/system/menus/components/BatchButton.tsx index 4d31e46..0a918ab 100644 --- a/src/pages/system/menus/components/BatchButton.tsx +++ b/src/pages/system/menus/components/BatchButton.tsx @@ -1,7 +1,7 @@ import { Button, Popconfirm } from 'antd' import { useAtomValue } from 'jotai' -import { batchIdsAtom, deleteMenuAtom } from '@/store/menu.ts' +import { batchIdsAtom, deleteMenuAtom } from '@/store/system/menu.ts' import { useTranslation } from '@/i18n.ts' const BatchButton = () => { diff --git a/src/pages/system/menus/components/MenuTree.tsx b/src/pages/system/menus/components/MenuTree.tsx index c23adb2..29623a9 100644 --- a/src/pages/system/menus/components/MenuTree.tsx +++ b/src/pages/system/menus/components/MenuTree.tsx @@ -4,7 +4,7 @@ import { MenuItem } from '@/global' import { useStyle } from '../style.ts' import { useTranslation } from '@/i18n.ts' import { useSetAtom } from 'jotai' -import { batchIdsAtom, menuDataAtom, selectedMenuAtom } from '@/store/menu.ts' +import { batchIdsAtom, menuDataAtom, selectedMenuAtom } from '@/store/system/menu.ts' import { FormInstance } from 'antd/lib' import { useAtomValue } from 'jotai' import { TreeNodeRender } from './TreeNodeRender.tsx' diff --git a/src/pages/system/menus/components/TreeNodeRender.tsx b/src/pages/system/menus/components/TreeNodeRender.tsx index 1525d21..8b0e319 100644 --- a/src/pages/system/menus/components/TreeNodeRender.tsx +++ b/src/pages/system/menus/components/TreeNodeRender.tsx @@ -6,7 +6,7 @@ import { FormInstance } from 'antd/lib' import { useTranslation } from '@/i18n.ts' import { useStyle } from '../style.ts' import { useAtomValue, useSetAtom } from 'jotai' -import { defaultMenu, deleteMenuAtom, selectedMenuAtom } from '@/store/menu.ts' +import { defaultMenu, deleteMenuAtom, selectedMenuAtom } from '@/store/system/menu.ts' import { PlusOutlined } from '@ant-design/icons' import ActionIcon, { DeleteAction } from '@/components/icon/action' diff --git a/src/pages/system/menus/index.tsx b/src/pages/system/menus/index.tsx index c03ccb6..2ee36b5 100644 --- a/src/pages/system/menus/index.tsx +++ b/src/pages/system/menus/index.tsx @@ -4,7 +4,7 @@ import { PlusOutlined } from '@ant-design/icons' import { ProCard } from '@ant-design/pro-components' import { Button, Form, Input, Radio, TreeSelect, InputNumber, notification, Alert, InputRef, Divider } from 'antd' import { useAtom, useAtomValue } from 'jotai' -import { defaultMenu, menuDataAtom, saveOrUpdateMenuAtom, selectedMenuAtom } from '@/store/menu.ts' +import { defaultMenu, menuDataAtom, saveOrUpdateMenuAtom, selectedMenuAtom } from '@/store/system/menu.ts' import IconPicker from '@/components/icon/picker' import ButtonTable from './components/ButtonTable.tsx' import { useStyle } from './style.ts' diff --git a/src/pages/system/roles/index.tsx b/src/pages/system/roles/index.tsx index 5a4f44f..0ded53b 100644 --- a/src/pages/system/roles/index.tsx +++ b/src/pages/system/roles/index.tsx @@ -1,6 +1,6 @@ import Switch from '@/components/switch' -import { IMenu } from '@/types/menus' +import { IMenu } from '@/types/system/menus' import { ActionType, PageContainer, @@ -19,11 +19,11 @@ import { rolesAtom, saveOrUpdateRoleAtom, searchAtom -} from '@/store/role.ts' +} from '@/store/system/role.ts' import { useTranslation } from '@/i18n.ts' import { Button, Form, Space, Spin, Table, Tree, Popconfirm } from 'antd' import { PlusOutlined } from '@ant-design/icons' -import { menuDataAtom } from '@/store/menu.ts' +import { menuDataAtom } from '@/store/system/menu.ts' import { getTreeCheckedStatus } from '@/utils/tree.ts' const MenuTree = (props: any) => { diff --git a/src/pages/system/users/index.tsx b/src/pages/system/users/index.tsx index dd80e62..699137e 100644 --- a/src/pages/system/users/index.tsx +++ b/src/pages/system/users/index.tsx @@ -19,7 +19,7 @@ import { userPageAtom, userSearchAtom, userSelectedAtom -} from '@/store/user.ts' +} from '@/store/system/user.ts' import { useMemo, useRef, useState } from 'react' import Switch from '@/components/switch' import { DepartmentCascader } from '@/components/department-tree' diff --git a/src/pages/websites/ssl/components/AcmeList.tsx b/src/pages/websites/ssl/components/AcmeList.tsx index 7d1a293..1f685c0 100644 --- a/src/pages/websites/ssl/components/AcmeList.tsx +++ b/src/pages/websites/ssl/components/AcmeList.tsx @@ -1,12 +1,12 @@ import { useMemo, useState } from 'react' import { BetaSchemaForm, ProColumns, ProFormColumnsType, ProTable } from '@ant-design/pro-components' -import { IAcmeAccount } from '@/types/website/acme' import { useTranslation } from '@/i18n.ts' import { AcmeAccountTypes, acmeListAtom, acmePageAtom, AcmeType, saveOrUpdateAcmeAtom } from '@/store/websites/acme.ts' import { useAtom, useAtomValue } from 'jotai' import { Alert, Button, Form, Popconfirm } from 'antd' import { KeyTypeEnum, KeyTypes } from '@/store/websites/ssl.ts' import { deleteDNSAtom } from '@/store/websites/dns.ts' +import { WebSite } from '@/types' const AcmeList = () => { @@ -18,7 +18,7 @@ const AcmeList = () => { const { mutate: deleteDNS, isPending: isDeleting } = useAtomValue(deleteDNSAtom) const [ open, setOpen ] = useState(false) - const columns = useMemo[]>(() => { + const columns = useMemo[]>(() => { return [ { title: 'ID', @@ -95,7 +95,7 @@ const AcmeList = () => { return ( <> - + cardProps={{ bodyStyle: { padding: 0, @@ -139,7 +139,7 @@ const AcmeList = () => { }} /> - + shouldUpdate={false} width={600} form={form} diff --git a/src/pages/websites/ssl/components/CAList.tsx b/src/pages/websites/ssl/components/CAList.tsx index 99a9e45..e0ded30 100644 --- a/src/pages/websites/ssl/components/CAList.tsx +++ b/src/pages/websites/ssl/components/CAList.tsx @@ -1,12 +1,12 @@ import { useMemo, useState } from 'react' import { BetaSchemaForm, ProColumns, ProFormColumnsType, ProTable } from '@ant-design/pro-components' -import { ICA, } from '@/types/website/ca' import { useTranslation } from '@/i18n.ts' import { deleteCaAtom } from '@/store/websites/ca.ts' import { useAtom, useAtomValue } from 'jotai' import { Button, Form, Popconfirm } from 'antd' import { KeyTypeEnum, KeyTypes } from '@/store/websites/ssl.ts' import { caListAtom, caPageAtom, saveOrUpdateCaAtom } from '@/store/websites/ca.ts' +import { WebSite } from '@/types' const CAList = () => { @@ -18,7 +18,7 @@ const CAList = () => { const { mutate: deleteCA, isPending: isDeleting } = useAtomValue(deleteCaAtom) const [ open, setOpen ] = useState(false) - const columns = useMemo[]>(() => { + const columns = useMemo[]>(() => { return [ { title: 'ID', @@ -145,7 +145,7 @@ const CAList = () => { return ( <> - + cardProps={{ bodyStyle: { padding: 0, @@ -189,7 +189,7 @@ const CAList = () => { }} /> - + shouldUpdate={false} width={600} form={form} diff --git a/src/pages/websites/ssl/components/DNSList.tsx b/src/pages/websites/ssl/components/DNSList.tsx index aa5d055..ef25654 100644 --- a/src/pages/websites/ssl/components/DNSList.tsx +++ b/src/pages/websites/ssl/components/DNSList.tsx @@ -11,7 +11,7 @@ import { DNSTypes, saveOrUpdateDNSAtom } from '@/store/websites/dns.ts' -import { IDnsAccount } from '@/types/website/dns' +import { WebSite } from '@/types' const getKeyColumn = (type: string, t) => { const columns: ProColumns[] = [] @@ -155,7 +155,7 @@ const DNSList = () => { const { mutate: deleteDNS, isPending: isDeleting } = useAtomValue(deleteDNSAtom) const [ open, setOpen ] = useState(false) - const columns = useMemo[]>(() => { + const columns = useMemo[]>(() => { return [ { title: 'ID', @@ -221,7 +221,7 @@ const DNSList = () => { return ( <> - + cardProps={{ bodyStyle: { padding: 0, @@ -264,7 +264,7 @@ const DNSList = () => { }} /> - + shouldUpdate={false} width={600} form={form} diff --git a/src/pages/websites/ssl/index.tsx b/src/pages/websites/ssl/index.tsx index 0df9e08..13a2dce 100644 --- a/src/pages/websites/ssl/index.tsx +++ b/src/pages/websites/ssl/index.tsx @@ -15,13 +15,13 @@ import { memo, useMemo, useState } from 'react' import { useTranslation } from '@/i18n.ts' import { Button, Form, Popconfirm } from 'antd' import { PlusOutlined } from '@ant-design/icons' -import { ISSL } from '@/types/website/ssl' import DrawerPicker from '@/components/drawer-picker/DrawerPicker.tsx' import AcmeList from './components/AcmeList.tsx' import { acmeListAtom, AcmeType, getAcmeAccountTypeName } from '@/store/websites/acme.ts' import { dnsListAtom, getDNSTypeName } from '@/store/websites/dns.ts' import DNSList from './components/DNSList.tsx' import CAList from '@/pages/websites/ssl/components/CAList.tsx' +import { WebSite } from '@/types' const SSL = () => { @@ -38,7 +38,7 @@ const SSL = () => { const [ open, setOpen ] = useState(false) - const columns = useMemo[]>(() => { + const columns = useMemo[]>(() => { return [ { title: 'ID', @@ -216,7 +216,7 @@ const SSL = () => { return ( - + headerTitle={t('website.ssl.title', '证书列表')} search={false} loading={isLoading || isFetching} @@ -303,7 +303,7 @@ const SSL = () => { > - + shouldUpdate={false} width={600} form={form} diff --git a/src/routes.tsx b/src/routes.tsx index 87c7f46..7c0adc0 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -27,7 +27,7 @@ import RootLayout from './layout/RootLayout' import { IRootContext, MenuItem } from './global' import { DevTools } from 'jotai-devtools' import { useAtomValue } from 'jotai' -import { userMenuDataAtom } from '@/store/user.ts' +import { userMenuDataAtom } from '@/store/system/user.ts' const PageRootLayout = () => { return diff --git a/src/service/system.ts b/src/service/system.ts index 0b9fcc9..9b7fc02 100644 --- a/src/service/system.ts +++ b/src/service/system.ts @@ -1,42 +1,38 @@ import { IPageResult } from '@/global' -import { IUser, IUserInfo } from '@/types/user' import request from '../request.ts' -import { LoginRequest, LoginResponse } from '@/types/login' import { createCURD } from '@/service/base.ts' -import { IMenu } from '@/types/menus' -import { IRole } from '@/types/roles' -import { IDepartment } from '@/types/department' +import { System } from '@/types' const systemServ = { dept: { - ...createCURD('/sys/dept'), + ...createCURD('/sys/dept'), tree: () => { - return request.get<{ tree: IDepartment }>('/sys/dept/tree') + return request.get<{ tree: System.IDepartment }>('/sys/dept/tree') } }, menus: { - ...createCURD('/sys/menu') + ...createCURD('/sys/menu') }, - login: (data: LoginRequest) => { - return request.post('/sys/login', data) + login: (data: System.LoginRequest) => { + return request.post('/sys/login', data) }, logout:()=>{ // }, user: { - ...createCURD('/sys/user'), + ...createCURD('/sys/user'), current: () => { - return request.get('/sys/user/info') + return request.get('/sys/user/info') }, menus: () => { - return request.get>('/sys/user/menus') + return request.get>('/sys/user/menus') }, resetPassword: (id: number) => { return request.post(`/sys/user/reset/password`, { id }) } }, role: { - ...createCURD('/sys/role') + ...createCURD('/sys/role') }, logs: { login: { diff --git a/src/service/websites.ts b/src/service/websites.ts index f3cf596..0191bd7 100644 --- a/src/service/websites.ts +++ b/src/service/websites.ts @@ -1,21 +1,18 @@ import { createCURD } from '@/service/base.ts' -import { ISSL } from '@/types/website/ssl' -import { IAcmeAccount } from '@/types/website/acme' -import { IDnsAccount } from '@/types/website/dns' -import { ICA } from '@/types/website/ca' +import { WebSite } from '@/types' const websitesServ = { ssl: { - ...createCURD('/website/ssl') + ...createCURD('/website/ssl') }, acme:{ - ...createCURD('/website/acme') + ...createCURD('/website/acme') }, dns:{ - ...createCURD('/website/dns') + ...createCURD('/website/dns') }, ca:{ - ...createCURD('/website/ca') + ...createCURD('/website/ca') } } diff --git a/src/store/department.ts b/src/store/system/department.ts similarity index 89% rename from src/store/department.ts rename to src/store/system/department.ts index 48479d1..443a313 100644 --- a/src/store/department.ts +++ b/src/store/system/department.ts @@ -1,10 +1,10 @@ import { atomWithMutation, atomWithQuery, queryClientAtom } from 'jotai-tanstack-query' import systemServ from '@/service/system.ts' import { IApiResult, IPage } from '@/global' -import { IDepartment } from '@/types/department' import { atom, createStore } from 'jotai' import { t } from 'i18next' import { message } from 'antd' +import { System } from '@/types' const store = createStore() @@ -18,11 +18,11 @@ export const defaultDepart = { manager_user_id: 0, phone: '', sort: 0, -} as IDepartment +} as System.IDepartment export const batchIdsAtom = atom([]) -export const selectedDepartAtom = atom({} as IDepartment) +export const selectedDepartAtom = atom({} as System.IDepartment) export const departTreeAtom = atomWithQuery(() => { @@ -37,11 +37,11 @@ export const departTreeAtom = atomWithQuery(() => { } }) -export const saveOrUpdateDepartAtom = atomWithMutation((get) => { +export const saveOrUpdateDepartAtom = atomWithMutation((get) => { return { mutationKey: [ 'saveOrUpdateDepart' ], - mutationFn: async (data: IDepartment) => { + mutationFn: async (data: System.IDepartment) => { if (data.id) { return await systemServ.dept.update(data) } diff --git a/src/store/logs.ts b/src/store/system/logs.ts similarity index 100% rename from src/store/logs.ts rename to src/store/system/logs.ts diff --git a/src/store/menu.ts b/src/store/system/menu.ts similarity index 95% rename from src/store/menu.ts rename to src/store/system/menu.ts index 27bf08a..6da3723 100644 --- a/src/store/menu.ts +++ b/src/store/system/menu.ts @@ -1,10 +1,11 @@ import systemServ from '@/service/system.ts' import { IApiResult, IPage, MenuItem } from '@/global' -import { IMenu } from '@/types/menus' import { atomWithMutation, atomWithQuery, queryClientAtom } from 'jotai-tanstack-query' import { atom, createStore } from 'jotai' import { message } from 'antd' import { t } from '@/i18n.ts' +import { System } from '@/types' + export const defaultMenu = { @@ -49,11 +50,11 @@ export const byIdMenuAtom = atomWithQuery((get) => ({ })) -export const saveOrUpdateMenuAtom = atomWithMutation((get) => { +export const saveOrUpdateMenuAtom = atomWithMutation((get) => { return { mutationKey: [ 'updateMenu', get(selectedMenuIdAtom) ], - mutationFn: async (data: IMenu) => { + mutationFn: async (data: System.IMenu) => { if (data.id === 0) { return await systemServ.menus.add(data) } diff --git a/src/store/role.ts b/src/store/system/role.ts similarity index 93% rename from src/store/role.ts rename to src/store/system/role.ts index a6b7952..4ac38eb 100644 --- a/src/store/role.ts +++ b/src/store/system/role.ts @@ -1,11 +1,11 @@ import { convertToBool } from '@/utils' import { atom } from 'jotai/index' -import { IRole } from '@/types/roles' import { atomWithMutation, atomWithQuery, queryClientAtom } from 'jotai-tanstack-query' import { IApiResult, IPage } from '@/global' import systemServ from '@/service/system.ts' import { message } from 'antd' import { t } from '@/i18n.ts' +import { System } from '@/types' type SearchParams = IPage & { key?: string @@ -15,7 +15,7 @@ export const idAtom = atom(0) export const roleIdsAtom = atom([]) -export const roleAtom = atom(undefined as unknown as IRole) +export const roleAtom = atom(undefined as unknown as System.IRole) export const searchAtom = atom({ key: '' @@ -47,7 +47,7 @@ export const rolesAtom = atomWithQuery((get) => { //saveOrUpdateRoleAtom -export const saveOrUpdateRoleAtom = atomWithMutation((get) => { +export const saveOrUpdateRoleAtom = atomWithMutation((get) => { return { mutationKey: [ 'updateMenu' ], diff --git a/src/store/user.ts b/src/store/system/user.ts similarity index 89% rename from src/store/user.ts rename to src/store/system/user.ts index 0d9ca11..8f482d6 100644 --- a/src/store/user.ts +++ b/src/store/system/user.ts @@ -1,14 +1,12 @@ import { appAtom, setToken } from '@/store/system.ts' -import { IMenu } from '@/types/menus' -import { IUser, IUserInfo } from '@/types/user' import { atom } from 'jotai/index' import { IApiResult, IAuth, IPage, IPageResult, MenuItem } from '@/global' -import { LoginRequest } from '@/types/login' import { atomWithMutation, atomWithQuery, queryClientAtom } from 'jotai-tanstack-query' import systemServ from '@/service/system.ts' import { formatMenuData, isDev } from '@/utils' import { message } from 'antd' import { t } from 'i18next' +import { System } from '@/types' export const authAtom = atom({ isLogin: false, @@ -20,11 +18,11 @@ const devLogin = { password: 'kk123456', code: '123456' } -export const loginFormAtom = atom({ +export const loginFormAtom = atom({ ...(isDev ? devLogin : {}) -} as LoginRequest) +} as System.LoginRequest) -export const loginAtom = atomWithMutation((get) => ({ +export const loginAtom = atomWithMutation((get) => ({ mutationKey: [ 'login' ], mutationFn: async (params) => { return await systemServ.login(params) @@ -46,7 +44,7 @@ export const logoutAtom = atomWithMutation(() => ({ }, })) -export const currentUserAtom = atomWithQuery, any, IUserInfo>((get) => { +export const currentUserAtom = atomWithQuery, any, System.IUserInfo>((get) => { return { queryKey: [ 'user_info', get(appAtom).token ], queryFn: async () => { @@ -58,7 +56,7 @@ export const currentUserAtom = atomWithQuery, any, IUserIn } }) -export const userMenuDataAtom = atomWithQuery>, any, MenuItem[]>((get) => ({ +export const userMenuDataAtom = atomWithQuery>, any, MenuItem[]>((get) => ({ enabled: false, queryKey: [ 'user_menus', get(appAtom).token ], queryFn: async () => { @@ -102,16 +100,16 @@ export const userListAtom = atomWithQuery((get) => { }) // user selected -export const userSelectedAtom = atom({} as IUser) +export const userSelectedAtom = atom({} as System.IUser) export const defaultUserData = { id: 0, dept_id: 0, role_id: 0, -} as IUser +} as System.IUser //save or update user -export const saveOrUpdateUserAtom = atomWithMutation((get) => ({ +export const saveOrUpdateUserAtom = atomWithMutation((get) => ({ mutationKey: [ 'save_user' ], mutationFn: async (params) => { params.status = params.status ? '1' : '0' diff --git a/src/store/websites/acme.ts b/src/store/websites/acme.ts index f163984..676724a 100644 --- a/src/store/websites/acme.ts +++ b/src/store/websites/acme.ts @@ -1,10 +1,10 @@ import { atomWithMutation, atomWithQuery } from 'jotai-tanstack-query' -import { IAcmeAccount } from '@/types/website/acme' import websitesServ from '@/service/websites.ts' import { message } from 'antd' import { t } from 'i18next' import { IApiResult, IPage } from '@/global' import { atom } from 'jotai' +import { WebSite } from '@/types' export enum AcmeType { LetsEncrypt = 'letsencrypt', @@ -43,9 +43,9 @@ export const acmeListAtom = atomWithQuery(get => ({ })) //saveOrUpdate -export const saveOrUpdateAcmeAtom = atomWithMutation(get => ({ +export const saveOrUpdateAcmeAtom = atomWithMutation(get => ({ mutationKey: [ 'saveOrUpdateAcme' ], - mutationFn: async (data: IAcmeAccount) => { + mutationFn: async (data: WebSite.IAcmeAccount) => { if (data.id > 0) { return await websitesServ.acme.update(data) } diff --git a/src/store/websites/ca.ts b/src/store/websites/ca.ts index 7421360..e8c0898 100644 --- a/src/store/websites/ca.ts +++ b/src/store/websites/ca.ts @@ -4,7 +4,7 @@ import { atomWithMutation, atomWithQuery } from 'jotai-tanstack-query' import websitesServ from '@/service/websites.ts' import { message, } from 'antd' import { t } from 'i18next' -import { ICA } from '@/types/website/ca' +import { WebSite } from '@/types' export const caPageAtom = atom({ page: 1, pageSize: 10, @@ -22,9 +22,9 @@ export const caListAtom = atomWithQuery(get => ({ })) //saveOrUpdate -export const saveOrUpdateCaAtom = atomWithMutation(get => ({ +export const saveOrUpdateCaAtom = atomWithMutation(get => ({ mutationKey: [ 'saveOrUpdateCA' ], - mutationFn: async (data: ICA) => { + mutationFn: async (data: WebSite.ICA) => { if (data.id > 0) { return await websitesServ.ca.update(data) } diff --git a/src/store/websites/dns.ts b/src/store/websites/dns.ts index c27af6a..1f7d804 100644 --- a/src/store/websites/dns.ts +++ b/src/store/websites/dns.ts @@ -4,7 +4,7 @@ import { IApiResult, IPage } from '@/global' import { atomWithMutation, atomWithQuery } from 'jotai-tanstack-query' import websitesServ from '@/service/websites.ts' import { message } from 'antd' -import { IDnsAccount } from '@/types/website/dns' +import { WebSite } from '@/types' export const DNSTypeEnum = { AliYun: 'AliYun', @@ -73,9 +73,9 @@ export const dnsListAtom = atomWithQuery(get => ({ })) //saveOrUpdate -export const saveOrUpdateDNSAtom = atomWithMutation(get => ({ +export const saveOrUpdateDNSAtom = atomWithMutation(get => ({ mutationKey: [ 'saveOrUpdatedDNS' ], - mutationFn: async (data: IDnsAccount) => { + mutationFn: async (data: WebSite.IDnsAccount) => { if (data.id > 0) { return await websitesServ.dns.update(data) } diff --git a/src/store/websites/ssl.ts b/src/store/websites/ssl.ts index c3b1297..017923d 100644 --- a/src/store/websites/ssl.ts +++ b/src/store/websites/ssl.ts @@ -59,11 +59,6 @@ export const saveOrUpdateSslAtom = atomWithMutation(get => ({ return await websitesServ.ssl.update(data) } }, - // onError: (error: any) => { - // const msg = error?.data?.message ||t('message.saveFailed', '保存失败') - // message.error(msg) - // return error - // }, onSuccess: (res) => { const isAdd = !!res.data?.id message.success(t(isAdd ? 'message.saveSuccess' : 'message.editSuccess', '保存成功')) diff --git a/src/types/index.d.ts b/src/types/index.d.ts new file mode 100644 index 0000000..0272155 --- /dev/null +++ b/src/types/index.d.ts @@ -0,0 +1,14 @@ +export namespace System { + export { IDepartment } from './system/department' + export { IUser, IUserInfo } from './system/user' + export { LoginRequest, LoginResponse } from './system/login' + export { IRole } from './system/roles' + export { IMenu } from './system/menus' +} + +export namespace WebSite { + export { IAcmeAccount } from './website/acme' + export { ICA } from './website/ca' + export { IDnsAccount } from './website/dns' + export { ISSL, ProviderType, SSLSearchParam } from './website/ssl' +} \ No newline at end of file diff --git a/src/types/index.ts b/src/types/index.ts deleted file mode 100644 index ebe95fa..0000000 --- a/src/types/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './department' -export * from './user' -export * from './login' -export * from './roles' -export * from './menus' diff --git a/src/types/roles.d.ts b/src/types/roles.d.ts deleted file mode 100644 index 286cd6c..0000000 --- a/src/types/roles.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -export interface IRole { - id: number, - sort: number, - code: string, - name: string, - description: string, - sequence: number, - status: string | boolean, - menu_ids: number[] -} - -export interface RoleRequest extends IRole { - -} - -export interface RoleListResponse { - key: string, - order: string, - prop: string, - page: number, - pageSize: number - -} - -export interface RoleListResponse { - page: number, - pageSize: number, - total: number, - rows: IRole[] -} \ No newline at end of file diff --git a/src/types/department.d.ts b/src/types/system/department.d.ts similarity index 100% rename from src/types/department.d.ts rename to src/types/system/department.d.ts diff --git a/src/types/login.d.ts b/src/types/system/login.d.ts similarity index 56% rename from src/types/login.d.ts rename to src/types/system/login.d.ts index b22a93e..d874235 100644 --- a/src/types/login.d.ts +++ b/src/types/system/login.d.ts @@ -1,12 +1,4 @@ -export interface LoginLogRequest { - key: string, - start: string, - end: string, - order: string, - prop: string, - page: number, - pageSize: number -} + export interface LoginRequest { 'mfa_status': boolean; diff --git a/src/types/logs.d.ts b/src/types/system/logs.d.ts similarity index 100% rename from src/types/logs.d.ts rename to src/types/system/logs.d.ts diff --git a/src/types/menus.d.ts b/src/types/system/menus.d.ts similarity index 50% rename from src/types/menus.d.ts rename to src/types/system/menus.d.ts index fa746ab..7d512ba 100644 --- a/src/types/menus.d.ts +++ b/src/types/system/menus.d.ts @@ -1,4 +1,3 @@ -import { ReactNode } from 'react' export interface MenuButton { code: string, @@ -6,7 +5,7 @@ export interface MenuButton { } -interface Meta { +export interface Meta { } export interface IMenu { @@ -18,7 +17,7 @@ export interface IMenu { name: string, title: string, component: string, - icon: string | ReactNode, + icon: string | any, description: string, sequence: number, type: string, @@ -33,34 +32,3 @@ export interface IMenu { children: IMenu[] } - -export interface MenuRequest extends IMenu { - -} - -export interface MenuResponse { - id: number, -} - - -export interface MenuDropRequest { - source: number, - target: number, - action: string -} - - -export interface MenuListRequest { - order: string, - prop: string, - page: number, - pageSize: number -} - - -export interface MenuListResponse { - page: number, - pageSize: number, - total: number, - rows: IMenu[] -} \ No newline at end of file diff --git a/src/types/system/roles.d.ts b/src/types/system/roles.d.ts new file mode 100644 index 0000000..ad87345 --- /dev/null +++ b/src/types/system/roles.d.ts @@ -0,0 +1,10 @@ +export interface IRole { + id: number, + sort: number, + code: string, + name: string, + description: string, + sequence: number, + status: string | boolean, + menu_ids: number[] +} diff --git a/src/types/user.d.ts b/src/types/system/user.d.ts similarity index 100% rename from src/types/user.d.ts rename to src/types/system/user.d.ts diff --git a/src/utils/index.ts b/src/utils/index.ts index 69dd807..954ceb7 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,4 +1,4 @@ -import { IMenu } from '@/types/menus' +import { IMenu } from '@/types/system/menus' import { FiledNames, FlattenData, MenuItem, TreeItem } from '@/global' import { getIcon } from '@/components/icon' import { TreeDataNode } from 'antd' diff --git a/src/utils/uuid.ts b/src/utils/uuid.ts index 6f32f94..86a7598 100644 --- a/src/utils/uuid.ts +++ b/src/utils/uuid.ts @@ -1,5 +1,3 @@ -import { MenuItem } from '@/global' -import { TreeDataNode } from 'antd' export function generateUUID() { if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {