更改目录结构

This commit is contained in:
dengqichen 2025-10-31 17:53:40 +08:00
parent d463a556cd
commit 80e917666e
81 changed files with 60 additions and 61 deletions

View File

@ -4,7 +4,7 @@ import {useNavigate, useLocation} from 'react-router-dom';
import {Sidebar, SidebarHeader, SidebarContent} from '@/components/ui/sidebar';
import {MenuItem, MenuGroup} from '@/components/ui/sidebar-menu';
import type {RootState} from '@/store';
import {MenuTypeEnum} from '@/pages/System/Menu/types';
import {MenuTypeEnum} from '@/pages/System/Menu/List/types';
import {getIconComponent} from '@/config/icons';
interface AppMenuProps {
@ -44,7 +44,7 @@ export function AppMenu({openKeys, onOpenChange}: AppMenuProps) {
}
}}
>
{menu.children?.map(child => (
{menu.children?.filter(child => !child.hidden).map(child => (
<MenuItem
key={child.path || String(child.id)}
icon={getIconComponent(child.icon)}

View File

@ -10,7 +10,7 @@ import {
} from '@ant-design/icons';
import { logout, setMenus } from '../store/userSlice';
import type { MenuProps } from 'antd';
import { getCurrentUserMenus } from '@/pages/System/Menu/service';
import { getCurrentUserMenus } from '@/pages/System/Menu/List/service';
import { getWeather } from '../services/weather';
import type { RootState } from '../store';
import dayjs from 'dayjs';

View File

@ -2,9 +2,9 @@ import React, {useEffect, useState} from 'react';
import type {Application, RepositoryProject} from '../types';
import {DevelopmentLanguageTypeEnum} from '../types';
import {createApplication, updateApplication, getRepositoryProjectsBySystem} from '../service';
import type {ExternalSystemResponse} from '@/pages/Deploy/External/types';
import {SystemType} from '@/pages/Deploy/External/types';
import {getExternalSystems} from '@/pages/Deploy/External/service';
import type {ExternalSystemResponse} from '@/pages/Deploy/External/List/types';
import {SystemType} from '@/pages/Deploy/External/List/types';
import {getExternalSystems} from '@/pages/Deploy/External/List/service';
import {getEnabledCategories} from '../../Category/service';
import type {ApplicationCategoryResponse} from '../../Category/types';
import {

View File

@ -1,5 +1,5 @@
import type {BaseQuery} from '@/types/base';
import {ExternalSystemResponse} from "@/pages/Deploy/External/types";
import {ExternalSystemResponse} from "@/pages/Deploy/External/List/types";
import {BaseResponse} from "@/types/base";
import type {ApplicationCategoryResponse} from "../Category/types";

View File

@ -32,8 +32,8 @@ import {PlusCircle, X, Maximize2} from 'lucide-react';
import {useForm, useFieldArray} from "react-hook-form";
import {getApplicationList} from '../../../Application/List/service';
import {getExternalSystemList, getJenkinsViewList, getJenkinsJobList, createDeploymentConfig, updateDeploymentConfig} from '../service';
import {getPublishedDefinitions} from '@/pages/Workflow/Definition/service';
import type {ExternalSystem} from '@/pages/Deploy/External/types';
import {getPublishedDefinitions} from '@/pages/Workflow/Definition/List/service';
import type {ExternalSystem} from '@/pages/Deploy/External/List/types';
import { Editor } from "@/components/Editor";
import { message } from 'antd';

View File

@ -9,8 +9,8 @@ import {BetaSchemaForm} from '@ant-design/pro-components';
import {convertJsonSchemaToColumns} from '@/utils/jsonSchemaUtils';
import {Editor} from '@/components/Editor';
import type {JsonNode} from '@/types/common';
import {getPublishedDefinitions} from '@/pages/Workflow/Definition/service';
import type {WorkflowDefinition} from '@/pages/Workflow/Definition/types';
import {getPublishedDefinitions} from '@/pages/Workflow/Definition/List/service';
import type {WorkflowDefinition} from '@/pages/Workflow/Definition/List/types';
import './styles.less';
const {Option} = Select;

View File

@ -1,7 +1,7 @@
import request from '@/utils/request';
import type {DeploymentConfig, CreateDeploymentConfigRequest, UpdateDeploymentConfigRequest, DeploymentConfigQueryParams, DeployConfigTemplate} from './types';
import type {Page} from '@/types/base';
import type {ExternalSystem} from '@/pages/Deploy/External/types';
import type {ExternalSystem} from '@/pages/Deploy/External/List/types';
interface JenkinsView {
id: number;

View File

@ -3,7 +3,7 @@ import {Environment} from '../../Environment/List/types';
import {Application} from '../../Application/List/types';
import {DevelopmentLanguageTypeEnum} from '../../Application/List/types';
import type {JsonNode} from '@/types/common';
import type {WorkflowDefinition} from '@/pages/Workflow/Definition/types';
import type {WorkflowDefinition} from '@/pages/Workflow/Definition/List/types';
// 构建方式枚举
export enum BuildTypeEnum {

View File

@ -63,7 +63,7 @@ import {
syncRepositoryBranches,
} from './service';
import type { ExternalSystemResponse } from '@/pages/Deploy/External/types';
import type { ExternalSystemResponse } from '@/pages/Deploy/External/List/types';
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
import 'dayjs/locale/zh-cn';

View File

@ -5,8 +5,8 @@ import type {
RepositoryProjectResponse,
RepositoryBranchResponse,
} from './types';
import { getExternalSystems } from '@/pages/Deploy/External/service';
import { SystemType } from '@/pages/Deploy/External/types';
import { getExternalSystems } from '@/pages/Deploy/External/List/service';
import { SystemType } from '@/pages/Deploy/External/List/types';
import type { Page } from '@/types/base';
// API 基础路径

View File

@ -1,7 +1,7 @@
import request from '@/utils/request';
import type { JenkinsViewDTO, JenkinsJobDTO, JenkinsBuildDTO } from './types';
import { getExternalSystems } from '@/pages/Deploy/External/service';
import { SystemType } from '@/pages/Deploy/External/types';
import { getExternalSystems } from '@/pages/Deploy/External/List/service';
import { SystemType } from '@/pages/Deploy/External/List/types';
import type { Page } from '@/types/base';
// 获取 Jenkins 实例列表

View File

@ -1,5 +1,5 @@
import type { BaseResponse } from '@/types/base';
import type { ExternalSystemResponse } from '@/pages/Deploy/External/types';
import type { ExternalSystemResponse } from '@/pages/Deploy/External/List/types';
// 使用外部系统响应作为 Jenkins 实例
export type JenkinsInstance = ExternalSystemResponse;

View File

@ -63,7 +63,7 @@ import type {
TeamMemberQuery
} from '../../Member/types';
import type { Page } from '@/types/base';
import type { UserResponse } from '@/pages/System/User/types';
import type { UserResponse } from '@/pages/System/User/List/types';
interface MemberManageDialogProps {
open: boolean;

View File

@ -38,7 +38,7 @@ import type {
Environment,
Application,
} from '../types';
import type { UserResponse } from '@/pages/System/User/types';
import type { UserResponse } from '@/pages/System/User/List/types';
import {
getTeamConfig,
createTeamConfig,

View File

@ -1,8 +1,8 @@
import React, { useEffect, useState } from 'react';
import type { TeamResponse } from '../types';
import { createTeam, updateTeam } from '../service';
import { getUserList } from '@/pages/System/User/service';
import type { UserResponse } from '@/pages/System/User/types';
import { getUserList } from '@/pages/System/User/List/service';
import type { UserResponse } from '@/pages/System/User/List/types';
import {
Dialog,
DialogContent,

View File

@ -5,8 +5,8 @@ import type { TeamResponse, TeamQuery } from './types';
import TeamModal from './components/TeamModal';
import DeleteDialog from './components/DeleteDialog';
import MemberManageDialog from './components/MemberManageDialog';
import { getUserList } from '@/pages/System/User/service';
import type { UserResponse } from '@/pages/System/User/types';
import { getUserList } from '@/pages/System/User/List/service';
import type { UserResponse } from '@/pages/System/User/List/types';
import { getEnvironmentList, getApplicationList } from './service';
import type { Environment, Application } from './types';
import TeamConfigSheet from './components/TeamConfigSheet';

View File

@ -158,4 +158,3 @@ const FormDataDetail: React.FC = () => {
};
export default FormDataDetail;

View File

@ -12,9 +12,9 @@ import {
Activity, Clock, CheckCircle2, FileCheck, Database
} from 'lucide-react';
import { getFormDataList, deleteFormData, exportFormData } from './service';
import { getEnabledCategories } from '../Category/service';
import { getEnabledCategories } from '../../Category/service';
import type { FormDataResponse, FormDataStatus, FormDataBusinessType } from './types';
import type { FormCategoryResponse } from '../Category/types';
import type { FormCategoryResponse } from '../../Category/types';
import type { Page } from '@/types/base';
import { DEFAULT_PAGE_SIZE, DEFAULT_CURRENT } from '@/utils/page';
import dayjs from 'dayjs';

View File

@ -6,8 +6,8 @@ import { useToast } from '@/components/ui/use-toast';
import { FormDesigner } from '@/components/FormDesigner';
import type { FormSchema } from '@/components/FormDesigner';
import { ArrowLeft, Workflow } from 'lucide-react';
import { getDefinitionById, updateDefinition } from './service';
import type { FormDefinitionRequest } from './types';
import { getDefinitionById, updateDefinition } from '../List/service';
import type { FormDefinitionRequest } from '../List/types';
/**
*

View File

@ -57,12 +57,12 @@ import {
createCategory,
updateCategory,
deleteCategory
} from '../../Category/service';
} from '../../../Category/service';
import type {
FormCategoryResponse,
FormCategoryRequest,
FormCategoryQuery
} from '../../Category/types';
} from '../../../Category/types';
import type { Page } from '@/types/base';
interface CategoryManageDialogProps {

View File

@ -11,9 +11,9 @@ import { Separator } from '@/components/ui/separator';
import { FileText, Tag, Folder, AlignLeft, Copy, Loader2 } from 'lucide-react';
import { useToast } from '@/components/ui/use-toast';
import { createDefinition, updateDefinition } from '../service';
import { getEnabledCategories } from '../../Category/service';
import { getEnabledCategories } from '../../../Category/service';
import type { FormDefinitionRequest, FormDefinitionResponse } from '../types';
import type { FormCategoryResponse } from '../../Category/types';
import type { FormCategoryResponse } from '../../../Category/types';
interface FormBasicInfoModalProps {
mode: 'create' | 'edit';

View File

@ -24,9 +24,9 @@ import {
} from '@/components/ui/dropdown-menu';
import { Separator } from '@/components/ui/separator';
import { getDefinitions, publishDefinition, disableDefinition, deleteDefinition } from './service';
import { getEnabledCategories } from '../Category/service';
import { getEnabledCategories } from '../../Category/service';
import type { FormDefinitionResponse, FormDefinitionStatus } from './types';
import type { FormCategoryResponse } from '../Category/types';
import type { FormCategoryResponse } from '../../Category/types';
import type { Page } from '@/types/base';
import { DEFAULT_PAGE_SIZE, DEFAULT_CURRENT } from '@/utils/page';
import FormBasicInfoModal from './components/FormBasicInfoModal';

View File

@ -7,7 +7,7 @@ import * as z from 'zod';
import { login } from './service';
import { getEnabledTenants } from '@/pages/System/Tenant/service';
import { setToken, setUserInfo, setMenus } from '../../store/userSlice';
import { getCurrentUserMenus } from '@/pages/System/Menu/service';
import { getCurrentUserMenus } from '@/pages/System/Menu/List/service';
import type { TenantResponse } from '@/pages/System/Tenant/types';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';

View File

@ -1,7 +1,7 @@
import http from '@/utils/request';
import type { Response } from '@/utils/request';
import type { LoginRequest, LoginResponse } from './types';
import type { MenuResponse } from '@/pages/System/Menu/types';
import type { MenuResponse } from '@/pages/System/Menu/List/types';
import type { TenantResponse } from '@/pages/System/Tenant/types';
// 登录

View File

@ -15,7 +15,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
import { useToast } from '@/components/ui/use-toast';
import request from '@/utils/request';
import type { DepartmentResponse, DepartmentRequest } from '../types';
import type { UserResponse } from '../../User/types';
import type { UserResponse } from '../../../User/List/types';
interface EditDialogProps {
open: boolean;

View File

@ -10,7 +10,7 @@ import {
} from 'lucide-react';
import { getDepartmentTree, getUsers } from './service';
import type { DepartmentResponse } from './types';
import type { UserResponse } from '../User/types';
import type { UserResponse } from '../../User/List/types';
import request from '@/utils/request';
import EditDialog from './components/EditDialog';
import DeleteDialog from './components/DeleteDialog';

View File

@ -1,7 +1,7 @@
import request from '@/utils/request';
import type { Page } from '@/types/base/page';
import type { DepartmentResponse, DepartmentRequest, DepartmentQuery } from './types';
import {UserResponse} from "@/pages/System/User/types";
import {UserResponse} from "@/pages/System/User/List/types";
const BASE_URL = '/api/v1/department';

View File

@ -14,7 +14,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
import { useToast } from '@/components/ui/use-toast';
import { createUser, updateUser } from '../service';
import type { UserResponse, UserRequest } from '../types';
import type { DepartmentResponse } from '../../Department/types';
import type { DepartmentResponse } from '../../../Department/List/types';
interface EditModalProps {
open: boolean;

View File

@ -12,9 +12,9 @@ import {
} from 'lucide-react';
import { useToast } from '@/components/ui/use-toast';
import { getUsers, deleteUser, resetPassword, assignRoles, getAllRoles } from './service';
import { getDepartmentTree } from '../Department/service';
import { getDepartmentTree } from '../../Department/List/service';
import type { UserResponse, UserQuery, Role } from './types';
import type { DepartmentResponse } from '../Department/types';
import type { DepartmentResponse } from '../../Department/List/types';
import type { Page } from '@/types/base';
import { DEFAULT_PAGE_SIZE, DEFAULT_CURRENT } from '@/utils/page';
import EditModal from './components/EditModal';

View File

@ -15,8 +15,8 @@ import { Loader2 } from 'lucide-react';
import { useToast } from '@/components/ui/use-toast';
import type { WorkflowDefinition, WorkflowCategoryResponse, WorkflowDefinitionRequest } from '../types';
import { saveDefinition, updateDefinition, getWorkflowCategoryList } from '../service';
import { getDefinitions as getFormDefinitions } from '@/pages/Form/Definition/service';
import type { FormDefinitionResponse } from '@/pages/Form/Definition/types';
import { getDefinitions as getFormDefinitions } from '@/pages/Form/Definition/List/service';
import type { FormDefinitionResponse } from '@/pages/Form/Definition/List/types';
interface EditModalProps {
visible: boolean;

View File

@ -7,7 +7,7 @@ import React, { useRef, useState } from 'react';
import { Modal, Button } from 'antd';
import { FormRenderer, type FormRendererRef } from '@/components/FormDesigner';
import { useToast } from '@/components/ui/use-toast';
import type { FormDefinitionResponse } from '@/pages/Form/Definition/types';
import type { FormDefinitionResponse } from '@/pages/Form/Definition/List/types';
import type { WorkflowDefinition } from '../types';
interface StartWorkflowModalProps {

View File

@ -21,8 +21,8 @@ import DeleteDialog from './components/DeleteDialog';
import DeployDialog from './components/DeployDialog';
import CategoryManageDialog from './components/CategoryManageDialog';
import StartWorkflowModal from './components/StartWorkflowModal';
import { getDefinitionById as getFormDefinitionById } from '@/pages/Form/Definition/service';
import type { FormDefinitionResponse } from '@/pages/Form/Definition/types';
import { getDefinitionById as getFormDefinitionById } from '@/pages/Form/Definition/List/service';
import type { FormDefinitionResponse } from '@/pages/Form/Definition/List/types';
/**
*

View File

@ -6,7 +6,7 @@
import React from 'react';
import { Modal } from 'antd';
import { FormPreview } from '@/components/FormDesigner';
import type { FormDefinitionResponse } from '@/pages/Form/Definition/types';
import type { FormDefinitionResponse } from '@/pages/Form/Definition/List/types';
interface FormPreviewModalProps {
open: boolean;

View File

@ -1,8 +1,8 @@
import { useCallback, useState } from 'react';
import { message } from 'antd';
import * as definitionService from '../../Definition/service';
import * as definitionService from '../../Definition/List/service';
import type { FlowNode, FlowEdge } from '../types';
import type { WorkflowDefinition } from '../../Definition/types';
import type { WorkflowDefinition } from '../../Definition/List/types';
import { NODE_DEFINITIONS, NodeType, getNodeCategory } from '../nodes';
interface LoadedWorkflowData {

View File

@ -1,6 +1,6 @@
import { useCallback, useState } from 'react';
import { message } from 'antd';
import * as definitionService from '../../Definition/service';
import * as definitionService from '../../Definition/List/service';
import type { FlowNode, FlowEdge } from '../types';
import { NodeType, isConfigurableNode } from '../nodes/types';

View File

@ -16,8 +16,8 @@ import { useWorkflowSave } from './hooks/useWorkflowSave';
import { useWorkflowLoad } from './hooks/useWorkflowLoad';
import { useHistory } from './hooks/useHistory';
import { generateNodeId, generateEdgeId } from './utils/idGenerator';
import { getDefinitionById as getFormDefinitionById } from '@/pages/Form/Definition/service';
import type { FormDefinitionResponse } from '@/pages/Form/Definition/types';
import { getDefinitionById as getFormDefinitionById } from '@/pages/Form/Definition/List/service';
import type { FormDefinitionResponse } from '@/pages/Form/Definition/List/types';
// 样式
import '@xyflow/react/dist/style.css';

View File

@ -6,7 +6,7 @@ import * as DialogPrimitive from "@radix-ui/react-dialog";
import { X } from "lucide-react";
import { cn } from "@/lib/utils";
import { WorkflowHistoricalInstance } from '../types';
import { NodeType } from '../../Design/nodes/types';
import { NodeType } from '../../../Design/nodes/types';
import FlowGraphTab from './tabs/FlowGraphTab';
import TimelineTab from './tabs/TimelineTab';
import DetailInfoTab from './tabs/DetailInfoTab';

View File

@ -5,7 +5,7 @@ import { Badge } from '@/components/ui/badge';
import dayjs from 'dayjs';
import '@xyflow/react/dist/style.css';
import { WorkflowHistoricalInstance, WorkflowInstanceStage } from '../../types';
import { NodeType } from '../../../Design/nodes/types';
import { NodeType } from '../../../../Design/nodes/types';
interface FlowGraphTabProps {
instanceData: WorkflowHistoricalInstance;

View File

@ -4,7 +4,7 @@ import { Spin } from 'antd';
import Login from '../pages/Login';
import BasicLayout from '../layouts/BasicLayout';
import { getRouteComponent } from './routeMap';
import type { MenuResponse } from '@/pages/System/Menu/types';
import type { MenuResponse } from '@/pages/System/Menu/List/types';
import store from '../store';
// 加载组件
@ -23,8 +23,8 @@ const generateRoutes = (menus: MenuResponse[]): RouteObject[] => {
const routes: RouteObject[] = [];
menus.forEach((menu) => {
// 跳过隐藏菜单
if (menu.hidden) return;
// ⚠️ 注意:不要跳过 hidden 的菜单,因为隐藏菜单也需要生成路由
// 隐藏菜单只是不在侧边栏显示,但路由必须存在才能通过 navigate() 访问
// 如果有 component 且有 path创建路由
if (menu.component && menu.path) {

View File

@ -1,5 +1,5 @@
import {createSlice, PayloadAction} from '@reduxjs/toolkit';
import type {MenuResponse} from '@/pages/System/Menu/types';
import type {MenuResponse} from '@/pages/System/Menu/List/types';
interface UserInfo {
id: number;