From 27edb84470a411a958cf9c4a02c14bdda0c4577c Mon Sep 17 00:00:00 2001 From: xjs Date: Wed, 30 Apr 2025 13:02:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=9A=E6=AC=A1=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E6=88=BF=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 +- public/icons/loading.gif | Bin 0 -> 29430 bytes src/app/MainArea/Antechamber/index.tsx | 55 ++++++------------ src/app/MainArea/index.tsx | 13 +++-- .../AntechamberButton/index.module.css | 4 +- src/components/AntechamberButton/index.tsx | 8 ++- src/components/AntechamberFile/index.tsx | 8 ++- .../AntechamberHeader/index.module.css | 1 - src/components/AntechamberHeader/index.tsx | 2 +- src/components/AntechamberReport/index.tsx | 7 ++- .../AntechamberScore/index.module.css | 13 +++-- src/components/AntechamberWishList/index.tsx | 7 +-- .../Provider/RealtimeClientProvider.tsx | 17 ++++++ 13 files changed, 74 insertions(+), 63 deletions(-) create mode 100644 public/icons/loading.gif diff --git a/index.html b/index.html index 806588b..7896407 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - 六维填报师 + 六纬AI填报师 diff --git a/public/icons/loading.gif b/public/icons/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ef3431d9b6968a396b5a25873d1a6a3db17a7ab GIT binary patch literal 29430 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 P*9N}$ezhU45v%_n%ID%G literal 0 HcmV?d00001 diff --git a/src/app/MainArea/Antechamber/index.tsx b/src/app/MainArea/Antechamber/index.tsx index e1084b8..9672d8b 100644 --- a/src/app/MainArea/Antechamber/index.tsx +++ b/src/app/MainArea/Antechamber/index.tsx @@ -8,22 +8,22 @@ import { useSearchParams } from "react-router-dom"; import { fetchUserToken } from "@/apis/user"; import { useToast } from "@/hooks/use-toast"; import { useAbortController } from "@/hooks/useAbortController"; -// import { ReportContext } from "@/components/Provider/ReportResolveProvider"; import AntechamberFile from "@/components/AntechamberFile"; import AntechamberReport from "@/components/AntechamberReport"; import AntechamberWishList from "@/components/AntechamberWishList"; +import { ReportContext } from "@/components/Provider/ReportResolveProvider"; export default function Antechamber() { - const { handleConnect } = useContext(RealtimeClientContext); + const { handleConnect} = useContext(RealtimeClientContext); + const { hasHandledReport } = useContext(ReportContext); const [searchParams] = useSearchParams(); const [disable,setDisable] = useState(true); + const [isLoading,setIsLoading] = useState(false); const token = searchParams.get("token") || ''; - // const reportId = searchParams.get("reportId") || ''; - // const reportType = searchParams.get("reportType") || ''; const { toast } = useToast(); const { getSignal } = useAbortController(); @@ -57,54 +57,35 @@ export default function Antechamber() { } }; - // const getReport = async () => { - // try { - // const { result, message } = await fetchReport({ - // params:{Type:reportType,Id:reportId}, - // options: { - // signal: getSignal(), - // headers: { - // "Authorization": `Bearer ${encodeURIComponent(token)}` - // } - // } - // }); - // if (message) { - // console.log(message); - // } else { - // handleConnect({initMessage:result as string}); - // setHasHandledReport(true) - // } - // } catch (error: any) { - // if (error.name !== 'AbortError') { - // console.error('获取报告失败:', error); - // } - // } - // } useEffect(() => { getUserToken(); }, [token]); - // useEffect(() => { - // if(reportId && reportType && !hasHandledReport){ - // getReport(); - // } - // }, [reportId, reportType,hasHandledReport]); const toRoom = (params:{initMessage?:string,fileUrl?:string}) => { - if(disable){ + if(!hasHandledReport && (disable || isLoading)){ return; } - handleConnect(params); + setIsLoading(true) + handleConnect(params).then(() => { + setIsLoading(false); + }); }; return ( -
+
- - + + toRoom({})} /> + { + isLoading ?
+ loading + 加载中 +
: <> + }
); } diff --git a/src/app/MainArea/index.tsx b/src/app/MainArea/index.tsx index 194a577..9e3cf14 100644 --- a/src/app/MainArea/index.tsx +++ b/src/app/MainArea/index.tsx @@ -7,11 +7,11 @@ import { } from "@/components/Provider/RealtimeClientProvider"; import { ReportProvider } from "@/components/Provider/ReportResolveProvider"; import { RealtimeUtils } from "@coze/realtime-api"; - - +import { useLocation } from "react-router-dom"; function MainContent() { - const { isConnected } = useContext(RealtimeClientContext); + const { isConnected, handleDisconnect } = useContext(RealtimeClientContext); + const location = useLocation(); const handlePromise = async() => { await RealtimeUtils.checkDevicePermission(false); @@ -21,11 +21,16 @@ function MainContent() { handlePromise(); }, []); + useEffect(() => { + if (isConnected) { + handleDisconnect(); + } + }, [location.pathname]); + return ( {isConnected ? : } - ); } diff --git a/src/components/AntechamberButton/index.module.css b/src/components/AntechamberButton/index.module.css index 0104440..8322951 100644 --- a/src/components/AntechamberButton/index.module.css +++ b/src/components/AntechamberButton/index.module.css @@ -1,6 +1,8 @@ .wrapper { width: 88px; height: 88px; + min-height: 88px; + min-width: 88px; background: linear-gradient(180deg, #64c7ff 0%, #0165ff 100%); display: flex; flex-direction: column; @@ -8,8 +10,6 @@ align-items: center; border-radius: 50%; position: relative; - margin-top: auto; - margin-bottom: 80px; overflow: hidden; } diff --git a/src/components/AntechamberButton/index.tsx b/src/components/AntechamberButton/index.tsx index a9d6733..8af0e96 100644 --- a/src/components/AntechamberButton/index.tsx +++ b/src/components/AntechamberButton/index.tsx @@ -15,9 +15,11 @@ export default function InvokeButton(props: IInvokeButtonProps) { return ( -
- call -
{disable ? '暂不可用':isConnecting?'连接中':'发起通话'}
+
+
+ call +
{disable ? '暂不可用':isConnecting?'连接中':'发起通话'}
+
); } \ No newline at end of file diff --git a/src/components/AntechamberFile/index.tsx b/src/components/AntechamberFile/index.tsx index 4c7ffb4..4f53f6e 100644 --- a/src/components/AntechamberFile/index.tsx +++ b/src/components/AntechamberFile/index.tsx @@ -6,9 +6,11 @@ import { useSearchParams } from "react-router-dom"; import { ReportContext } from "../Provider/ReportResolveProvider"; import { FileInfo, RealtimeClientContext } from "../Provider/RealtimeClientProvider"; +type Props = { + handleLoading:(val:boolean) => void +} - -export default function AntechamberFile() { +export default function AntechamberFile({handleLoading}:Props) { const [searchParams] = useSearchParams(); const fileId = searchParams.get("fileId") || ""; const locationCode = searchParams.get("locationCode") || ""; @@ -32,7 +34,7 @@ export default function AntechamberFile() { }); } let resp = result.result as FileInfo; - + handleLoading(true) handleConnect({ fileInfo: {type: resp.type,url: resp.url,tableName: resp.tableName,provinceName: resp.provinceName,subjectClaim: resp.subjectClaim}, }); diff --git a/src/components/AntechamberHeader/index.module.css b/src/components/AntechamberHeader/index.module.css index e6ccaf8..62c41b6 100644 --- a/src/components/AntechamberHeader/index.module.css +++ b/src/components/AntechamberHeader/index.module.css @@ -56,7 +56,6 @@ position: relative; z-index: 1; backdrop-filter:blur(10px); - min-height: 213px; box-sizing: border-box; } diff --git a/src/components/AntechamberHeader/index.tsx b/src/components/AntechamberHeader/index.tsx index 9fe0661..eba34b6 100644 --- a/src/components/AntechamberHeader/index.tsx +++ b/src/components/AntechamberHeader/index.tsx @@ -91,7 +91,7 @@ export default function HeaderGroup() { key={index} onClick={() => handleQuestion(item)} > -
{item}
+
{item}
right-icon void +} + +export default function AntechamberReport({handleLoading}:Props) { const [searchParams] = useSearchParams(); const token = searchParams.get("token") || ''; const reportId = searchParams.get("reportId") || ''; @@ -30,6 +34,7 @@ export default function AntechamberReport() { if (message) { console.log(message); } else { + handleLoading(true) handleConnect({initMessage:result as string}); setHasHandledReport(true) } diff --git a/src/components/AntechamberScore/index.module.css b/src/components/AntechamberScore/index.module.css index 2917553..842b358 100644 --- a/src/components/AntechamberScore/index.module.css +++ b/src/components/AntechamberScore/index.module.css @@ -5,7 +5,7 @@ } .innerWrapper { - padding: 15px; + padding: 12px 15px; width: 100%; background: rgba(255, 255, 255, 0.7); border-radius: 13px; @@ -21,14 +21,15 @@ align-items: center; gap: 10px; margin-top: 10px; - font-size: 16px; + font-size: 14px; + font-weight: 700; } .right{ - color: #1580FF; - display: flex; - align-items: center; - font-size: 13px; + color: #1580FF; + display: flex; + align-items: center; + font-size: 13px; } .imgIcon{ diff --git a/src/components/AntechamberWishList/index.tsx b/src/components/AntechamberWishList/index.tsx index 74bb0ab..194dfb6 100644 --- a/src/components/AntechamberWishList/index.tsx +++ b/src/components/AntechamberWishList/index.tsx @@ -54,7 +54,7 @@ export default function AntechamberWishList() { return ( <> {wishList.length > 0 ? ( -
+
@@ -95,7 +95,6 @@ export default function AntechamberWishList() {
{item.type}
-
@@ -118,7 +117,7 @@ export default function AntechamberWishList() {
@@ -163,7 +162,7 @@ export default function AntechamberWishList() { onClick={() => handleNavigate(wishList[0])} > 智能分析 - +
diff --git a/src/components/Provider/RealtimeClientProvider.tsx b/src/components/Provider/RealtimeClientProvider.tsx index 2a81649..8afca4f 100644 --- a/src/components/Provider/RealtimeClientProvider.tsx +++ b/src/components/Provider/RealtimeClientProvider.tsx @@ -91,6 +91,8 @@ export const RealtimeClientProvider = ({ const connectorId = "1024"; const clientRef = useRef(null); + // 添加连接锁 + const connectingLockRef = useRef(false); // 实时语音回复消息列表 const [messageList, setMessageList] = useState< { content: string; role: RoleType; event?: any }[] @@ -166,6 +168,18 @@ export const RealtimeClientProvider = ({ fileInfo?: FileInfo; }) => { try { + // 使用连接锁确保原子性 + if (connectingLockRef.current) { + return; + } + connectingLockRef.current = true; + + // 如果已经连接或正在连接中,直接返回 + if (isConnected || isConnecting) { + connectingLockRef.current = false; + return; + } + if (!clientRef.current) { await initClient({ initMessage, fileInfo }); } @@ -192,6 +206,9 @@ export const RealtimeClientProvider = ({ } else { console.error("连接错误:" + error); } + } finally { + // 确保在任何情况下都释放连接锁 + connectingLockRef.current = false; } };