From 498590d9fde5c0f5afc37fcb92427ece34e4b535 Mon Sep 17 00:00:00 2001 From: HynoR <20227709+HynoR@users.noreply.github.com> Date: Fri, 13 Dec 2024 14:42:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=8F=AF=E8=A7=86=E5=8C=96=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=99=A8=EF=BC=8C=E5=A2=9E=E5=BC=BA=E8=BE=93=E5=85=A5=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E5=92=8C=E6=8F=90=E7=A4=BA=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Operation/ModelSettingsVisualEditor.js | 52 ++++++++++++------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/web/src/pages/Setting/Operation/ModelSettingsVisualEditor.js b/web/src/pages/Setting/Operation/ModelSettingsVisualEditor.js index 86ec2cd8..31541f52 100644 --- a/web/src/pages/Setting/Operation/ModelSettingsVisualEditor.js +++ b/web/src/pages/Setting/Operation/ModelSettingsVisualEditor.js @@ -1,7 +1,7 @@ // ModelSettingsVisualEditor.js import React, { useEffect, useState } from 'react'; import { Table, Button, Input, Modal, Form, Space } from '@douyinfe/semi-ui'; -import { IconDelete, IconPlus, IconSearch,IconSave } from '@douyinfe/semi-icons'; +import { IconDelete, IconPlus, IconSearch, IconSave } from '@douyinfe/semi-icons'; import { showError, showSuccess } from '../../../helpers'; import { API } from '../../../helpers'; export default function ModelSettingsVisualEditor(props) { @@ -55,40 +55,44 @@ export default function ModelSettingsVisualEditor(props) { const pagedData = getPagedData(filteredModels, currentPage, pageSize); const SubmitData = async () => { - setLoading(true); + setLoading(true); const output = { ModelPrice: {}, ModelRatio: {}, CompletionRatio: {} }; let currentConvertModelName = ''; - + try { // 数据转换 models.forEach(model => { currentConvertModelName = model.name; - if (model.price !== '') output.ModelPrice[model.name] = parseFloat(model.price); - if (model.ratio !== '') output.ModelRatio[model.name] = parseFloat(model.ratio); - if (model.completionRatio != '') output.CompletionRatio[model.name] = parseFloat(model.completionRatio); + if (model.price !== '') { + // 如果价格不为空,则转换为浮点数,忽略倍率参数 + output.ModelPrice[model.name] = parseFloat(model.price) + } else { + if (model.ratio !== '') output.ModelRatio[model.name] = parseFloat(model.ratio); + if (model.completionRatio != '') output.CompletionRatio[model.name] = parseFloat(model.completionRatio); + } }); - + // 准备API请求数组 const finalOutput = { ModelPrice: JSON.stringify(output.ModelPrice, null, 2), - ModelRatio: JSON.stringify(output.ModelRatio, null, 2), + ModelRatio: JSON.stringify(output.ModelRatio, null, 2), CompletionRatio: JSON.stringify(output.CompletionRatio, null, 2) }; - + const requestQueue = Object.entries(finalOutput).map(([key, value]) => { return API.put('/api/option/', { key, value }); }); - + // 批量处理请求 const results = await Promise.all(requestQueue); - + // 验证结果 if (requestQueue.length === 1) { if (results.includes(undefined)) return; @@ -97,17 +101,17 @@ export default function ModelSettingsVisualEditor(props) { return showError('部分保存失败,请重试'); } } - + // 检查每个请求的结果 for (const res of results) { if (!res.data.success) { return showError(res.data.message); } } - + showSuccess('保存成功'); props.refresh(); - + } catch (error) { console.error('保存失败:', error); showError('保存失败,请重试'); @@ -130,6 +134,7 @@ export default function ModelSettingsVisualEditor(props) { updateModel(record.name, 'price', value)} /> ) @@ -141,7 +146,9 @@ export default function ModelSettingsVisualEditor(props) { render: (text, record) => ( updateModel(record.name, 'ratio', value)} /> ) @@ -153,7 +160,8 @@ export default function ModelSettingsVisualEditor(props) { render: (text, record) => ( updateModel(record.name, 'completionRatio', value)} /> ) @@ -172,6 +180,10 @@ export default function ModelSettingsVisualEditor(props) { ]; const updateModel = (name, field, value) => { + if (isNaN(value)) { + showError('请输入数字'); + return; + } setModels(prev => prev.map(model => model.name === name @@ -203,7 +215,7 @@ export default function ModelSettingsVisualEditor(props) { return ( <> -