diff --git a/src/views/notice/NoticeApproval.vue b/src/views/notice/NoticeApproval.vue
index c72c8b8..83587e1 100644
--- a/src/views/notice/NoticeApproval.vue
+++ b/src/views/notice/NoticeApproval.vue
@@ -43,6 +43,9 @@
{{ instStatusText(row.status) }}
+
+
+
@@ -66,6 +69,13 @@
+
+
+
+
+
+
+
@@ -77,6 +87,7 @@ import approvalApi, {
type ApprovalInstance,
type ApprovalTodoTask,
} from "@/api/module/approval";
+import { noticeApi } from "@/api/module/notice";
/**
* 我的待审核(应用内审批,第三步):待办列表 + 办件视角,通过/驳回走本应用后端代理
@@ -119,8 +130,28 @@ const instCols = [
{ title: "提交人", key: "submitterName", width: 100 },
{ title: "提交时间", key: "submitTime", width: 170, render: fmtTime },
{ title: "办结时间", key: "finishTime", width: 170, render: fmtTime },
+ { title: "操作", slot: "instAction", width: 100 },
];
+/* 审批记录 Drawer(嵌入页 iframe):pageUrl 含 10 分钟短时 token,每次打开现取,
+ * 不缓存、不落 storage(既有安全纪律);业务错(尚未进入流程/无权限 403)原文提示,不打断列表 */
+const embedVisible = ref(false);
+const embedPageUrl = ref("");
+
+async function openEmbed(row: ApprovalInstance) {
+ try {
+ const res = await noticeApi.flowEmbed(Number(row.bizId)).send();
+ embedPageUrl.value = res?.pageUrl || "";
+ if (!embedPageUrl.value) {
+ Message.error("审批记录地址获取失败");
+ return;
+ }
+ embedVisible.value = true;
+ } catch (e: any) {
+ Message.error(e?.message || "审批记录打开失败");
+ }
+}
+
function fmtTime(h: any, p: any) {
return h(
"span",
@@ -229,4 +260,14 @@ onMounted(load);
.filter-bar {
margin-bottom: 12px;
}
+/* 审批记录 Drawer:iframe 撑满,嵌入页内部自己滚动 */
+.embed-frame-wrap {
+ height: 100%;
+}
+.embed-frame-wrap iframe {
+ display: block;
+ width: 100%;
+ height: 100%;
+ border: 0;
+}