feat(web): update text
This commit is contained in:
@@ -1340,7 +1340,9 @@ export const en = {
|
|||||||
dynamicMatchSkill: 'Dynamic Match Skill',
|
dynamicMatchSkill: 'Dynamic Match Skill',
|
||||||
executeTask: 'Execute Task',
|
executeTask: 'Execute Task',
|
||||||
|
|
||||||
importWorkflow: 'Import Workflow',
|
import: 'Import Application',
|
||||||
|
importWorkflow: 'Third-Party Workflow',
|
||||||
|
importThirdParty: 'Import Workflow',
|
||||||
platform: 'Source Platform',
|
platform: 'Source Platform',
|
||||||
upload: 'Upload & Parse',
|
upload: 'Upload & Parse',
|
||||||
complex: 'Compatibility Analysis',
|
complex: 'Compatibility Analysis',
|
||||||
@@ -1354,6 +1356,7 @@ export const en = {
|
|||||||
gotoList: 'Return to Application List',
|
gotoList: 'Return to Application List',
|
||||||
gotoDetail: 'View Details',
|
gotoDetail: 'View Details',
|
||||||
dify: 'Dify',
|
dify: 'Dify',
|
||||||
|
pleaseUploadFile: 'Please upload workflow file',
|
||||||
},
|
},
|
||||||
userMemory: {
|
userMemory: {
|
||||||
userMemory: 'User Memory',
|
userMemory: 'User Memory',
|
||||||
|
|||||||
@@ -736,7 +736,9 @@ export const zh = {
|
|||||||
dynamicMatchSkill: '动态匹配技能',
|
dynamicMatchSkill: '动态匹配技能',
|
||||||
executeTask: '执行任务',
|
executeTask: '执行任务',
|
||||||
|
|
||||||
importWorkflow: '导入工作流',
|
import: '导入应用',
|
||||||
|
importWorkflow: '第三方工作流',
|
||||||
|
importThirdParty: '导入工作流',
|
||||||
platform: '来源平台',
|
platform: '来源平台',
|
||||||
upload: '上传与解析',
|
upload: '上传与解析',
|
||||||
complex: '兼容性分析',
|
complex: '兼容性分析',
|
||||||
@@ -751,6 +753,7 @@ export const zh = {
|
|||||||
gotoList: '返回应用列表',
|
gotoList: '返回应用列表',
|
||||||
gotoDetail: '查看详情',
|
gotoDetail: '查看详情',
|
||||||
dify: 'Dify',
|
dify: 'Dify',
|
||||||
|
pleaseUploadFile: '请上传工作流文件',
|
||||||
},
|
},
|
||||||
table: {
|
table: {
|
||||||
totalRecords: '共 {{total}} 条记录'
|
totalRecords: '共 {{total}} 条记录'
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @Author: ZhaoYing
|
* @Author: ZhaoYing
|
||||||
* @Date: 2026-02-28 14:08:14
|
* @Date: 2026-02-28 14:08:14
|
||||||
* @Last Modified by: ZhaoYing
|
* @Last Modified by: ZhaoYing
|
||||||
* @Last Modified time: 2026-02-28 16:20:40
|
* @Last Modified time: 2026-03-02 17:39:49
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* UploadWorkflowModal Component
|
* UploadWorkflowModal Component
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
* 4. Completed - Show success message and options
|
* 4. Completed - Show success message and options
|
||||||
*/
|
*/
|
||||||
import { forwardRef, useImperativeHandle, useState, useMemo } from 'react';
|
import { forwardRef, useImperativeHandle, useState, useMemo } from 'react';
|
||||||
import { Form, Select, Steps, Flex, Alert, Input, Button, Result } from 'antd';
|
import { Form, Select, Steps, Flex, Alert, Input, Button, Result, message } from 'antd';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
|
||||||
import type { UploadWorkflowModalData, UploadData, UploadWorkflowModalRef } from '../types'
|
import type { UploadWorkflowModalData, UploadData, UploadWorkflowModalRef } from '../types'
|
||||||
@@ -92,18 +92,22 @@ const UploadWorkflowModal = forwardRef<UploadWorkflowModalRef, UploadWorkflowMod
|
|||||||
|
|
||||||
switch(current) {
|
switch(current) {
|
||||||
case 0: // Step 1: Upload file
|
case 0: // Step 1: Upload file
|
||||||
|
if (!values.file || values.file.length === 0) {
|
||||||
|
message.warning(t('application.pleaseUploadFile'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
setFirstFormData(values);
|
setFirstFormData(values);
|
||||||
formData.append('platform', values.platform);
|
formData.append('platform', values.platform);
|
||||||
formData.append('file', values.file[0]);
|
formData.append('file', values.file[0]);
|
||||||
|
|
||||||
// Call import workflow API
|
// Call import workflow API
|
||||||
importWorkflow(formData)
|
importWorkflow(formData)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
const response = res as UploadData;
|
const response = res as UploadData;
|
||||||
const { errors, warnings } = response;
|
const { errors, warnings } = response;
|
||||||
setData(response);
|
setData(response);
|
||||||
|
|
||||||
// Navigate to error/warning step if any, otherwise go to confirmation
|
// Navigate to error/warning step if any, otherwise go to confirmation
|
||||||
if (errors.length || warnings.length) {
|
if (errors.length || warnings.length) {
|
||||||
setCurrent(1);
|
setCurrent(1);
|
||||||
@@ -203,7 +207,7 @@ const UploadWorkflowModal = forwardRef<UploadWorkflowModalRef, UploadWorkflowMod
|
|||||||
{t('common.cancel')}
|
{t('common.cancel')}
|
||||||
</Button>,
|
</Button>,
|
||||||
<Button
|
<Button
|
||||||
key="submit"
|
key="nextStep"
|
||||||
type="primary"
|
type="primary"
|
||||||
loading={loading}
|
loading={loading}
|
||||||
onClick={handleSave}
|
onClick={handleSave}
|
||||||
@@ -215,7 +219,7 @@ const UploadWorkflowModal = forwardRef<UploadWorkflowModalRef, UploadWorkflowMod
|
|||||||
return null;
|
return null;
|
||||||
default: // Steps 1-2
|
default: // Steps 1-2
|
||||||
return [
|
return [
|
||||||
<Button onClick={handleClose}>
|
<Button key="cancel" onClick={handleClose}>
|
||||||
{t('common.cancel')}
|
{t('common.cancel')}
|
||||||
</Button>,
|
</Button>,
|
||||||
<Button key="back" onClick={handleLastStep}>
|
<Button key="back" onClick={handleLastStep}>
|
||||||
@@ -235,7 +239,7 @@ const UploadWorkflowModal = forwardRef<UploadWorkflowModalRef, UploadWorkflowMod
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<RbModal
|
<RbModal
|
||||||
title={t('application.importWorkflow')}
|
title={t('application.importThirdParty')}
|
||||||
open={visible}
|
open={visible}
|
||||||
onCancel={handleClose}
|
onCancel={handleClose}
|
||||||
okText={t('application.nextStep')}
|
okText={t('application.nextStep')}
|
||||||
@@ -262,7 +266,10 @@ const UploadWorkflowModal = forwardRef<UploadWorkflowModalRef, UploadWorkflowMod
|
|||||||
platform: 'dify'
|
platform: 'dify'
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Form.Item name="platform" label={t('application.platform')}>
|
<Form.Item
|
||||||
|
name="platform" label={t('application.platform')}
|
||||||
|
rules={[{ required: true, message: t('common.pleaseSelect') }]}
|
||||||
|
>
|
||||||
<Select
|
<Select
|
||||||
placeholder={t('common.pleaseSelect')}
|
placeholder={t('common.pleaseSelect')}
|
||||||
options={['dify'].map(value => ({
|
options={['dify'].map(value => ({
|
||||||
@@ -270,16 +277,17 @@ const UploadWorkflowModal = forwardRef<UploadWorkflowModalRef, UploadWorkflowMod
|
|||||||
}))}
|
}))}
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item name="file" valuePropName="fileList" noStyle>
|
<Form.Item
|
||||||
|
name="file"
|
||||||
|
valuePropName="fileList"
|
||||||
|
noStyle
|
||||||
|
>
|
||||||
<UploadFiles
|
<UploadFiles
|
||||||
isAutoUpload={false}
|
isAutoUpload={false}
|
||||||
isCanDrag={true}
|
isCanDrag={true}
|
||||||
fileSize={100}
|
fileSize={100}
|
||||||
maxCount={1}
|
maxCount={1}
|
||||||
fileType={['yml', 'yaml', 'zip', 'json']}
|
fileType={['yml', 'yaml', 'zip', 'json']}
|
||||||
onChange={(fileList) => {
|
|
||||||
console.log('文件列表变化:', fileList);
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Form>
|
</Form>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @Author: ZhaoYing
|
* @Author: ZhaoYing
|
||||||
* @Date: 2026-02-03 16:34:12
|
* @Date: 2026-02-03 16:34:12
|
||||||
* @Last Modified by: ZhaoYing
|
* @Last Modified by: ZhaoYing
|
||||||
* @Last Modified time: 2026-02-09 13:52:22
|
* @Last Modified time: 2026-03-02 17:48:51
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* Application Management Page
|
* Application Management Page
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
import React, { useState, useRef, useEffect } from 'react';
|
import React, { useState, useRef, useEffect } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { Button, Row, Col, App, Select, Space } from 'antd';
|
import { Button, Row, Col, App, Select, Space, Dropdown } from 'antd';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { DeleteOutlined } from '@ant-design/icons';
|
import { DeleteOutlined } from '@ant-design/icons';
|
||||||
import { useSearchParams } from 'react-router-dom'
|
import { useSearchParams } from 'react-router-dom'
|
||||||
@@ -86,6 +86,13 @@ const ApplicationManagement: React.FC = () => {
|
|||||||
const handleImport = () => {
|
const handleImport = () => {
|
||||||
uploadWorkflowModalRef.current?.handleOpen()
|
uploadWorkflowModalRef.current?.handleOpen()
|
||||||
}
|
}
|
||||||
|
const handleClick = ({ key }: { key: string } ) => {
|
||||||
|
switch (key) {
|
||||||
|
case 'thirdParty':
|
||||||
|
handleImport()
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Row gutter={16} className="rb:mb-4">
|
<Row gutter={16} className="rb:mb-4">
|
||||||
@@ -111,9 +118,16 @@ const ApplicationManagement: React.FC = () => {
|
|||||||
</Col>
|
</Col>
|
||||||
<Col span={12} className="rb:text-right">
|
<Col span={12} className="rb:text-right">
|
||||||
<Space size={12}>
|
<Space size={12}>
|
||||||
<Button onClick={handleImport}>
|
<Dropdown
|
||||||
{t('application.importWorkflow')}
|
menu={{ items: [
|
||||||
</Button>
|
{ key: 'thirdParty', label: t('application.importWorkflow') },
|
||||||
|
], onClick: handleClick }}
|
||||||
|
placement="bottomRight"
|
||||||
|
>
|
||||||
|
<Button>
|
||||||
|
{t('application.import')}
|
||||||
|
</Button>
|
||||||
|
</Dropdown>
|
||||||
<Button type="primary" onClick={handleCreate}>
|
<Button type="primary" onClick={handleCreate}>
|
||||||
{t('application.createApplication')}
|
{t('application.createApplication')}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
Reference in New Issue
Block a user