提交 cc8e9abf authored 作者: yanpeng's avatar yanpeng

检查问题

上级 eb3bba82
import { ref } from "vue";
export const useChartInterpretation = () => {
const loading = ref(false);
const interpretation = ref("");
const error = ref(null);
const interpret = async text => {
loading.value = true;
error.value = null;
interpretation.value = "";
try {
const response = await fetch("/aiAnalysis/chart_interpretation", {
method: "POST",
headers: {
"X-API-Key": "aircasKEY19491001",
"Content-Type": "application/json"
},
body: JSON.stringify({ text })
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const reader = response.body.getReader();
const decoder = new TextDecoder();
let buffer = "";
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
const lines = buffer.split("\n");
buffer = lines.pop() || "";
for (const line of lines) {
if (line.startsWith("data: ")) {
const content = line.substring(6);
const textMatch = content.match(/"解读":\s*"([^"]*)"/);
if (textMatch && textMatch[1]) {
interpretation.value = textMatch[1];
}
}
}
}
} catch (err) {
error.value = err.message || "AI 解读失败";
console.error("AI Chart Interpretation Error:", err);
} finally {
loading.value = false;
}
};
return {
loading,
interpretation,
error,
interpret
};
};
...@@ -14,13 +14,17 @@ ...@@ -14,13 +14,17 @@
<div class="tag">{{ value.industryName }}</div> <div class="tag">{{ value.industryName }}</div>
</div> --> </div> -->
<AreaTag v-for="value, index in thinkInfo.tags" :key="index" :tagName="value.industryName"></AreaTag> <AreaTag
v-for="(value, index) in thinkInfo.tags"
:key="index"
:tagName="value.industryName"
></AreaTag>
</div> </div>
</div> </div>
</div> </div>
<div class="header-top-right"> <div class="header-top-right">
<div class="image-name-box"> <div class="image-name-box">
<div class="image"> <img :src=thinkInfo.thinkTankLogoUrl alt="" /></div> <div class="image"><img :src="thinkInfo.thinkTankLogoUrl" alt="" /></div>
<div class="name">{{ thinkInfo.thinkTankName }}</div> <div class="name">{{ thinkInfo.thinkTankName }}</div>
</div> </div>
<div class="time">{{ thinkInfo.times }}</div> <div class="time">{{ thinkInfo.times }}</div>
...@@ -95,7 +99,7 @@ const router = useRouter(); ...@@ -95,7 +99,7 @@ const router = useRouter();
const route = useRoute(); const route = useRoute();
const reportUrl = ref(""); const reportUrl = ref("");
const thinkInfo = ref({}); const thinkInfo = ref({});
const reportList = ref({}) const reportList = ref({});
// 获取报告全局信息 // 获取报告全局信息
const handleGetThinkTankReportSummary = async () => { const handleGetThinkTankReportSummary = async () => {
...@@ -105,7 +109,7 @@ const handleGetThinkTankReportSummary = async () => { ...@@ -105,7 +109,7 @@ const handleGetThinkTankReportSummary = async () => {
if (res.code === 200 && res.data) { if (res.code === 200 && res.data) {
reportUrl.value = res.data.reportUrl; reportUrl.value = res.data.reportUrl;
thinkInfo.value = res.data; thinkInfo.value = res.data;
console.log(reportUrl.value, 'reportUrl.value') console.log(reportUrl.value, "reportUrl.value");
} }
} catch (error) { } catch (error) {
console.error("获取报告全局信息error", error); console.error("获取报告全局信息error", error);
...@@ -117,9 +121,7 @@ const handleGetThinkTankReport = async () => { ...@@ -117,9 +121,7 @@ const handleGetThinkTankReport = async () => {
const res = await getThinkTankReportRelated(router.currentRoute._value.params.id); const res = await getThinkTankReportRelated(router.currentRoute._value.params.id);
console.log("报告全局信息", res); console.log("报告全局信息", res);
if (res.code === 200 && res.data) { if (res.code === 200 && res.data) {
reportList.value = res.data; reportList.value = res.data;
} }
} catch (error) { } catch (error) {
console.error("获取相关报告error", error); console.error("获取相关报告error", error);
...@@ -133,6 +135,8 @@ const toReport = () => { ...@@ -133,6 +135,8 @@ const toReport = () => {
id: router.currentRoute._value.params.id id: router.currentRoute._value.params.id
} }
}); });
console.log("route.href", route.href);
window.open(route.href, "_blank"); window.open(route.href, "_blank");
}; };
const tabActiveName = ref("报告分析"); const tabActiveName = ref("报告分析");
...@@ -167,7 +171,7 @@ const goToOfficialWebsite = () => { ...@@ -167,7 +171,7 @@ const goToOfficialWebsite = () => {
const downloadOnePdf = async (url, filename) => { const downloadOnePdf = async (url, filename) => {
const response = await fetch(url, { const response = await fetch(url, {
method: "GET", method: "GET",
headers: { "Content-Type": "application/pdf" }, headers: { "Content-Type": "application/pdf" }
}); });
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`); if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const blob = await response.blob(); const blob = await response.blob();
...@@ -209,10 +213,9 @@ const handleDownloadDocument = async () => { ...@@ -209,10 +213,9 @@ const handleDownloadDocument = async () => {
try { try {
const { ElMessage } = await import("element-plus"); const { ElMessage } = await import("element-plus");
ElMessage.error("PDF 下载失败,请稍后重试"); ElMessage.error("PDF 下载失败,请稍后重试");
} catch (_) { } } catch (_) {}
} }
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
...@@ -305,7 +308,6 @@ const handleDownloadDocument = async () => { ...@@ -305,7 +308,6 @@ const handleDownloadDocument = async () => {
line-height: 24px; line-height: 24px;
letter-spacing: 0px; letter-spacing: 0px;
text-align: right; text-align: right;
} }
.image { .image {
...@@ -314,12 +316,9 @@ const handleDownloadDocument = async () => { ...@@ -314,12 +316,9 @@ const handleDownloadDocument = async () => {
margin-top: 5px; margin-top: 5px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
} }
...@@ -447,4 +446,4 @@ const handleDownloadDocument = async () => { ...@@ -447,4 +446,4 @@ const handleDownloadDocument = async () => {
width: 100%; width: 100%;
} }
} }
</style> </style>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论