修改文档管理表格字段

This commit is contained in:
2026-05-15 18:51:39 +08:00
parent f3e3170faa
commit 310fb9d3c1
4 changed files with 200 additions and 23 deletions

View File

@@ -81,4 +81,18 @@ export async function getAiCloudFile(id: number) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
}
/**
* 修改AI云文件表
*/
export async function updateAiCloudFile(data: AiCloudFile) {
const res = await request.put<ApiResult<unknown>>(
MODULES_API_URL + '/ai/file',
data
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -22,6 +22,26 @@ export interface AiCloudFile {
fileUrl?: string;
// 文件扩展名
fileExt?: string;
// 制度标题
title?: string;
// 发文字号
issueNumber?: string;
// 版本号
version?: string;
// 成文日期
documentDate?: string;
// 生效日期
effectiveDate?: string;
// 废止日期
abolishDate?: string;
// 适用业务范围
businessScope?: string;
// 关联制度
relatedDocuments?: string;
// 适用区域
region?: string;
// 备注
comments?: string;
// 上传时间
uploadTime?: string;
// 排序(数字越小越靠前)

View File

@@ -174,6 +174,8 @@
</template>
<template v-if="column.key === 'action'">
<a-space>
<a @click="openDocEdit(record)">编辑</a>
<a-divider type="vertical" />
<a-popconfirm
title="确定要删除此文档吗?"
@confirm="deleteDoc(record)"
@@ -197,6 +199,30 @@
:doc="selectedDoc"
/>
<a-modal
v-model:visible="showDocEdit"
title="编辑文档"
width="700px"
@ok="handleSaveDoc"
@cancel="closeDocEdit"
>
<a-form :model="docForm" layout="vertical">
<a-row :gutter="16">
<a-col :span="12"><a-form-item label="文件名称"><a-input v-model:value="docForm.fileName" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="制度标题"><a-input v-model:value="docForm.title" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="发文字号"><a-input v-model:value="docForm.issueNumber" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="版本号"><a-input v-model:value="docForm.version" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="成文日期"><a-date-picker v-model:value="docForm.documentDate" value-format="YYYY-MM-DD" style="width: 100%" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="生效日期"><a-date-picker v-model:value="docForm.effectiveDate" value-format="YYYY-MM-DD" style="width: 100%" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="废止日期"><a-date-picker v-model:value="docForm.abolishDate" value-format="YYYY-MM-DD" style="width: 100%" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="适用业务范围"><a-input v-model:value="docForm.businessScope" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="适用区域"><a-input v-model:value="docForm.region" /></a-form-item></a-col>
<a-col :span="24"><a-form-item label="关联制度"><a-input v-model:value="docForm.relatedDocuments" /></a-form-item></a-col>
<a-col :span="24"><a-form-item label="备注"><a-textarea v-model:value="docForm.comments" :rows="3" /></a-form-item></a-col>
</a-row>
</a-form>
</a-modal>
<!-- 新增/编辑目录弹窗 -->
<a-modal
v-model:visible="showDirModal"
@@ -258,7 +284,7 @@
} from '@/api/ai/aiCloudDoc';
import type { AiCloudDoc } from '@/api/ai/aiCloudDoc/model';
// 导入AiCloudFile API
import { pageAiCloudFile, removeAiCloudFile } from '@/api/ai/aiCloudFile';
import { pageAiCloudFile, removeAiCloudFile, updateAiCloudFile } from '@/api/ai/aiCloudFile';
import type { AiCloudFile } from '@/api/ai/aiCloudFile/model';
// 表格实例
@@ -276,6 +302,7 @@
const showDocManage = ref(false); // 是否显示文档管理弹窗
const showImport = ref(false); // 是否显示导入弹窗
const showDirModal = ref(false); // 是否显示目录弹窗(新增/编辑)
const showDocEdit = ref(false);
// 加载状态
const loading = ref(true);
@@ -305,6 +332,31 @@
sortNumber: 0
});
const docForm = ref<AiCloudFile>({
id: undefined,
docId: undefined,
fileName: undefined,
fileSize: undefined,
fileType: undefined,
workspaceId: undefined,
fileId: undefined,
fileUrl: undefined,
fileExt: undefined,
title: undefined,
issueNumber: undefined,
version: undefined,
documentDate: undefined,
effectiveDate: undefined,
abolishDate: undefined,
businessScope: undefined,
relatedDocuments: undefined,
region: undefined,
comments: undefined,
uploadTime: undefined,
sortNumber: 0,
status: 0
});
// 计算目录弹窗标题
const dirModalTitle = computed(() => {
const mode = isEditingDir.value ? '编辑' : '新增';
@@ -738,6 +790,26 @@
}
};
const openDocEdit = (record: AiCloudFile) => {
docForm.value = { ...record };
showDocEdit.value = true;
};
const closeDocEdit = () => {
showDocEdit.value = false;
};
const handleSaveDoc = async () => {
try {
await updateAiCloudFile(docForm.value);
message.success('修改成功');
closeDocEdit();
await loadCloudFiles();
} catch (error: any) {
message.error(error.message || '修改失败');
}
};
// 打开导入弹窗
const openImport = () => {
if (selectedKeys.value.length === 0) {

View File

@@ -33,26 +33,25 @@
<a-tag v-if="record.status === 0" color="green">显示</a-tag>
<a-tag v-if="record.status === 1" color="red">隐藏</a-tag>
</template>
<template v-if="column.key === 'action'">
<a-space>
<a @click="openEdit(record)">修改</a>
<a-divider type="vertical" />
<!-- 文档管理按钮 -->
<a
:class="{ 'disabled-text': !record.kbId }"
:style="!record.kbId ? 'cursor: not-allowed; color: #999' : ''"
@click="record.kbId && openDocManage(record)"
>文档管理</a>
<a-divider type="vertical"/>
<a-popconfirm
title="确定要删除此记录吗?"
@confirm="remove(record)"
v-if="false"
>
<a class="ele-text-danger">删除</a>
</a-popconfirm>
</a-space>
</template>
<template v-if="column.key === 'action'">
<a-space>
<a @click="openEdit(record)">修改</a>
<a-divider type="vertical" />
<a
:class="{ 'disabled-text': !record.kbId }"
:style="!record.kbId ? 'cursor: not-allowed; color: #999' : ''"
@click="record.kbId && openDocManage(record)"
>文档管理</a>
<a-divider type="vertical" />
<a-popconfirm
title="确定要删除此记录吗?"
@confirm="remove(record)"
v-if="false"
>
<a class="ele-text-danger">删除</a>
</a-popconfirm>
</a-space>
</template>
</template>
</ele-pro-table>
</a-card>
@@ -148,6 +147,8 @@
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<a-space>
<a @click="openDocEdit(record)">编辑</a>
<a-divider type="vertical" />
<a-popconfirm
title="确定要删除此文档吗?"
@confirm="deleteDoc(record)"
@@ -171,6 +172,30 @@
:doc="selectedDoc"
/>
<a-modal
v-model:visible="showDocEdit"
title="编辑文档"
width="700px"
@ok="handleSaveDoc"
@cancel="closeDocEdit"
>
<a-form :model="docForm" layout="vertical">
<a-row :gutter="16">
<a-col :span="12"><a-form-item label="文件名称"><a-input v-model:value="docForm.fileName" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="制度标题"><a-input v-model:value="docForm.title" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="发文字号"><a-input v-model:value="docForm.issueNumber" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="版本号"><a-input v-model:value="docForm.version" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="成文日期"><a-date-picker v-model:value="docForm.documentDate" value-format="YYYY-MM-DD" style="width: 100%" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="生效日期"><a-date-picker v-model:value="docForm.effectiveDate" value-format="YYYY-MM-DD" style="width: 100%" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="废止日期"><a-date-picker v-model:value="docForm.abolishDate" value-format="YYYY-MM-DD" style="width: 100%" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="适用业务范围"><a-input v-model:value="docForm.businessScope" /></a-form-item></a-col>
<a-col :span="12"><a-form-item label="适用区域"><a-input v-model:value="docForm.region" /></a-form-item></a-col>
<a-col :span="24"><a-form-item label="关联制度"><a-input v-model:value="docForm.relatedDocuments" /></a-form-item></a-col>
<a-col :span="24"><a-form-item label="备注"><a-textarea v-model:value="docForm.comments" :rows="3" /></a-form-item></a-col>
</a-row>
</a-form>
</a-modal>
<!-- 新增/编辑目录弹窗 -->
<a-modal
v-model:visible="showDirModal"
@@ -214,7 +239,7 @@
import Import2 from '@/views/oa/oaCompany/components/Import2.vue';
import { listAiCloudDoc, addAiCloudDoc, updateAiCloudDoc, removeAiCloudDoc } from '@/api/ai/aiCloudDoc';
import type { AiCloudDoc } from '@/api/ai/aiCloudDoc/model';
import { listAiCloudFile, removeAiCloudFile } from '@/api/ai/aiCloudFile';
import { listAiCloudFile, removeAiCloudFile, updateAiCloudFile } from '@/api/ai/aiCloudFile';
import type { AiCloudFile } from '@/api/ai/aiCloudFile/model';
// 表格实例
@@ -235,6 +260,7 @@
const showDocManage = ref(false); // 是否显示文档管理弹窗
const showImport = ref(false); // 是否显示导入弹窗
const showDirModal = ref(false); // 是否显示目录弹窗(新增/编辑)
const showDocEdit = ref(false);
// 文档管理相关变量
const currentKbId = ref(''); // 当前知识库ID
@@ -259,6 +285,31 @@
sortNumber: 0
});
const docForm = ref<AiCloudFile>({
id: undefined,
docId: undefined,
fileName: undefined,
fileSize: undefined,
fileType: undefined,
workspaceId: undefined,
fileId: undefined,
fileUrl: undefined,
fileExt: undefined,
title: undefined,
issueNumber: undefined,
version: undefined,
documentDate: undefined,
effectiveDate: undefined,
abolishDate: undefined,
businessScope: undefined,
relatedDocuments: undefined,
region: undefined,
comments: undefined,
uploadTime: undefined,
sortNumber: 0,
status: 0
});
// 计算目录弹窗标题
const dirModalTitle = computed(() => {
const mode = isEditingDir.value ? '编辑' : '新增';
@@ -664,6 +715,26 @@
}
};
const openDocEdit = (record: AiCloudFile) => {
docForm.value = { ...record };
showDocEdit.value = true;
};
const closeDocEdit = () => {
showDocEdit.value = false;
};
const handleSaveDoc = async () => {
try {
await updateAiCloudFile(docForm.value);
message.success('修改成功');
closeDocEdit();
await loadCloudFiles();
} catch (error: any) {
message.error(error.message || '修改失败');
}
};
// 打开导入弹窗
const openImport = () => {
if (selectedKeys.value.length === 0) {