From 1ab8b13299779e05614a3bb262db5c6cccb2191f Mon Sep 17 00:00:00 2001 From: ZLY Date: Wed, 12 Nov 2025 17:02:53 +0800 Subject: [PATCH] =?UTF-8?q?feat(component):=20=E6=B7=BB=E5=8A=A0=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E4=BB=A3=E7=A0=81=E5=88=9D=E5=A7=8B=E5=8C=96=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 codeInit API 并实现代码初始化逻辑 - 新增组件语言和类型选项配置 - 合并组件信息状态以统一管理 - 更新表单提交逻辑以支持新字段 - 禁用代码初始化按钮直到满足条件 - 移除旧的组件编码按钮入口 - 优化组件列表获取与状态同步逻辑 - 修复编辑模式下 logoUrl 的引用问题 - 调整 API 导入顺序并清理无用代码 - 改进消息提示逻辑与加载状态控制 --- src/api/componentDevelopProcess.ts | 5 + .../componentList/addComponentModal.tsx | 133 ++++++++++++------ .../componentList/handleButtonGroup.tsx | 10 -- 3 files changed, 96 insertions(+), 52 deletions(-) diff --git a/src/api/componentDevelopProcess.ts b/src/api/componentDevelopProcess.ts index ea5eca5..64f8d2f 100644 --- a/src/api/componentDevelopProcess.ts +++ b/src/api/componentDevelopProcess.ts @@ -16,4 +16,9 @@ export function updateComponentDesign(params) { // 获取组件基本信息 export function getComponentBaseInfo(componentBaseId) { return axios.get(`${urlPrefix}/componentDevelopProcess/baseInfo?componentBaseId=${componentBaseId}`); +} + +// 代码初始化 +export function codeInit(componentBaseId) { + return axios.post(`${urlPrefix}/componentDevelopProcess/generate?componentBaseId=${componentBaseId}`); } \ No newline at end of file diff --git a/src/pages/componentDevelopment/componentList/addComponentModal.tsx b/src/pages/componentDevelopment/componentList/addComponentModal.tsx index 90a93a3..eb869b5 100644 --- a/src/pages/componentDevelopment/componentList/addComponentModal.tsx +++ b/src/pages/componentDevelopment/componentList/addComponentModal.tsx @@ -20,9 +20,16 @@ import EditorSection from '@/components/EditorSection'; import AddApiModal from '@/pages/componentDevelopment/componentList/addApiModal'; import CompReview from '@/pages/componentDevelopment/componentList/compReview'; import { getComponentClassify } from '@/api/componentClassify'; -import { compProjectValidate, compSubmit, getTagList, copyAll } from '@/api/componentBase'; +import { + compProjectValidate, + compSubmit, + getTagList, + copyAll, + getMyComponentList, + getCooperationComponentList +} from '@/api/componentBase'; import { copyDesign } from '@/api/componentMarket'; -import { getComponentDesign, updateComponentDesign } from '@/api/componentDevelopProcess'; +import { codeInit, getComponentDesign, updateComponentDesign } from '@/api/componentDevelopProcess'; const FormItem = Form.Item; const Option = Select.Option; @@ -36,14 +43,27 @@ const AddComponentModal = ({ visible, baseInfo, setVisible, onReFresh, mode = 'c const [classifyList, setClassifyList] = useState([]); const [showSaveBtn, setShowSaveBtn] = useState(false); const [tagsList, setTagsList] = useState([]); - const [componentData, setComponentData] = useState(null); + const [componentInfo, setComponentInfo] = useState(null); // 合并后的组件信息状态 const [componentDesignData, setComponentDesignData] = useState([]); // 新增状态用于存储接口设计数据 const [selectedApiData, setSelectedApiData] = useState(null); // 新增状态用于存储选中的API数据 const [showApiModal, setShowApiModal] = useState(false); const [created, setCreated] = useState(false); // 是否提交了组件信息 + const [codeInitLoading, setCodeInitLoading] = useState(false); // 代码初始化按钮 loading const [file, setFile] = useState(null); const [form] = Form.useForm(); + // 组件语言选项 + const codeLanguageOptions = [ + { label: 'Java:8', value: 'Java' }, + { label: 'Python:3.10.12', value: 'Python' } + ]; + + // 组件类型选项 + const componentTypeOptions = [ + { label: '普通组件', value: 'normal' }, + { label: '监听组件', value: 'loop' } + ]; + const cs = `arco-upload-list-item${file && file.status === 'error' ? ' is-error' : ''}`; // 判断是否为复制模式 @@ -91,14 +111,14 @@ const AddComponentModal = ({ visible, baseInfo, setVisible, onReFresh, mode = 'c setSelectedApiData(record); setShowApiModal(true); }} - disabled={isCopyMode || (baseInfo && !['DEFAULT', 'DESIGN'].includes(baseInfo.componentStatus))} + disabled={isCopyMode || (componentInfo && !['DEFAULT', 'DESIGN'].includes(componentInfo.componentStatus))} > 编辑 @@ -673,7 +722,7 @@ const AddComponentModal = ({ visible, baseInfo, setVisible, onReFresh, mode = 'c setSelectedApiData(null); // 确保新增时清空选中的API数据 setShowApiModal(true); }} - disabled={baseInfo && !['DEFAULT', 'DESIGN'].includes(baseInfo.componentStatus)} + disabled={componentInfo && !['DEFAULT', 'DESIGN'].includes(componentInfo.componentStatus)} > + 新增接口 @@ -684,13 +733,13 @@ const AddComponentModal = ({ visible, baseInfo, setVisible, onReFresh, mode = 'c { // 更新成功后重新获取组件设计数据 - if ((componentData && componentData.id) || (baseInfo && baseInfo.id)) { - getComponentDesignData(componentData?.id || baseInfo.id); + if (componentInfo && componentInfo.id) { + getComponentDesignData(componentInfo.id); } }} onCancel={() => { diff --git a/src/pages/componentDevelopment/componentList/handleButtonGroup.tsx b/src/pages/componentDevelopment/componentList/handleButtonGroup.tsx index e8d17d3..f3c8650 100644 --- a/src/pages/componentDevelopment/componentList/handleButtonGroup.tsx +++ b/src/pages/componentDevelopment/componentList/handleButtonGroup.tsx @@ -132,16 +132,6 @@ const HandleButtonGroup: React.FC = ({ )} - {/* 组件编码 */} - {isEligible([componentStatusConstant.CODING], row.componentStatus) ? ( - - ) : null} - {/* 查看源码 */} {isEligible( [componentStatusConstant.CODING, componentStatusConstant.DEPLOYED, componentStatusConstant.PUBLISHED],