fix: 修复图片bug

This commit is contained in:
imeepos 2025-09-04 21:34:19 +08:00
parent 95d0776075
commit 9465a71f17
2 changed files with 14 additions and 8 deletions

View File

@ -122,7 +122,7 @@ export default function TemplateCard({ template, onClick }: TemplateCardProps) {
autoplay
muted
loop
objectFit='cover'
objectFit='fill'
showPlayBtn={false}
showCenterPlayBtn={false}
showFullscreenBtn={false}

View File

@ -1,6 +1,6 @@
import { View, Text, Button, Image } from '@tarojs/components'
import { useEffect, useState } from 'react'
import Taro, { switchTab } from '@tarojs/taro'
import Taro, { switchTab, navigateTo } from '@tarojs/taro'
import { useServerSdk } from '../../hooks/index'
import './index.css'
@ -8,8 +8,8 @@ export default function Generate() {
const [progress, setProgress] = useState(0)
const [status, setStatus] = useState<'loading' | 'success' | 'error'>('loading')
const [result, setResult] = useState<any | null>(null)
const [timerRef, setTimerRef] = useState<NodeJS.Timeout | null>(null)
const serverSdk = useServerSdk()
let timerRef: NodeJS.Timeout | null = null
useEffect(() => {
// 获取页面参数
@ -26,9 +26,10 @@ export default function Generate() {
return () => {
if (timerRef) {
clearTimeout(timerRef)
timerRef = null
}
}
}, [timerRef])
}, [])
const pollTaskResult = async (taskId: string) => {
try {
@ -46,13 +47,19 @@ export default function Generate() {
setProgress(100)
setStatus('success')
setResult({ success: true, imageUrl: result.imageUrl })
// 成功后跳转到result页面
setTimeout(() => {
navigateTo({
url: `/pages/result/index?images=${encodeURIComponent(JSON.stringify([result.imageUrl]))}`
})
}, 1000)
} else if (result.status === 'failed') {
setStatus('error')
setResult({ success: false, error: result.error || '处理失败' })
} else if (attempts < maxAttempts) {
// 继续轮询
const timer = setTimeout(poll, 1000)
setTimerRef(timer)
timerRef = setTimeout(poll, 1000)
} else {
// 超时
setStatus('error')
@ -60,8 +67,7 @@ export default function Generate() {
}
} catch (error) {
if (attempts < maxAttempts) {
const timer = setTimeout(poll, 1000)
setTimerRef(timer)
timerRef = setTimeout(poll, 1000)
} else {
setStatus('error')
setResult({ success: false, error: '获取结果失败' })