1
This commit is contained in:
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -28,7 +28,7 @@
|
|||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
<script type="module" crossorigin src="/assets/index-DZg1zviY.js"></script>
|
<script type="module" crossorigin src="/assets/index-hoIjy2R3.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-Bsz_Xon-.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-Bsz_Xon-.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -3893,6 +3893,12 @@ const AIChatPage: React.FC = () => {
|
|||||||
}}>
|
}}>
|
||||||
{selectedRatio === 'auto' ? '智能' : selectedRatio} · {selectedResolution === '1K' ? '1K标清' : selectedResolution === '2K' ? '2K高清' : '4K超清'} · {width}×{height}
|
{selectedRatio === 'auto' ? '智能' : selectedRatio} · {selectedResolution === '1K' ? '1K标清' : selectedResolution === '2K' ? '2K高清' : '4K超清'} · {width}×{height}
|
||||||
</Text>
|
</Text>
|
||||||
|
{multiGenerationEnabled && (
|
||||||
|
<>
|
||||||
|
<span style={{ width: 1, height: 14, background: '#E7EAF0' }} />
|
||||||
|
<span style={{ fontSize: 13, fontWeight: 600, color: '#8b5cf6' }}>{generationCount}</span>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
<CaretDownOutlined style={{ fontSize: 10, color: '#8b5cf6', marginLeft: 'auto' }} />
|
<CaretDownOutlined style={{ fontSize: 10, color: '#8b5cf6', marginLeft: 'auto' }} />
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
@@ -4153,6 +4159,57 @@ const AIChatPage: React.FC = () => {
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* 生成数量 */}
|
||||||
|
{multiGenerationEnabled && (
|
||||||
|
<div style={{ marginTop: 16, paddingTop: 16, borderTop: '1px solid #f0f0f5' }}>
|
||||||
|
<Text style={{
|
||||||
|
display: 'block',
|
||||||
|
marginBottom: 8,
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: 500,
|
||||||
|
color: '#667085',
|
||||||
|
}}>
|
||||||
|
生成数量
|
||||||
|
</Text>
|
||||||
|
<div style={{ display: 'flex', gap: 6 }}>
|
||||||
|
{Array.from({ length: effectiveMaxGenerationCount }, (_, i) => i + 1).map((num) => (
|
||||||
|
<button
|
||||||
|
key={num}
|
||||||
|
onClick={() => setGenerationCount(num)}
|
||||||
|
disabled={effectiveMaxGenerationCount <= 1}
|
||||||
|
style={{
|
||||||
|
flex: 1,
|
||||||
|
height: 42,
|
||||||
|
borderRadius: 6,
|
||||||
|
border: generationCount === num
|
||||||
|
? '2px solid #8b5cf6'
|
||||||
|
: '1px solid #E7EAF0',
|
||||||
|
backgroundColor: generationCount === num
|
||||||
|
? '#8b5cf6'
|
||||||
|
: '#FFFFFF',
|
||||||
|
cursor: effectiveMaxGenerationCount <= 1 ? 'not-allowed' : 'pointer',
|
||||||
|
display: 'flex',
|
||||||
|
justifyContent: 'center',
|
||||||
|
alignItems: 'center',
|
||||||
|
transition: 'all 0.2s',
|
||||||
|
opacity: effectiveMaxGenerationCount <= 1 ? 0.5 : 1,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<span style={{
|
||||||
|
fontSize: 14,
|
||||||
|
fontWeight: 600,
|
||||||
|
color: generationCount === num
|
||||||
|
? '#fff'
|
||||||
|
: '#475467',
|
||||||
|
}}>
|
||||||
|
{num}
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@@ -4201,6 +4258,12 @@ const AIChatPage: React.FC = () => {
|
|||||||
<span style={{ fontSize: 13, fontWeight: 600, color: '#2f3440' }}>{videoResolution?.toUpperCase?.() || videoResolution}</span>
|
<span style={{ fontSize: 13, fontWeight: 600, color: '#2f3440' }}>{videoResolution?.toUpperCase?.() || videoResolution}</span>
|
||||||
<span style={{ width: 1, height: 14, background: '#E7EAF0' }} />
|
<span style={{ width: 1, height: 14, background: '#E7EAF0' }} />
|
||||||
<span style={{ fontSize: 13, fontWeight: 600, color: '#2f3440' }}>{videoDuration}秒</span>
|
<span style={{ fontSize: 13, fontWeight: 600, color: '#2f3440' }}>{videoDuration}秒</span>
|
||||||
|
{multiGenerationEnabled && (
|
||||||
|
<>
|
||||||
|
<span style={{ width: 1, height: 14, background: '#E7EAF0' }} />
|
||||||
|
<span style={{ fontSize: 13, fontWeight: 600, color: '#8b5cf6' }}>{generationCount}份</span>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
<CaretDownOutlined style={{ fontSize: 10, color: '#667085', marginLeft: 'auto' }} />
|
<CaretDownOutlined style={{ fontSize: 10, color: '#667085', marginLeft: 'auto' }} />
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
@@ -4351,17 +4414,34 @@ const AIChatPage: React.FC = () => {
|
|||||||
display: 'flex',
|
display: 'flex',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
gap: 4,
|
gap: 4,
|
||||||
padding: '4px 12px',
|
|
||||||
backgroundColor: '#F6F7FA',
|
|
||||||
borderRadius: 6,
|
|
||||||
}}>
|
}}>
|
||||||
<span style={{ fontSize: 14, fontWeight: 600, color: '#667085' }}>
|
<input
|
||||||
{videoDuration}
|
type="number"
|
||||||
</span>
|
min={Math.min(...engineOptions.durations)}
|
||||||
|
max={Math.max(...engineOptions.durations)}
|
||||||
|
value={videoDuration}
|
||||||
|
onChange={(e) => {
|
||||||
|
const v = Number(e.target.value);
|
||||||
|
if (!isNaN(v)) {
|
||||||
|
const clamped = Math.min(Math.max(v, Math.min(...engineOptions.durations)), Math.max(...engineOptions.durations));
|
||||||
|
setVideoDuration(clamped);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
style={{
|
||||||
|
width: 56,
|
||||||
|
height: 32,
|
||||||
|
textAlign: 'center',
|
||||||
|
border: '1px solid #E7EAF0',
|
||||||
|
borderRadius: 6,
|
||||||
|
fontSize: 14,
|
||||||
|
fontWeight: 600,
|
||||||
|
color: '#2f3440',
|
||||||
|
outline: 'none',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
<span style={{ fontSize: 12, color: '#98a2b3' }}>秒</span>
|
<span style={{ fontSize: 12, color: '#98a2b3' }}>秒</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* 选择分辨率 */}
|
{/* 选择分辨率 */}
|
||||||
@@ -4410,6 +4490,57 @@ const AIChatPage: React.FC = () => {
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* 生成数量 */}
|
||||||
|
{multiGenerationEnabled && (
|
||||||
|
<div style={{ marginTop: 16, paddingTop: 16, borderTop: '1px solid #f0f0f5' }}>
|
||||||
|
<Text style={{
|
||||||
|
display: 'block',
|
||||||
|
marginBottom: 8,
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: 500,
|
||||||
|
color: '#667085',
|
||||||
|
}}>
|
||||||
|
生成数量
|
||||||
|
</Text>
|
||||||
|
<div style={{ display: 'flex', gap: 6 }}>
|
||||||
|
{Array.from({ length: effectiveMaxGenerationCount }, (_, i) => i + 1).map((num) => (
|
||||||
|
<button
|
||||||
|
key={num}
|
||||||
|
onClick={() => setGenerationCount(num)}
|
||||||
|
disabled={effectiveMaxGenerationCount <= 1}
|
||||||
|
style={{
|
||||||
|
flex: 1,
|
||||||
|
height: 42,
|
||||||
|
borderRadius: 6,
|
||||||
|
border: generationCount === num
|
||||||
|
? '2px solid #8b5cf6'
|
||||||
|
: '1px solid #E7EAF0',
|
||||||
|
backgroundColor: generationCount === num
|
||||||
|
? '#8b5cf6'
|
||||||
|
: '#FFFFFF',
|
||||||
|
cursor: effectiveMaxGenerationCount <= 1 ? 'not-allowed' : 'pointer',
|
||||||
|
display: 'flex',
|
||||||
|
justifyContent: 'center',
|
||||||
|
alignItems: 'center',
|
||||||
|
transition: 'all 0.2s',
|
||||||
|
opacity: effectiveMaxGenerationCount <= 1 ? 0.5 : 1,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<span style={{
|
||||||
|
fontSize: 14,
|
||||||
|
fontWeight: 600,
|
||||||
|
color: generationCount === num
|
||||||
|
? '#fff'
|
||||||
|
: '#475467',
|
||||||
|
}}>
|
||||||
|
{num}
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@@ -4417,23 +4548,6 @@ const AIChatPage: React.FC = () => {
|
|||||||
</Space>
|
</Space>
|
||||||
|
|
||||||
<div style={{ display: 'flex', alignItems: 'center', gap: 12, flexShrink: 0 }}>
|
<div style={{ display: 'flex', alignItems: 'center', gap: 12, flexShrink: 0 }}>
|
||||||
{multiGenerationEnabled && (
|
|
||||||
<div style={{ display: 'flex', alignItems: 'center', gap: 6, whiteSpace: 'nowrap', height: 34, padding: '0 8px 0 12px', borderRadius: 11, background: 'rgba(255, 255, 255, 0.92)', border: '1px solid rgba(231, 234, 240, 0.92)', boxShadow: '0 4px 12px rgba(47, 52, 64, 0.04)' }}>
|
|
||||||
<Text style={{ fontSize: 13, color: '#667085', fontWeight: 600 }}>生成数量:</Text>
|
|
||||||
<Select
|
|
||||||
value={generationCount}
|
|
||||||
onChange={(value) => setGenerationCount(Number(value || 1))}
|
|
||||||
disabled={effectiveMaxGenerationCount <= 1}
|
|
||||||
size="small"
|
|
||||||
variant="borderless"
|
|
||||||
style={{ width: 68 }}
|
|
||||||
options={Array.from({ length: effectiveMaxGenerationCount }, (_, index) => ({
|
|
||||||
value: index + 1,
|
|
||||||
label: `${index + 1}份`,
|
|
||||||
}))}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
<div style={{ display: 'flex', alignItems: 'center', gap: 6, color: '#667085', whiteSpace: 'nowrap', height: 34, padding: '0 12px', borderRadius: 11, background: 'rgba(255, 255, 255, 0.92)', border: '1px solid rgba(231, 234, 240, 0.92)', boxShadow: '0 4px 12px rgba(47, 52, 64, 0.04)' }}>
|
<div style={{ display: 'flex', alignItems: 'center', gap: 6, color: '#667085', whiteSpace: 'nowrap', height: 34, padding: '0 12px', borderRadius: 11, background: 'rgba(255, 255, 255, 0.92)', border: '1px solid rgba(231, 234, 240, 0.92)', boxShadow: '0 4px 12px rgba(47, 52, 64, 0.04)' }}>
|
||||||
<Text style={{ fontSize: 13, color: '#667085', fontWeight: 600 }}>预估积分:</Text>
|
<Text style={{ fontSize: 13, color: '#667085', fontWeight: 600 }}>预估积分:</Text>
|
||||||
<Text style={{ fontSize: 13, color: '#2f3440', fontWeight: 800 }}>{getEstimatedCredits()}</Text>
|
<Text style={{ fontSize: 13, color: '#2f3440', fontWeight: 800 }}>{getEstimatedCredits()}</Text>
|
||||||
|
|||||||
Reference in New Issue
Block a user