feat(pwl): 接入生成报告接口功能
This commit is contained in:
@@ -457,6 +457,7 @@ const chooseType = (data: DictData) => {
|
||||
const onCompany = (item: OaCompany) => {
|
||||
console.log('选择的公司:', item);
|
||||
form.name = item.companyName;
|
||||
form.kbId = item.kbId;
|
||||
console.log('设置后的form.name:', form.name);
|
||||
};
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
<a-card style="margin-bottom: 20px; text-align: center; background: transparent" :bordered="false">
|
||||
<a-space>
|
||||
<a-button type="primary" size="large">
|
||||
<a-button type="primary" size="large" @click="handleGenerateAll" :loading="generatingAll">
|
||||
<template #icon>
|
||||
<UngroupOutlined/>
|
||||
</template>
|
||||
@@ -55,7 +55,7 @@
|
||||
</template>
|
||||
加载草稿
|
||||
</a-button>
|
||||
<a-button size="large">
|
||||
<a-button size="large" @click="handleExport">
|
||||
<template #icon>
|
||||
<UploadOutlined/>
|
||||
</template>
|
||||
@@ -144,6 +144,16 @@
|
||||
class="content-textarea"
|
||||
style="margin-top: 16px"
|
||||
/>
|
||||
|
||||
<div style="margin-top: 12px">
|
||||
<div style="color: #666; margin-bottom: 8px; font-size: 13px">优化建议:</div>
|
||||
<a-textarea
|
||||
v-model:value="item.suggestion"
|
||||
:rows="3"
|
||||
placeholder="请输入优化建议..."
|
||||
class="suggestion-textarea"
|
||||
/>
|
||||
</div>
|
||||
</a-card>
|
||||
</div>
|
||||
</div>
|
||||
@@ -168,6 +178,7 @@ import {
|
||||
RobotOutlined,
|
||||
QuestionCircleOutlined
|
||||
} from '@ant-design/icons-vue';
|
||||
import {generateAuditReport, downloadAuditReport} from "@/api/ai/auditReport";
|
||||
|
||||
const useForm = Form.useForm;
|
||||
|
||||
@@ -180,6 +191,8 @@ const props = defineProps<{
|
||||
|
||||
// 是否显示最大化切换按钮
|
||||
const maxAble = ref(true);
|
||||
// 添加生成状态
|
||||
const generatingAll = ref(false);
|
||||
// 当前选中的章节
|
||||
const currentSection = ref(0);
|
||||
|
||||
@@ -202,6 +215,8 @@ const navigationItems = ref([
|
||||
(五)XXX有限公司各项管理制度;
|
||||
|
||||
(六)双方签订的审计业务约定书。`,
|
||||
suggestion: '',
|
||||
formCommit: 1,
|
||||
rows: 10,
|
||||
generating: false
|
||||
},
|
||||
@@ -212,6 +227,8 @@ const navigationItems = ref([
|
||||
description: '点击"AI生成"按钮让AI为您生成该部分内容,或直接在下方编辑',
|
||||
placeholder: '请输入审计目标内容...',
|
||||
content: `通过对XXX同志、XXX同志任职期间所负责公司资产、负债情况的真实性、合法性和效益性及其相关经济活动进行审计,查清其任职期间公司财经政策指导和财务收支工作目标完成情况,重大决策执行及交接情况,遵守国家财经法规情况及公司资产保值增值情况,分清其经济责任,评价其工作业绩,对其任职期间履行经济责任情况作出客观公正的评价。`,
|
||||
suggestion: '',
|
||||
formCommit: 2,
|
||||
rows: 6,
|
||||
generating: false
|
||||
},
|
||||
@@ -222,16 +239,32 @@ const navigationItems = ref([
|
||||
description: '点击"AI生成"按钮让AI为您生成该部分内容,或直接在下方编辑',
|
||||
placeholder: '请输入审计对象和范围内容...',
|
||||
content: '',
|
||||
suggestion: '',
|
||||
formCommit: 3,
|
||||
rows: 8,
|
||||
generating: false
|
||||
},
|
||||
{
|
||||
number: '四',
|
||||
name: '被审计单位基本情况',
|
||||
name: '被审计单位基本情况'+'|'+'(一)单位概况',
|
||||
title: '4、被审计单位基本情况',
|
||||
description: '点击"AI生成"按钮让AI为您生成该部分内容,或直接在下方编辑',
|
||||
placeholder: '请输入被审计单位基本情况内容...',
|
||||
content: '',
|
||||
suggestion: '',
|
||||
formCommit: 41,
|
||||
rows: 10,
|
||||
generating: false
|
||||
},
|
||||
{
|
||||
number: '四',
|
||||
name: '被审计单位基本情况'+'|'+'(二)机构和人员相关情况',
|
||||
title: '4、被审计单位基本情况',
|
||||
description: '点击"AI生成"按钮让AI为您生成该部分内容,或直接在下方编辑',
|
||||
placeholder: '请输入被审计单位基本情况内容...',
|
||||
content: '',
|
||||
suggestion: '',
|
||||
formCommit: 42,
|
||||
rows: 10,
|
||||
generating: false
|
||||
},
|
||||
@@ -242,6 +275,8 @@ const navigationItems = ref([
|
||||
description: '点击"AI生成"按钮让AI为您生成该部分内容,或直接在下方编辑',
|
||||
placeholder: '请输入审计内容和重点及审计方法内容...',
|
||||
content: '',
|
||||
suggestion: '',
|
||||
formCommit: 5,
|
||||
rows: 12,
|
||||
generating: false
|
||||
},
|
||||
@@ -252,6 +287,8 @@ const navigationItems = ref([
|
||||
description: '点击"AI生成"按钮让AI为您生成该部分内容,或直接在下方编辑',
|
||||
placeholder: '请输入重要风险的识别及应对内容...',
|
||||
content: '',
|
||||
suggestion: '',
|
||||
formCommit: 6,
|
||||
rows: 10,
|
||||
generating: false
|
||||
},
|
||||
@@ -262,6 +299,8 @@ const navigationItems = ref([
|
||||
description: '点击"AI生成"按钮让AI为您生成该部分内容,或直接在下方编辑',
|
||||
placeholder: '请输入审计技术方法内容...',
|
||||
content: '',
|
||||
suggestion: '',
|
||||
formCommit: 7,
|
||||
rows: 8,
|
||||
generating: false
|
||||
},
|
||||
@@ -272,6 +311,8 @@ const navigationItems = ref([
|
||||
description: '点击"AI生成"按钮让AI为您生成该部分内容,或直接在下方编辑',
|
||||
placeholder: '请输入工作步骤与时间安排内容...',
|
||||
content: '',
|
||||
suggestion: '',
|
||||
formCommit: 8,
|
||||
rows: 10,
|
||||
generating: false
|
||||
},
|
||||
@@ -282,6 +323,8 @@ const navigationItems = ref([
|
||||
description: '点击"AI生成"按钮让AI为您生成该部分内容,或直接在下方编辑',
|
||||
placeholder: '请输入审计工作的组织实施内容...',
|
||||
content: '',
|
||||
suggestion: '',
|
||||
formCommit: 9,
|
||||
rows: 8,
|
||||
generating: false
|
||||
}
|
||||
@@ -385,6 +428,8 @@ const form = reactive<PwlProject>({
|
||||
createTime: undefined,
|
||||
// 修改时间
|
||||
updateTime: undefined,
|
||||
// 知识库id
|
||||
kbId: undefined,
|
||||
});
|
||||
|
||||
// 请求状态
|
||||
@@ -414,19 +459,66 @@ const getScrollContainer = () => {
|
||||
return document.querySelector('.ant-modal-body');
|
||||
};
|
||||
|
||||
/* 批量生成全部内容 */
|
||||
const handleGenerateAll = async () => {
|
||||
generatingAll.value = true;
|
||||
try {
|
||||
// 使用Promise.all进行并行生成
|
||||
await Promise.all(navigationItems.value.map((_, index) => generateContent(index)));
|
||||
message.success('全部内容生成完成');
|
||||
} catch (error) {
|
||||
console.error('批量生成失败:', error);
|
||||
message.error('部分内容生成失败,请检查');
|
||||
} finally {
|
||||
generatingAll.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
/* 导出审计报告 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
const blob = await downloadAuditReport({
|
||||
from0: form.code,
|
||||
from1: navigationItems.value[0].content,
|
||||
from2: navigationItems.value[1].content,
|
||||
from3: navigationItems.value[2].content,
|
||||
from41: navigationItems.value[3].content,
|
||||
from42: navigationItems.value[4].content,
|
||||
from5: navigationItems.value[5].content,
|
||||
});
|
||||
|
||||
// 创建下载链接
|
||||
const url = window.URL.createObjectURL(new Blob([blob]));
|
||||
const link = document.createElement('a');
|
||||
link.href = url;
|
||||
link.setAttribute('download', `审计报告_${form.name}.docx`);
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
} catch (error) {
|
||||
console.error('导出失败:', error);
|
||||
message.error('文档导出失败');
|
||||
}
|
||||
};
|
||||
|
||||
/* AI生成内容 */
|
||||
const generateContent = async (index: number) => {
|
||||
const item = navigationItems.value[index];
|
||||
item.generating = true;
|
||||
|
||||
try {
|
||||
// 这里可以调用AI接口生成内容
|
||||
// 模拟AI生成过程
|
||||
await new Promise(resolve => setTimeout(resolve, 2000));
|
||||
// 调用生成接口
|
||||
const result = await generateAuditReport({
|
||||
kbId: form.kbId || '',
|
||||
formCommit: item.formCommit,
|
||||
history: item.content || '',
|
||||
suggestion: item.suggestion || '',
|
||||
// ...form, // 传递表单数据
|
||||
// moduleId: index + 1, // 假设章节对应模块ID
|
||||
// section: item.name // 当前生成章节名称
|
||||
});
|
||||
|
||||
// 根据不同章节生成不同的示例内容
|
||||
const sampleContent = getSampleContent(index);
|
||||
item.content = sampleContent;
|
||||
item.content = result; // 直接使用接口返回内容
|
||||
|
||||
} catch (error) {
|
||||
console.error('AI生成失败:', error);
|
||||
|
||||
Reference in New Issue
Block a user