@rytass/bpm-core-react 0.7.3 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/dist/chunks/{compose-Dmp3vP-j.js → compose-B1quUa7y.js} +2 -2
- package/dist/chunks/{compose-Dmp3vP-j.js.map → compose-B1quUa7y.js.map} +1 -1
- package/dist/chunks/{compose-DYmvSyVR.cjs → compose-B6nevcwq.cjs} +2 -2
- package/dist/chunks/{compose-DYmvSyVR.cjs.map → compose-B6nevcwq.cjs.map} +1 -1
- package/dist/chunks/{designer-yYAdrQDt.js → designer-BLfz5Dk9.js} +2 -1
- package/dist/chunks/designer-BLfz5Dk9.js.map +1 -0
- package/dist/chunks/{designer-CEw0v0sY.cjs → designer-DP002lt7.cjs} +2 -2
- package/dist/chunks/designer-DP002lt7.cjs.map +1 -0
- package/dist/chunks/detail-KEmfpCtt.cjs +2 -0
- package/dist/chunks/{detail-Cci9tnoC.cjs.map → detail-KEmfpCtt.cjs.map} +1 -1
- package/dist/chunks/{detail-kyolfdBu.js → detail-fg8MTwuH.js} +3 -2
- package/dist/chunks/{detail-kyolfdBu.js.map → detail-fg8MTwuH.js.map} +1 -1
- package/dist/chunks/{orgs-oYd1GaLX.js → orgs-CrNxqlwp.js} +496 -479
- package/dist/chunks/orgs-CrNxqlwp.js.map +1 -0
- package/dist/chunks/orgs-iNJ0QEcK.cjs +2 -0
- package/dist/chunks/orgs-iNJ0QEcK.cjs.map +1 -0
- package/dist/orgs.css +1 -1
- package/dist/pages/admin/orgs/index.cjs +1 -1
- package/dist/pages/admin/orgs/index.js +1 -1
- package/dist/pages/instances/detail/index.cjs +1 -1
- package/dist/pages/instances/detail/index.js +1 -1
- package/dist/pages/templates/compose/index.cjs +1 -1
- package/dist/pages/templates/compose/index.js +1 -1
- package/dist/pages/templates/designer/index.cjs +1 -1
- package/dist/pages/templates/designer/index.js +1 -1
- package/dist/style.css +1 -0
- package/dist/views/admin/index.cjs +1 -1
- package/dist/views/admin/index.js +1 -1
- package/dist/views/admin/orgs/index.cjs +1 -1
- package/dist/views/admin/orgs/index.js +1 -1
- package/dist/views/instances/detail/index.cjs +1 -1
- package/dist/views/instances/detail/index.js +1 -1
- package/dist/views/templates/compose/index.cjs +1 -1
- package/dist/views/templates/compose/index.js +1 -1
- package/dist/views/templates/designer/index.cjs +1 -1
- package/dist/views/templates/designer/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/designer-CEw0v0sY.cjs.map +0 -1
- package/dist/chunks/designer-yYAdrQDt.js.map +0 -1
- package/dist/chunks/detail-Cci9tnoC.cjs +0 -2
- package/dist/chunks/orgs-BcaGmB_x.cjs +0 -2
- package/dist/chunks/orgs-BcaGmB_x.cjs.map +0 -1
- package/dist/chunks/orgs-oYd1GaLX.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";require('../style.css');require('../detail.css');const e=require("./chunk-CMqjfN_6.cjs"),t=require("./auth-provider-4BeCw7cI.cjs"),n=require("./format-date-time-XxBzF0F5.cjs"),r=require("./bpm-form-field-Bc6k4ZEO.cjs"),i=require("./FormRendererView-BwVsH2eX.cjs");;/* empty css */let a=require("react"),o=require("@mezzanine-ui/react"),s=require("react/jsx-runtime"),c=require("@rytass/bpm-core-client/workflow"),l=require("@mezzanine-ui/react/ContentHeader");l=e.t(l,1);let u=require("@mezzanine-ui/icons"),d=require("@rytass/bpm-core-client/form"),f=require("@xyflow/react"),p=require("dagre");p=e.t(p,1);let m=require("react-pdf"),h=require("@mezzanine-ui/core/stepper");var g={root:`bpm_root_ehm7w`,toolbar:`bpm_toolbar_R-tis`,pageControls:`bpm_pageControls_jM-rC`,zoomControls:`bpm_zoomControls_7RAbJ`,counter:`bpm_counter_ILUsD`,viewport:`bpm_viewport_DQXms`,page:`bpm_page_Cv5Rg`,state:`bpm_state_bpgp3`},ee=760,_=920,te=320,v=32,y=.75,b=1.75,ne=.25;function re({filename:e,fileUrl:t,onDownload:n}){let r=(0,a.useRef)(null),[i,c]=(0,a.useState)(null),[l,d]=(0,a.useState)(1),[f,p]=(0,a.useState)(1),[h,re]=(0,a.useState)(ee);(0,a.useEffect)(()=>{let e=r.current;if(!e||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e=>{let t=e[0]?.contentRect.width;t&&re(t)});return t.observe(e),()=>t.disconnect()},[]),(0,a.useEffect)(()=>{c(null),d(1),p(1)},[t]);let S=(0,a.useMemo)(()=>{let e=Math.max(te,h-v);return Math.round(Math.min(_,e)*f)},[f,h]),ie=(0,a.useCallback)(e=>{c(e.numPages),d(1)},[]),C=l>1,ae=i!==null&&l<i,w=f>y,T=f<b,E=i===null?`第 ${l} 頁`:`第 ${l} / ${i} 頁`,oe=`${Math.round(f*100)}%`;return(0,s.jsxs)(`section`,{"aria-label":`${e} PDF 預覽`,className:g.root,children:[(0,s.jsxs)(`div`,{className:g.toolbar,children:[(0,s.jsxs)(`div`,{className:g.pageControls,"aria-label":`頁面切換`,children:[(0,s.jsx)(o.Button,{"aria-label":`上一頁`,disabled:!C,icon:u.ChevronLeftIcon,onClick:()=>{d(e=>Math.max(1,e-1))},size:`minor`,variant:`base-secondary`}),(0,s.jsx)(o.Typography,{className:g.counter,component:`span`,variant:`body`,children:E}),(0,s.jsx)(o.Button,{"aria-label":`下一頁`,disabled:!ae,icon:u.ChevronRightIcon,onClick:()=>{d(e=>i===null?e:Math.min(i,e+1))},size:`minor`,variant:`base-secondary`})]}),(0,s.jsxs)(`div`,{className:g.zoomControls,"aria-label":`縮放`,children:[(0,s.jsx)(o.Button,{"aria-label":`縮小`,disabled:!w,icon:u.ZoomOutIcon,onClick:()=>{p(e=>Math.max(y,e-ne))},size:`minor`,variant:`base-secondary`}),(0,s.jsx)(o.Typography,{className:g.counter,component:`span`,variant:`body`,children:oe}),(0,s.jsx)(o.Button,{"aria-label":`放大`,disabled:!T,icon:u.ZoomInIcon,onClick:()=>{p(e=>Math.min(b,e+ne))},size:`minor`,variant:`base-secondary`})]}),n?(0,s.jsx)(o.Button,{icon:u.DownloadIcon,iconType:`leading`,onClick:n,size:`minor`,variant:`base-primary`,children:`下載`}):null]}),(0,s.jsx)(`div`,{className:g.viewport,ref:r,children:(0,s.jsx)(m.Document,{error:(0,s.jsx)(x,{message:`PDF 無法載入。`}),file:t,loading:(0,s.jsx)(x,{message:`正在載入 PDF...`}),noData:(0,s.jsx)(x,{message:`沒有可預覽的 PDF。`}),onLoadSuccess:ie,children:(0,s.jsx)(m.Page,{className:g.page,loading:(0,s.jsx)(x,{message:`正在載入頁面...`}),pageNumber:l,renderAnnotationLayer:!0,renderTextLayer:!0,width:S})})})]})}function x({message:e}){return(0,s.jsx)(`div`,{className:g.state,children:(0,s.jsx)(o.Typography,{color:`text-neutral`,variant:`body`,children:e})})}function S(e){let t=C(e,`from`),n=C(e,`to`),r=C(e,`reason`);return!t||!n||!r?null:{from:t,reason:r,ruleId:C(e,`ruleId`),to:n}}function ie(e){try{let t=JSON.parse(e);return Array.isArray(t)?t.map(e=>E(e)?S(e):null).filter(e=>e!==null):[]}catch{return[]}}function C(e,t){let n=e[t];return typeof n==`string`?n:null}function ae(e,t){let n=e[t];return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}function w(e,t){let n=e[t];return typeof n==`number`?n:null}function T(e){return typeof e==`string`&&e.trim().length>0}function E(e){return typeof e==`object`&&!!e}function oe(e){return e.status===`PENDING`||e.status===`IN_PROGRESS`}function D(e){return e instanceof Error?e.message:`發生未知錯誤`}function se(e){return!Number.isFinite(e)||e<=0?`-`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function O(e){return e.length>16?`${e.slice(0,12)}...`:e}function ce(e){return e===`APPROVED`?`已同意`:e===`CANCELLED`?`已取消`:e===`DRAFT`?`草稿`:e===`EXPIRED`?`已逾期`:e===`REJECTED`?`已拒絕`:e===`RETURNED`?`已退回`:e===`RUNNING`?`進行中`:e}function le(e){return e===`PENDING`?`待處理`:e===`IN_PROGRESS`?`處理中`:e===`COMPLETED`?`已完成`:e===`CANCELLED`?`已取消`:e===`TRANSFERRED`?`已轉派`:e}function ue(e){return e===`APPROVED`?`同意`:e===`REJECTED`?`拒絕`:e===`RETURNED`?`退回`:e===`TRANSFERRED`?`轉派`:e}function k(e){return e===`startEvent`?`開始`:e===`endEvent`?`完成`:e===`userTask`?`簽核節點`:e===`serviceTask`?`知會節點`:e===`exclusiveGateway`?`條件分流`:`平行處理`}function A(e,t){return t?.nodes.find(t=>t.id===e)?.data.label??e}function j(e,t){if(!e)return`-`;let n=t.get(e);return n?`${n.name}(${n.email})`:e}function M(e,t=new Map){let n=ie(e.delegationChainJson);if(!e.assigneeMemberId)return e.candidateMemberIds.length?`候選 ${e.candidateMemberIds.map(e=>j(e,t)).join(`、`)}`:`未指定`;let r=j(e.assigneeMemberId,t),i=j(e.originalAssigneeMemberId,t);return n.length===0||e.originalAssigneeMemberId===e.assigneeMemberId?r:`${r}(原:${i})`}function de(e,t){return t?e.assigneeMemberId===t||e.candidateMemberIds.includes(t):!1}function fe(e,t){if(t.type!==`userTask`||!t.data.returnBehavior.allowReturn)return[];if(t.data.returnBehavior.allowedTargets===`ANY`)return e.nodes.filter(e=>e.id!==t.id).map(e=>({id:e.id,name:`${e.data.label}(${k(e.type)})`}));let n=t.data.returnBehavior.allowedTargets===`INITIATOR`?e.nodes.find(e=>e.type===`startEvent`)?.id:e.edges.find(e=>e.target===t.id)?.source,r=e.nodes.find(e=>e.id===n);return r?[{id:r.id,name:`${r.data.label}(${k(r.type)})`}]:[]}function N(e){return{email:e.email,id:e.memberId,name:`${e.name} · ${e.email}`}}function pe(e){if(!E(e))return null;let t=e.email,n=e.id,r=e.name;return typeof n==`string`&&typeof r==`string`?{email:typeof t==`string`?t:null,id:n,name:r}:null}function me(e,t){let n=e.trim().toLocaleLowerCase();if(!n)return null;let r=t.filter(e=>[e.id,e.name,e.email??``].some(e=>e.toLocaleLowerCase().includes(n)));return r.length===1?r[0]??null:null}function P(e){return T(e)?{text:e,type:`text`}:null}function he(e){return T(e)?{text:e,type:`dangerText`}:null}function F(e,t,n,r){let i=t?n.get(t):null;return{email:i?.email??null,label:i?.name??r,memberId:t,prefix:e,type:`member`}}function I(e){return!!e}function ge(e){let t=e.findIndex(e=>e.id.startsWith(`pending-task-`)||e.id.startsWith(`future-node-`));return t===-1?e.length:t}function L(e){return e.eventType===`INSTANCE_STARTED`||e.eventType===`TASK_DECIDED`||e.eventType===`SLA_TRIGGERED`}function R(e){return e===`APPROVED`?`已同意`:e===`REJECTED`?`已拒絕`:e===`RETURNED`?`已退回`:e===`TRANSFERRED`?`已轉派`:`簽核已決議`}function _e(e,t){return e===`INSTANCE_STARTED`?`案件已發起`:e===`TOKEN_CREATED`?`流程路徑已建立`:e===`ENGINE_PROCESS_REQUESTED`?`流程引擎已處理`:e===`TOKEN_ADVANCED`?`流程已前進`:e===`TASK_CREATED`?`待簽任務已建立`:e===`TASK_DECIDED`?R(C(t,`action`)):e===`SLA_TRIGGERED`?`時限提醒已觸發`:e}function z(e){try{let t=JSON.parse(e.payloadJson);return E(t)?t:{}}catch{return{}}}function B(e,t){return e.eventType===`SLA_TRIGGERED`||C(t,`action`)===`REJECTED`||C(t,`instanceState`)===`REJECTED`}function V(e){return n.t(e)}function ve(e,t,n,r){if(e.eventType===`TASK_CREATED`){let e=C(t,`assigneeMemberId`),n=C(t,`originalAssigneeMemberId`);if(!e){let e=ae(t,`candidateMemberIds`);return e.length?`候選簽核人:${e.map(e=>j(e,r)).join(`、`)}`:null}let i=j(e,r),a=j(n,r);return n&&n!==e?`待簽人:${i}(原簽核人:${a})`:`待簽人:${i}`}if(e.eventType===`TASK_DECIDED`){let e=C(t,`action`),n=C(t,`comment`),i=e?`決議:${ue(e)}`:null,a=C(t,`transferToMemberId`);return e===`REJECTED`&&n?[i,`拒絕原因:${n}`].filter(T).join(` · `):e===`TRANSFERRED`?[i,`轉派給:${j(a,r)}`].filter(T).join(` · `):i}if(e.eventType===`TOKEN_ADVANCED`){let e=C(t,`action`);if(e)return`流程結果:${ue(e)}`;let r=w(t,`arrivedCount`),i=w(t,`requiredCount`);if(r!==null&&i!==null)return`等待匯合:${r}/${i}`;let a=C(t,`fromNodeId`),o=C(t,`toNodeId`);if(a&&o)return`由 ${A(a,n)} 前進至 ${A(o,n)}`}if(e.eventType===`ENGINE_PROCESS_REQUESTED`){let e=C(t,`state`);return e?`案件狀態:${ce(e)}`:null}return null}function ye(e,t,n,r,i,a,o){if(e.eventType!==`TASK_DECIDED`)return[P(ve(e,t,n,o))].filter(I);let s=e.taskId?r.get(e.taskId):null,c=C(t,`action`)??s?.action??null,l=C(t,`comment`)??s?.comment??null,u=C(t,`transferToMemberId`)??s?.transferToMemberId??null,d=C(t,`signatureId`)??s?.signatureId??null,f=d?i.get(d):null;return[P(c?`決議:${ue(c)}`:null),c===`REJECTED`?he(`拒絕原因:${l??`-`}`):null,c===`RETURNED`?P(`退回說明:${l??`-`}`):null,c===`TRANSFERRED`?P(`轉派給:${j(u,o)}`):null,c===`TRANSFERRED`?P(`轉派說明:${l??`-`}`):null,f?P(a?.valid?`簽章:已驗證(${O(f.signedPayloadHash)})`:`簽章:待檢查(${O(f.signedPayloadHash)})`):null].filter(I)}function be(e,t,n,r,i){if(e.type===`startEvent`||i.has(e.id))return!1;if(r===`REJECTED`)return!0;let a=we(e,t,n,r);return a.tone===`neutral`||a.tone===`waiting`}function H(e,t,n,r,i){if(r!==`RUNNING`&&r!==`REJECTED`)return[];let a=e.nodes.filter(e=>be(e,t,n,r,i)),o=U(e,a,t,n,i),s=new Map(e.nodes.map((e,t)=>[e.id,t]));return a.filter(e=>o.has(e.id)).sort((e,t)=>{let n=o.get(e.id)??0,r=o.get(t.id)??0;return n===r?e.position.x===t.position.x?e.position.y===t.position.y?(s.get(e.id)??0)-(s.get(t.id)??0):e.position.y-t.position.y:e.position.x-t.position.x:n-r})}function U(e,t,n,r,i){let a=new Set(t.map(e=>e.id)),o=e.edges.reduce((e,t)=>{let n=[...e.get(t.source)??[],t.target];return new Map(e).set(t.source,n)},new Map);return W(e,n,r,i).reduce((e,t)=>xe(e,G(t,o,a)),new Map)}function W(e,t,n,r){let i=n.filter(e=>e.status===`ACTIVE`||e.status===`WAITING`).map(e=>e.currentNodeId),a=t.filter(oe).map(e=>e.nodeId),o=e.nodes.filter(e=>r.has(e.id)).map(e=>e.id),s=[...new Set([...i,...a,...o])],c=e.nodes.filter(e=>e.type===`startEvent`).map(e=>e.id);return s.length>0?s:c}function G(e,t,n){return K([{distance:0,nodeId:e}],t,n)}function K(e,t,n,r=new Set,i=new Map){let[a,...o]=e;if(!a)return i;if(r.has(a.nodeId))return K(o,t,n,r,i);let s=new Set(r).add(a.nodeId),c=n.has(a.nodeId)?new Map(i).set(a.nodeId,Math.min(i.get(a.nodeId)??a.distance,a.distance)):i;return K([...o,...(t.get(a.nodeId)??[]).map(e=>({distance:a.distance+1,nodeId:e}))],t,n,s,c)}function xe(e,t){return[...t.entries()].reduce((e,[t,n])=>new Map(e).set(t,Math.min(e.get(t)??n,n)),e)}function Se(e){return e.type===`userTask`?`未來簽核:${e.data.label}`:e.type===`serviceTask`?`未來知會:${e.data.label}`:e.type===`exclusiveGateway`?`未來分流:${e.data.label}`:e.type===`parallelGateway`?`未來匯合:${e.data.label}`:e.type===`endEvent`?`流程完成:${e.data.label}`:`未來節點:${e.data.label}`}function Ce(e,t,n,r,i,a,o,s,c){let l=e.filter(L).map(e=>{let t=z(e),n=e.nodeId?A(e.nodeId,r):null;return{descriptionParts:[P(n?`節點:${n}`:`節點:全流程`),F(`操作者`,e.actorMemberId,a,`系統`),P(`時間:${V(e.createdAt)}`),...ye(e,t,r,o,s,c,a)].filter(I),error:B(e,t),id:e.id,title:_e(e.eventType,t)}}),u=t.filter(oe).map(e=>({descriptionParts:[P(`節點:${A(e.nodeId,r)}`),F(`處理者`,e.assigneeMemberId,a,`未指定`),P(`建立時間:${V(e.createdAt)}`)].filter(I),error:!1,id:`pending-task-${e.id}`,title:e.status===`IN_PROGRESS`?`簽核處理中`:`等待簽核處理`})),d=new Set([...e.filter(L).map(e=>e.nodeId),...t.map(e=>e.nodeId)].filter(T)),f=r?H(r,t,n,i,d).map(e=>({descriptionParts:[P(`${k(e.type)} · 尚未抵達`)].filter(I),error:!1,forcePending:!0,id:`future-node-${e.id}`,title:Se(e)})):[];return[...l,...u,...f]}function we(e,t,n,r){let i=t.filter(t=>t.nodeId===e.id),a=i.find(e=>e.status===`PENDING`||e.status===`IN_PROGRESS`),o=i.find(e=>e.status===`CANCELLED`),s=i.find(e=>e.status===`COMPLETED`),c=n.filter(t=>t.currentNodeId===e.id),l=c.find(e=>e.status===`ACTIVE`),u=c.find(e=>e.status===`WAITING`);return a?{secondaryLabel:`處理者 ${M(a)}`,statusLabel:`待處理`,tone:`current`}:o?{secondaryLabel:`已取消 ${M(o)}`,statusLabel:`已取消`,tone:`cancelled`}:s?{secondaryLabel:`已完成 ${M(s)}`,statusLabel:`已完成`,tone:`completed`}:l?{secondaryLabel:`token ${l.id}`,statusLabel:`執行中`,tone:`current`}:u?{secondaryLabel:`token ${u.id}`,statusLabel:`等待前置`,tone:`waiting`}:e.type===`startEvent`?{secondaryLabel:`流程已發起`,statusLabel:`已發起`,tone:`completed`}:e.type===`endEvent`&&r!==`RUNNING`?{secondaryLabel:r,statusLabel:r===`REJECTED`?`已拒絕`:`已完成`,tone:r===`REJECTED`?`cancelled`:`completed`}:{secondaryLabel:k(e.type),statusLabel:`未抵達`,tone:`neutral`}}async function q({activityLogs:e,adhocDirectives:t=[],tasks:n}){let r=[...new Set([...e.map(e=>e.actorMemberId),...n.map(e=>e.assigneeMemberId),...n.map(e=>e.originalAssigneeMemberId),...n.flatMap(e=>e.candidateMemberIds),...n.flatMap(e=>ie(e.delegationChainJson).flatMap(e=>[e.from,e.to])),...t.flatMap(e=>[e.createdByMemberId,...J(e.targetValueJson)])].filter(T))];try{return await(0,c.resolveMemberProfiles)(r)}catch{return[]}}function J(e){try{return(JSON.parse(e).memberIds??[]).filter(e=>typeof e==`string`)}catch{return[]}}async function Te(e){return(await Promise.all(e.map(e=>(0,c.listTaskDecisions)(e.id)))).flat()}function Ee(e){return e.reduce((e,t)=>{let n=e.get(t.taskId),r=!n||new Date(t.decidedAt).getTime()>new Date(n.decidedAt).getTime()?t:n;return new Map(e).set(t.taskId,r)},new Map)}var De={display:`grid`,gap:16},Y={display:`flex`,flexWrap:`wrap`,gap:8};function Oe({canResubmitInstance:e,deciding:t,error:n,instance:r,loading:a,onResubmitFormChange:c,onResubmitInstance:l,onUploadAttachment:d,resubmitFormData:f,resubmitFormErrors:p}){return(0,s.jsxs)(`div`,{style:De,children:[n?(0,s.jsx)(o.Typography,{color:`text-error`,variant:`body`,children:n}):null,a?(0,s.jsx)(o.Typography,{color:`text-neutral`,variant:`body`,children:`載入中...`}):null,r?.formDefinitionSnapshot.schema&&r.formDefinitionSnapshot.uiSchema?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.t,{errors:p,onChange:e=>{c(e)},onUploadAttachment:e?d:void 0,readonly:!e,schema:r.formDefinitionSnapshot.schema,uiSchema:r.formDefinitionSnapshot.uiSchema,value:e?f:r.formData}),e?(0,s.jsx)(`div`,{style:Y,children:(0,s.jsx)(o.Button,{disabled:t,icon:u.RefreshCcwIcon,iconType:`leading`,onClick:l,variant:`base-primary`,children:`重新送出`})}):null]}):(0,s.jsx)(o.Typography,{color:`text-neutral`,variant:`body`,children:`此案件沒有可顯示的表單快照。`})]})}var ke={display:`grid`,gap:16};function Ae({attachments:e,onDownload:t,onPreview:r}){let i=(0,a.useMemo)(()=>e.map(e=>({attachment:e,createdAt:e.createdAt,filename:e.filename,id:e.id,key:e.id,mimeType:e.mimeType,sizeLabel:se(Number(e.sizeBytes))})),[e]),c=(0,a.useMemo)(()=>[{dataIndex:`filename`,key:`filename`,title:`檔名`,width:260},{dataIndex:`mimeType`,key:`mimeType`,title:`類型`,width:180},{dataIndex:`sizeLabel`,key:`sizeLabel`,title:`大小`,width:120},{key:`createdAt`,render:e=>(0,s.jsx)(o.Typography,{component:`span`,variant:`body`,children:n.t(e.createdAt)}),title:`上傳時間`,width:220}],[]),l=(0,a.useMemo)(()=>({render:e=>[...e.mimeType===`application/pdf`?[{icon:u.FileSearchIcon,iconType:`leading`,name:`預覽`,onClick:()=>{r(e.attachment)}}]:[],{icon:u.DownloadIcon,iconType:`leading`,name:`下載`,onClick:()=>{t(e.attachment)}}],variant:`base-secondary`,width:160}),[t,r]);return(0,s.jsxs)(`div`,{style:ke,children:[(0,s.jsx)(o.Typography,{component:`h2`,variant:`h3`,children:`附件`}),i.length>0?(0,s.jsx)(o.Table,{actions:l,columns:c,dataSource:i,fullWidth:!0}):(0,s.jsx)(o.Typography,{color:`text-neutral`,variant:`body`,children:`此案件沒有附件。`})]})}var je={display:`grid`,gap:12,width:`100%`},Me={minWidth:`100%`,width:`100%`},X={display:`grid`,gap:12,width:`100%`},Ne={marginTop:12},Pe={marginTop:24};function Fe(e){e&&(e.style.width=`100%`)}var Ie={COMPLETION_NOTIFY:`結案通知`,COUNTERSIGN:`臨時會簽`,PRE_APPROVAL:`臨時加簽`,STAGE_NOTIFY:`階段完成通知`},Le={COMPLETION_NOTIFY:`本張單到達結案狀態(核准 / 拒絕 / 取消)後,通知指定對象。`,COUNTERSIGN:`指定對象會併入下一層簽核,下一層需所有人都完成才會繼續。`,PRE_APPROVAL:`指定對象需先完成加簽,本階段才會往下一層繼續。`,STAGE_NOTIFY:`本階段完成後(不論通過與否)通知指定對象。`},Re=[{id:`REJECT_INSTANCE`,name:`加簽拒絕時整單駁回`},{id:`RETURN_TO_ORIGIN`,name:`加簽拒絕時退回給我重新處理`}],Z=[{id:`MEMBER`,name:`指定成員`},{id:`WEBHOOK`,name:`Webhook`}],ze=(0,a.forwardRef)(function({adhocDirectives:e,currentMemberId:t,instance:i,memberProfilesById:l,onChanged:u,tasks:d},f){let[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(null),[ee,_]=(0,a.useState)(``),[te,v]=(0,a.useState)(null),[y,b]=(0,a.useState)(!1),[ne,re]=(0,a.useState)(``),[x,S]=(0,a.useState)(!1),[ie,C]=(0,a.useState)(null),[ae,w]=(0,a.useState)(``),[T,E]=(0,a.useState)(null),[oe,se]=(0,a.useState)(!1),[O,ce]=(0,a.useState)([]),[ue,k]=(0,a.useState)(!1),[P,he]=(0,a.useState)(``),[F,I]=(0,a.useState)(null),[ge,L]=(0,a.useState)(!1),[R,_e]=(0,a.useState)([]),[z,B]=(0,a.useState)(!1),[V,ve]=(0,a.useState)(`COUNTERSIGN`),[ye,be]=(0,a.useState)(`REJECT_INSTANCE`),[H,U]=(0,a.useState)(!1),[W,G]=(0,a.useState)(`MEMBER`),[K,xe]=(0,a.useState)(``),Se=ee.trim(),Ce=ne.trim(),we=ae.trim(),q=(0,a.useMemo)(()=>d.find(e=>de(e,t)&&(e.status===`PENDING`||e.status===`IN_PROGRESS`))??null,[t,d]),J=(0,a.useMemo)(()=>q&&i?i.workflowSnapshot.nodes.find(e=>e.id===q.nodeId)??null:null,[q,i]),Te=(0,a.useMemo)(()=>J&&i?fe(i.workflowSnapshot,J):[],[J,i]),Ee=J?.type===`userTask`&&J.data.returnBehavior.allowReturn,De=J?.type===`userTask`&&J.data.allowAddSigner,Y=(0,a.useMemo)(()=>e.filter(e=>e.status===`PENDING`),[e]),Oe=Te.find(e=>e.id===ie)??Te[0]??null,ke=(0,a.useMemo)(()=>d.map(e=>({...e,assigneeLabel:M(e,l),key:e.id,nodeLabel:`${A(e.nodeId,i?.workflowSnapshot??null)}${e.isAdhoc?e.adhocType===`COUNTERSIGN`?`(臨時會簽)`:`(臨時加簽)`:``}`,statusLabel:le(e.status)})),[i,l,d]),Ae=(0,a.useMemo)(()=>[{dataIndex:`nodeLabel`,key:`nodeLabel`,title:`節點`,width:180},{key:`assigneeMemberId`,title:`處理者`,render:e=>(0,s.jsx)(o.Typography,{component:`span`,variant:`body`,children:e.assigneeLabel}),width:180},{dataIndex:`statusLabel`,key:`statusLabel`,title:`狀態`,width:120},{key:`createdAt`,render:e=>(0,s.jsx)(o.Typography,{component:`span`,variant:`body`,children:n.t(e.createdAt)}),title:`建立時間`,width:220}],[]),ze=(0,a.useMemo)(()=>Y.map(e=>({...e,createdByLabel:j(e.createdByMemberId,l),key:e.id,targetLabel:Be(e,l),typeLabel:Ie[e.type]})),[l,Y]),Ve=(0,a.useMemo)(()=>[{dataIndex:`typeLabel`,key:`typeLabel`,title:`類型`,width:180},{key:`targetLabel`,render:e=>(0,s.jsx)(o.Typography,{component:`span`,variant:`body`,children:e.targetLabel}),title:`對象`,width:220},{key:`createdByLabel`,render:e=>(0,s.jsx)(o.Typography,{component:`span`,variant:`body`,children:e.createdByLabel}),title:`設定者`,width:180},{key:`createdAt`,render:e=>(0,s.jsx)(o.Typography,{component:`span`,variant:`body`,children:n.t(e.createdAt)}),title:`建立時間`,width:220},{key:`actions`,render:e=>e.createdByMemberId===t?(0,s.jsx)(o.Button,{disabled:H,onClick:()=>void rt(e.id),size:`minor`,variant:`destructive-secondary`,children:`撤回`}):(0,s.jsx)(s.Fragment,{}),title:`操作`,width:100}],[H,t]);async function He({action:e,comment:n,returnToNodeId:r=null,transferToMemberId:i=null}){if(!(!t||!q)){m(!0),g(null);try{await(0,c.decideTask)({action:e,comment:n,decidedByMemberId:t,returnToNodeId:r,taskId:q.id,transferToMemberId:i}),b(!1),S(!1),k(!1),_(``),re(``),w(``),E(null),C(null),v(null),await u()}catch(e){g(D(e))}finally{m(!1)}}}function Ue(){_(``),v(null),b(!0)}function We(){p||(b(!1),_(``),v(null))}function Ge(){re(``),C(Te[0]?.id??null),S(!0)}function Ke(){p||(S(!1),re(``),C(null))}function qe(){w(``),E(null),k(!0),Ye(``)}function Je(){p||(k(!1),w(``),E(null))}async function Ye(e){se(!0);try{ce((await(0,c.searchMembers)(e)).filter(e=>e.memberId!==t).map(N))}catch(e){g(D(e))}finally{se(!1)}}async function Xe(){if(!Se){v(`請輸入拒絕原因`);return}await He({action:`REJECTED`,comment:Se})}async function Ze(){if(!T){g(`請選擇轉派對象`);return}await He({action:`TRANSFERRED`,comment:we||null,transferToMemberId:T.id})}async function Qe(){await He({action:`RETURNED`,comment:Ce||null,returnToNodeId:Oe?.id??null})}function $e(){he(``),I(null),be(`REJECT_INSTANCE`),G(`MEMBER`),xe(``)}function Q(e){ve(e),$e(),B(!0),tt(``)}function et(){H||(B(!1),$e())}async function tt(e){L(!0);try{_e((await(0,c.searchMembers)(e)).map(N))}catch(e){g(D(e))}finally{L(!1)}}async function nt(){if(!q)return;let e=(V===`STAGE_NOTIFY`||V===`COMPLETION_NOTIFY`)&&W===`WEBHOOK`,t=K.trim(),n=F;if(e&&!t){g(`請輸入 Webhook URL`);return}if(!e&&!n){g(`請選擇對象成員`);return}let r=e||!n?{kind:`WEBHOOK`,webhookUrl:t}:{kind:`MEMBER`,memberIds:[n.id]},i=P.trim()||null;U(!0),g(null);try{V===`COUNTERSIGN`?await(0,c.requestAdhocCountersign)({comment:i,target:r,taskId:q.id}):V===`PRE_APPROVAL`?await(0,c.requestAdhocPreApproval)({comment:i,onReject:ye,target:r,taskId:q.id}):V===`STAGE_NOTIFY`?await(0,c.configureAdhocStageNotification)({target:r,taskId:q.id}):await(0,c.configureAdhocCompletionNotification)({target:r,taskId:q.id}),B(!1),$e(),await u()}catch(e){g(D(e))}finally{U(!1)}}async function rt(e){U(!0),g(null);try{await(0,c.cancelAdhocDirective)(e),await u()}catch(e){g(D(e))}finally{U(!1)}}(0,a.useImperativeHandle)(f,()=>({canAddSignerCurrentTask:De,canReturnCurrentTask:Ee,deciding:p,handleApprove:()=>{He({action:`APPROVED`,comment:null})},hasCurrentTask:q!==null,openAdhocModal:Q,openRejectModal:Ue,openReturnModal:Ge,openTransferModal:qe}),[De,Ee,q,p]);let $=V===`STAGE_NOTIFY`||V===`COMPLETION_NOTIFY`,it=$&&W===`WEBHOOK`?!K.trim():!F,at=Re.find(e=>e.id===ye)??Re[0],ot=Z.find(e=>e.id===W)??Z[0];return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.Typography,{component:`h2`,variant:`h3`,children:`任務`}),h?(0,s.jsx)(o.Typography,{color:`text-error`,variant:`body`,children:h}):null,(0,s.jsx)(`div`,{style:Ne,children:(0,s.jsx)(o.Table,{columns:Ae,dataSource:ke,fullWidth:!0})}),Y.length>0?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.Typography,{component:`h3`,style:Pe,variant:`h3`,children:`待生效的臨時設定`}),(0,s.jsx)(`div`,{style:Ne,children:(0,s.jsx)(o.Table,{columns:Ve,dataSource:ze,fullWidth:!0})})]}):null,(0,s.jsx)(o.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:!Se,variant:`destructive-primary`},confirmText:`送出拒絕`,loading:p,modalStatusType:`error`,modalType:`standard`,onCancel:We,onClose:We,onConfirm:()=>void Xe(),open:y,showModalFooter:!0,showModalHeader:!0,size:`regular`,supportingText:`拒絕案件時必須留下原因,供發起人與後續追蹤查看。`,title:`拒絕原因`,children:(0,s.jsxs)(`div`,{style:je,children:[(0,s.jsx)(r.t,{label:`拒絕原因`,name:`rejectReason`,required:!0,children:(0,s.jsx)(o.Textarea,{autoFocus:!0,onChange:e=>{_(e.target.value),v(null)},placeholder:`請說明拒絕原因`,ref:Fe,resize:`vertical`,rows:4,style:Me,type:te?`error`:`default`,value:ee})}),te?(0,s.jsx)(o.Typography,{color:`text-error`,variant:`body`,children:te}):null]})}),(0,s.jsx)(o.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:!T},confirmText:`送出轉派`,loading:p,modalType:`standard`,onCancel:Je,onClose:Je,onConfirm:()=>void Ze(),open:ue,showModalFooter:!0,showModalHeader:!0,size:`regular`,supportingText:`轉派後,原任務會保留轉派紀錄,新的待簽任務會指派給指定成員。`,title:`轉派簽核`,children:(0,s.jsxs)(`div`,{style:X,children:[(0,s.jsx)(r.t,{label:`轉派對象`,name:`transferToMemberId`,required:!0,children:(0,s.jsx)(o.AutoComplete,{asyncData:!0,disabledOptionsFilter:!0,emptyText:`沒有符合的成員`,inputProps:{autoCapitalize:`none`,autoCorrect:`off`,name:`transfer-member-search`,spellCheck:!1},loading:oe,loadingText:`搜尋成員中...`,mode:`single`,onChange:e=>E(pe(e)),onSearch:Ye,onSearchTextChange:e=>E(me(e,O)),onVisibilityChange:e=>{e&&Ye(``)},options:[...O],placeholder:`搜尋姓名或信箱`,searchDebounceTime:300,value:T})}),(0,s.jsx)(r.t,{label:`轉派說明`,name:`transferComment`,children:(0,s.jsx)(o.Textarea,{onChange:e=>w(e.target.value),placeholder:`可補充轉派原因`,ref:Fe,resize:`vertical`,rows:4,style:Me,value:ae})})]})}),(0,s.jsx)(o.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:!Oe},confirmText:`送出退回`,loading:p,modalType:`standard`,onCancel:Ke,onClose:Ke,onConfirm:()=>void Qe(),open:x,showModalFooter:!0,showModalHeader:!0,size:`regular`,supportingText:`退回後,流程會回到指定節點並等待重新處理。`,title:`退回簽核`,children:(0,s.jsxs)(`div`,{style:X,children:[(0,s.jsx)(r.t,{label:`退回節點`,name:`returnTargetNodeId`,required:!0,children:(0,s.jsx)(o.Select,{clearable:!1,fullWidth:!0,onChange:e=>C(e?.id??null),options:[...Te],placeholder:`選擇退回節點`,value:Oe})}),(0,s.jsx)(r.t,{label:`退回說明`,name:`returnComment`,children:(0,s.jsx)(o.Textarea,{onChange:e=>re(e.target.value),placeholder:`可補充需要修改的內容`,ref:Fe,resize:`vertical`,rows:4,style:Me,value:ne})})]})}),(0,s.jsx)(o.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:it},confirmText:`送出`,loading:H,modalType:`standard`,onCancel:et,onClose:et,onConfirm:()=>void nt(),open:z,showModalFooter:!0,showModalHeader:!0,size:`regular`,supportingText:Le[V],title:Ie[V],children:(0,s.jsxs)(`div`,{style:X,children:[$?(0,s.jsx)(r.t,{label:`通知時機`,name:`adhocNotifyMode`,required:!0,children:(0,s.jsx)(o.Select,{clearable:!1,fullWidth:!0,onChange:e=>ve(e?.id===`COMPLETION_NOTIFY`?`COMPLETION_NOTIFY`:`STAGE_NOTIFY`),options:[{id:`STAGE_NOTIFY`,name:Ie.STAGE_NOTIFY},{id:`COMPLETION_NOTIFY`,name:Ie.COMPLETION_NOTIFY}],value:{id:V,name:Ie[V]}})}):null,$?(0,s.jsx)(r.t,{label:`通知對象類型`,name:`adhocTargetKind`,required:!0,children:(0,s.jsx)(o.Select,{clearable:!1,fullWidth:!0,onChange:e=>G(e?.id===`WEBHOOK`?`WEBHOOK`:`MEMBER`),options:[...Z],value:ot})}):null,$&&W===`WEBHOOK`?(0,s.jsx)(r.t,{label:`Webhook URL`,name:`adhocWebhookUrl`,required:!0,children:(0,s.jsx)(o.Input,{fullWidth:!0,onChange:e=>xe(e.target.value),placeholder:`https://example.com/webhook`,value:K})}):(0,s.jsx)(r.t,{label:$?`通知對象`:`簽核對象`,name:`adhocMemberId`,required:!0,children:(0,s.jsx)(o.AutoComplete,{asyncData:!0,disabledOptionsFilter:!0,emptyText:`沒有符合的成員`,inputProps:{autoCapitalize:`none`,autoCorrect:`off`,name:`adhoc-member-search`,spellCheck:!1},loading:ge,loadingText:`搜尋成員中...`,mode:`single`,onChange:e=>I(pe(e)),onSearch:tt,onSearchTextChange:e=>I(me(e,R)),onVisibilityChange:e=>{e&&tt(``)},options:[...R],placeholder:`搜尋姓名或信箱`,searchDebounceTime:300,value:F})}),V===`PRE_APPROVAL`?(0,s.jsx)(r.t,{label:`拒簽處理方式`,name:`adhocOnReject`,required:!0,children:(0,s.jsx)(o.Select,{clearable:!1,fullWidth:!0,onChange:e=>be(e?.id===`RETURN_TO_ORIGIN`?`RETURN_TO_ORIGIN`:`REJECT_INSTANCE`),options:[...Re],value:at})}):null,$?null:(0,s.jsx)(r.t,{label:`說明`,name:`adhocComment`,children:(0,s.jsx)(o.Textarea,{onChange:e=>he(e.target.value),placeholder:`可補充原因`,ref:Fe,resize:`vertical`,rows:3,style:Me,value:P})})]})})]})});function Be(e,t){try{let n=JSON.parse(e.targetValueJson);if(n.memberIds?.length)return n.memberIds.map(e=>j(e,t)).join(`、`);if(n.webhookUrl)return n.webhookUrl;if(n.positionId)return`職位 ${n.positionId}`;if(n.orgUnitId)return`部門 ${n.orgUnitId}`}catch{}return e.targetKind}var Ve={display:`grid`,gap:16};function He({signatureVerification:e,signatures:t}){let r=(0,a.useMemo)(()=>t.map(e=>({algorithm:e.algorithm,hashLabel:O(e.signedPayloadHash),key:e.id,keyVersion:e.keyVersion,signedAtLabel:n.t(e.signedAt),signerMemberId:e.signerMemberId})),[t]),i=(0,a.useMemo)(()=>[{dataIndex:`signerMemberId`,key:`signerMemberId`,title:`簽章者`,width:160},{dataIndex:`algorithm`,key:`algorithm`,title:`演算法`,width:150},{dataIndex:`keyVersion`,key:`keyVersion`,title:`Key 版本`,width:100},{dataIndex:`hashLabel`,key:`hashLabel`,title:`Payload Hash`,width:180},{dataIndex:`signedAtLabel`,key:`signedAtLabel`,title:`簽章時間`,width:220}],[]);return(0,s.jsxs)(`div`,{style:Ve,children:[(0,s.jsx)(o.Typography,{component:`h2`,variant:`h3`,children:`簽章`}),(0,s.jsx)(o.Typography,{color:e?.valid?`text-success`:`text-error`,variant:`body`,children:e?e.valid?`簽章鏈已驗證,共 ${e.checkedCount} 筆。`:`簽章鏈驗證失敗:${e.errors.join(`、`)}`:`尚無簽章紀錄。`}),r.length>0?(0,s.jsx)(o.Table,{columns:i,dataSource:r,fullWidth:!0}):null]})}var Ue={display:`grid`,gap:16},We={cursor:`help`,textDecoration:`underline dotted`,textUnderlineOffset:3},Ge={color:`var(--mzn-color-text-error)`};function Ke(...e){return e.filter(e=>T(e??null)).join(` `)}var qe=(0,a.forwardRef)(function({className:e,descriptionParts:t,error:n,forcePending:r=!1,index:i=0,orientation:c,status:l=`pending`,title:u,type:d=`number`,...f},p){let m=r?`pending`:l;return(0,s.jsxs)(`div`,{...f,className:Ke(h.stepClasses.host,d===`dot`?h.stepClasses.dot:null,n&&m!==`processing`?h.stepClasses.error:null,c===`horizontal`?h.stepClasses.horizontal:null,d===`number`?h.stepClasses.number:null,m===`pending`?h.stepClasses.pending:null,m===`processing`?h.stepClasses.processing:null,n&&m===`processing`?h.stepClasses.processingError:null,!n&&m===`succeeded`?h.stepClasses.succeeded:null,c===`vertical`?h.stepClasses.vertical:null,e),ref:p,children:[d===`dot`?(0,s.jsx)(`span`,{className:Ke(h.stepClasses.statusIndicator,h.stepClasses.statusIndicatorDot)}):(0,s.jsx)(`span`,{className:h.stepClasses.statusIndicator,children:i+1}),(0,s.jsxs)(`div`,{className:h.stepClasses.textContainer,children:[(0,s.jsxs)(o.Typography,{className:h.stepClasses.title,variant:`label-primary-highlight`,children:[u,(0,s.jsx)(`span`,{className:h.stepClasses.titleConnectLine})]}),t.length>0?(0,s.jsx)(o.Typography,{className:h.stepClasses.description,variant:`caption`,children:t.map((e,t)=>(0,s.jsxs)(a.Fragment,{children:[t>0?` · `:null,Je(e)]},`${e.type}-${t}`))}):null]})]})});function Je(e){return e.type===`text`?e.text:e.type===`dangerText`?(0,s.jsx)(`span`,{style:Ge,children:e.text}):e.email?(0,s.jsxs)(s.Fragment,{children:[e.prefix,`:`,(0,s.jsx)(o.Tooltip,{title:e.email,children:({onMouseEnter:t,onMouseLeave:n,ref:r})=>(0,s.jsx)(`span`,{"data-testid":e.memberId?`member-tooltip-${e.memberId}`:void 0,onMouseEnter:t,onMouseLeave:n,ref:r,style:We,children:e.label})})]}):`${e.prefix}:${e.label}`}function Ye({activityLogs:e,instanceState:t,memberProfilesById:n,signatureVerification:r,signaturesById:i,taskDecisionsByTaskId:a,tasks:c,workflowSnapshot:l,workflowTokens:u}){let d=Ce(e,c,u,l,t,n,a,i,r),f=ge(d),p=d.map(e=>({...e,descriptionParts:e.descriptionParts.filter(I)}));return(0,s.jsxs)(`div`,{style:Ue,children:[(0,s.jsx)(o.Typography,{component:`h2`,variant:`h3`,children:`歷程`}),p.length>0?(0,s.jsx)(o.Stepper,{currentStep:f,orientation:`vertical`,type:`dot`,children:p.map(e=>(0,s.jsx)(qe,{descriptionParts:e.descriptionParts,error:e.error,forcePending:e.forcePending,title:e.title},e.id))}):(0,s.jsx)(o.Typography,{color:`text-neutral`,variant:`body`,children:`尚無歷程紀錄。`})]})}var Xe=184,Ze=96,Qe={display:`grid`,gap:16},$e={background:`#f8fafc`,border:`1px solid #e2e8f0`,borderRadius:8,height:`min(64vh, 620px)`,minHeight:440,overflow:`hidden`,width:`min(80vw, 1040px)`},Q={background:`#ffffff`,border:`1px solid #cbd5e1`,borderRadius:8,boxShadow:`0 8px 18px rgba(15, 23, 42, 0.08)`,display:`grid`,gap:6,minHeight:82,padding:12,width:184},et={borderRadius:999,fontSize:12,fontWeight:600,justifySelf:`start`,lineHeight:`18px`,padding:`0 8px`},tt={color:`#64748b`,fontSize:12,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},nt={opacity:0},rt={display:`flex`,flexWrap:`wrap`,gap:8},$={alignItems:`center`,background:`#ffffff`,border:`1px solid #cbd5e1`,borderRadius:8,color:`#334155`,display:`inline-flex`,fontSize:12,fontWeight:600,gap:6,lineHeight:`20px`,padding:`4px 8px`},it={display:`grid`,gap:16},at={workflowRuntime:ht};function ot({instanceId:e,showAttachments:i=!0,showForm:p=!0,showHistory:m=!0,showSignatures:h=!0,showTasks:g=!0}){let{member:ee}=t.n(),_=ee?.memberId??null,[te,v]=(0,a.useState)([]),[y,b]=(0,a.useState)(null),[ne,x]=(0,a.useState)([]),[S,ie]=(0,a.useState)([]),[C,ae]=(0,a.useState)([]),[w,T]=(0,a.useState)(null),[E,oe]=(0,a.useState)([]),[se,O]=(0,a.useState)([]),[le,ue]=(0,a.useState)([]),[k,A]=(0,a.useState)(null),[j,M]=(0,a.useState)(!0),[fe,N]=(0,a.useState)(!1),[pe,me]=(0,a.useState)(!1),[P,he]=(0,a.useState)(``),[F,I]=(0,a.useState)(!1),[ge,L]=(0,a.useState)({}),[R,_e]=(0,a.useState)({}),[z,B]=(0,a.useState)(null),[V,ve]=(0,a.useState)(null),[ye,be]=(0,a.useState)([]),H=P.trim(),U=(0,a.useRef)(null);(0,a.useEffect)(()=>{X()},[_,e]),(0,a.useEffect)(()=>{_e(y?.formData??{})},[y]);let W=(0,a.useMemo)(()=>E.find(e=>de(e,_)&&(e.status===`PENDING`||e.status===`IN_PROGRESS`))??null,[_,E]),G=(0,a.useMemo)(()=>W&&y?y.workflowSnapshot.nodes.find(e=>e.id===W.nodeId)??null:null,[W,y]),K=G?.type===`userTask`&&G.data.returnBehavior.allowReturn,xe=G?.type===`userTask`&&G.data.allowAddSigner,Se=!!(y&&y.initiatorMemberId===_&&(y.state===`RUNNING`||y.state===`RETURNED`)),Ce=!!(y&&y.initiatorMemberId===_&&y.state===`RETURNED`),we=(0,a.useMemo)(()=>new Map(le.map(e=>[e.memberId,e])),[le]),J=(0,a.useMemo)(()=>Ee(ne),[ne]),De=(0,a.useMemo)(()=>new Map(C.map(e=>[e.id,e])),[C]),Y=(0,a.useMemo)(()=>y?dt(y.workflowSnapshot):null,[y]),ke=(0,a.useMemo)(()=>y&&Y?ut(Y,E,se,y.state):[],[y,Y,E,se]),je=(0,a.useMemo)(()=>Y?ft(Y):[],[Y]),Me=(0,a.useMemo)(()=>y?ct(y.workflowSnapshot):[],[y]);async function X(){M(!0),A(null);try{let t=await(0,c.readApprovalInstance)(e);v(t.activityLogs),b(t.instance),oe(t.tasks),O(t.workflowTokens);let n=await(0,c.listAdhocDirectives)(t.instance.id),[r,i,a,o]=await Promise.all([Te(t.tasks),q({...t,adhocDirectives:n}),(0,c.listAttachments)(t.instance.id),(0,c.readInstanceSignatures)(t.instance.id)]);x(r),ue(i),ie(a),ae(o.signatures),T(o.verification),be(n)}catch(e){A(D(e))}finally{M(!1)}}async function Ne(e,t){if(!_)throw Error(`尚未登入,無法上傳附件`);return{id:(await(0,c.uploadAttachment)({file:t,formFieldPath:`form.${e.fieldKey}`})).id}}async function Pe(e){if(!_)return;let t=await(0,c.readAttachmentDownloadUrl)({id:e.id});window.open(t,`_blank`,`noopener,noreferrer`)}async function Fe(e){if(!_)return;let t=await(0,c.readAttachmentPreviewUrl)({id:e.id});B(e),ve(t)}async function Ie(){if(!(!_||!y||!Se)){if(N(!0),A(null),L({}),y.formDefinitionSnapshot.schema&&y.formDefinitionSnapshot.uiSchema){let e=(0,d.validateFormRendererValues)({schema:y.formDefinitionSnapshot.schema,uiSchema:y.formDefinitionSnapshot.uiSchema,values:R});if(!e.valid){L(e.errors),A(`請先補齊必填欄位。`),e.firstInvalidFieldKey&&(0,d.focusFormRendererField)(e.firstInvalidFieldKey),N(!1);return}}try{await(0,c.cancelApprovalInstance)({cancelledByMemberId:_,comment:H||null,instanceId:y.id}),he(``),I(!1),await X()}catch(e){A(D(e))}finally{N(!1)}}}async function Le(){if(!(!_||!y||!Ce)){N(!0),A(null);try{await(0,c.resubmitApprovalInstance)({formData:R,initiatorMemberId:_,instanceId:y.id,title:y.title}),await X()}catch(e){A(D(e))}finally{N(!1)}}}let Re=U.current?.deciding??!1,Z=fe||Re;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.PageHeader,{children:(0,s.jsxs)(l.default,{description:y?`${ce(y.state)} · ${n.t(y.startedAt)}`:`載入案件內容。`,title:y?.title??`簽核案件`,children:[y?(0,s.jsx)(o.Button,{"aria-label":`查看流程圖`,icon:u.ShareIcon,iconType:`icon-only`,onClick:()=>me(!0),title:`查看流程圖`,variant:`base-secondary`,children:`流程圖`}):null,Se?(0,s.jsx)(o.Button,{disabled:Z,icon:u.DangerousOutlineIcon,iconType:`leading`,onClick:()=>I(!0),variant:`destructive-secondary`,children:`取消案件`}):null,W?(0,s.jsxs)(s.Fragment,{children:[xe?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.Button,{disabled:Z,icon:u.PlusIcon,iconType:`leading`,onClick:()=>U.current?.openAdhocModal(`COUNTERSIGN`),variant:`base-secondary`,children:`會簽`},`adhoc-countersign`),(0,s.jsx)(o.Button,{disabled:Z,icon:u.PlusIcon,iconType:`leading`,onClick:()=>U.current?.openAdhocModal(`PRE_APPROVAL`),variant:`base-secondary`,children:`加簽`},`adhoc-pre-approval`)]}):null,(0,s.jsx)(o.Button,{disabled:Z,icon:u.NotificationUnreadIcon,iconType:`leading`,onClick:()=>U.current?.openAdhocModal(`STAGE_NOTIFY`),variant:`base-secondary`,children:`通知設定`},`adhoc-notify`),K?(0,s.jsx)(o.Button,{disabled:Z,icon:u.RefreshCcwIcon,iconType:`leading`,onClick:()=>U.current?.openReturnModal(),variant:`base-secondary`,children:`退回`},`task-return`):null,(0,s.jsx)(o.Button,{disabled:Z,icon:u.UserIcon,iconType:`leading`,onClick:()=>U.current?.openTransferModal(),variant:`base-secondary`,children:`轉派`},`task-transfer`),(0,s.jsx)(o.Button,{disabled:Z,icon:u.DangerousOutlineIcon,iconType:`leading`,onClick:()=>U.current?.openRejectModal(),variant:`destructive-secondary`,children:`拒絕`},`task-reject`),(0,s.jsx)(o.Button,{disabled:Z,icon:u.CheckedIcon,iconType:`leading`,onClick:()=>U.current?.handleApprove(),variant:`base-primary`,children:`同意`},`task-approve`)]}):null]})}),(0,s.jsxs)(o.SectionGroup,{children:[p?(0,s.jsx)(o.Section,{children:(0,s.jsx)(Oe,{canResubmitInstance:Ce,deciding:fe,error:k,instance:y,loading:j,onResubmitFormChange:e=>{_e(e),L({})},onResubmitInstance:()=>void Le(),onUploadAttachment:Ne,resubmitFormData:R,resubmitFormErrors:ge})}):null,i?(0,s.jsx)(o.Section,{children:(0,s.jsx)(Ae,{attachments:S,onDownload:e=>{Pe(e)},onPreview:e=>{Fe(e)}})}):null,g?(0,s.jsx)(o.Section,{children:(0,s.jsx)(ze,{adhocDirectives:ye,currentMemberId:_,instance:y,memberProfilesById:we,onChanged:X,ref:U,tasks:E})}):null,h?(0,s.jsx)(o.Section,{children:(0,s.jsx)(He,{signatureVerification:w,signatures:C})}):null,m?(0,s.jsx)(o.Section,{children:(0,s.jsx)(Ye,{activityLogs:te,instanceState:y?.state??`RUNNING`,memberProfilesById:we,signatureVerification:w,signaturesById:De,taskDecisionsByTaskId:J,tasks:E,workflowSnapshot:y?.workflowSnapshot??null,workflowTokens:se})}):null]}),y?(0,s.jsx)(o.Modal,{modalType:`standard`,onClose:()=>me(!1),open:pe,showModalHeader:!0,size:`wide`,supportingText:`${ce(y.state)} · ${n.t(y.startedAt)}`,title:`流程圖`,children:(0,s.jsxs)(`div`,{style:Qe,children:[(0,s.jsx)(`div`,{style:$e,children:(0,s.jsxs)(f.ReactFlow,{edges:je,fitView:!0,fitViewOptions:{padding:.18},maxZoom:1.2,minZoom:.2,nodes:ke,nodesDraggable:!1,nodesFocusable:!1,nodeTypes:at,panOnDrag:!0,proOptions:{hideAttribution:!0},children:[(0,s.jsx)(f.Background,{}),(0,s.jsx)(f.Controls,{showInteractive:!1})]})}),Me.length>0?(0,s.jsx)(`div`,{style:rt,children:Me.map(e=>(0,s.jsx)(`span`,{style:$,children:e},e))}):null]})}):null,(0,s.jsx)(o.Modal,{modalType:`standard`,onClose:()=>{B(null),ve(null)},open:!!(z&&V),showModalHeader:!0,size:`wide`,supportingText:z?.filename??void 0,title:`PDF 預覽`,children:V?(0,s.jsx)(re,{filename:z?.filename??`PDF 預覽`,fileUrl:V,onDownload:z?()=>void Pe(z):void 0}):null}),(0,s.jsx)(o.Modal,{cancelText:`保留案件`,confirmButtonProps:{variant:`destructive-primary`},confirmText:`確認取消`,loading:fe,modalStatusType:`error`,modalType:`standard`,onCancel:()=>I(!1),onClose:()=>I(!1),onConfirm:()=>void Ie(),open:F,showModalFooter:!0,showModalHeader:!0,supportingText:`取消後會關閉目前待簽任務與候選簽核人。`,title:`取消案件`,children:(0,s.jsxs)(`div`,{style:it,children:[(0,s.jsxs)(o.Typography,{variant:`body`,children:[`確定要取消「`,y?.title??``,`」嗎?`]}),(0,s.jsx)(r.t,{label:`取消原因`,name:`cancelComment`,children:(0,s.jsx)(o.Textarea,{onChange:e=>he(e.target.value),placeholder:`可填寫取消原因`,resize:`vertical`,rows:3,value:P})})]})})]})}function st(e){return e.data.label?e.data.label:e.data.isDefault?`其他情況`:e.data.condition??``}function ct(e){return e.edges.map(st).filter(e=>e.trim().length>0)}function lt(e){return e===`startEvent`?`開始`:e===`endEvent`?`完成`:e===`userTask`?`簽核節點`:e===`serviceTask`?`知會節點`:e===`exclusiveGateway`?`條件分流`:`平行處理`}function ut(e,t,n,r){return e.nodes.map(e=>{let i=we(e,t,n,r);return{data:{kindLabel:lt(e.type),label:e.data.label,secondaryLabel:i.secondaryLabel,statusLabel:i.statusLabel,tone:i.tone},id:e.id,position:e.position,sourcePosition:f.Position.Right,targetPosition:f.Position.Left,type:`workflowRuntime`}})}function dt(e){let t=new p.graphlib.Graph;return t.setDefaultEdgeLabel(()=>({})),t.setGraph({nodesep:56,rankdir:`LR`,ranksep:120}),e.nodes.forEach(e=>{t.setNode(e.id,{height:Ze,width:Xe})}),e.edges.forEach(e=>{t.setEdge(e.source,e.target)}),p.layout(t),{...e,nodes:e.nodes.map(e=>{let n=t.node(e.id);return n?{...e,position:{x:n.x-Xe/2,y:n.y-Ze/2}}:e})}}function ft(e){return e.edges.map(e=>{let t=st(e);return{animated:!1,id:e.id,label:t,labelBgBorderRadius:6,labelBgPadding:[8,4],labelBgStyle:{fill:e.data.isDefault?`#f8fafc`:`#eff6ff`,stroke:e.data.isDefault?`#64748b`:`#2563eb`,strokeWidth:1},labelShowBg:!!t,labelStyle:{fill:e.data.isDefault?`#475569`:`#2563eb`,fontSize:12,fontWeight:600},source:e.source,style:{stroke:`#475569`,strokeWidth:1.5},target:e.target,type:e.type??`smoothstep`}})}function pt(e){return e===`current`?{...Q,border:`1px solid var(--mzn-color-primary, #0057ff)`,boxShadow:`0 0 0 3px rgba(0, 87, 255, 0.14)`}:e===`completed`?{...Q,border:`1px solid #16a34a`}:e===`cancelled`?{...Q,border:`1px solid #dc2626`,opacity:.72}:e===`waiting`?{...Q,border:`1px dashed #64748b`}:Q}function mt(e){let t=et;return e===`current`?{...t,background:`#eff6ff`,color:`#2563eb`}:e===`completed`?{...t,background:`#f0fdf4`,color:`#15803d`}:e===`cancelled`?{...t,background:`#fef2f2`,color:`#dc2626`}:e===`waiting`?{...t,background:`#f8fafc`,color:`#475569`}:{...t,background:`#f1f5f9`,color:`#64748b`}}function ht({data:e}){return(0,s.jsxs)(`div`,{style:pt(e.tone),children:[(0,s.jsx)(f.Handle,{isConnectable:!1,position:f.Position.Left,style:nt,type:`target`}),(0,s.jsx)(o.Typography,{component:`span`,ellipsis:!0,title:e.label,variant:`label-primary`,children:e.label}),(0,s.jsx)(`span`,{style:mt(e.tone),children:e.statusLabel}),(0,s.jsx)(`span`,{title:e.secondaryLabel,style:tt,children:e.secondaryLabel||e.kindLabel}),(0,s.jsx)(f.Handle,{isConnectable:!1,position:f.Position.Right,style:nt,type:`source`})]})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return ot}});
|
|
2
|
+
//# sourceMappingURL=detail-KEmfpCtt.cjs.map
|