Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
913fed4c
提交
913fed4c
authored
3月 03, 2026
作者:
张伊明
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化智能写报
上级
a1df7e9b
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
55 行增加
和
14 行删除
+55
-14
writtingAsstaintStore.js
src/stores/writtingAsstaintStore.js
+52
-14
WrittingLeftBox.vue
src/views/writtingAsstaint/components/WrittingLeftBox.vue
+3
-0
没有找到文件。
src/stores/writtingAsstaintStore.js
浏览文件 @
913fed4c
import
{
defineStore
}
from
'pinia'
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
export
const
useWrittingAsstaintStore
=
defineStore
(
'writtingAsstaint'
,
{
state
:
()
=>
({
...
...
@@ -92,11 +92,43 @@ export const useWrittingAsstaintStore = defineStore('writtingAsstaint', {
this
.
abortController
=
null
;
},
backToInputAndClear
()
{
this
.
resetGenerateState
();
this
.
reportContent
=
''
;
this
.
writtingTitle
=
''
;
this
.
descText
=
''
;
this
.
uploadFileList
=
[];
this
.
routeQuery
=
{};
this
.
_isDisableTemplate
=
false
;
this
.
curTempTitle
=
'政令'
;
this
.
tempActiveIndex
=
0
;
},
updateTempActiveIndex
(
index
,
title
)
{
this
.
tempActiveIndex
=
index
;
this
.
curTempTitle
=
title
;
},
_keepStepsViewOnError
()
{
this
.
isGenerating
=
false
;
this
.
isShowProcess
=
true
;
this
.
isShowSteps
=
true
;
this
.
abortController
?.
abort
();
this
.
abortController
=
null
;
},
async
_showErrorDialog
(
message
)
{
await
ElMessageBox
.
alert
(
message
||
'写报生成失败'
,
'提示'
,
{
confirmButtonText
:
'确认'
,
type
:
'error'
});
},
async
_handleGenerateError
(
message
)
{
this
.
_keepStepsViewOnError
();
await
this
.
_showErrorDialog
(
message
);
},
// ========== 路由参数处理 ==========
async
setRouteParams
(
query
)
{
this
.
routeQuery
=
{
...
query
};
...
...
@@ -157,8 +189,7 @@ export const useWrittingAsstaintStore = defineStore('writtingAsstaint', {
}
}
catch
(
error
)
{
console
.
error
(
`获取
${
typeName
}
数据异常:`
,
error
);
ElMessage
.
error
(
`获取
${
typeName
}
数据失败:
${
error
.
message
}
`
);
this
.
resetGenerateState
();
await
this
.
_handleGenerateError
(
`获取
${
typeName
}
数据失败:
${
error
.
message
}
`
);
}
},
...
...
@@ -309,15 +340,20 @@ export const useWrittingAsstaintStore = defineStore('writtingAsstaint', {
});
}
break
;
case
'error'
:
await
this
.
_handleGenerateError
(
jsonData
.
message
);
break
;
default
:
console
.
debug
(
'未处理的SSE事件类型'
,
event
.
event
);
break
;
}
},
onerror
:
(
error
)
=>
{
onerror
:
async
(
error
)
=>
{
console
.
error
(
'SSE连接错误'
,
error
);
ElMessage
.
warning
(
'写报生成报错!'
);
if
(
error
.
name
!==
'AbortError'
)
return
true
;
if
(
error
.
name
!==
'AbortError'
)
{
await
this
.
_handleGenerateError
(
'写报生成报错!'
);
return
true
;
}
this
.
resetGenerateState
();
},
onclose
:
()
=>
{
...
...
@@ -327,8 +363,9 @@ export const useWrittingAsstaintStore = defineStore('writtingAsstaint', {
});
}
catch
(
error
)
{
if
(
error
.
name
!==
'AbortError'
)
{
ElMessage
.
error
(
`PDF解析请求失败:
${
error
.
message
}
`
);
console
.
error
(
'PDF SSE请求异常'
,
error
);
await
this
.
_handleGenerateError
(
`PDF解析请求失败:
${
error
.
message
}
`
);
throw
error
;
}
this
.
resetGenerateState
();
throw
error
;
...
...
@@ -435,8 +472,7 @@ export const useWrittingAsstaintStore = defineStore('writtingAsstaint', {
}
else
if
((
msgData
.
event_type
||
''
).
toLowerCase
().
includes
(
'error'
))
{
// 优先从 data.error 获取详细错误描述
const
errorMsg
=
msgData
.
data
?.
error
||
str
||
'生成失败'
;
ElMessage
.
error
(
'生成失败:'
+
errorMsg
);
this
.
resetGenerateState
();
this
.
_handleGenerateError
(
'生成失败:'
+
errorMsg
);
}
else
{
// 老版 --index.vue 行为:步骤栏直接追加服务端发来的完整步骤内容,不加时间戳、不强行换行
// 这样可以避免 SSE 分片导致的“步骤破碎”(一条步骤被拆成多条显示)
...
...
@@ -446,15 +482,17 @@ export const useWrittingAsstaintStore = defineStore('writtingAsstaint', {
this
.
curAgentTool
=
msgData
.
tool
||
'无'
;
}
},
onerror
:
(
error
)
=>
{
ElMessage
.
warning
(
'写报生成报错!'
);
this
.
resetGenerateState
();
onerror
:
async
(
error
)
=>
{
await
this
.
_handleGenerateError
(
'写报生成报错!'
);
throw
new
Error
(
error
);
}
});
}
catch
(
error
)
{
ElMessage
.
warning
(
'写报生成报错!'
);
this
.
resetGenerateState
();
if
(
error
.
name
!==
'AbortError'
)
{
await
this
.
_handleGenerateError
(
error
.
message
||
'写报生成报错!'
);
}
else
{
this
.
resetGenerateState
();
}
throw
error
;
}
},
...
...
src/views/writtingAsstaint/components/WrittingLeftBox.vue
浏览文件 @
913fed4c
...
...
@@ -163,6 +163,9 @@
<div
class=
"left-box translation-box"
:class=
"{ 'has-back-btn': store.isGenerating }"
v-if=
"store.isShowClauseTranslation"
>
<div
class=
"translation-main-box"
>
<div
class=
"translation-actions"
v-if=
"!store.isGenerating"
>
<div
class=
"back-input-btn"
@
click=
"store.backToInputAndClear"
>
返回输入栏
</div>
</div>
<!-- 政令标题卡片 -->
<div
class=
"metadata-card"
v-if=
"store.pdfMetadata"
>
<div
class=
"card-header"
>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论