From 8a0334a020e6413e93fbc672861e78fb0f53ef1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=AB=E5=9C=B0=E5=83=A7?= <357099073@qq.com> Date: Thu, 10 Sep 2026 00:44:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=87=E6=A1=A3=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/api/oaDocument.js | 188 ++ .../apps/oa/document/documentgraph/index.vue | 666 +++++++ .../components/docDetailDrawer.vue | 563 ++++++ .../documentlibrary/components/editDialog.vue | 162 ++ .../documentlibrary/components/index.vue | 0 .../components/uploadDialog.vue | 285 +++ .../oa/document/documentlibrary/index.vue | 1062 +++++++++++ .../src/views/apps/oa/document/utils/index.js | 143 ++ go/controllers/backend_oa_document.go | 657 +++++++ go/controllers/platform_tenant_user.go | 9 + go/docs/sql/yz_oa_document.sql | 107 ++ go/models/init.go | 5 + go/models/oa_document.go | 275 +++ go/models/system_tenant_user.go | 19 + go/routers/backend/backend.go | 20 + go/services/oa_document.go | 1610 +++++++++++++++++ .../tenants/components/TenantUsersTab.vue | 135 +- .../tenants/components/adduser.vue | 56 +- 18 files changed, 5958 insertions(+), 4 deletions(-) create mode 100644 backend/src/api/oaDocument.js create mode 100644 backend/src/views/apps/oa/document/documentlibrary/components/docDetailDrawer.vue create mode 100644 backend/src/views/apps/oa/document/documentlibrary/components/editDialog.vue delete mode 100644 backend/src/views/apps/oa/document/documentlibrary/components/index.vue create mode 100644 backend/src/views/apps/oa/document/documentlibrary/components/uploadDialog.vue create mode 100644 backend/src/views/apps/oa/document/documentlibrary/index.vue create mode 100644 backend/src/views/apps/oa/document/utils/index.js create mode 100644 go/controllers/backend_oa_document.go create mode 100644 go/docs/sql/yz_oa_document.sql create mode 100644 go/models/oa_document.go create mode 100644 go/services/oa_document.go diff --git a/backend/src/api/oaDocument.js b/backend/src/api/oaDocument.js new file mode 100644 index 0000000..e3affe0 --- /dev/null +++ b/backend/src/api/oaDocument.js @@ -0,0 +1,188 @@ +import request from "@/utils/request"; + +// OA 文档管理(文档库 / 文档图谱) +// 后端统一返回 { code, msg, data },响应拦截器只剥离外层,调用方需自行取 res.data + +// ---------------- 分类 ---------------- + +// 分类树(每个节点带 doc_count) +export function getDocCategories() { + return request({ + url: "/backend/oa/document/categories", + method: "get" + }); +} + +export function createDocCategory(data) { + return request({ + url: "/backend/oa/document/categories", + method: "post", + data + }); +} + +export function updateDocCategory(id, data) { + return request({ + url: `/backend/oa/document/categories/${id}`, + method: "post", + data + }); +} + +export function deleteDocCategory(id) { + return request({ + url: `/backend/oa/document/categories/${id}`, + method: "delete" + }); +} + +// ---------------- 文档 ---------------- + +export function getDocList(params) { + return request({ + url: "/backend/oa/document/list", + method: "get", + params + }); +} + +export function getDocStats() { + return request({ + url: "/backend/oa/document/stats", + method: "get" + }); +} + +// 详情(后端会累加查看次数) +export function getDocDetail(id) { + return request({ + url: `/backend/oa/document/detail/${id}`, + method: "get" + }); +} + +export function createDoc(data) { + return request({ + url: "/backend/oa/document/create", + method: "post", + data + }); +} + +export function updateDoc(id, data) { + return request({ + url: `/backend/oa/document/update/${id}`, + method: "post", + data + }); +} + +export function deleteDoc(id) { + return request({ + url: `/backend/oa/document/delete/${id}`, + method: "delete" + }); +} + +export function batchDeleteDocs(ids) { + return request({ + url: "/backend/oa/document/delete-batch", + method: "post", + data: { ids } + }); +} + +export function moveDocs(ids, categoryId) { + return request({ + url: "/backend/oa/document/move", + method: "post", + data: { ids, category_id: categoryId } + }); +} + +// 收藏 / 取消收藏 +export function toggleDocStar(id) { + return request({ + url: `/backend/oa/document/star/${id}`, + method: "post" + }); +} + +// 记录下载次数并取回下载地址 +export function recordDocDownload(id) { + return request({ + url: `/backend/oa/document/download/${id}`, + method: "post" + }); +} + +// ---------------- 文档关联 ---------------- + +export function getDocLinks(params) { + return request({ + url: "/backend/oa/document/links", + method: "get", + params + }); +} + +export function createDocLink(data) { + return request({ + url: "/backend/oa/document/links", + method: "post", + data + }); +} + +export function deleteDocLink(id) { + return request({ + url: `/backend/oa/document/links/${id}`, + method: "delete" + }); +} + +// ---------------- 文档私密共享 ---------------- + +// 租户用户列表(私密文档共享选人) +export function getDocMembers(params) { + return request({ + url: "/backend/oa/document/members", + method: "get", + params + }); +} + +// 读取文档共享清单 +export function getDocShares(id) { + return request({ + url: `/backend/oa/document/shares/${id}`, + method: "get" + }); +} + +// 全量设置文档共享(shares: [{ share_type, target_id }]) +export function setDocShares(id, shares) { + return request({ + url: `/backend/oa/document/shares/${id}`, + method: "post", + data: { shares } + }); +} + +// 删除单条共享 +export function removeDocShare(sid) { + return request({ + url: `/backend/oa/document/share/${sid}`, + method: "delete" + }); +} + +// ---------------- 文档图谱 ---------------- + +export function getDocGraph(params) { + return request({ + url: "/backend/oa/document/graph", + method: "get", + params + }); +} diff --git a/backend/src/views/apps/oa/document/documentgraph/index.vue b/backend/src/views/apps/oa/document/documentgraph/index.vue index e69de29..c4b422c 100644 --- a/backend/src/views/apps/oa/document/documentgraph/index.vue +++ b/backend/src/views/apps/oa/document/documentgraph/index.vue @@ -0,0 +1,666 @@ + + + + + diff --git a/backend/src/views/apps/oa/document/documentlibrary/components/docDetailDrawer.vue b/backend/src/views/apps/oa/document/documentlibrary/components/docDetailDrawer.vue new file mode 100644 index 0000000..b0beb68 --- /dev/null +++ b/backend/src/views/apps/oa/document/documentlibrary/components/docDetailDrawer.vue @@ -0,0 +1,563 @@ + + + + + diff --git a/backend/src/views/apps/oa/document/documentlibrary/components/editDialog.vue b/backend/src/views/apps/oa/document/documentlibrary/components/editDialog.vue new file mode 100644 index 0000000..146ec45 --- /dev/null +++ b/backend/src/views/apps/oa/document/documentlibrary/components/editDialog.vue @@ -0,0 +1,162 @@ + + + diff --git a/backend/src/views/apps/oa/document/documentlibrary/components/index.vue b/backend/src/views/apps/oa/document/documentlibrary/components/index.vue deleted file mode 100644 index e69de29..0000000 diff --git a/backend/src/views/apps/oa/document/documentlibrary/components/uploadDialog.vue b/backend/src/views/apps/oa/document/documentlibrary/components/uploadDialog.vue new file mode 100644 index 0000000..bb6c680 --- /dev/null +++ b/backend/src/views/apps/oa/document/documentlibrary/components/uploadDialog.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/backend/src/views/apps/oa/document/documentlibrary/index.vue b/backend/src/views/apps/oa/document/documentlibrary/index.vue new file mode 100644 index 0000000..882b9a0 --- /dev/null +++ b/backend/src/views/apps/oa/document/documentlibrary/index.vue @@ -0,0 +1,1062 @@ +