feat(flow): 流程图入口/失败提示/指派预览/线级停发闭环/配置分层/选人宿主
build / build (push) Successful in 1m28s

- 修复办理页「查看流程图」双 hash URL:改 router.resolve + toAppHashUrl 单 hash
- 修复管理端办件抽屉「查看大图」域名尾点(origin + BASE_URL("./") 拼接)
- 新增 flowError 口径层与办理页内联失败条,审批失败提示可读、不泄漏堆栈
- 审批节点抽屉新增「预览候选人」真入口 + AssigneePreviewModal(只读,不写回定义)
- 线级停发/恢复失败改为单条错误面,避免同错双 toast
- 审批抽屉核心区/高级设置分层;插入菜单常用/高级分组
- 新增 FlowAssignEmbed 选人 iframe 父侧宿主(origin/source/信封/context 四校验)
- 修复 /diagram、/assign-preview 面包屑误显示「流程编辑器」
This commit is contained in:
chenxing
2026-10-28 03:18:54 +08:00
parent f2841e2740
commit c93313cdb7
26 changed files with 1602 additions and 36 deletions
+11 -2
View File
@@ -2,10 +2,14 @@
// 办件详情抽屉(管理面列表页复用):非 iframe,内部直接复用 InstanceBody(full 口径)。
// 宽度与 Notice 审批记录抽屉对齐 740px;关闭后清空状态,下次打开重新加载。
import { ref, computed, watch } from "vue";
import { useRouter } from "vue-router";
import { Drawer, Tag } from "view-ui-plus";
import { flowApi, INSTANCE_STATUS, INSTANCE_STATUS_COLOR } from "@/api/module/flow";
import InstanceBody from "@/views/flow/components/InstanceBody.vue";
import config from "@/assets/config/host.config";
import { toAppHashUrl } from "@/utils/appUrl";
const router = useRouter();
const props = defineProps<{
modelValue: boolean;
@@ -49,8 +53,13 @@ const diagramSrc = computed(() => {
function openDiagram() {
if (!detail.value?.instanceId) return;
const url = `${window.location.origin}${import.meta.env.BASE_URL}#/diagram?instanceId=${detail.value.instanceId}&mode=${mode.value}`;
window.open(url, "_blank");
// 原写法 `${origin}${BASE_URL}#/diagram?…` 里 BASE_URL 构建期是 "./",拼出
// `https://host./#/…`(域名尾点);改为按当前真实地址丢 hash 再接目标 hash
const href = router.resolve({
path: "/diagram",
query: { instanceId: String(detail.value.instanceId), mode: mode.value },
}).href;
window.open(toAppHashUrl(href), "_blank");
}
function statusName(s: number) {