Update App.jsx via upload script - 2026-07-27 11:57:07
This commit is contained in:
parent
cc525ce1e9
commit
4fc706296a
61
App.jsx
61
App.jsx
|
|
@ -305,6 +305,15 @@ const TRANSLATION_DICTIONARY = {
|
|||
'电池电压': { en: 'Battery Voltage', fr: 'Tension de batterie', ru: 'Напряжение батареи', es: 'Voltaje de batería', ar: 'جهد البطارية' },
|
||||
'电池型号和数量': { en: 'Battery Model & Qty', fr: 'Modèle et quantité de batterie', ru: 'Модель и кол-во батарей', es: 'Modelo y cantidad de batería', ar: 'طراز وعدد البطاريات' },
|
||||
'充电电流': { en: 'Charge Current', fr: 'Courant de charge', ru: 'Ток зарядки', es: 'Corriente de carga', ar: 'تيار الشحن' },
|
||||
'频率范围(电池模式)': { en: 'Frequency Range (Battery Mode)', fr: 'Plage de fréquence (mode batterie)', ru: 'Диапазон частот (режим батареи)', es: 'Rango de frecuencia (modo batería)', ar: 'نطاق التردد (وضع البطارية)' },
|
||||
'充电时间': { en: 'Charge Time', fr: 'Temps de charge', ru: 'Время зарядки', es: 'Tiempo de carga', ar: 'وقت الشحن' },
|
||||
'LCD显示': { en: 'LCD Display', fr: 'Affichage LCD', ru: 'ЖК-дисплей', es: 'Pantalla LCD', ar: 'شاشة LCD' },
|
||||
'LED显示': { en: 'LED Display', fr: 'Affichage LED', ru: 'Светодиодный индикатор', es: 'Indicador LED', ar: 'مؤشر LED' },
|
||||
'全面保护': { en: 'Full Protection', fr: 'Protection complète', ru: 'Полная защита', es: 'Protección completa', ar: 'حماية شاملة' },
|
||||
'警告提示': { en: 'Alarm', fr: 'Alarme', ru: 'Сигнализация', es: 'Alarma', ar: 'إنذار' },
|
||||
'控制管理': { en: 'Interface', fr: 'Interface', ru: 'Интерфейс', es: 'Interfaz', ar: 'الواجهة' },
|
||||
'湿度': { en: 'Humidity', fr: 'Humidité', ru: 'Влажность', es: 'Humedad', ar: 'الرطوبة' },
|
||||
'噪音': { en: 'Noise Level', fr: 'Niveau sonore', ru: 'Уровень шума', es: 'Nivel de ruido', ar: 'مستوى الضوضاء' },
|
||||
'电压': { en: 'Voltage', fr: 'Tension', ru: 'Напряжение', es: 'Voltaje', ar: 'الجهد' },
|
||||
'视载功率': { en: 'Rated Power (VA)', fr: 'Puissance nominale (VA)', ru: 'Номинальная мощность (ВА)', es: 'Potencia nominal (VA)', ar: 'الطاقة الاسمية (فولت أمبير)' },
|
||||
'功率因数': { en: 'Power Factor', fr: 'Facteur de puissance', ru: 'Коэффициент мощности', es: 'Factor de potencia', ar: 'معامل القدرة' },
|
||||
|
|
@ -395,6 +404,15 @@ function productExportRows(p, categories) {
|
|||
if (p.batteryVoltage) rows.push({ labelKey: '电池电压', value: p.batteryVoltage });
|
||||
if (p.batterySpec) rows.push({ labelKey: '电池型号和数量', value: p.batterySpec });
|
||||
if (p.chargeCurrent) rows.push({ labelKey: '充电电流', value: p.chargeCurrent });
|
||||
if (p.frequencyRangeBatteryMode) rows.push({ labelKey: '频率范围(电池模式)', value: p.frequencyRangeBatteryMode });
|
||||
if (p.chargeTime) rows.push({ labelKey: '充电时间', value: p.chargeTime });
|
||||
if (p.lcdDisplay) rows.push({ labelKey: 'LCD显示', value: p.lcdDisplay });
|
||||
if (p.ledDisplay) rows.push({ labelKey: 'LED显示', value: p.ledDisplay });
|
||||
if (p.fullProtection) rows.push({ labelKey: '全面保护', value: p.fullProtection });
|
||||
if (p.alarmInfo) rows.push({ labelKey: '警告提示', value: p.alarmInfo });
|
||||
if (p.interfacePort) rows.push({ labelKey: '控制管理', value: p.interfacePort });
|
||||
if (p.humidity) rows.push({ labelKey: '湿度', value: p.humidity });
|
||||
if (p.noiseLevel) rows.push({ labelKey: '噪音', value: p.noiseLevel });
|
||||
if (p.dimensions) rows.push({ labelKey: '尺寸(mm)', value: p.dimensions });
|
||||
if (p.netWeight) rows.push({ labelKey: '净重(kg)', value: p.netWeight });
|
||||
} else if (isUpsCategory(cat) && p.type !== '迷你UPS') {
|
||||
|
|
@ -464,6 +482,15 @@ const blankProduct = () => ({
|
|||
waveform: '', // 波形(电池模式),如 "Simulated Sine Wave" / "Sine Wave"
|
||||
batteryVoltage: '', // 电池电压,如 "12V" / "24V"
|
||||
chargeCurrent: '', // 充电电流,如 "1A"
|
||||
frequencyRangeBatteryMode: '', // 频率范围(电池模式),如 "50/60Hz±1Hz"
|
||||
chargeTime: '', // 充电时间,如 "8小时恢复到90%容量"
|
||||
lcdDisplay: '', // LCD显示内容,如 "AC mode, Battery mode, Load level, Battery level, Input voltage, Output voltage, Overload and low battery"
|
||||
ledDisplay: '', // LED显示说明,如 "AC mode: Green / Battery mode: Yellow / Fault: Red"
|
||||
fullProtection: '', // 全面保护,如 "Discharge, Short circuit and overload protection"
|
||||
alarmInfo: '', // 警告提示(电池模式/低电量/过载/故障这几种蜂鸣提示,合并成一个多行字段)
|
||||
interfacePort: '', // 控制管理/接口,如 "USB/RS232 port(optional), support windows xp/vista, 7/8/11 and MAC"
|
||||
humidity: '', // 湿度,如 "0-90% RH@0-40℃(Non-condensing)"
|
||||
noiseLevel: '', // 噪音,如 "Less than 40dB(1m spacing)"
|
||||
batterySpec: '', // 电池型号和数量,如 "12V4.5AH*1"(迷你UPS/离线式/在线互动式UPS共用)
|
||||
dimensions: '', // 尺寸(mm)(迷你UPS/离线式/在线互动式UPS共用)
|
||||
netWeight: '', // 净重(kg)(迷你UPS/离线式/在线互动式UPS共用)
|
||||
|
|
@ -499,6 +526,15 @@ function powerInfoItems(p, categories) {
|
|||
if (p.batteryVoltage) items.push({ key: 'batteryvoltage', label: '电池电压', value: p.batteryVoltage });
|
||||
if (p.batterySpec) items.push({ key: 'batteryspec', label: '电池型号和数量', value: p.batterySpec });
|
||||
if (p.chargeCurrent) items.push({ key: 'chargecurrent', label: '充电电流', value: p.chargeCurrent });
|
||||
if (p.frequencyRangeBatteryMode) items.push({ key: 'freqrange', label: '频率范围(电池模式)', value: p.frequencyRangeBatteryMode });
|
||||
if (p.chargeTime) items.push({ key: 'chargetime', label: '充电时间', value: p.chargeTime });
|
||||
if (p.lcdDisplay) items.push({ key: 'lcddisplay', label: 'LCD显示', value: p.lcdDisplay });
|
||||
if (p.ledDisplay) items.push({ key: 'leddisplay', label: 'LED显示', value: p.ledDisplay });
|
||||
if (p.fullProtection) items.push({ key: 'fullprotection', label: '全面保护', value: p.fullProtection });
|
||||
if (p.alarmInfo) items.push({ key: 'alarminfo', label: '警告提示', value: p.alarmInfo });
|
||||
if (p.interfacePort) items.push({ key: 'interfaceport', label: '控制管理', value: p.interfacePort });
|
||||
if (p.humidity) items.push({ key: 'humidity', label: '湿度', value: p.humidity });
|
||||
if (p.noiseLevel) items.push({ key: 'noiselevel', label: '噪音', value: p.noiseLevel });
|
||||
if (p.dimensions) items.push({ key: 'dim', label: '尺寸(mm)', value: p.dimensions });
|
||||
if (p.netWeight) items.push({ key: 'weight', label: '净重(kg)', value: p.netWeight });
|
||||
return items;
|
||||
|
|
@ -1903,6 +1939,10 @@ function MainApp({ username, onLogout }) {
|
|||
outputVoltage: p.outputVoltage || '', outputVoltageRange: p.outputVoltageRange || '',
|
||||
transferTime: p.transferTime || '', waveform: p.waveform || '',
|
||||
batteryVoltage: p.batteryVoltage || '', chargeCurrent: p.chargeCurrent || '',
|
||||
frequencyRangeBatteryMode: p.frequencyRangeBatteryMode || '', chargeTime: p.chargeTime || '',
|
||||
lcdDisplay: p.lcdDisplay || '', ledDisplay: p.ledDisplay || '', fullProtection: p.fullProtection || '',
|
||||
alarmInfo: p.alarmInfo || '', interfacePort: p.interfacePort || '',
|
||||
humidity: p.humidity || '', noiseLevel: p.noiseLevel || '',
|
||||
batterySpec: p.batterySpec || '', dimensions: p.dimensions || '', netWeight: p.netWeight || '', notes: p.notes || '',
|
||||
}));
|
||||
setAiImportDrafts(drafts);
|
||||
|
|
@ -1949,6 +1989,10 @@ function MainApp({ username, onLogout }) {
|
|||
outputVoltage: d.outputVoltage || '', outputVoltageRange: d.outputVoltageRange || '',
|
||||
transferTime: d.transferTime || '', waveform: d.waveform || '',
|
||||
batteryVoltage: d.batteryVoltage || '', chargeCurrent: d.chargeCurrent || '',
|
||||
frequencyRangeBatteryMode: d.frequencyRangeBatteryMode || '', chargeTime: d.chargeTime || '',
|
||||
lcdDisplay: d.lcdDisplay || '', ledDisplay: d.ledDisplay || '', fullProtection: d.fullProtection || '',
|
||||
alarmInfo: d.alarmInfo || '', interfacePort: d.interfacePort || '',
|
||||
humidity: d.humidity || '', noiseLevel: d.noiseLevel || '',
|
||||
batterySpec: d.batterySpec || '', dimensions: d.dimensions || '', netWeight: d.netWeight || '', notes: d.notes || '',
|
||||
};
|
||||
}
|
||||
|
|
@ -3686,15 +3730,28 @@ function ProductForm({ draft, setDraft, onSave, onCancel, categories, onManage,
|
|||
<div className="field"><span className="field-label">转换时间</span><input className="input" value={draft.transferTime} onChange={e => set({ transferTime: e.target.value })} placeholder="如:Typical 2-8ms, 13ms max" /></div>
|
||||
<div className="field"><span className="field-label">波形(电池模式)</span><input className="input" value={draft.waveform} onChange={e => set({ waveform: e.target.value })} placeholder="如:Simulated Sine Wave" /></div>
|
||||
</div>
|
||||
<div className="field"><span className="field-label">频率范围(电池模式)</span><input className="input" value={draft.frequencyRangeBatteryMode} onChange={e => set({ frequencyRangeBatteryMode: e.target.value })} placeholder="如:50/60Hz±1Hz" /></div>
|
||||
<div className="grid-2">
|
||||
<div className="field"><span className="field-label">电池电压</span><input className="input" value={draft.batteryVoltage} onChange={e => set({ batteryVoltage: e.target.value })} placeholder="如:12V / 24V" /></div>
|
||||
<div className="field"><span className="field-label">充电电流</span><input className="input" value={draft.chargeCurrent} onChange={e => set({ chargeCurrent: e.target.value })} placeholder="如:1A" /></div>
|
||||
</div>
|
||||
<div className="grid-2">
|
||||
<div className="field"><span className="field-label">电池型号和数量</span><input className="input" value={draft.batterySpec} onChange={e => set({ batterySpec: spaceToAsterisk(e.target.value) })} placeholder="如:12V4.5AH*1" /></div>
|
||||
<div className="field"><span className="field-label">尺寸(mm)</span><input className="input" value={draft.dimensions} onChange={e => set({ dimensions: spaceToAsterisk(e.target.value) })} placeholder="如:315*100*143" /></div>
|
||||
<div className="field"><span className="field-label">充电时间</span><input className="input" value={draft.chargeTime} onChange={e => set({ chargeTime: e.target.value })} placeholder="如:8小时恢复到90%容量" /></div>
|
||||
</div>
|
||||
<div className="grid-2">
|
||||
<div className="field"><span className="field-label">尺寸(mm)</span><input className="input" value={draft.dimensions} onChange={e => set({ dimensions: spaceToAsterisk(e.target.value) })} placeholder="如:315*100*143" /></div>
|
||||
<div className="field"><span className="field-label">净重(kg)</span><input className="input" value={draft.netWeight} onChange={e => set({ netWeight: e.target.value })} placeholder="如:4" /></div>
|
||||
</div>
|
||||
<div className="field"><span className="field-label">LCD显示(LCD屏能显示哪些信息)</span><input className="input" value={draft.lcdDisplay} onChange={e => set({ lcdDisplay: e.target.value })} placeholder="如:AC mode, Battery mode, Load level, Input/Output voltage" /></div>
|
||||
<div className="field"><span className="field-label">LED显示(各指示灯含义)</span><textarea className="textarea" style={{ fontFamily: 'inherit', fontSize: 13 }} rows={3} value={draft.ledDisplay} onChange={e => set({ ledDisplay: e.target.value })} placeholder={'如:\nAC mode:Green lighting\nBattery mode:Yellow lighting\nFault:Red lighting'} /></div>
|
||||
<div className="field"><span className="field-label">全面保护</span><input className="input" value={draft.fullProtection} onChange={e => set({ fullProtection: e.target.value })} placeholder="如:Discharge, Short circuit and overload protection" /></div>
|
||||
<div className="field"><span className="field-label">警告提示(各种蜂鸣报警的规律)</span><textarea className="textarea" style={{ fontFamily: 'inherit', fontSize: 13 }} rows={4} value={draft.alarmInfo} onChange={e => set({ alarmInfo: e.target.value })} placeholder={'如:\nBattery mode:Sounding every 10 seconds\nLow battery:Sounding every second\nOverload:Sounding every 0.5 seconds\nFault:Continuously sounding'} /></div>
|
||||
<div className="field"><span className="field-label">控制管理 / 接口</span><input className="input" value={draft.interfacePort} onChange={e => set({ interfacePort: e.target.value })} placeholder="如:USB/RS232 port(optional), support windows xp/vista, 7/8/11 and MAC" /></div>
|
||||
<div className="grid-2">
|
||||
<div className="field"><span className="field-label">湿度</span><input className="input" value={draft.humidity} onChange={e => set({ humidity: e.target.value })} placeholder="如:0-90% RH@0-40℃(Non-condensing)" /></div>
|
||||
<div className="field"><span className="field-label">噪音</span><input className="input" value={draft.noiseLevel} onChange={e => set({ noiseLevel: e.target.value })} placeholder="如:Less than 40dB(1m spacing)" /></div>
|
||||
</div>
|
||||
<div className="field"><span className="field-label">净重(kg)</span><input className="input" value={draft.netWeight} onChange={e => set({ netWeight: e.target.value })} placeholder="如:4" /></div>
|
||||
</>
|
||||
) : isUps && !isMiniUps ? (
|
||||
<div className="grid-2">
|
||||
|
|
|
|||
Loading…
Reference in New Issue