@robot-admin/naive-ui-components 0.17.0 → 0.17.1
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 +19 -0
- package/README.md +12 -11
- package/README_EN.md +1 -0
- package/dist/C_AntV2.cjs +1 -1
- package/dist/C_AntV2.js +3 -3
- package/dist/C_Barcode.css +6 -6
- package/dist/C_Barcode2.cjs +1 -1
- package/dist/C_Barcode2.js +1 -1
- package/dist/C_Chat.css +269 -185
- package/dist/C_Chat2.cjs +1 -1
- package/dist/C_Chat2.js +1 -1
- package/dist/C_Code.css +26 -26
- package/dist/C_Code2.cjs +1 -1
- package/dist/C_Code2.js +1 -1
- package/dist/C_Draggable2.cjs +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_FilePreview.css +96 -57
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_GlobalSearch.css +140 -118
- package/dist/C_GlobalSearch2.cjs +1 -1
- package/dist/C_GlobalSearch2.js +1 -1
- package/dist/C_ImageCropper.css +10 -10
- package/dist/C_ImageCropper2.cjs +1 -1
- package/dist/C_ImageCropper2.js +1 -1
- package/dist/C_Login.css +79 -79
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Map.css +10 -10
- package/dist/C_Map2.cjs +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_OrgChart.css +28 -4
- package/dist/C_OrgChart2.cjs +1 -1
- package/dist/C_OrgChart2.js +1 -1
- package/dist/C_QRCode2.cjs +1 -1
- package/dist/C_QRCode2.js +1 -1
- package/dist/C_Signature.css +15 -15
- package/dist/C_Signature2.cjs +1 -1
- package/dist/C_Signature2.js +1 -1
- package/dist/C_SplitPane.cjs +1 -1
- package/dist/C_SplitPane.css +231 -77
- package/dist/C_SplitPane.js +1 -1
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Table.base.css +110 -117
- package/dist/C_Table.css +110 -117
- package/dist/C_Table.d.ts +1 -0
- package/dist/C_TagsView2.cjs +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_Transfer.css +93 -84
- package/dist/C_Transfer2.cjs +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Tree.d.ts +1 -0
- package/dist/C_Upload.css +5 -5
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_VideoPlayer2.cjs +4 -3
- package/dist/C_VideoPlayer2.js +4 -3
- package/dist/C_VtableGantt.css +29 -28
- package/dist/C_VtableGantt2.cjs +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_WaterFall.css +29 -29
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/constants.d.cts +2 -2
- package/dist/constants.d.ts +2 -2
- package/dist/constants2.d.cts +2 -2
- package/dist/constants2.d.ts +2 -2
- package/dist/constants3.d.cts +2 -2
- package/dist/constants3.d.ts +2 -2
- package/dist/constants4.d.cts +5 -5
- package/dist/constants4.d.ts +5 -5
- package/dist/constants5.d.cts +5 -9
- package/dist/constants5.d.ts +5 -9
- package/dist/data.d.cts +11 -11
- package/dist/data.d.ts +11 -11
- package/dist/helpers.cjs +1 -1
- package/dist/helpers.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.vue.d.cts +6 -6
- package/dist/index.vue.d.ts +6 -6
- package/dist/index10.vue.d.cts +3 -3
- package/dist/index10.vue.d.ts +3 -3
- package/dist/index11.vue.d.cts +3 -3
- package/dist/index11.vue.d.ts +3 -3
- package/dist/index12.vue.d.cts +3 -3
- package/dist/index12.vue.d.ts +2 -2
- package/dist/index13.vue.d.cts +2 -2
- package/dist/index13.vue.d.ts +5 -5
- package/dist/index14.vue.d.cts +5 -5
- package/dist/index14.vue.d.ts +4 -4
- package/dist/index15.vue.d.cts +4 -4
- package/dist/index15.vue.d.ts +3 -3
- package/dist/index16.vue.d.cts +3 -3
- package/dist/index17.vue.d.ts +2 -2
- package/dist/index18.vue.d.cts +2 -2
- package/dist/index18.vue.d.ts +6 -6
- package/dist/index19.vue.d.cts +6 -6
- package/dist/index19.vue.d.ts +3 -3
- package/dist/index2.vue.d.cts +2 -2
- package/dist/index2.vue.d.ts +2 -2
- package/dist/index20.vue.d.cts +5 -1
- package/dist/index20.vue.d.ts +5 -1
- package/dist/index21.vue.d.cts +2 -2
- package/dist/index21.vue.d.ts +2 -2
- package/dist/index22.vue.d.cts +2 -2
- package/dist/index22.vue.d.ts +2 -2
- package/dist/index23.vue.d.cts +2 -2
- package/dist/index23.vue.d.ts +2 -2
- package/dist/index25.vue.d.cts +6 -6
- package/dist/index25.vue.d.ts +6 -6
- package/dist/index27.vue.d.cts +2 -2
- package/dist/index27.vue.d.ts +2 -2
- package/dist/index28.vue.d.cts +6 -2
- package/dist/index28.vue.d.ts +6 -2
- package/dist/index3.vue.d.cts +3 -3
- package/dist/index3.vue.d.ts +3 -3
- package/dist/index4.vue.d.cts +3 -3
- package/dist/index5.vue.d.ts +2 -2
- package/dist/index6.vue.d.cts +2 -2
- package/dist/index6.vue.d.ts +7 -4
- package/dist/index7.vue.d.cts +7 -4
- package/dist/index7.vue.d.ts +2 -2
- package/dist/index8.vue.d.cts +2 -2
- package/dist/index8.vue.d.ts +5 -7
- package/dist/index9.vue.d.cts +5 -7
- package/dist/index9.vue.d.ts +3 -3
- package/dist/mapUtils.d.cts +3 -3
- package/dist/mapUtils.d.ts +3 -3
- package/dist/presets.d.cts +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/style.css +1176 -850
- package/dist/useCalendarEvents.d.cts +1 -1
- package/dist/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.cts +3 -3
- package/dist/useCollapsePanel.d.ts +3 -3
- package/dist/useCropperCore.d.cts +6 -6
- package/dist/useCropperCore.d.ts +6 -6
- package/dist/useDraggableLayout.d.cts +13 -11
- package/dist/useDraggableLayout.d.ts +13 -11
- package/dist/useDynamicFormState.d.cts +2 -2
- package/dist/useDynamicFormState.d.ts +2 -2
- package/dist/useEdgeInteraction.d.cts +2 -2
- package/dist/useEdgeInteraction.d.ts +2 -2
- package/dist/useFullscreen.d.cts +6 -2
- package/dist/useFullscreen.d.ts +6 -2
- package/dist/useGlobalSearch.d.cts +9 -4
- package/dist/useGlobalSearch.d.ts +9 -4
- package/dist/useInfiniteScroll.d.cts +4 -1
- package/dist/useInfiniteScroll.d.ts +4 -1
- package/dist/useQRCode.d.cts +3 -3
- package/dist/useQRCode.d.ts +3 -3
- package/dist/useSearchState.d.cts +3 -3
- package/dist/useSearchState.d.ts +3 -3
- package/dist/useSignatureHistory.d.cts +5 -5
- package/dist/useSignatureHistory.d.ts +5 -5
- package/dist/useSplitResize.d.cts +8 -8
- package/dist/useSplitResize.d.ts +8 -8
- package/dist/useTableQuery.cjs +2 -2
- package/dist/useTableQuery.d.cts +20 -10
- package/dist/useTableQuery.d.ts +20 -10
- package/dist/useTableQuery.js +2 -2
- package/dist/useTimeSelection.d.cts +3 -3
- package/dist/useTimeSelection.d.ts +3 -3
- package/dist/useWorkflowValidation.d.cts +2 -2
- package/dist/useWorkflowValidation.d.ts +2 -2
- package/dist/verification.d.cts +5 -5
- package/dist/verification.d.ts +5 -5
- package/docs/component-review-20261019.md +55 -0
- package/docs/guides/runtime-performance.md +38 -0
- package/docs/guides/split-pane.en.md +4 -0
- package/docs/guides/split-pane.md +4 -0
- package/docs/guides/table-density.md +20 -0
- package/docs/guides/transfer.md +11 -0
- package/docs/runtime-review-20261019.md +41 -0
- package/package.json +4 -2
package/dist/C_VtableGantt2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:1,fontSize:14,fontWeight:`bold`},bodyStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:[1,0,1,0],fontSize:13}},a={basic:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:220,tree:!0},{field:`start`,title:`开始时间`,width:120},{field:`end`,title:`结束时间`,width:120},{field:`progress`,title:`进度`,width:80}],tableWidth:420,minTableWidth:300,theme:i},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`#e1e4e8`,cornerRadius:6},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:2}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:18,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:4,borderLineWidth:0},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:1,fillColor:`#ffd666`,width:12}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:12,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},project:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:200,tree:!0,editor:`input`},{field:`start`,title:`开始时间`,width:120,editor:`date-input`},{field:`end`,title:`结束时间`,width:120,editor:`date-input`},{field:`priority`,title:`优先级`,width:80,editor:`input`},{field:`progress`,title:`进度%`,width:80,editor:`input`}],tableWidth:480,minTableWidth:350,maxTableWidth:800,theme:i,hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(24, 144, 255, 0.3)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:12,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:6,borderLineWidth:0}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,startOfWeek:`monday`,format:e=>`第${e.dateIndex}周`,style:{fontSize:13,fontWeight:`bold`,textAlign:`center`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11,textAlign:`center`}}]},rowSeriesNumber:{title:`序号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},timeline:{overscrollBehavior:`none`,headerRowHeight:45,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`事件名称`,width:250,tree:!0},{field:`start`,title:`时间`,width:150}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...i.headerStyle},bodyStyle:i.bodyStyle}},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`rgba(128, 128, 128, 0.3)`,cornerRadius:4},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:22,barColor:`#722ed1`,completedBarColor:`#b37feb`,cornerRadius:8,borderLineWidth:0}},timelineHeader:{colWidth:60,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},milestone:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:38,taskListTable:{columns:[{field:`title`,title:`里程碑`,width:200,tree:!0},{field:`start`,title:`目标日期`,width:120},{field:`priority`,title:`重要性`,width:100}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...i.headerStyle,borderColor:`#ffa940`},bodyStyle:{...i.bodyStyle,borderColor:`#ffa940`}}},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#ffa940`,cornerRadius:6},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`},horizontalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`}},taskBar:{startDateField:`start`,endDateField:`start`,labelText:`{title}`,labelTextStyle:{fontSize:12,fontWeight:`bold`},barStyle:{width:0,barColor:`transparent`},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:2,fillColor:`#ffd666`,width:16}},timelineHeader:{colWidth:80,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},official:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`title`,width:180,sort:!0,tree:!0,editor:`input`},{field:`start`,title:`start`,width:120,sort:!0,editor:`date-input`},{field:`end`,title:`end`,width:120,sort:!0,editor:`date-input`},{field:`priority`,title:`priority`,width:80,sort:!0,editor:`input`},{field:`progress`,title:`progress`,width:80,sort:!0,editor:`input`}],tableWidth:460,minTableWidth:350,maxTableWidth:800,theme:{headerStyle:{...i.headerStyle,fontSize:18,color:`red`},bodyStyle:{...i.bodyStyle,fontSize:16,color:`#4D4D4D`}},hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3},horizontalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(99, 144, 0, 0.4)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:16,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#ee8800`,completedBarColor:`#91e8e0`,cornerRadius:8,borderLineWidth:1,borderColor:`black`},milestoneStyle:{borderColor:`red`,borderLineWidth:1,fillColor:`green`,width:15}},timelineHeader:{backgroundColor:`#EEF1F5`,colWidth:60,horizontalLine:{lineWidth:1,lineColor:`#e1e4e8`},verticalLine:{lineWidth:1,lineColor:`#e1e4e8`},scales:[{unit:`week`,step:1,startOfWeek:`sunday`,format:e=>`Week ${e.dateIndex}`,style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`,textStick:!0}},{unit:`day`,step:1,format:e=>e.dateIndex.toString(),style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`}}]},markLine:[{date:`2024-07-28`,style:{lineWidth:1,lineColor:`blue`,lineDash:[8,4]}},{date:`2024-08-17`,style:{lineWidth:2,lineColor:`red`,lineDash:[8,4]}}],rowSeriesNumber:{title:`行号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}}},o=new Set([`__proto__`,`prototype`,`constructor`]),s=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null};function c(e,t){let n=new WeakMap,r=(e,t)=>{let i=n.get(t);if(i)return i;let a={...e};n.set(t,a);for(let[n,i]of Object.entries(t))o.has(n)||(a[n]=s(i)?r(s(e[n])?e[n]:{},i):i);return a};return r(e,t)}const l={class:`c-vtable-gantt-wrapper`},u={key:0,class:`gantt-toolbar`},d={class:`toolbar-left`},f={class:`gantt-title`},p={class:`toolbar-right`},m=(0,n.defineComponent)({name:`C_VtableGantt`,__name:`index`,props:{data:{default:()=>[]},options:{default:()=>({})},preset:{default:`basic`},height:{default:`600px`},title:{default:``},showToolbar:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},theme:{default:`light`}},emits:[`ganttCreated`,`taskClick`,`taskChange`],setup(t,{expose:i,emit:o}){let s=t,m=o,h=(0,n.ref)(),g=(0,n.ref)(),_=(0,n.ref)(!1),v=0,y,b,x=!1,S=(0,n.computed)(()=>typeof s.height==`number`?`${s.height}px`:s.height),C=(e,t)=>!x&&e===v&&h.value===t,w=e=>e.map(e=>({...e,title:e.title||`任务${e.id}`,children:e.children?w(e.children):void 0})),T=e=>({underlayBackgroundColor:e?`#1e1e1e`:`#ffffff`,timelineHeaderBg:e?`#2d2d2d`:`#EEF1F5`,gridBg:e?`#1e1e1e`:`#ffffff`,lineColor:e?`rgba(255, 255, 255, 0.1)`:`rgba(128, 128, 128, 0.2)`,textColor:e?`#ffffff`:`#000000`}),E=(e,t)=>({...e,backgroundColor:t.timelineHeaderBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor},scales:e?.scales?.map(e=>({...e,style:{...e.style,color:t.textColor}}))}),D=(e,t)=>({...e,backgroundColor:t.gridBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor}}),O=(e,t,n,r)=>({...e,records:t,underlayBackgroundColor:r.underlayBackgroundColor,taskListTable:{...e.taskListTable,theme:n},timelineHeader:E(e.timelineHeader,r),grid:D(e.grid,r)}),k=e=>{e.on(`click_cell`,e=>{let{record:t,event:n}=e||{};t&&m(`taskClick`,t,n)}),e.on(`change_data`,e=>{let{record:t,changes:n}=e||{};t&&n&&m(`taskChange`,t,n)})},A=async()=>{let e=h.value;if(!e||x)return;let t=++v;try{let{Gantt:n}=await import(`@visactor/vtable-gantt`),{themes:r}=await import(`@visactor/vtable`);if(!C(t,e))return;let i=s.theme===`dark`,o=c(a[s.preset]||a.basic,s.options),l=w(s.data||[]);g.value&&g.value.release();let u=new n(e,O(o,l,i?r.DARK:r.DEFAULT,T(i)));if(!C(t,e)){u.release();return}g.value=u,k(u),m(`ganttCreated`,u)}catch(e){console.error(`甘特图初始化失败:`,e)}},j=()=>{b&&clearTimeout(b),b=setTimeout(()=>{b=void 0,x||g.value?.resize?.()},100)},M=async()=>{let e=h.value;if(e)try{document.fullscreenElement===e?await document.exitFullscreen():await e.requestFullscreen(),_.value=document.fullscreenElement===e,j()}catch(t){console.warn(`全屏切换失败:`,t),_.value=document.fullscreenElement===e}},N=()=>{_.value=document.fullscreenElement===h.value,j()},P=e=>{if(g.value&&e)try{g.value.setRecords(w(e))}catch(e){console.warn(`更新数据失败:`,e)}},F=e=>{if(g.value&&e)try{g.value.updateOption(e)}catch(e){console.warn(`更新配置失败:`,e)}},I=()=>{if(g.value)try{g.value.release()}catch(e){console.warn(`销毁甘特图失败:`,e)}finally{g.value=void 0}};return(0,n.watch)(()=>s.data,e=>{e&&g.value&&P(e)},{deep:!0}),(0,n.watch)(()=>[s.options,s.preset],()=>(0,n.nextTick)(()=>A()),{deep:!0}),(0,n.watch)(()=>s.theme,()=>(0,n.nextTick)(()=>A())),(0,n.onMounted)(()=>{x=!1,document.addEventListener(`fullscreenchange`,N),(0,n.nextTick)(()=>{x||(y=setTimeout(()=>A(),100))})}),(0,n.onUnmounted)(()=>{x=!0,v+=1,y&&clearTimeout(y),b&&clearTimeout(b),document.removeEventListener(`fullscreenchange`,N),I()}),i({ganttInstance:g,updateData:P,updateOptions:F,toggleFullscreen:M}),(i,a)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,l,[t.showToolbar?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[(0,n.createElementVNode)(`div`,d,[(0,n.createElementVNode)(`span`,f,(0,n.toDisplayString)(t.title||`甘特图`),1)]),(0,n.createElementVNode)(`div`,p,[t.showFullscreenButton?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NButton),{key:0,size:`small`,onClick:M},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:_.value?`carbon:minimize`:`carbon:maximize`,size:16,color:`currentColor`},null,8,[`name`])]),default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` `+(0,n.toDisplayString)(_.value?`退出全屏`:`全屏`),1)]),_:1})):(0,n.createCommentVNode)(`v-if`,!0)])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createElementVNode)(`div`,{ref_key:`ganttContainerRef`,ref:h,class:`gantt-container`,style:(0,n.normalizeStyle)({height:S.value})},null,4)]))}});var h=t.t(m,[[`__scopeId`,`data-v-7145fd81`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}});
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:1,fontSize:14,fontWeight:`bold`},bodyStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:[1,0,1,0],fontSize:13}},a={basic:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:220,tree:!0},{field:`start`,title:`开始时间`,width:120},{field:`end`,title:`结束时间`,width:120},{field:`progress`,title:`进度`,width:80}],tableWidth:420,minTableWidth:300,theme:i},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`#e1e4e8`,cornerRadius:6},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:2}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:18,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:4,borderLineWidth:0},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:1,fillColor:`#ffd666`,width:12}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:12,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},project:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:200,tree:!0,editor:`input`},{field:`start`,title:`开始时间`,width:120,editor:`date-input`},{field:`end`,title:`结束时间`,width:120,editor:`date-input`},{field:`priority`,title:`优先级`,width:80,editor:`input`},{field:`progress`,title:`进度%`,width:80,editor:`input`}],tableWidth:480,minTableWidth:350,maxTableWidth:800,theme:i,hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(24, 144, 255, 0.3)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:12,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:6,borderLineWidth:0}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,startOfWeek:`monday`,format:e=>`第${e.dateIndex}周`,style:{fontSize:13,fontWeight:`bold`,textAlign:`center`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11,textAlign:`center`}}]},rowSeriesNumber:{title:`序号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},timeline:{overscrollBehavior:`none`,headerRowHeight:45,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`事件名称`,width:250,tree:!0},{field:`start`,title:`时间`,width:150}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...i.headerStyle},bodyStyle:i.bodyStyle}},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`rgba(128, 128, 128, 0.3)`,cornerRadius:4},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:22,barColor:`#722ed1`,completedBarColor:`#b37feb`,cornerRadius:8,borderLineWidth:0}},timelineHeader:{colWidth:60,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},milestone:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:38,taskListTable:{columns:[{field:`title`,title:`里程碑`,width:200,tree:!0},{field:`start`,title:`目标日期`,width:120},{field:`priority`,title:`重要性`,width:100}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...i.headerStyle,borderColor:`#ffa940`},bodyStyle:{...i.bodyStyle,borderColor:`#ffa940`}}},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#ffa940`,cornerRadius:6},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`},horizontalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`}},taskBar:{startDateField:`start`,endDateField:`start`,labelText:`{title}`,labelTextStyle:{fontSize:12,fontWeight:`bold`},barStyle:{width:0,barColor:`transparent`},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:2,fillColor:`#ffd666`,width:16}},timelineHeader:{colWidth:80,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},official:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`title`,width:180,sort:!0,tree:!0,editor:`input`},{field:`start`,title:`start`,width:120,sort:!0,editor:`date-input`},{field:`end`,title:`end`,width:120,sort:!0,editor:`date-input`},{field:`priority`,title:`priority`,width:80,sort:!0,editor:`input`},{field:`progress`,title:`progress`,width:80,sort:!0,editor:`input`}],tableWidth:460,minTableWidth:350,maxTableWidth:800,theme:{headerStyle:{...i.headerStyle,fontSize:18,color:`red`},bodyStyle:{...i.bodyStyle,fontSize:16,color:`#4D4D4D`}},hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3},horizontalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(99, 144, 0, 0.4)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:16,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#ee8800`,completedBarColor:`#91e8e0`,cornerRadius:8,borderLineWidth:1,borderColor:`black`},milestoneStyle:{borderColor:`red`,borderLineWidth:1,fillColor:`green`,width:15}},timelineHeader:{backgroundColor:`#EEF1F5`,colWidth:60,horizontalLine:{lineWidth:1,lineColor:`#e1e4e8`},verticalLine:{lineWidth:1,lineColor:`#e1e4e8`},scales:[{unit:`week`,step:1,startOfWeek:`sunday`,format:e=>`Week ${e.dateIndex}`,style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`,textStick:!0}},{unit:`day`,step:1,format:e=>e.dateIndex.toString(),style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`}}]},markLine:[{date:`2024-07-28`,style:{lineWidth:1,lineColor:`blue`,lineDash:[8,4]}},{date:`2024-08-17`,style:{lineWidth:2,lineColor:`red`,lineDash:[8,4]}}],rowSeriesNumber:{title:`行号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}}},o=new Set([`__proto__`,`prototype`,`constructor`]),s=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null};function c(e,t){let n=new WeakMap,r=(e,t)=>{let i=n.get(t);if(i)return i;let a={...e};n.set(t,a);for(let[n,i]of Object.entries(t))o.has(n)||(a[n]=s(i)?r(s(e[n])?e[n]:{},i):i);return a};return r(e,t)}function l(e,t,n){e.on(`click_task_bar`,e=>{e.record&&t(e.record,e.event)}),e.on(`change_date_range`,e=>{if(e.record){let t={start:e.startDate,end:e.endDate};n({...e.record,...t},t)}}),e.on(`progress_update`,e=>{if(e.record){let t={progress:e.progress};n({...e.record,...t},t)}});let r=e.taskListTableInstance;r&&(r.on(`click_cell`,e=>{let n=r.getCellOriginRecord(e.col,e.row);n&&typeof n==`object`&&`id`in n&&t(n,e.event)}),r.on(`change_cell_value`,e=>{let t=r.getCellOriginRecord(e.col,e.row),i=r.getHeaderField(e.col,e.row);t&&typeof i==`string`&&n({...t,[i]:e.changedValue},{[i]:e.changedValue})}))}const u={class:`c-vtable-gantt-wrapper`},d={key:0,class:`gantt-toolbar`},f={class:`toolbar-left`},p={class:`gantt-title`},m={class:`toolbar-right`},h=(0,n.defineComponent)({name:`C_VtableGantt`,__name:`index`,props:{data:{default:()=>[]},options:{default:()=>({})},preset:{default:`basic`},height:{default:`600px`},title:{default:``},showToolbar:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},theme:{default:`light`}},emits:[`ganttCreated`,`taskClick`,`taskChange`],setup(t,{expose:i,emit:o}){let s=t,h=o,g=(0,n.ref)(),_=(0,n.shallowRef)(),v=(0,n.ref)(!1),y=0,b,x,S=!1,C=(0,n.computed)(()=>typeof s.height==`number`?`${s.height}px`:s.height),w=(e,t)=>!S&&e===y&&g.value===t,T=e=>e.map(e=>({...e,title:e.title||`任务${e.id}`,children:e.children?T(e.children):void 0})),E=e=>({underlayBackgroundColor:e?`#1e1e1e`:`#ffffff`,timelineHeaderBg:e?`#2d2d2d`:`#EEF1F5`,gridBg:e?`#1e1e1e`:`#ffffff`,lineColor:e?`rgba(255, 255, 255, 0.1)`:`rgba(128, 128, 128, 0.2)`,textColor:e?`#ffffff`:`#000000`}),D=(e,t)=>({...e,backgroundColor:t.timelineHeaderBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor},scales:e?.scales?.map(e=>({...e,style:{...e.style,color:t.textColor}}))}),O=(e,t)=>({...e,backgroundColor:t.gridBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor}}),k=(e,t,n,r)=>({...e,records:t,underlayBackgroundColor:r.underlayBackgroundColor,taskListTable:{...e.taskListTable,theme:n.extends(e.taskListTable?.theme??{})},timelineHeader:D(e.timelineHeader,r),grid:O(e.grid,r)}),A=async()=>{clearTimeout(b),b=void 0;let e=g.value;if(!e||S)return;let t=++y;try{let{Gantt:n}=await import(`@visactor/vtable-gantt`),{themes:r,register:i}=await import(`@visactor/vtable`),{InputEditor:o,DateInputEditor:u}=await import(`@visactor/vtable-editors`);if(!w(t,e))return;i.editor(`input`)||i.editor(`input`,new o),i.editor(`date-input`)||i.editor(`date-input`,new u);let d=s.theme===`dark`,f=c(a[s.preset]||a.basic,s.options),p=T(s.data||[]);_.value&&_.value.release();let m=new n(e,k(f,p,d?r.DARK:r.DEFAULT,E(d)));if(!w(t,e)){m.release();return}_.value=m,l(m,(e,t)=>h(`taskClick`,e,t),(e,t)=>h(`taskChange`,e,t)),h(`ganttCreated`,m)}catch(e){console.error(`甘特图初始化失败:`,e)}},j=()=>{x&&clearTimeout(x),x=setTimeout(()=>{x=void 0,S||_.value?.resize?.()},100)},M=async()=>{let e=g.value;if(e)try{document.fullscreenElement===e?await document.exitFullscreen():await e.requestFullscreen(),v.value=document.fullscreenElement===e,j()}catch(t){console.warn(`全屏切换失败:`,t),v.value=document.fullscreenElement===e}},N=()=>{v.value=document.fullscreenElement===g.value,j()},P=e=>{if(_.value&&e)try{_.value.setRecords(T(e))}catch(e){console.warn(`更新数据失败:`,e)}},F=e=>{if(_.value&&e)try{_.value.updateOption(e)}catch(e){console.warn(`更新配置失败:`,e)}},I=()=>{if(_.value)try{_.value.release()}catch(e){console.warn(`销毁甘特图失败:`,e)}finally{_.value=void 0}};return(0,n.watch)(()=>s.data,e=>{e&&_.value&&P(e)},{deep:!0}),(0,n.watch)(()=>[s.options,s.preset,s.theme],()=>void A(),{deep:!0,flush:`post`}),(0,n.onMounted)(()=>{S=!1,document.addEventListener(`fullscreenchange`,N),(0,n.nextTick)(()=>{S||y>0||(b=setTimeout(()=>A(),100))})}),(0,n.onUnmounted)(()=>{S=!0,y+=1,b&&clearTimeout(b),x&&clearTimeout(x),document.removeEventListener(`fullscreenchange`,N),I()}),i({ganttInstance:_,updateData:P,updateOptions:F,toggleFullscreen:M}),(i,a)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[t.showToolbar?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,d,[(0,n.createElementVNode)(`div`,f,[(0,n.createElementVNode)(`span`,p,(0,n.toDisplayString)(t.title||`甘特图`),1)]),(0,n.createElementVNode)(`div`,m,[t.showFullscreenButton?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NButton),{key:0,size:`small`,onClick:M},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:v.value?`carbon:minimize`:`carbon:maximize`,size:16,color:`currentColor`},null,8,[`name`])]),default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` `+(0,n.toDisplayString)(v.value?`退出全屏`:`全屏`),1)]),_:1})):(0,n.createCommentVNode)(`v-if`,!0)])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createElementVNode)(`div`,{ref_key:`ganttContainerRef`,ref:g,class:`gantt-container`,style:(0,n.normalizeStyle)({height:C.value})},null,4)]))}});var g=t.t(h,[[`__scopeId`,`data-v-d89b5f44`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return g}});
|
package/dist/C_VtableGantt2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createTextVNode as s,createVNode as c,defineComponent as l,nextTick as u,normalizeStyle as d,onMounted as f,onUnmounted as p,openBlock as m,ref as h,toDisplayString as g,unref as _,watch as v,withCtx as y}from"vue";import{NButton as b}from"naive-ui";const x={headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:1,fontSize:14,fontWeight:`bold`},bodyStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:[1,0,1,0],fontSize:13}},S={basic:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:220,tree:!0},{field:`start`,title:`开始时间`,width:120},{field:`end`,title:`结束时间`,width:120},{field:`progress`,title:`进度`,width:80}],tableWidth:420,minTableWidth:300,theme:x},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`#e1e4e8`,cornerRadius:6},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:2}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:18,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:4,borderLineWidth:0},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:1,fillColor:`#ffd666`,width:12}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:12,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},project:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:200,tree:!0,editor:`input`},{field:`start`,title:`开始时间`,width:120,editor:`date-input`},{field:`end`,title:`结束时间`,width:120,editor:`date-input`},{field:`priority`,title:`优先级`,width:80,editor:`input`},{field:`progress`,title:`进度%`,width:80,editor:`input`}],tableWidth:480,minTableWidth:350,maxTableWidth:800,theme:x,hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(24, 144, 255, 0.3)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:12,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:6,borderLineWidth:0}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,startOfWeek:`monday`,format:e=>`第${e.dateIndex}周`,style:{fontSize:13,fontWeight:`bold`,textAlign:`center`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11,textAlign:`center`}}]},rowSeriesNumber:{title:`序号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},timeline:{overscrollBehavior:`none`,headerRowHeight:45,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`事件名称`,width:250,tree:!0},{field:`start`,title:`时间`,width:150}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...x.headerStyle},bodyStyle:x.bodyStyle}},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`rgba(128, 128, 128, 0.3)`,cornerRadius:4},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:22,barColor:`#722ed1`,completedBarColor:`#b37feb`,cornerRadius:8,borderLineWidth:0}},timelineHeader:{colWidth:60,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},milestone:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:38,taskListTable:{columns:[{field:`title`,title:`里程碑`,width:200,tree:!0},{field:`start`,title:`目标日期`,width:120},{field:`priority`,title:`重要性`,width:100}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...x.headerStyle,borderColor:`#ffa940`},bodyStyle:{...x.bodyStyle,borderColor:`#ffa940`}}},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#ffa940`,cornerRadius:6},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`},horizontalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`}},taskBar:{startDateField:`start`,endDateField:`start`,labelText:`{title}`,labelTextStyle:{fontSize:12,fontWeight:`bold`},barStyle:{width:0,barColor:`transparent`},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:2,fillColor:`#ffd666`,width:16}},timelineHeader:{colWidth:80,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},official:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`title`,width:180,sort:!0,tree:!0,editor:`input`},{field:`start`,title:`start`,width:120,sort:!0,editor:`date-input`},{field:`end`,title:`end`,width:120,sort:!0,editor:`date-input`},{field:`priority`,title:`priority`,width:80,sort:!0,editor:`input`},{field:`progress`,title:`progress`,width:80,sort:!0,editor:`input`}],tableWidth:460,minTableWidth:350,maxTableWidth:800,theme:{headerStyle:{...x.headerStyle,fontSize:18,color:`red`},bodyStyle:{...x.bodyStyle,fontSize:16,color:`#4D4D4D`}},hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3},horizontalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(99, 144, 0, 0.4)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:16,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#ee8800`,completedBarColor:`#91e8e0`,cornerRadius:8,borderLineWidth:1,borderColor:`black`},milestoneStyle:{borderColor:`red`,borderLineWidth:1,fillColor:`green`,width:15}},timelineHeader:{backgroundColor:`#EEF1F5`,colWidth:60,horizontalLine:{lineWidth:1,lineColor:`#e1e4e8`},verticalLine:{lineWidth:1,lineColor:`#e1e4e8`},scales:[{unit:`week`,step:1,startOfWeek:`sunday`,format:e=>`Week ${e.dateIndex}`,style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`,textStick:!0}},{unit:`day`,step:1,format:e=>e.dateIndex.toString(),style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`}}]},markLine:[{date:`2024-07-28`,style:{lineWidth:1,lineColor:`blue`,lineDash:[8,4]}},{date:`2024-08-17`,style:{lineWidth:2,lineColor:`red`,lineDash:[8,4]}}],rowSeriesNumber:{title:`行号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}}},C=new Set([`__proto__`,`prototype`,`constructor`]),w=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null};function T(e,t){let n=new WeakMap,r=(e,t)=>{let i=n.get(t);if(i)return i;let a={...e};n.set(t,a);for(let[n,i]of Object.entries(t))C.has(n)||(a[n]=w(i)?r(w(e[n])?e[n]:{},i):i);return a};return r(e,t)}const E={class:`c-vtable-gantt-wrapper`},D={key:0,class:`gantt-toolbar`},O={class:`toolbar-left`},k={class:`gantt-title`},A={class:`toolbar-right`};var j=t(l({name:`C_VtableGantt`,__name:`index`,props:{data:{default:()=>[]},options:{default:()=>({})},preset:{default:`basic`},height:{default:`600px`},title:{default:``},showToolbar:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},theme:{default:`light`}},emits:[`ganttCreated`,`taskClick`,`taskChange`],setup(t,{expose:l,emit:x}){let C=t,w=x,j=h(),M=h(),N=h(!1),P=0,F,I,L=!1,R=n(()=>typeof C.height==`number`?`${C.height}px`:C.height),z=(e,t)=>!L&&e===P&&j.value===t,B=e=>e.map(e=>({...e,title:e.title||`任务${e.id}`,children:e.children?B(e.children):void 0})),V=e=>({underlayBackgroundColor:e?`#1e1e1e`:`#ffffff`,timelineHeaderBg:e?`#2d2d2d`:`#EEF1F5`,gridBg:e?`#1e1e1e`:`#ffffff`,lineColor:e?`rgba(255, 255, 255, 0.1)`:`rgba(128, 128, 128, 0.2)`,textColor:e?`#ffffff`:`#000000`}),H=(e,t)=>({...e,backgroundColor:t.timelineHeaderBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor},scales:e?.scales?.map(e=>({...e,style:{...e.style,color:t.textColor}}))}),U=(e,t)=>({...e,backgroundColor:t.gridBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor}}),W=(e,t,n,r)=>({...e,records:t,underlayBackgroundColor:r.underlayBackgroundColor,taskListTable:{...e.taskListTable,theme:n},timelineHeader:H(e.timelineHeader,r),grid:U(e.grid,r)}),G=e=>{e.on(`click_cell`,e=>{let{record:t,event:n}=e||{};t&&w(`taskClick`,t,n)}),e.on(`change_data`,e=>{let{record:t,changes:n}=e||{};t&&n&&w(`taskChange`,t,n)})},K=async()=>{let e=j.value;if(!e||L)return;let t=++P;try{let{Gantt:n}=await import(`@visactor/vtable-gantt`),{themes:r}=await import(`@visactor/vtable`);if(!z(t,e))return;let i=C.theme===`dark`,a=T(S[C.preset]||S.basic,C.options),o=B(C.data||[]);M.value&&M.value.release();let s=new n(e,W(a,o,i?r.DARK:r.DEFAULT,V(i)));if(!z(t,e)){s.release();return}M.value=s,G(s),w(`ganttCreated`,s)}catch(e){console.error(`甘特图初始化失败:`,e)}},q=()=>{I&&clearTimeout(I),I=setTimeout(()=>{I=void 0,L||M.value?.resize?.()},100)},J=async()=>{let e=j.value;if(e)try{document.fullscreenElement===e?await document.exitFullscreen():await e.requestFullscreen(),N.value=document.fullscreenElement===e,q()}catch(t){console.warn(`全屏切换失败:`,t),N.value=document.fullscreenElement===e}},Y=()=>{N.value=document.fullscreenElement===j.value,q()},X=e=>{if(M.value&&e)try{M.value.setRecords(B(e))}catch(e){console.warn(`更新数据失败:`,e)}},Z=e=>{if(M.value&&e)try{M.value.updateOption(e)}catch(e){console.warn(`更新配置失败:`,e)}},Q=()=>{if(M.value)try{M.value.release()}catch(e){console.warn(`销毁甘特图失败:`,e)}finally{M.value=void 0}};return v(()=>C.data,e=>{e&&M.value&&X(e)},{deep:!0}),v(()=>[C.options,C.preset],()=>u(()=>K()),{deep:!0}),v(()=>C.theme,()=>u(()=>K())),f(()=>{L=!1,document.addEventListener(`fullscreenchange`,Y),u(()=>{L||(F=setTimeout(()=>K(),100))})}),p(()=>{L=!0,P+=1,F&&clearTimeout(F),I&&clearTimeout(I),document.removeEventListener(`fullscreenchange`,Y),Q()}),l({ganttInstance:M,updateData:X,updateOptions:Z,toggleFullscreen:J}),(n,l)=>(m(),a(`div`,E,[t.showToolbar?(m(),a(`div`,D,[o(`div`,O,[o(`span`,k,g(t.title||`甘特图`),1)]),o(`div`,A,[t.showFullscreenButton?(m(),r(_(b),{key:0,size:`small`,onClick:J},{icon:y(()=>[c(e,{name:N.value?`carbon:minimize`:`carbon:maximize`,size:16,color:`currentColor`},null,8,[`name`])]),default:y(()=>[s(` `+g(N.value?`退出全屏`:`全屏`),1)]),_:1})):i(`v-if`,!0)])])):i(`v-if`,!0),o(`div`,{ref_key:`ganttContainerRef`,ref:j,class:`gantt-container`,style:d({height:R.value})},null,4)]))}}),[[`__scopeId`,`data-v-7145fd81`]]);export{S as n,j as t};
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createTextVNode as s,createVNode as c,defineComponent as l,nextTick as u,normalizeStyle as d,onMounted as f,onUnmounted as p,openBlock as m,ref as h,shallowRef as g,toDisplayString as _,unref as v,watch as y,withCtx as b}from"vue";import{NButton as x}from"naive-ui";const S={headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:1,fontSize:14,fontWeight:`bold`},bodyStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:[1,0,1,0],fontSize:13}},C={basic:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:220,tree:!0},{field:`start`,title:`开始时间`,width:120},{field:`end`,title:`结束时间`,width:120},{field:`progress`,title:`进度`,width:80}],tableWidth:420,minTableWidth:300,theme:S},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`#e1e4e8`,cornerRadius:6},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:2}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:18,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:4,borderLineWidth:0},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:1,fillColor:`#ffd666`,width:12}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:12,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},project:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:200,tree:!0,editor:`input`},{field:`start`,title:`开始时间`,width:120,editor:`date-input`},{field:`end`,title:`结束时间`,width:120,editor:`date-input`},{field:`priority`,title:`优先级`,width:80,editor:`input`},{field:`progress`,title:`进度%`,width:80,editor:`input`}],tableWidth:480,minTableWidth:350,maxTableWidth:800,theme:S,hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(24, 144, 255, 0.3)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:12,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:6,borderLineWidth:0}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,startOfWeek:`monday`,format:e=>`第${e.dateIndex}周`,style:{fontSize:13,fontWeight:`bold`,textAlign:`center`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11,textAlign:`center`}}]},rowSeriesNumber:{title:`序号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},timeline:{overscrollBehavior:`none`,headerRowHeight:45,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`事件名称`,width:250,tree:!0},{field:`start`,title:`时间`,width:150}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...S.headerStyle},bodyStyle:S.bodyStyle}},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`rgba(128, 128, 128, 0.3)`,cornerRadius:4},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:22,barColor:`#722ed1`,completedBarColor:`#b37feb`,cornerRadius:8,borderLineWidth:0}},timelineHeader:{colWidth:60,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},milestone:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:38,taskListTable:{columns:[{field:`title`,title:`里程碑`,width:200,tree:!0},{field:`start`,title:`目标日期`,width:120},{field:`priority`,title:`重要性`,width:100}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...S.headerStyle,borderColor:`#ffa940`},bodyStyle:{...S.bodyStyle,borderColor:`#ffa940`}}},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#ffa940`,cornerRadius:6},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`},horizontalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`}},taskBar:{startDateField:`start`,endDateField:`start`,labelText:`{title}`,labelTextStyle:{fontSize:12,fontWeight:`bold`},barStyle:{width:0,barColor:`transparent`},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:2,fillColor:`#ffd666`,width:16}},timelineHeader:{colWidth:80,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},official:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`title`,width:180,sort:!0,tree:!0,editor:`input`},{field:`start`,title:`start`,width:120,sort:!0,editor:`date-input`},{field:`end`,title:`end`,width:120,sort:!0,editor:`date-input`},{field:`priority`,title:`priority`,width:80,sort:!0,editor:`input`},{field:`progress`,title:`progress`,width:80,sort:!0,editor:`input`}],tableWidth:460,minTableWidth:350,maxTableWidth:800,theme:{headerStyle:{...S.headerStyle,fontSize:18,color:`red`},bodyStyle:{...S.bodyStyle,fontSize:16,color:`#4D4D4D`}},hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3},horizontalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(99, 144, 0, 0.4)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:16,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#ee8800`,completedBarColor:`#91e8e0`,cornerRadius:8,borderLineWidth:1,borderColor:`black`},milestoneStyle:{borderColor:`red`,borderLineWidth:1,fillColor:`green`,width:15}},timelineHeader:{backgroundColor:`#EEF1F5`,colWidth:60,horizontalLine:{lineWidth:1,lineColor:`#e1e4e8`},verticalLine:{lineWidth:1,lineColor:`#e1e4e8`},scales:[{unit:`week`,step:1,startOfWeek:`sunday`,format:e=>`Week ${e.dateIndex}`,style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`,textStick:!0}},{unit:`day`,step:1,format:e=>e.dateIndex.toString(),style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`}}]},markLine:[{date:`2024-07-28`,style:{lineWidth:1,lineColor:`blue`,lineDash:[8,4]}},{date:`2024-08-17`,style:{lineWidth:2,lineColor:`red`,lineDash:[8,4]}}],rowSeriesNumber:{title:`行号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}}},w=new Set([`__proto__`,`prototype`,`constructor`]),T=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null};function E(e,t){let n=new WeakMap,r=(e,t)=>{let i=n.get(t);if(i)return i;let a={...e};n.set(t,a);for(let[n,i]of Object.entries(t))w.has(n)||(a[n]=T(i)?r(T(e[n])?e[n]:{},i):i);return a};return r(e,t)}function D(e,t,n){e.on(`click_task_bar`,e=>{e.record&&t(e.record,e.event)}),e.on(`change_date_range`,e=>{if(e.record){let t={start:e.startDate,end:e.endDate};n({...e.record,...t},t)}}),e.on(`progress_update`,e=>{if(e.record){let t={progress:e.progress};n({...e.record,...t},t)}});let r=e.taskListTableInstance;r&&(r.on(`click_cell`,e=>{let n=r.getCellOriginRecord(e.col,e.row);n&&typeof n==`object`&&`id`in n&&t(n,e.event)}),r.on(`change_cell_value`,e=>{let t=r.getCellOriginRecord(e.col,e.row),i=r.getHeaderField(e.col,e.row);t&&typeof i==`string`&&n({...t,[i]:e.changedValue},{[i]:e.changedValue})}))}const O={class:`c-vtable-gantt-wrapper`},k={key:0,class:`gantt-toolbar`},A={class:`toolbar-left`},j={class:`gantt-title`},M={class:`toolbar-right`};var N=t(l({name:`C_VtableGantt`,__name:`index`,props:{data:{default:()=>[]},options:{default:()=>({})},preset:{default:`basic`},height:{default:`600px`},title:{default:``},showToolbar:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},theme:{default:`light`}},emits:[`ganttCreated`,`taskClick`,`taskChange`],setup(t,{expose:l,emit:S}){let w=t,T=S,N=h(),P=g(),F=h(!1),I=0,L,R,z=!1,B=n(()=>typeof w.height==`number`?`${w.height}px`:w.height),V=(e,t)=>!z&&e===I&&N.value===t,H=e=>e.map(e=>({...e,title:e.title||`任务${e.id}`,children:e.children?H(e.children):void 0})),U=e=>({underlayBackgroundColor:e?`#1e1e1e`:`#ffffff`,timelineHeaderBg:e?`#2d2d2d`:`#EEF1F5`,gridBg:e?`#1e1e1e`:`#ffffff`,lineColor:e?`rgba(255, 255, 255, 0.1)`:`rgba(128, 128, 128, 0.2)`,textColor:e?`#ffffff`:`#000000`}),W=(e,t)=>({...e,backgroundColor:t.timelineHeaderBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor},scales:e?.scales?.map(e=>({...e,style:{...e.style,color:t.textColor}}))}),G=(e,t)=>({...e,backgroundColor:t.gridBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor}}),K=(e,t,n,r)=>({...e,records:t,underlayBackgroundColor:r.underlayBackgroundColor,taskListTable:{...e.taskListTable,theme:n.extends(e.taskListTable?.theme??{})},timelineHeader:W(e.timelineHeader,r),grid:G(e.grid,r)}),q=async()=>{clearTimeout(L),L=void 0;let e=N.value;if(!e||z)return;let t=++I;try{let{Gantt:n}=await import(`@visactor/vtable-gantt`),{themes:r,register:i}=await import(`@visactor/vtable`),{InputEditor:a,DateInputEditor:o}=await import(`@visactor/vtable-editors`);if(!V(t,e))return;i.editor(`input`)||i.editor(`input`,new a),i.editor(`date-input`)||i.editor(`date-input`,new o);let s=w.theme===`dark`,c=E(C[w.preset]||C.basic,w.options),l=H(w.data||[]);P.value&&P.value.release();let u=new n(e,K(c,l,s?r.DARK:r.DEFAULT,U(s)));if(!V(t,e)){u.release();return}P.value=u,D(u,(e,t)=>T(`taskClick`,e,t),(e,t)=>T(`taskChange`,e,t)),T(`ganttCreated`,u)}catch(e){console.error(`甘特图初始化失败:`,e)}},J=()=>{R&&clearTimeout(R),R=setTimeout(()=>{R=void 0,z||P.value?.resize?.()},100)},Y=async()=>{let e=N.value;if(e)try{document.fullscreenElement===e?await document.exitFullscreen():await e.requestFullscreen(),F.value=document.fullscreenElement===e,J()}catch(t){console.warn(`全屏切换失败:`,t),F.value=document.fullscreenElement===e}},X=()=>{F.value=document.fullscreenElement===N.value,J()},Z=e=>{if(P.value&&e)try{P.value.setRecords(H(e))}catch(e){console.warn(`更新数据失败:`,e)}},Q=e=>{if(P.value&&e)try{P.value.updateOption(e)}catch(e){console.warn(`更新配置失败:`,e)}},$=()=>{if(P.value)try{P.value.release()}catch(e){console.warn(`销毁甘特图失败:`,e)}finally{P.value=void 0}};return y(()=>w.data,e=>{e&&P.value&&Z(e)},{deep:!0}),y(()=>[w.options,w.preset,w.theme],()=>void q(),{deep:!0,flush:`post`}),f(()=>{z=!1,document.addEventListener(`fullscreenchange`,X),u(()=>{z||I>0||(L=setTimeout(()=>q(),100))})}),p(()=>{z=!0,I+=1,L&&clearTimeout(L),R&&clearTimeout(R),document.removeEventListener(`fullscreenchange`,X),$()}),l({ganttInstance:P,updateData:Z,updateOptions:Q,toggleFullscreen:Y}),(n,l)=>(m(),a(`div`,O,[t.showToolbar?(m(),a(`div`,k,[o(`div`,A,[o(`span`,j,_(t.title||`甘特图`),1)]),o(`div`,M,[t.showFullscreenButton?(m(),r(v(x),{key:0,size:`small`,onClick:Y},{icon:b(()=>[c(e,{name:F.value?`carbon:minimize`:`carbon:maximize`,size:16,color:`currentColor`},null,8,[`name`])]),default:b(()=>[s(` `+_(F.value?`退出全屏`:`全屏`),1)]),_:1})):i(`v-if`,!0)])])):i(`v-if`,!0),o(`div`,{ref_key:`ganttContainerRef`,ref:N,class:`gantt-container`,style:d({height:B.value})},null,4)]))}}),[[`__scopeId`,`data-v-d89b5f44`]]);export{C as n,N as t};
|
package/dist/C_WaterFall.css
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
:root{--c-primary: var(--primary-color, #2080f0);--c-primary-hover: var(--primary-color-hover, #4098fc);--c-primary-pressed: var(--primary-color-pressed, #1060c9);--c-success: var(--success-color, #18a058);--c-warning: var(--warning-color, #f0a020);--c-error: var(--error-color, #d03050);--c-info: var(--info-color, #2080f0);--c-bg-body: var(--body-color, #ffffff);--c-bg-card: var(--card-color, #ffffff);--c-bg-surface: var(--popover-color, #ffffff);--c-text-1: var(--text-color-1, #262626);--c-text-2: var(--text-color-2, #525252);--c-text-3: var(--text-color-3, #a3a3a3);--c-text-4: var(--text-color-4, #c0c0c0);--c-border: var(--border-color, #e5e7eb);--c-radius-sm: var(--border-radius-small, 4px);--c-radius: var(--border-radius, 6px);--c-transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);--c-transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);--c-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);--c-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);--c-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1)}
|
|
2
2
|
|
|
3
|
-
.c-waterfall[data-v-
|
|
3
|
+
.c-waterfall[data-v-4df42989] {
|
|
4
4
|
width: 100%;
|
|
5
5
|
}
|
|
6
|
-
.waterfall__body[data-v-
|
|
6
|
+
.waterfall__body[data-v-4df42989] {
|
|
7
7
|
overflow: hidden;
|
|
8
8
|
}
|
|
9
|
-
.waterfall__item[data-v-
|
|
9
|
+
.waterfall__item[data-v-4df42989] {
|
|
10
10
|
cursor: pointer;
|
|
11
11
|
}
|
|
12
|
-
.waterfall__item[data-v-
|
|
12
|
+
.waterfall__item[data-v-4df42989]:focus-visible {
|
|
13
13
|
outline: 2px solid var(--primary-color, #2080f0);
|
|
14
14
|
outline-offset: 2px;
|
|
15
15
|
}
|
|
16
|
-
.waterfall__card[data-v-
|
|
16
|
+
.waterfall__card[data-v-4df42989] {
|
|
17
17
|
overflow: hidden;
|
|
18
18
|
border-radius: 8px;
|
|
19
19
|
border: 1px solid var(--border-color);
|
|
@@ -21,36 +21,36 @@
|
|
|
21
21
|
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
|
|
22
22
|
transition: box-shadow 0.2s ease, transform 0.2s ease;
|
|
23
23
|
}
|
|
24
|
-
.waterfall__card[data-v-
|
|
24
|
+
.waterfall__card[data-v-4df42989]:hover {
|
|
25
25
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
|
|
26
26
|
transform: translateY(-2px);
|
|
27
27
|
}
|
|
28
|
-
.waterfall__image[data-v-
|
|
28
|
+
.waterfall__image[data-v-4df42989] {
|
|
29
29
|
display: block;
|
|
30
30
|
width: 100%;
|
|
31
31
|
object-fit: cover;
|
|
32
32
|
background: var(--body-color);
|
|
33
33
|
}
|
|
34
|
-
.waterfall__title[data-v-
|
|
34
|
+
.waterfall__title[data-v-4df42989] {
|
|
35
35
|
padding: 10px 12px;
|
|
36
36
|
font-size: 13px;
|
|
37
37
|
line-height: 1.5;
|
|
38
38
|
color: var(--text-color-1);
|
|
39
39
|
word-break: break-all;
|
|
40
40
|
}
|
|
41
|
-
.waterfall__skeleton[data-v-
|
|
41
|
+
.waterfall__skeleton[data-v-4df42989] {
|
|
42
42
|
overflow: hidden;
|
|
43
43
|
border-radius: 8px;
|
|
44
44
|
}
|
|
45
|
-
.waterfall__skeleton-inner[data-v-
|
|
45
|
+
.waterfall__skeleton-inner[data-v-4df42989] {
|
|
46
46
|
width: 100%;
|
|
47
47
|
height: 100%;
|
|
48
48
|
border-radius: 8px;
|
|
49
49
|
background: linear-gradient(90deg, var(--body-color) 25%, color-mix(in srgb, var(--body-color) 80%, var(--border-color)) 37%, var(--body-color) 63%);
|
|
50
50
|
background-size: 400% 100%;
|
|
51
|
-
animation: shimmer-
|
|
51
|
+
animation: shimmer-4df42989 1.4s ease infinite;
|
|
52
52
|
}
|
|
53
|
-
@keyframes shimmer-
|
|
53
|
+
@keyframes shimmer-4df42989 {
|
|
54
54
|
0% {
|
|
55
55
|
background-position: 100% 50%;
|
|
56
56
|
}
|
|
@@ -58,35 +58,35 @@
|
|
|
58
58
|
background-position: 0 50%;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
.waterfall__footer[data-v-
|
|
61
|
+
.waterfall__footer[data-v-4df42989] {
|
|
62
62
|
padding: 24px 0;
|
|
63
63
|
text-align: center;
|
|
64
64
|
}
|
|
65
|
-
.waterfall__sentinel[data-v-
|
|
65
|
+
.waterfall__sentinel[data-v-4df42989] {
|
|
66
66
|
height: 1px;
|
|
67
67
|
}
|
|
68
|
-
.waterfall__status[data-v-
|
|
68
|
+
.waterfall__status[data-v-4df42989] {
|
|
69
69
|
display: inline-flex;
|
|
70
70
|
gap: 8px;
|
|
71
71
|
align-items: center;
|
|
72
72
|
font-size: 13px;
|
|
73
73
|
color: var(--text-color-3);
|
|
74
74
|
}
|
|
75
|
-
.waterfall__status--done[data-v-
|
|
75
|
+
.waterfall__status--done[data-v-4df42989] {
|
|
76
76
|
color: var(--text-color-4);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
/* layer: default */
|
|
80
|
-
.absolute[data-v-
|
|
81
|
-
.relative[data-v-
|
|
82
|
-
.ms[data-v-
|
|
83
|
-
.block[data-v-
|
|
84
|
-
.hidden[data-v-
|
|
85
|
-
.inline-flex[data-v-
|
|
86
|
-
.transform[data-v-
|
|
87
|
-
.break-all[data-v-
|
|
88
|
-
.border[data-v-
|
|
89
|
-
.px[data-v-
|
|
90
|
-
.outline[data-v-
|
|
91
|
-
.transition[data-v-
|
|
92
|
-
.ease[data-v-
|
|
80
|
+
.absolute[data-v-4df42989]{position:absolute;}
|
|
81
|
+
.relative[data-v-4df42989]{position:relative;}
|
|
82
|
+
.ms[data-v-4df42989]{margin-inline-start:1rem;}
|
|
83
|
+
.block[data-v-4df42989]{display:block;}
|
|
84
|
+
.hidden[data-v-4df42989]{display:none;}
|
|
85
|
+
.inline-flex[data-v-4df42989]{display:inline-flex;}
|
|
86
|
+
.transform[data-v-4df42989]{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}
|
|
87
|
+
.break-all[data-v-4df42989]{word-break:break-all;}
|
|
88
|
+
.border[data-v-4df42989]{border-width:1px;}
|
|
89
|
+
.px[data-v-4df42989]{padding-left:1rem;padding-right:1rem;}
|
|
90
|
+
.outline[data-v-4df42989]{outline-style:solid;}
|
|
91
|
+
.transition[data-v-4df42989]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
|
|
92
|
+
.ease[data-v-4df42989]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
|
package/dist/C_WaterFall2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./export-helper.cjs`);let t=require(`vue`),n=require(`naive-ui`);const r=[{minWidth:1600,columns:6},{minWidth:1200,columns:5},{minWidth:992,columns:4},{minWidth:768,columns:3},{minWidth:480,columns:2},{minWidth:0,columns:1}],i=[180,360];function a(e,n,i){let a=(0,t.ref)(4),o=(0,t.ref)(0);function s(e){if(n?.value&&n.value>0)return n.value;let t=[...i?.value?.length?i.value:r].sort((e,t)=>t.minWidth-e.minWidth);for(let n of t)if(e>=n.minWidth)return n.columns;return 1}let c=null;function l(){let t=e.value;if(!t)return;c=new ResizeObserver(e=>{for(let t of e){let{width:e}=t.contentRect;o.value=e,a.value=s(e)}}),c.observe(t);let n=t.getBoundingClientRect();o.value=n.width,a.value=s(n.width)}function u(){c?.disconnect(),c=null}return(0,t.onMounted)(l),(0,t.onBeforeUnmount)(u),(0,t.watch)(e,()=>{u(),l()}),(0,t.watch)([()=>n?.value,()=>i?.value],()=>{o.value>0&&(a.value=s(o.value))}),{columns:(0,t.readonly)(a),containerWidth:(0,t.readonly)(o)}}function o(e,n,r,i){let
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./export-helper.cjs`);let t=require(`vue`),n=require(`naive-ui`);const r=[{minWidth:1600,columns:6},{minWidth:1200,columns:5},{minWidth:992,columns:4},{minWidth:768,columns:3},{minWidth:480,columns:2},{minWidth:0,columns:1}],i=[180,360];function a(e,n,i){let a=(0,t.ref)(4),o=(0,t.ref)(0);function s(e){if(n?.value&&n.value>0)return n.value;let t=[...i?.value?.length?i.value:r].sort((e,t)=>t.minWidth-e.minWidth);for(let n of t)if(e>=n.minWidth)return n.columns;return 1}let c=null;function l(){let t=e.value;if(!t)return;c=new ResizeObserver(e=>{for(let t of e){let{width:e}=t.contentRect;o.value=e,a.value=s(e)}}),c.observe(t);let n=t.getBoundingClientRect();o.value=n.width,a.value=s(n.width)}function u(){c?.disconnect(),c=null}return(0,t.onMounted)(l),(0,t.onBeforeUnmount)(u),(0,t.watch)(e,()=>{u(),l()}),(0,t.watch)([()=>n?.value,()=>i?.value],()=>{o.value>0&&(a.value=s(o.value))}),{columns:(0,t.readonly)(a),containerWidth:(0,t.readonly)(o)}}function o(e,n,r,i,a={}){let o=(0,t.ref)([]),s=(0,t.ref)(0),c=new Map,l=new Map,u=(0,t.computed)(()=>new Map(e.value.map(e=>[e.id,e.src]))),d,f=!1,p=()=>{d!==void 0&&cancelAnimationFrame(d),d=void 0};(0,t.getCurrentScope)()&&(0,t.onScopeDispose)(()=>{f=!0,p(),l.clear(),c.clear()});let m=()=>{if(!f){if(!a.batchImageLoads||typeof requestAnimationFrame>`u`){C();return}d===void 0&&(d=requestAnimationFrame(()=>{d=void 0,C()}))}};function h(e,t,n){let r=e/t;return Number.isFinite(r)&&r>0?r*n:n}function g(e,t){let n=l.get(e.id),r=n?.src&&n.src!==e.src?void 0:n;return r&&!r.basisWidth?r.height:r?.basisWidth?h(r.height,r.basisWidth,t):h(e.height,e.width,t)}function _(){o.value=[],s.value=0,e.value.length===0&&(l.clear(),c.clear())}function v(t,n,r){return Number.isFinite(t)&&Number.isFinite(n)&&Number.isFinite(r)&&n>0&&e.value.length>0}function y(e,t,n,r){if(f||r!==void 0&&u.value.get(e)!==r||!b(t,n))return;let i=l.get(e);i?.height===t&&i.basisWidth===n&&i.src===r||(l.set(e,{height:t,basisWidth:n,src:r}),m())}function b(e,t){return Number.isFinite(e)&&e>0&&(t===void 0||Number.isFinite(t)&&t>0)}function x(e,t){f||!u.value.has(e)||!Number.isFinite(t)||Math.abs((c.get(e)??0)-t)<.5||(c.set(e,t),m())}function S(e){for(let t of[l,c])for(let n of t.keys())e.has(n)||t.delete(n)}function C(){if(p(),f)return;let t=Math.min(24,Math.max(1,Math.floor(n.value))),a=r.value,l=Math.max(0,i.value??16);if(!v(t,a,l)){_();return}let u=(a-(t-1)*l)/t;if(u<=0){_();return}let d=Array.from({length:t},(e,t)=>({index:t,height:0})),m=[],h=new Set;for(let t of e.value){h.add(t.id);let e=d.reduce((e,t)=>t.height<e.height?t:e),n=g(t,u),r=e.index*(u+l),i=e.height;m.push({item:t,columnIndex:e.index,x:r,y:i,width:u,height:n}),e.height=i+n+(c.get(t.id)??0)+l}S(h),o.value=m,s.value=Math.max(...d.map(e=>e.height))-l}return(0,t.watch)([e,()=>e.value.length,n,r,i],C,{immediate:!0}),{layoutItems:(0,t.readonly)(o),containerHeight:(0,t.readonly)(s),cacheImageHeight:y,cacheItemExtraHeight:x,relayout:C}}function s(e,n,r,i,a){let o=(0,t.ref)(`idle`),s=null,c=!1;function l(e){if(!e[0]?.isIntersecting){c=!1;return}!n.value||r.value||i.value||c||(c=!0,o.value=`loading`,a())}function u(){let t=e.value;!t||!n.value||(s=new IntersectionObserver(l,{rootMargin:`200px 0px`}),s.observe(t))}function d(){s?.disconnect(),s=null,c=!1}return(0,t.watch)([r,i],()=>{i.value?o.value=`no-more`:r.value?o.value=`loading`:(o.value=`idle`,c=!1)}),(0,t.onMounted)(u),(0,t.onBeforeUnmount)(d),(0,t.watch)([e,n],()=>{d(),u()}),{status:(0,t.readonly)(o)}}const c=[`aria-label`,`onClick`,`onKeydown`],l={class:`waterfall__card`},u=[`src`,`alt`,`loading`,`onLoad`,`onError`],d={key:0,class:`waterfall__title`},f={key:0,class:`waterfall__footer`},p={key:0,class:`waterfall__status`},m={key:1,class:`waterfall__status waterfall__status--done`},h=(0,t.defineComponent)({name:`C_WaterFall`,__name:`index`,props:{items:{},columns:{default:void 0},gap:{default:16},lazy:{type:Boolean,default:!0},infinite:{type:Boolean,default:!1},skeleton:{type:Boolean,default:!0},skeletonCount:{default:8},animationDuration:{default:300},breakpoints:{default:void 0},loading:{type:Boolean,default:!1},noMore:{type:Boolean,default:!1}},emits:[`load-more`,`item-click`,`image-loaded`,`image-error`],setup(e,{expose:r,emit:h}){let g=e,_=h,v=(0,t.ref)(),y=(0,t.ref)(),{columns:b,containerWidth:x}=a(v,(0,t.computed)(()=>g.columns),(0,t.computed)(()=>g.breakpoints)),{layoutItems:S,containerHeight:C,cacheImageHeight:w,cacheItemExtraHeight:T,relayout:E}=o((0,t.computed)(()=>g.items),b,x,(0,t.computed)(()=>g.gap),{batchImageLoads:!0}),D=new Map,O=new Map,k=(0,t.computed)(()=>new Map(S.value.map(e=>[e.item.id,e]))),A=typeof ResizeObserver>`u`?null:new ResizeObserver(e=>{for(let t of e){let e=D.get(t.target),n=e===void 0?void 0:k.value.get(e);n&&T(n.item.id,t.target.getBoundingClientRect().height-n.height)}});function j(e,t){let n=O.get(t);n!==e&&(n&&(A?.unobserve(n),D.delete(n),O.delete(t)),e instanceof HTMLElement&&(O.set(t,e),D.set(e,t),A?.observe(e)))}(0,t.onUnmounted)(()=>{A?.disconnect(),D.clear(),O.clear()});let M=(0,t.computed)(()=>g.skeleton&&g.loading&&S.value.length===0),N=(0,t.computed)(()=>{let e=Math.min(24,Math.max(1,Math.floor(b.value))),t=x.value,n=Math.max(0,g.gap);if(!Number.isFinite(e)||t<=0)return[];let r=(t-(e-1)*n)/e;if(r<=0)return[];let a=Math.min(100,Math.max(0,Math.floor(g.skeletonCount??8))),o=Array(e).fill(0),s=[];for(let e=0;e<a;e++){let t=o.indexOf(Math.min(...o)),a=i[0]+e*73%(i[1]-i[0]);s.push({x:t*(r+n),y:o[t],width:r,height:a}),o[t]+=a+n}return s}),P=(0,t.computed)(()=>N.value.length===0?0:Math.max(...N.value.map(e=>e.y+e.height))),F=(0,t.computed)(()=>M.value?P.value:C.value),{status:I}=s(y,(0,t.computed)(()=>g.infinite),(0,t.computed)(()=>g.loading),(0,t.computed)(()=>g.noMore),()=>_(`load-more`));function L(e,t){let n=t.target;if(n.getAttribute(`src`)===e.item.src){if(n.naturalHeight&&n.naturalWidth){let t=n.naturalHeight/n.naturalWidth*e.width;w(e.item.id,t,e.width,e.item.src)}_(`image-loaded`,e.item)}}function R(e){_(`image-error`,e.item)}function z(){v.value?.scrollIntoView({behavior:`smooth`,block:`start`})}return r({relayout:E,scrollToTop:z,getColumns:()=>b.value,getContainerHeight:()=>C.value}),(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{ref_key:`containerRef`,ref:v,class:`c-waterfall`},[(0,t.createElementVNode)(`div`,{class:`waterfall__body`,style:(0,t.normalizeStyle)({height:`${F.value}px`,position:`relative`})},[M.value?((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,{key:0},(0,t.renderList)(N.value,(n,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:`sk-${i}`,class:`waterfall__skeleton`,style:(0,t.normalizeStyle)({position:`absolute`,left:`${n.x}px`,top:`${n.y}px`,width:`${n.width}px`,height:`${n.height}px`,transition:`all ${g.animationDuration??(0,t.unref)(300)}ms ease`})},[(0,t.renderSlot)(e.$slots,`skeleton`,{},()=>[r[0]||=(0,t.createElementVNode)(`div`,{class:`waterfall__skeleton-inner`},null,-1)],!0)],4))),128)):(0,t.createCommentVNode)(`v-if`,!0),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((0,t.unref)(S),(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:n.item.id,ref_for:!0,ref:e=>j(e,n.item.id),class:`waterfall__item`,role:`button`,tabindex:`0`,"aria-label":n.item.title||`瀑布流项目 ${r+1}`,style:(0,t.normalizeStyle)({position:`absolute`,left:`${n.x}px`,top:`${n.y}px`,width:`${n.width}px`,transition:`all ${g.animationDuration??(0,t.unref)(300)}ms ease`}),onClick:e=>_(`item-click`,n.item,r),onKeydown:[(0,t.withKeys)(e=>_(`item-click`,n.item,r),[`enter`]),(0,t.withKeys)((0,t.withModifiers)(e=>_(`item-click`,n.item,r),[`prevent`]),[`space`])]},[(0,t.renderSlot)(e.$slots,`item`,{item:n.item,index:r,width:n.width,height:n.height},()=>[(0,t.createElementVNode)(`div`,l,[(0,t.createElementVNode)(`img`,{src:n.item.src,alt:n.item.title||``,loading:g.lazy?`lazy`:`eager`,class:`waterfall__image`,style:(0,t.normalizeStyle)({height:`${n.height}px`}),onLoad:e=>L(n,e),onError:e=>R(n)},null,44,u),n.item.title?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,d,(0,t.toDisplayString)(n.item.title),1)):(0,t.createCommentVNode)(`v-if`,!0)])],!0)],44,c))),128))],4),g.infinite?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,f,[(0,t.createElementVNode)(`div`,{ref_key:`sentinelRef`,ref:y,class:`waterfall__sentinel`},null,512),(0,t.renderSlot)(e.$slots,`footer`,{status:(0,t.unref)(I)},()=>[g.loading?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,p,[(0,t.createVNode)((0,t.unref)(n.NSpin),{size:`small`}),r[1]||=(0,t.createElementVNode)(`span`,null,`加载中…`,-1)])):g.noMore?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,m,` 没有更多了 `)):(0,t.createCommentVNode)(`v-if`,!0)],!0)])):(0,t.createCommentVNode)(`v-if`,!0)],512))}});var g=e.t(h,[[`__scopeId`,`data-v-4df42989`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return 300}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return 8}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return 200}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return 16}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return i}});
|
package/dist/C_WaterFall2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./export-helper.js";import{Fragment as t,computed as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createVNode as o,defineComponent as s,
|
|
1
|
+
import{t as e}from"./export-helper.js";import{Fragment as t,computed as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createVNode as o,defineComponent as s,getCurrentScope as c,normalizeStyle as l,onBeforeUnmount as u,onMounted as d,onScopeDispose as f,onUnmounted as p,openBlock as m,readonly as h,ref as g,renderList as _,renderSlot as v,toDisplayString as y,unref as b,watch as x,withKeys as S,withModifiers as C}from"vue";import{NSpin as w}from"naive-ui";const T=16,E=300,D=8,O=200,k=[{minWidth:1600,columns:6},{minWidth:1200,columns:5},{minWidth:992,columns:4},{minWidth:768,columns:3},{minWidth:480,columns:2},{minWidth:0,columns:1}],A=[180,360];function j(e,t,n){let r=g(4),i=g(0);function a(e){if(t?.value&&t.value>0)return t.value;let r=[...n?.value?.length?n.value:k].sort((e,t)=>t.minWidth-e.minWidth);for(let t of r)if(e>=t.minWidth)return t.columns;return 1}let o=null;function s(){let t=e.value;if(!t)return;o=new ResizeObserver(e=>{for(let t of e){let{width:e}=t.contentRect;i.value=e,r.value=a(e)}}),o.observe(t);let n=t.getBoundingClientRect();i.value=n.width,r.value=a(n.width)}function c(){o?.disconnect(),o=null}return d(s),u(c),x(e,()=>{c(),s()}),x([()=>t?.value,()=>n?.value],()=>{i.value>0&&(r.value=a(i.value))}),{columns:h(r),containerWidth:h(i)}}function M(e,t,r,i,a={}){let o=g([]),s=g(0),l=new Map,u=new Map,d=n(()=>new Map(e.value.map(e=>[e.id,e.src]))),p,m=!1,_=()=>{p!==void 0&&cancelAnimationFrame(p),p=void 0};c()&&f(()=>{m=!0,_(),u.clear(),l.clear()});let v=()=>{if(!m){if(!a.batchImageLoads||typeof requestAnimationFrame>`u`){O();return}p===void 0&&(p=requestAnimationFrame(()=>{p=void 0,O()}))}};function y(e,t,n){let r=e/t;return Number.isFinite(r)&&r>0?r*n:n}function b(e,t){let n=u.get(e.id),r=n?.src&&n.src!==e.src?void 0:n;return r&&!r.basisWidth?r.height:r?.basisWidth?y(r.height,r.basisWidth,t):y(e.height,e.width,t)}function S(){o.value=[],s.value=0,e.value.length===0&&(u.clear(),l.clear())}function C(t,n,r){return Number.isFinite(t)&&Number.isFinite(n)&&Number.isFinite(r)&&n>0&&e.value.length>0}function w(e,t,n,r){if(m||r!==void 0&&d.value.get(e)!==r||!T(t,n))return;let i=u.get(e);i?.height===t&&i.basisWidth===n&&i.src===r||(u.set(e,{height:t,basisWidth:n,src:r}),v())}function T(e,t){return Number.isFinite(e)&&e>0&&(t===void 0||Number.isFinite(t)&&t>0)}function E(e,t){m||!d.value.has(e)||!Number.isFinite(t)||Math.abs((l.get(e)??0)-t)<.5||(l.set(e,t),v())}function D(e){for(let t of[u,l])for(let n of t.keys())e.has(n)||t.delete(n)}function O(){if(_(),m)return;let n=Math.min(24,Math.max(1,Math.floor(t.value))),a=r.value,c=Math.max(0,i.value??16);if(!C(n,a,c)){S();return}let u=(a-(n-1)*c)/n;if(u<=0){S();return}let d=Array.from({length:n},(e,t)=>({index:t,height:0})),f=[],p=new Set;for(let t of e.value){p.add(t.id);let e=d.reduce((e,t)=>t.height<e.height?t:e),n=b(t,u),r=e.index*(u+c),i=e.height;f.push({item:t,columnIndex:e.index,x:r,y:i,width:u,height:n}),e.height=i+n+(l.get(t.id)??0)+c}D(p),o.value=f,s.value=Math.max(...d.map(e=>e.height))-c}return x([e,()=>e.value.length,t,r,i],O,{immediate:!0}),{layoutItems:h(o),containerHeight:h(s),cacheImageHeight:w,cacheItemExtraHeight:E,relayout:O}}function N(e,t,n,r,i){let a=g(`idle`),o=null,s=!1;function c(e){if(!e[0]?.isIntersecting){s=!1;return}!t.value||n.value||r.value||s||(s=!0,a.value=`loading`,i())}function l(){let n=e.value;!n||!t.value||(o=new IntersectionObserver(c,{rootMargin:`200px 0px`}),o.observe(n))}function f(){o?.disconnect(),o=null,s=!1}return x([n,r],()=>{r.value?a.value=`no-more`:n.value?a.value=`loading`:(a.value=`idle`,s=!1)}),d(l),u(f),x([e,t],()=>{f(),l()}),{status:h(a)}}const P=[`aria-label`,`onClick`,`onKeydown`],F={class:`waterfall__card`},I=[`src`,`alt`,`loading`,`onLoad`,`onError`],L={key:0,class:`waterfall__title`},R={key:0,class:`waterfall__footer`},z={key:0,class:`waterfall__status`},B={key:1,class:`waterfall__status waterfall__status--done`};var V=e(s({name:`C_WaterFall`,__name:`index`,props:{items:{},columns:{default:void 0},gap:{default:16},lazy:{type:Boolean,default:!0},infinite:{type:Boolean,default:!1},skeleton:{type:Boolean,default:!0},skeletonCount:{default:8},animationDuration:{default:300},breakpoints:{default:void 0},loading:{type:Boolean,default:!1},noMore:{type:Boolean,default:!1}},emits:[`load-more`,`item-click`,`image-loaded`,`image-error`],setup(e,{expose:s,emit:c}){let u=e,d=c,f=g(),h=g(),{columns:x,containerWidth:T}=j(f,n(()=>u.columns),n(()=>u.breakpoints)),{layoutItems:E,containerHeight:D,cacheImageHeight:O,cacheItemExtraHeight:k,relayout:V}=M(n(()=>u.items),x,T,n(()=>u.gap),{batchImageLoads:!0}),H=new Map,U=new Map,W=n(()=>new Map(E.value.map(e=>[e.item.id,e]))),G=typeof ResizeObserver>`u`?null:new ResizeObserver(e=>{for(let t of e){let e=H.get(t.target),n=e===void 0?void 0:W.value.get(e);n&&k(n.item.id,t.target.getBoundingClientRect().height-n.height)}});function K(e,t){let n=U.get(t);n!==e&&(n&&(G?.unobserve(n),H.delete(n),U.delete(t)),e instanceof HTMLElement&&(U.set(t,e),H.set(e,t),G?.observe(e)))}p(()=>{G?.disconnect(),H.clear(),U.clear()});let q=n(()=>u.skeleton&&u.loading&&E.value.length===0),J=n(()=>{let e=Math.min(24,Math.max(1,Math.floor(x.value))),t=T.value,n=Math.max(0,u.gap);if(!Number.isFinite(e)||t<=0)return[];let r=(t-(e-1)*n)/e;if(r<=0)return[];let i=Math.min(100,Math.max(0,Math.floor(u.skeletonCount??8))),a=Array(e).fill(0),o=[];for(let e=0;e<i;e++){let t=a.indexOf(Math.min(...a)),i=A[0]+e*73%(A[1]-A[0]);o.push({x:t*(r+n),y:a[t],width:r,height:i}),a[t]+=i+n}return o}),Y=n(()=>J.value.length===0?0:Math.max(...J.value.map(e=>e.y+e.height))),X=n(()=>q.value?Y.value:D.value),{status:Z}=N(h,n(()=>u.infinite),n(()=>u.loading),n(()=>u.noMore),()=>d(`load-more`));function Q(e,t){let n=t.target;if(n.getAttribute(`src`)===e.item.src){if(n.naturalHeight&&n.naturalWidth){let t=n.naturalHeight/n.naturalWidth*e.width;O(e.item.id,t,e.width,e.item.src)}d(`image-loaded`,e.item)}}function $(e){d(`image-error`,e.item)}function ee(){f.value?.scrollIntoView({behavior:`smooth`,block:`start`})}return s({relayout:V,scrollToTop:ee,getColumns:()=>x.value,getContainerHeight:()=>D.value}),(e,n)=>(m(),i(`div`,{ref_key:`containerRef`,ref:f,class:`c-waterfall`},[a(`div`,{class:`waterfall__body`,style:l({height:`${X.value}px`,position:`relative`})},[q.value?(m(!0),i(t,{key:0},_(J.value,(t,r)=>(m(),i(`div`,{key:`sk-${r}`,class:`waterfall__skeleton`,style:l({position:`absolute`,left:`${t.x}px`,top:`${t.y}px`,width:`${t.width}px`,height:`${t.height}px`,transition:`all ${u.animationDuration??b(300)}ms ease`})},[v(e.$slots,`skeleton`,{},()=>[n[0]||=a(`div`,{class:`waterfall__skeleton-inner`},null,-1)],!0)],4))),128)):r(`v-if`,!0),(m(!0),i(t,null,_(b(E),(t,n)=>(m(),i(`div`,{key:t.item.id,ref_for:!0,ref:e=>K(e,t.item.id),class:`waterfall__item`,role:`button`,tabindex:`0`,"aria-label":t.item.title||`瀑布流项目 ${n+1}`,style:l({position:`absolute`,left:`${t.x}px`,top:`${t.y}px`,width:`${t.width}px`,transition:`all ${u.animationDuration??b(300)}ms ease`}),onClick:e=>d(`item-click`,t.item,n),onKeydown:[S(e=>d(`item-click`,t.item,n),[`enter`]),S(C(e=>d(`item-click`,t.item,n),[`prevent`]),[`space`])]},[v(e.$slots,`item`,{item:t.item,index:n,width:t.width,height:t.height},()=>[a(`div`,F,[a(`img`,{src:t.item.src,alt:t.item.title||``,loading:u.lazy?`lazy`:`eager`,class:`waterfall__image`,style:l({height:`${t.height}px`}),onLoad:e=>Q(t,e),onError:e=>$(t)},null,44,I),t.item.title?(m(),i(`div`,L,y(t.item.title),1)):r(`v-if`,!0)])],!0)],44,P))),128))],4),u.infinite?(m(),i(`div`,R,[a(`div`,{ref_key:`sentinelRef`,ref:h,class:`waterfall__sentinel`},null,512),v(e.$slots,`footer`,{status:b(Z)},()=>[u.loading?(m(),i(`div`,z,[o(b(w),{size:`small`}),n[1]||=a(`span`,null,`加载中…`,-1)])):u.noMore?(m(),i(`div`,B,` 没有更多了 `)):r(`v-if`,!0)],!0)])):r(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-4df42989`]]);export{E as a,D as c,j as i,O as l,N as n,k as o,M as r,T as s,V as t,A as u};
|
package/dist/C_WorkFlow2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./feedback.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`),r=require(`./data.cjs`);let i=require(`vue`),a=require(`naive-ui`),o=require(`@vue-flow/core`);const s=[{type:`approval`,label:`审批人`,icon:`mdi:account-check`,iconClass:`approval-icon`},{type:`copy`,label:`抄送人`,icon:`mdi:email-outline`,iconClass:`copy-icon`},{type:`condition`,label:`条件分支`,icon:`mdi:source-branch`,iconClass:`condition-icon`}],c=[{value:`any`,label:`或签`,desc:`任意一人同意即可通过`},{value:`all`,label:`会签`,desc:`所有人都同意才能通过`},{value:`sequence`,label:`顺序审批`,desc:`按选择顺序依次审批`}],l=[{label:`申请金额`,value:`amount`},{label:`申请人部门`,value:`department`},{label:`申请类型`,value:`type`},{label:`紧急程度`,value:`priority`}],u=[{label:`等于`,value:`equals`},{label:`大于`,value:`greater_than`},{label:`小于`,value:`less_than`},{label:`包含`,value:`contains`},{label:`不等于`,value:`not_equals`}],d={start:`发起人`,approval:`审批人`,copy:`抄送人`,condition:`条件分支`},f={approval:`审批人设置`,copy:`抄送人设置`,condition:`条件分支设置`},p={approvers:`审批人`,conditions:`条件配置`,connection:`节点连接`,copyUsers:`抄送人`},m={required:`必填`,incomplete:`不完整`,warning:`警告`,error:`错误`},h={id:`start-1`,type:`start`,position:{x:150,y:100},data:{title:`发起人`,status:`active`,initiators:[]}},g=e=>{let t=Array.from(e.trim()).slice(0,2).join(``).toUpperCase()||`?`,n=`<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80"><rect width="80" height="80" rx="40" fill="hsl(${Array.from(e).reduce((e,t)=>(e*31+(t.codePointAt(0)??0))%360,210)} 55% 46%)"/><text x="40" y="48" text-anchor="middle" font-family="sans-serif" font-size="28" fill="white">${t.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e])}</text></svg>`;return`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(n)}`};let _=0;const v=e=>typeof crypto<`u`&&`randomUUID`in crypto?`${e}-${crypto.randomUUID()}`:`${e}-${Date.now()}-${++_}`,y=()=>v(`condition`),b=(e,t)=>`edge-${e}-${t}`,x=()=>({id:y(),name:``,field:``,operator:`equals`,value:``}),S={key:0,class:`max-h-60vh overflow-y-auto`},C={class:`config-section`},w={class:`flex items-center gap-2 mb-4 text-base font-semibold`,style:{color:`var(--n-text-color-1)`}},T={class:`border rounded-lg p-3 mb-4 max-h-50 overflow-y-auto`,style:{borderColor:`var(--n-border-color)`,background:`var(--n-color-embedded)`}},E={key:0,class:`rounded-lg p-4 mb-4 border`,style:{borderColor:`var(--n-border-color)`,background:`var(--n-color-embedded)`}},D={class:`mb-2 text-sm font-medium`,style:{color:`var(--n-text-color-1)`}},O={class:`flex flex-wrap gap-3`},k={class:`flex items-center gap-2`},A={class:`font-medium text-sm`},j={class:`text-xs px-1.5 py-0.5 rounded`,style:{color:`var(--n-text-color-3)`,background:`var(--n-color-embedded)`}},M={key:0,class:`mt-4`},ee={class:`flex flex-col gap-1`},te={class:`text-sm`},N={class:`text-xs`,style:{color:`var(--n-text-color-3)`}},P={class:`max-h-60vh overflow-y-auto`},F={class:`config-section`},I={class:`flex items-center gap-2 mb-4 text-base font-semibold`,style:{color:`var(--n-text-color-1)`}},L={class:`space-y-3`},R={class:`flex items-center gap-3 flex-nowrap min-h-10 p-2`},z=(0,i.defineComponent)({__name:`NodeConfigModal`,props:{show:{type:Boolean,default:!1},currentNode:{default:null},users:{default:()=>[]},departments:{default:()=>[]}},emits:[`update:show`,`save`,`cancel`],setup(n,{emit:o}){let s=n,d=o,p=e.t(),m=(0,i.ref)(``),h=(0,i.ref)([]),_=(0,i.ref)([]),v=(0,i.ref)(`any`),y=(0,i.ref)(!1),b=(0,i.ref)([]),z=(0,i.computed)({get:()=>s.show,set:e=>d(`update:show`,e)}),ne=(0,i.computed)(()=>s.currentNode?.type===`start`?`发起人设置`:f[s.currentNode?.type]||`节点设置`),B=(0,i.computed)(()=>{let e=[],t=new Map;return s.departments?.forEach(e=>{t.has(e.id)||t.set(e.id,{key:`dept-${e.id}`,label:`${e.name} ${e.manager?`(负责人: ${e.manager})`:``}`,children:[],isLeaf:!1,disabled:!0})}),(s.users?.filter(e=>!m.value||e.name.includes(m.value)||e.department.includes(m.value))||[]).forEach(e=>{let n=s.departments?.find(t=>t.name===e.department);n&&t.has(n.id)&&t.get(n.id).children.push({key:e.id,label:`${e.name}${e.role?`(${e.role})`:``}`,isLeaf:!0,user:e})}),t.forEach(t=>{t.children.length>0&&e.push(t)}),e}),V=(0,i.computed)(()=>s.users?.filter(e=>h.value.includes(e.id))||[]),H=(0,i.computed)(()=>s.users?.filter(e=>_.value.includes(e.id))||[]),U=(0,i.computed)(()=>s.users?.filter(e=>h.value.includes(e.id))||[]),W=e=>{h.value=e.filter(e=>!e.startsWith(`dept-`))},G=e=>{_.value=e.filter(e=>!e.startsWith(`dept-`))},K=e=>{h.value=h.value.filter(t=>t!==e)},q=e=>{_.value=_.value.filter(t=>t!==e)},J=e=>{h.value=h.value.filter(t=>t!==e)},Y=()=>b.value.push(x()),X=e=>b.value.splice(e,1),Z=e=>{let{initiators:t}=e.data;h.value=t?t.map(e=>e.id):[]},re=e=>{h.value=(e.data.approvers||[]).map(e=>e.id),v.value=e.data.approvalMode||`any`},ie=e=>{_.value=(e.data.copyUsers||[]).map(e=>e.id)},ae=e=>{b.value=r.t(e.data.conditions||[])},oe=async()=>{if(h.value.length===0)return p.error(`请选择发起人`),!1;let e=U.value;return d(`save`,{initiators:e}),p.success(`已设置 ${e.length} 个发起人`),!0},se=async()=>{if(h.value.length===0)return p.error(`请至少选择一个审批人`),!1;let e=V.value;return d(`save`,{approvers:e,approvalMode:v.value}),p.success(`已设置 ${e.length} 个审批人`),!0},ce=async()=>{let e=H.value;return d(`save`,{copyUsers:e}),p.success(`已设置 ${e.length} 个抄送人`),!0},Q=async()=>b.value.length===0?(p.error(`请至少添加一个条件分支`),!1):b.value.some(e=>!e.name?.trim()||!e.field||!e.operator||!e.value?.trim())?(p.error(`请完善所有条件配置`),!1):(d(`save`,{conditions:r.t(b.value)}),p.success(`已设置 ${b.value.length} 个条件分支`),!0),le=async()=>{if(!s.currentNode)return!1;y.value=!0;try{let e={start:oe,approval:se,copy:ce,condition:Q}[s.currentNode.type];return e?await e():!1}catch(e){return p.error(`保存配置失败`,e),!1}finally{y.value=!1}},ue=()=>{d(`cancel`)};(0,i.watch)(()=>s.currentNode,e=>{if(e){m.value=``;let t={start:Z,approval:re,copy:ie,condition:ae}[e.type];t&&t(e)}},{immediate:!0});let de=(0,i.computed)(()=>[`start`,`approval`,`copy`].includes(s.currentNode?.type||``)),$=(0,i.computed)(()=>{let e=s.currentNode?.type;return e===`start`?{icon:`mdi:account-star`,title:`选择发起人`,checkedKeys:h.value,onSelect:W,selectedUsers:U.value,selectedLabel:`已选择发起人`,tagType:`primary`,onRemove:J}:e===`approval`?{icon:`mdi:account-check`,title:`选择审批人`,checkedKeys:h.value,onSelect:W,selectedUsers:V.value,selectedLabel:`已选择审批人`,tagType:`info`,onRemove:K}:e===`copy`?{icon:`mdi:email-outline`,title:`选择抄送人`,checkedKeys:_.value,onSelect:G,selectedUsers:H.value,selectedLabel:`已选择抄送人`,tagType:`success`,onRemove:q}:{icon:``,title:``,checkedKeys:[],onSelect:()=>{},selectedUsers:[],selectedLabel:``,tagType:`default`,onRemove:()=>{}}});return(e,n)=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NModal),{show:z.value,"onUpdate:show":n[2]||=e=>z.value=e,style:{width:`900px`},"mask-closable":!1,preset:`dialog`,title:ne.value,"positive-text":`确定`,"negative-text":`取消`,loading:y.value,onPositiveClick:le,onNegativeClick:ue},{default:(0,i.withCtx)(()=>[(0,i.createCommentVNode)(` 公共选择面板 `),de.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,S,[(0,i.createElementVNode)(`div`,C,[(0,i.createElementVNode)(`h4`,w,[$.value.icon?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(t.t),{key:0,name:$.value.icon,size:16},null,8,[`name`])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createTextVNode)(` `+(0,i.toDisplayString)($.value.title),1)]),(0,i.createVNode)((0,i.unref)(a.NInput),{value:m.value,"onUpdate:value":n[0]||=e=>m.value=e,placeholder:`搜索用户姓名或部门`,clearable:``,class:`mb-4`},{prefix:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:magnify`,size:16})]),_:1},8,[`value`]),(0,i.createElementVNode)(`div`,T,[(0,i.createVNode)((0,i.unref)(a.NTree),{data:B.value,"checked-keys":$.value.checkedKeys,selectable:!1,checkable:``,cascade:``,"virtual-scroll":!0,style:{"max-height":`300px`},"onUpdate:checkedKeys":$.value.onSelect},null,8,[`data`,`checked-keys`,`onUpdate:checkedKeys`])]),$.value.selectedUsers.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,E,[(0,i.createElementVNode)(`h5`,D,(0,i.toDisplayString)($.value.selectedLabel)+` (`+(0,i.toDisplayString)($.value.selectedUsers.length)+`) `,1),(0,i.createElementVNode)(`div`,O,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)($.value.selectedUsers,e=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTag),{key:e.id,closable:``,type:$.value.tagType,onClose:t=>$.value.onRemove(e.id)},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,k,[(0,i.createVNode)((0,i.unref)(a.NAvatar),{src:e.avatar,"fallback-src":(0,i.unref)(g)(e.name),size:`small`},null,8,[`src`,`fallback-src`]),(0,i.createElementVNode)(`span`,A,(0,i.toDisplayString)(e.name),1),(0,i.createElementVNode)(`span`,j,(0,i.toDisplayString)(e.department),1)])]),_:2},1032,[`type`,`onClose`]))),128))])])):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createCommentVNode)(` 审批节点时附带审批模式 `),s.currentNode?.type===`approval`?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,M,[n[3]||=(0,i.createElementVNode)(`h5`,{class:`mb-3 text-sm font-medium`,style:{color:`var(--n-text-color-1)`}},` 审批模式 `,-1),(0,i.createVNode)((0,i.unref)(a.NRadioGroup),{value:v.value,"onUpdate:value":n[1]||=e=>v.value=e},{default:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NSpace),{vertical:``},{default:(0,i.withCtx)(()=>[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)((0,i.unref)(c),e=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NRadio),{key:e.value,value:e.value},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,ee,[(0,i.createElementVNode)(`strong`,te,(0,i.toDisplayString)(e.label),1),(0,i.createElementVNode)(`span`,N,(0,i.toDisplayString)(e.desc),1)])]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`value`])])):(0,i.createCommentVNode)(`v-if`,!0)])):s.currentNode?.type===`condition`?((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:1},[(0,i.createCommentVNode)(` 条件节点配置 `),(0,i.createElementVNode)(`div`,P,[(0,i.createElementVNode)(`div`,F,[(0,i.createElementVNode)(`h4`,I,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:source-branch`,size:16}),n[4]||=(0,i.createTextVNode)(` 条件分支设置 `,-1)]),(0,i.createElementVNode)(`div`,L,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(b.value,(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.id,class:`condition-item`},[(0,i.createVNode)((0,i.unref)(a.NCard),{size:`small`,class:`border border-gray-200 hover:border-gray-300 transition-colors`},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,R,[(0,i.createVNode)((0,i.unref)(a.NInput),{value:e.name,"onUpdate:value":t=>e.name=t,placeholder:`分支名称`,style:{width:`150px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`]),(0,i.createVNode)((0,i.unref)(a.NSelect),{value:e.field,"onUpdate:value":t=>e.field=t,placeholder:`选择字段`,options:(0,i.unref)(l),style:{width:`120px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`,`options`]),(0,i.createVNode)((0,i.unref)(a.NSelect),{value:e.operator,"onUpdate:value":t=>e.operator=t,placeholder:`操作符`,options:(0,i.unref)(u),style:{width:`100px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`,`options`]),(0,i.createVNode)((0,i.unref)(a.NInput),{value:e.value,"onUpdate:value":t=>e.value=t,placeholder:`值`,style:{width:`120px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`]),(0,i.createVNode)((0,i.unref)(a.NButton),{quaternary:``,type:`error`,onClick:e=>X(n),class:`flex-shrink-0 ml-auto`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:delete`,size:16})]),_:1},8,[`onClick`])])]),_:2},1024)]))),128)),(0,i.createVNode)((0,i.unref)(a.NButton),{dashed:``,block:``,onClick:Y,class:`w-full`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:plus`,size:16})]),default:(0,i.withCtx)(()=>[n[5]||=(0,i.createTextVNode)(` 添加条件 `,-1)]),_:1})])])])],2112)):(0,i.createCommentVNode)(`v-if`,!0)]),_:1},8,[`show`,`title`,`loading`]))}});var ne=n.t(z,[[`__scopeId`,`data-v-df36c1fc`]]);const B={class:`start-node`},V={class:`node-content`},H={class:`node-info`},U={class:`node-text`},W={key:0,class:`initiator-name`},G={key:1,class:`placeholder-text`},K=(0,i.defineComponent)({__name:`StartNode`,props:{id:{},data:{}},setup(e){let n=e,r=(0,i.inject)(`showAddMenu`),a=(0,i.computed)(()=>{let{initiators:e}=n.data;return!e||!Array.isArray(e)||e.length===0?``:e.map(e=>e?.name||`未知用户`).join(`、`)}),o=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)};return(n,r)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,B,[(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,V,[r[0]||=(0,i.createElementVNode)(`div`,{class:`node-icon`},`🚀`,-1),(0,i.createElementVNode)(`div`,H,[(0,i.createElementVNode)(`div`,U,(0,i.toDisplayString)(e.data.title),1),a.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,W,(0,i.toDisplayString)(a.value),1)):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,G,`点击设置发起人`))])]),(0,i.createCommentVNode)(` 添加节点按钮 `),(0,i.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:o,title:`添加下一个节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var q=n.t(K,[[`__scopeId`,`data-v-6fb2df95`]]);const J={class:`approval-node`},Y={class:`node-card`},X={class:`node-header`},Z={class:`node-icon`},re={class:`node-title`},ie={key:0,class:`node-badge`},ae={key:1,class:`approval-mode-badge`},oe={class:`node-content`},se={key:0,class:`approvers-list`},ce={class:`approver-info`},Q={class:`approver-avatar`},le={class:`approver-details`},ue={class:`approver-name`},de={class:`approver-dept`},$={class:`approver-role`},fe={key:0,class:`more-count`},pe={key:1,class:`placeholder`},me=(0,i.defineComponent)({__name:`ApprovalNode`,props:{id:{},data:{}},setup(e){let n=e,r=(0,i.inject)(`showAddMenu`),o=(0,i.inject)(`deleteNode`),s=(0,i.computed)(()=>n.data.approvers??[]),c=(0,i.computed)(()=>s.value.length),l=(0,i.computed)(()=>s.value.slice(0,3)),u=(0,i.computed)(()=>Math.max(0,c.value-3)),d=e=>({any:`或签`,all:`会签`,sequence:`顺序`})[e]||``,f=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)},p=e=>{e.stopPropagation(),o&&o(n.id)};return(n,r)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,J,[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`status-indicator`,e.data.status])},null,2),(0,i.createCommentVNode)(` 删除按钮 `),(0,i.createElementVNode)(`button`,{type:`button`,class:`delete-btn`,onClick:p,title:`删除节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:close`,size:12})]),(0,i.createElementVNode)(`div`,Y,[(0,i.createElementVNode)(`div`,X,[(0,i.createElementVNode)(`div`,Z,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:account`,size:12,color:`white`})]),(0,i.createElementVNode)(`span`,re,(0,i.toDisplayString)(e.data.title),1),c.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ie,(0,i.toDisplayString)(c.value),1)):(0,i.createCommentVNode)(`v-if`,!0),e.data.approvalMode?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ae,(0,i.toDisplayString)(d(e.data.approvalMode)),1)):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createElementVNode)(`div`,oe,[c.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,se,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(l.value,e=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.id,class:`approver-tag`},[(0,i.createElementVNode)(`div`,ce,[(0,i.createElementVNode)(`div`,Q,[(0,i.createVNode)((0,i.unref)(a.NAvatar),{src:e.avatar,"fallback-src":(0,i.unref)(g)(e.name),size:`small`},null,8,[`src`,`fallback-src`])]),(0,i.createElementVNode)(`div`,le,[(0,i.createElementVNode)(`span`,ue,(0,i.toDisplayString)(e.name),1),(0,i.createElementVNode)(`span`,de,(0,i.toDisplayString)(e.department),1),(0,i.createElementVNode)(`span`,$,(0,i.toDisplayString)(e.role),1)])])]))),128)),u.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,fe,`+`+(0,i.toDisplayString)(u.value),1)):(0,i.createCommentVNode)(`v-if`,!0)])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,pe,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:account-plus`,size:24,color:`#9ca3af`}),r[0]||=(0,i.createElementVNode)(`span`,null,`请设置审批人`,-1)]))])]),(0,i.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:f,title:`添加下一个节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var he=n.t(me,[[`__scopeId`,`data-v-e6968a42`]]);const ge={class:`copy-node`},_e={class:`node-card`},ve={class:`node-header`},ye={class:`node-title`},be={key:0,class:`node-badge`},xe={class:`node-content`},Se={key:0,class:`copy-users-list`},Ce={key:0,class:`more-count`},we={key:1,class:`placeholder`},Te=(0,i.defineComponent)({__name:`CopyNode`,props:{id:{},data:{}},setup(e){let n=e,r=(0,i.inject)(`showAddMenu`),a=(0,i.inject)(`deleteNode`),o=(0,i.computed)(()=>n.data.copyUsers??[]),s=(0,i.computed)(()=>o.value.length),c=(0,i.computed)(()=>o.value.slice(0,3)),l=(0,i.computed)(()=>Math.max(0,s.value-3)),u=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)},d=e=>{e.stopPropagation(),a&&a(n.id)};return(n,r)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ge,[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`status-indicator`,e.data.status])},null,2),(0,i.createCommentVNode)(` 删除按钮 `),(0,i.createElementVNode)(`button`,{type:`button`,class:`delete-btn`,onClick:d,title:`删除节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:close`,size:12})]),(0,i.createElementVNode)(`div`,_e,[(0,i.createElementVNode)(`div`,ve,[r[0]||=(0,i.createElementVNode)(`div`,{class:`node-icon`},`📋`,-1),(0,i.createElementVNode)(`span`,ye,(0,i.toDisplayString)(e.data.title),1),s.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,be,(0,i.toDisplayString)(s.value),1)):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createElementVNode)(`div`,xe,[s.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Se,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(c.value,e=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.id,class:`copy-user-tag`},(0,i.toDisplayString)(e.name),1))),128)),l.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ce,`+`+(0,i.toDisplayString)(l.value),1)):(0,i.createCommentVNode)(`v-if`,!0)])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,we,`请设置抄送人`))])]),(0,i.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:u,title:`添加下一个节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var Ee=n.t(Te,[[`__scopeId`,`data-v-010e7ec8`]]);const De={class:`condition-node`},Oe={class:`node-card`},ke={class:`node-header`},Ae={class:`node-title`},je={key:0,class:`node-badge`},Me={class:`node-content`},Ne={key:0,class:`conditions-list`},Pe={key:0,class:`more-count`},Fe={key:1,class:`placeholder`},Ie=(0,i.defineComponent)({__name:`ConditionNode`,props:{id:{},data:{}},setup(e){let n=e,r=(0,i.inject)(`showAddMenu`),a=(0,i.inject)(`deleteNode`),o=(0,i.computed)(()=>n.data.conditions??[]),s=(0,i.computed)(()=>o.value.length),c=(0,i.computed)(()=>o.value.slice(0,2)),l=(0,i.computed)(()=>Math.max(0,s.value-2)),u=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)},d=e=>{e.stopPropagation(),a&&a(n.id)};return(n,r)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,De,[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`status-indicator`,e.data.status])},null,2),(0,i.createCommentVNode)(` 删除按钮 `),(0,i.createElementVNode)(`button`,{type:`button`,class:`delete-btn`,onClick:d,title:`删除节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:close`,size:12})]),(0,i.createElementVNode)(`div`,Oe,[(0,i.createElementVNode)(`div`,ke,[r[0]||=(0,i.createElementVNode)(`div`,{class:`node-icon`},`🔀`,-1),(0,i.createElementVNode)(`span`,Ae,(0,i.toDisplayString)(e.data.title),1),s.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,je,(0,i.toDisplayString)(s.value),1)):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createElementVNode)(`div`,Me,[s.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ne,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(c.value,e=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.id,class:`condition-tag`},[r[1]||=(0,i.createElementVNode)(`span`,{class:`condition-icon`},`→`,-1),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)(e.name||`条件`+(c.value.indexOf(e)+1)),1)]))),128)),l.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Pe,`+`+(0,i.toDisplayString)(l.value),1)):(0,i.createCommentVNode)(`v-if`,!0)])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Fe,`请设置分支条件`))])]),(0,i.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:u,title:`添加下一个节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var Le=n.t(Ie,[[`__scopeId`,`data-v-5ede8782`]]);const Re={start:(0,i.markRaw)(q),approval:(0,i.markRaw)(he),copy:(0,i.markRaw)(Ee),condition:(0,i.markRaw)(Le)};function ze(t,n,a){let o=e.t(),s=(0,i.ref)(r.t(t.modelValue?.nodes??[h])),c=(0,i.ref)(r.t(t.modelValue?.edges??[])),l=(0,i.ref)(t.modelValue?r.t(t.modelValue.config):{version:`1.0`,createdAt:new Date().toISOString()}),u=(0,i.ref)(!1),f=(0,i.ref)({x:0,y:0}),p=(0,i.ref)(!1),m=(0,i.ref)(null),g=(0,i.ref)(null),_=new Set,y=!1,x=(e,t)=>{let n=setTimeout(()=>{_.delete(n),y||e()},t);_.add(n)},S=(0,i.computed)(()=>Re),C=(0,i.computed)(()=>{let e={totalNodes:s.value.length,approvalNodes:0,copyNodes:0,conditionNodes:0};return s.value.forEach(t=>{t.type===`approval`?e.approvalNodes++:t.type===`copy`?e.copyNodes++:t.type===`condition`&&e.conditionNodes++}),e}),w=()=>({nodes:r.t(s.value),edges:r.t(c.value),...l.value!==void 0&&{config:r.t(l.value)}}),T=()=>{let e=w();n(`update:modelValue`,e),n(`change`,e)},E=(e=60,t=400)=>{(0,i.nextTick)(()=>{y||x(()=>{a.value?.fitView?.({padding:e,duration:t})},100)})},D=(e,n)=>{t.readonly||(f.value={x:typeof e.x==`number`?e.x:0,y:typeof e.y==`number`?e.y:0},g.value=n||null,u.value=!0)},O=()=>{u.value=!1},k=e=>{if(t.readonly)return;let n=s.value.findIndex(t=>t.id===e);if(n===-1)return;if(s.value[n].type===`start`){o.warning(`不能删除开始节点`);return}let r=c.value.filter(t=>t.target===e),i=c.value.filter(t=>t.source===e);s.value.splice(n,1),c.value=c.value.filter(t=>t.source!==e&&t.target!==e),r.forEach(e=>{i.forEach(t=>{c.value.push({id:b(e.source,t.target),source:e.source,target:t.target,animated:!0,type:`default`})})}),s.value.forEach((e,t)=>{t>=n&&(e.position.y-=180)}),T(),o.success(`节点已删除`),E()};(0,i.provide)(`showAddMenu`,D),(0,i.provide)(`deleteNode`,k);let A=()=>{let e=s.value.length-1,t=s.value[e];if(g.value){let n=s.value.findIndex(e=>e.id===g.value);n!==-1&&(e=n,t=s.value[e])}return{targetNodeIndex:e,targetNode:t}},j=(e,t)=>({id:v(e),type:e,position:{x:t?.position.x??150,y:(t?.position.y??130)+180},data:{title:d[e],status:`pending`,...e===`approval`&&{approvers:[],approvalMode:`any`},...e===`copy`&&{copyUsers:[]},...e===`condition`&&{conditions:[]}}}),M=(e,t)=>{let n=c.value.filter(t=>t.source===e.id);c.value=c.value.filter(t=>t.source!==e.id),c.value.push({id:b(e.id,t.id),source:e.id,target:t.id,animated:!0,type:`default`}),n.forEach(e=>{c.value.push({id:b(t.id,e.target),source:t.id,target:e.target,animated:!0,type:`default`})})};return(0,i.watch)(()=>t.modelValue,e=>{e&&(r.a(e.nodes??[],s.value)&&r.a(e.edges??[],c.value)&&r.a(e.config,l.value)||(s.value=r.t(e.nodes??[]),c.value=r.t(e.edges??[]),l.value=r.t(e.config)))},{deep:!0}),(0,i.onMounted)(()=>{y=!1,(0,i.nextTick)(()=>{y||x(()=>{a.value?.fitView?.({padding:80,includeHiddenNodes:!1,minZoom:.8,maxZoom:1.2,duration:600})},300)})}),(0,i.onBeforeUnmount)(()=>{y=!0,_.forEach(e=>clearTimeout(e)),_.clear()}),{nodes:s,edges:c,showAddMenu:u,menuPosition:f,showNodeConfig:p,currentNode:m,nodeTypes:S,workflowStats:C,addNode:e=>{if(!t.readonly)try{let{targetNodeIndex:t,targetNode:n}=A(),r=j(e,n);s.value.splice(t+1,0,r);for(let e=t+2;e<s.value.length;e++)s.value[e].position.y+=180;n&&M(n,r),u.value=!1,g.value=null,T(),E()}catch(e){o.error(`添加节点失败,请重试`,e)}},onNodeClick:e=>{let i=s.value.find(t=>t.id===e.node.id);i&&(t.readonly||(m.value=i,p.value=!0),n(`node-click`,r.t(i)))},closeAddMenu:O,handleConfigSave:e=>{if(t.readonly||!m.value)return;let n=s.value.findIndex(e=>e.id===m.value.id);if(n!==-1){let t={...s.value[n],data:{...s.value[n].data,...r.t(e)}};s.value.splice(n,1,t),m.value=t}T(),p.value=!1,o.success(`节点配置已保存`)},resetNodes:()=>{t.readonly||(s.value=r.t([h]),c.value=[],T(),E(80,600),o.success(`画布已清空`))},getCurrentWorkflowData:w,fitView:()=>{if(!a.value?.fitView){o.warning(`画布未准备就绪,请稍后重试`);return}(0,i.nextTick)(()=>{a.value.fitView({padding:50,includeHiddenNodes:!1,minZoom:.5,maxZoom:1.5,duration:800})}),o.success(`已适应窗口大小`)},deleteNode:k}}function Be(t,n,r,a){let o=e.t(),s=(0,i.ref)([]),c=(0,i.ref)(!1),l,u=()=>{let e=[];t.value.forEach(t=>{if(t.type===`approval`&&(t.data.approvers||[]).length===0&&e.push({nodeId:t.id,nodeName:t.data.title,field:`approvers`,message:`审批节点必须设置至少一个审批人,否则流程无法正常运行`,type:`required`}),t.type===`condition`){let n=t.data.conditions||[];if(n.length===0)e.push({nodeId:t.id,nodeName:t.data.title,field:`conditions`,message:`条件分支节点必须配置至少一个分支条件,否则无法进行条件判断`,type:`required`});else{let r=n.filter(e=>!e.name||!e.field||!e.operator||!e.value);r.length>0&&e.push({nodeId:t.id,nodeName:t.data.title,field:`conditions`,message:`有 ${r.length} 个条件分支配置不完整,请完善所有必填字段`,type:`incomplete`})}}});let r=new Set;return n.value.forEach(e=>{r.add(e.source),r.add(e.target)}),t.value.forEach(t=>{t.type!==`start`&&!r.has(t.id)&&e.push({nodeId:t.id,nodeName:t.data.title,field:`connection`,message:`此节点未与其他节点连接,可能导致流程中断`,type:`warning`})}),e};return(0,i.onBeforeUnmount)(()=>{l&&clearTimeout(l)}),{validationErrors:s,showValidationErrors:c,validateWorkflow:u,validateCurrentWorkflow:()=>{let e=u();s.value=e,e.length===0?(o.success(`工作流验证通过!所有节点配置正确`),c.value=!1):(o.error(`发现 ${e.length} 个问题,请查看详细错误`),c.value=!0,a?.onValidateError?.(e))},jumpToErrorNode:e=>{let n=t.value.find(t=>t.id===e);!n||!r.value||(r.value.setCenter(n.position.x,n.position.y,{zoom:1.2,duration:800}),l&&clearTimeout(l),l=setTimeout(()=>{l=void 0,a?.onShowNodeConfig?.(n),c.value=!1},900),o.info(`已定位到节点:${n.data.title}`))},getFieldDisplayName:e=>p[e]||e,getErrorTypeText:e=>m[e]||e,resetValidation:()=>{s.value=[],c.value=!1}}}const Ve={start:{label:`发起人`,icon:`mdi:play-circle`,colorClass:`start`},approval:{label:`审批节点`,icon:`mdi:account-check`,colorClass:`approval`},copy:{label:`抄送节点`,icon:`mdi:email-outline`,colorClass:`copy`},condition:{label:`条件分支`,icon:`mdi:source-branch`,colorClass:`condition`}},He={any:`或签(任一审批人通过即可)`,all:`会签(所有审批人必须通过)`,sequence:`顺序审批(按顺序依次审批)`},Ue={equals:`等于`,not_equals:`不等于`,greater_than:`大于`,less_than:`小于`,contains:`包含`};function We(e,t){let n=(0,i.ref)(!1),r=(0,i.ref)([]),a=(0,i.ref)({totalNodes:0,approvalNodes:0,copyNodes:0,conditionNodes:0,totalEdges:0}),o={start:e=>{let t=e.initiators||[];return t.length>0?[{type:`users`,label:`发起人`,users:t}]:[{type:`text`,label:`发起人`,value:`所有人`}]},approval:e=>{let t=e.approvalMode||`any`,n=e.approvers||[],r=[{type:`mode`,label:`审批方式`,value:He[t]||t,modeKey:t}];return n.length>0?r.push({type:`users`,label:`审批人`,users:n}):r.push({type:`warning`,label:`审批人`,value:`未设置`}),r},copy:e=>{let t=e.copyUsers||[];return t.length>0?[{type:`users`,label:`抄送人`,users:t}]:[{type:`text`,label:`抄送人`,value:`未设置`}]},condition:e=>{let t=e.conditions||[];return t.length===0?[{type:`warning`,label:`条件分支`,value:`未配置`}]:t.map((e,t)=>{let n=Ue[e.operator]||e.operator;return{type:`text`,label:`分支 ${t+1}`,value:`${e.name||`未命名`} — ${e.field||`?`} ${n} ${e.value||`?`}`}})}},s=e=>{let t=o[e.type||`start`];return t?t(e.data):[]},c=()=>{let n=new Map;e.value.forEach(e=>n.set(e.id,e));let r=new Map,i=new Map;e.value.forEach(e=>{r.set(e.id,[]),i.set(e.id,0)}),t.value.forEach(e=>{r.get(e.source)?.push(e.target),i.set(e.target,(i.get(e.target)||0)+1)});let a=[];i.forEach((e,t)=>{e===0&&a.push(t)});let o=[],s=new Set;for(;a.length>0;){let e=a.shift();if(s.has(e))continue;s.add(e);let t=n.get(e);t&&o.push(t);let c=r.get(e)||[];for(let e of c){let t=(i.get(e)||1)-1;i.set(e,t),t<=0&&!s.has(e)&&a.push(e)}}return e.value.forEach(e=>{s.has(e.id)||o.push(e)}),o},l=()=>c().map((e,t)=>{let n=Ve[e.type||`start`]||Ve.start;return{order:t+1,node:e,nodeTypeLabel:n.label,icon:n.icon,colorClass:n.colorClass,details:s(e)}}),u=()=>{let n={totalNodes:e.value.length,approvalNodes:0,copyNodes:0,conditionNodes:0,totalEdges:t.value.length};return e.value.forEach(e=>{e.type===`approval`?n.approvalNodes++:e.type===`copy`?n.copyNodes++:e.type===`condition`&&n.conditionNodes++}),n};return{showPreview:n,previewSteps:r,previewStats:a,openPreview:()=>{r.value=l(),a.value=u(),n.value=!0},closePreview:()=>{n.value=!1}}}const Ge={class:`approval-workflow-container`},Ke={class:`floating-toolbar`},qe={class:`add-menu-content`},Je=[`onClick`],Ye={class:`menu-text`},Xe={key:0,class:`validation-success`},Ze={class:`success-icon`},Qe={key:1,class:`validation-errors`},$e={class:`error-summary`},et={class:`error-icon`},tt={class:`error-list`},nt={class:`error-header`},rt={class:`error-number`},it={class:`error-info`},at={class:`error-node`},ot={class:`error-field`},st={class:`error-message`},ct={class:`error-actions`},lt={class:`validation-footer`},ut={class:`preview-stats`},dt={class:`stat-item`},ft={class:`stat-value`},pt={class:`stat-item approval`},mt={class:`stat-value`},ht={class:`stat-item copy`},gt={class:`stat-value`},_t={class:`stat-item condition`},vt={class:`stat-value`},yt={class:`stat-item edge`},bt={class:`stat-value`},xt={class:`preview-timeline`},St={class:`step-connector`},Ct={class:`step-dot`},wt={key:0,class:`step-line`},Tt={class:`step-content`},Et={class:`step-header`},Dt={class:`step-order`},Ot={class:`step-type-badge`},kt={class:`step-title`},At={key:0,class:`step-details`},jt={class:`detail-label`},Mt={class:`warning-text`},Nt={key:0,class:`preview-empty`},Pt={class:`preview-footer`},Ft=(0,i.defineComponent)({name:`C_WorkFlow`,__name:`index`,props:{users:{default:()=>[]},roles:{default:()=>[]},departments:{default:()=>[]},modelValue:{},readonly:{type:Boolean,default:!1},theme:{default:`light`}},emits:[`update:modelValue`,`change`,`node-click`,`edge-click`,`save`,`validate-error`],setup(n,{expose:r,emit:c}){let l=n,u=c,d=e.t(),f=(0,i.ref)(),{nodes:p,edges:m,showAddMenu:h,menuPosition:g,showNodeConfig:_,currentNode:v,nodeTypes:y,workflowStats:b,addNode:x,onNodeClick:S,closeAddMenu:C,handleConfigSave:w,resetNodes:T,getCurrentWorkflowData:E,fitView:D,deleteNode:O}=ze(l,u,f),{validationErrors:k,showValidationErrors:A,validateWorkflow:j,validateCurrentWorkflow:M,jumpToErrorNode:ee,getFieldDisplayName:te,getErrorTypeText:N,resetValidation:P}=Be(p,m,f,{onShowNodeConfig:e=>{l.readonly||(v.value=e,_.value=!0)},onValidateError:e=>u(`validate-error`,e)}),{showPreview:F,previewSteps:I,previewStats:L,openPreview:R,closePreview:z}=We(p,m),B=()=>{if(l.readonly)return;let e=j();if(e.length>0){d.error(`工作流验证失败: ${e[0].message}`),A.value=!0;return}u(`save`,E()),d.success(`工作流保存成功`)},V=()=>{R()},H=()=>{z(),B()},U=()=>{l.readonly||(T(),P())};return r({validateWorkflow:j,getCurrentWorkflowData:E,saveWorkflow:B,previewWorkflow:V,deleteNode:O,stats:b}),(e,r)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ge,[(0,i.createCommentVNode)(` 浮动工具栏 `),(0,i.createElementVNode)(`div`,Ke,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,disabled:n.readonly,onClick:B},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:content-save`,size:16})]),default:(0,i.withCtx)(()=>[r[7]||=(0,i.createTextVNode)(` 保存 `,-1)]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:V},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:eye`,size:16})]),default:(0,i.withCtx)(()=>[r[8]||=(0,i.createTextVNode)(` 预览 `,-1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:(0,i.unref)(M),title:`检查工作流配置是否正确`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:check-circle`,size:16})]),default:(0,i.withCtx)(()=>[r[9]||=(0,i.createTextVNode)(` 验证流程 `,-1)]),_:1},8,[`onClick`]),r[10]||=(0,i.createElementVNode)(`div`,{class:`toolbar-divider`},null,-1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:(0,i.unref)(D),title:`适应窗口`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:fit-to-screen`,size:16})]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`error`,disabled:n.readonly,onClick:U,title:`清空画布`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:delete-sweep`,size:16})]),_:1},8,[`disabled`])]),(0,i.createCommentVNode)(` Vue Flow 画布 `),(0,i.createVNode)((0,i.unref)(o.VueFlow),{ref_key:`vueFlowRef`,ref:f,nodes:(0,i.unref)(p),"onUpdate:nodes":r[0]||=e=>(0,i.isRef)(p)?p.value=e:null,edges:(0,i.unref)(m),"onUpdate:edges":r[1]||=e=>(0,i.isRef)(m)?m.value=e:null,"node-types":(0,i.unref)(y),class:`workflow-canvas`,"default-viewport":{zoom:1,x:0,y:0},"min-zoom":.5,"max-zoom":2,"fit-view-on-init":!0,"nodes-draggable":!n.readonly,"nodes-connectable":!n.readonly,"edges-updatable":!n.readonly,"delete-key-code":n.readonly?null:void 0,"elements-selectable":!0,onNodeClick:(0,i.unref)(S),onPaneClick:(0,i.unref)(C)},null,8,[`nodes`,`edges`,`node-types`,`nodes-draggable`,`nodes-connectable`,`edges-updatable`,`delete-key-code`,`onNodeClick`,`onPaneClick`]),(0,i.createCommentVNode)(` 节点添加菜单 `),((0,i.openBlock)(),(0,i.createBlock)(i.Teleport,{to:`body`},[(0,i.withDirectives)((0,i.createElementVNode)(`div`,{class:`add-node-menu`,style:(0,i.normalizeStyle)({left:(0,i.unref)(g).x+`px`,top:(0,i.unref)(g).y+`px`})},[(0,i.createElementVNode)(`div`,qe,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)((0,i.unref)(s),e=>((0,i.openBlock)(),(0,i.createElementBlock)(`button`,{key:e.type,type:`button`,class:`add-menu-item`,onClick:t=>(0,i.unref)(x)(e.type)},[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`menu-icon`,e.iconClass])},[(0,i.createVNode)((0,i.unref)(t.t),{name:e.icon,size:16},null,8,[`name`])],2),(0,i.createElementVNode)(`span`,Ye,(0,i.toDisplayString)(e.label),1)],8,Je))),128))])],4),[[i.vShow,(0,i.unref)(h)]])])),(0,i.createCommentVNode)(` 节点配置弹窗 - 拆分到独立组件 `),(0,i.createVNode)(ne,{show:(0,i.unref)(_),"onUpdate:show":r[2]||=e=>(0,i.isRef)(_)?_.value=e:null,"current-node":(0,i.unref)(v),users:n.users,departments:n.departments,onSave:(0,i.unref)(w),onCancel:r[3]||=e=>_.value=!1},null,8,[`show`,`current-node`,`users`,`departments`,`onSave`]),(0,i.createCommentVNode)(` 验证错误日志抽屉 `),(0,i.createVNode)((0,i.unref)(a.NDrawer),{show:(0,i.unref)(A),"onUpdate:show":r[5]||=e=>(0,i.isRef)(A)?A.value=e:null,width:450,placement:`right`},{default:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NDrawerContent),{title:`流程验证结果`,closable:``},{footer:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,lt,[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:r[4]||=e=>A.value=!1},{default:(0,i.withCtx)(()=>[...r[16]||=[(0,i.createTextVNode)(`关闭`,-1)]]),_:1}),(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(M)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:refresh`,size:16})]),default:(0,i.withCtx)(()=>[r[17]||=(0,i.createTextVNode)(` 重新验证 `,-1)]),_:1},8,[`onClick`])])]),default:(0,i.withCtx)(()=>[(0,i.unref)(k).length===0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Xe,[(0,i.createElementVNode)(`div`,Ze,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:check-circle`,size:32,color:`#52c41a`})]),r[11]||=(0,i.createElementVNode)(`h3`,null,`验证通过`,-1),r[12]||=(0,i.createElementVNode)(`p`,null,`工作流配置正确,所有节点都已正确设置!`,-1)])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Qe,[(0,i.createElementVNode)(`div`,$e,[(0,i.createElementVNode)(`div`,et,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:alert-circle`,size:24,color:`#ff4d4f`})]),(0,i.createElementVNode)(`h3`,null,`发现 `+(0,i.toDisplayString)((0,i.unref)(k).length)+` 个问题`,1),r[13]||=(0,i.createElementVNode)(`p`,null,`请修复以下问题后重新验证:`,-1)]),(0,i.createElementVNode)(`div`,tt,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)((0,i.unref)(k),(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.nodeId,class:`error-item`},[(0,i.createElementVNode)(`div`,nt,[(0,i.createElementVNode)(`span`,rt,(0,i.toDisplayString)(n+1),1),(0,i.createElementVNode)(`div`,it,[(0,i.createElementVNode)(`strong`,at,(0,i.toDisplayString)(e.nodeName),1),(0,i.createElementVNode)(`span`,ot,(0,i.toDisplayString)((0,i.unref)(te)(e.field)),1)]),(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`error-type`,e.type])},(0,i.toDisplayString)((0,i.unref)(N)(e.type)),3)]),(0,i.createElementVNode)(`div`,st,(0,i.toDisplayString)(e.message),1),(0,i.createElementVNode)(`div`,ct,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,onClick:t=>(0,i.unref)(ee)(e.nodeId)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:target`,size:16})]),default:(0,i.withCtx)(()=>[r[14]||=(0,i.createTextVNode)(` 定位节点 `,-1)]),_:1},8,[`onClick`])])]))),128))]),r[15]||=(0,i.createElementVNode)(`div`,{class:`validation-tips`},[(0,i.createElementVNode)(`h4`,null,`💡 常见问题解决方案:`),(0,i.createElementVNode)(`ul`,null,[(0,i.createElementVNode)(`li`,null,[(0,i.createElementVNode)(`strong`,null,`审批人未设置:`),(0,i.createTextVNode)(`点击审批节点,在弹窗中选择审批人员 `)]),(0,i.createElementVNode)(`li`,null,[(0,i.createElementVNode)(`strong`,null,`条件分支未配置:`),(0,i.createTextVNode)(`点击条件节点,添加至少一个条件分支 `)]),(0,i.createElementVNode)(`li`,null,[(0,i.createElementVNode)(`strong`,null,`节点连接断开:`),(0,i.createTextVNode)(` 检查节点之间的连线是否正确 `)])])],-1)]))]),_:1})]),_:1},8,[`show`]),(0,i.createCommentVNode)(` 流程预览抽屉 `),(0,i.createVNode)((0,i.unref)(a.NDrawer),{show:(0,i.unref)(F),"onUpdate:show":r[6]||=e=>(0,i.isRef)(F)?F.value=e:null,width:520,placement:`right`},{default:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NDrawerContent),{title:`流程预览`,closable:``},{footer:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,Pt,[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(z)},{default:(0,i.withCtx)(()=>[...r[24]||=[(0,i.createTextVNode)(`关闭`,-1)]]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:H},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:content-save`,size:16})]),default:(0,i.withCtx)(()=>[r[25]||=(0,i.createTextVNode)(` 确认并保存 `,-1)]),_:1})])]),default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,ut,[(0,i.createElementVNode)(`div`,dt,[(0,i.createElementVNode)(`span`,ft,(0,i.toDisplayString)((0,i.unref)(L).totalNodes),1),r[18]||=(0,i.createElementVNode)(`span`,{class:`stat-label`},`总节点`,-1)]),(0,i.createElementVNode)(`div`,pt,[(0,i.createElementVNode)(`span`,mt,(0,i.toDisplayString)((0,i.unref)(L).approvalNodes),1),r[19]||=(0,i.createElementVNode)(`span`,{class:`stat-label`},`审批`,-1)]),(0,i.createElementVNode)(`div`,ht,[(0,i.createElementVNode)(`span`,gt,(0,i.toDisplayString)((0,i.unref)(L).copyNodes),1),r[20]||=(0,i.createElementVNode)(`span`,{class:`stat-label`},`抄送`,-1)]),(0,i.createElementVNode)(`div`,_t,[(0,i.createElementVNode)(`span`,vt,(0,i.toDisplayString)((0,i.unref)(L).conditionNodes),1),r[21]||=(0,i.createElementVNode)(`span`,{class:`stat-label`},`条件`,-1)]),(0,i.createElementVNode)(`div`,yt,[(0,i.createElementVNode)(`span`,bt,(0,i.toDisplayString)((0,i.unref)(L).totalEdges),1),r[22]||=(0,i.createElementVNode)(`span`,{class:`stat-label`},`连线`,-1)])]),(0,i.createElementVNode)(`div`,xt,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)((0,i.unref)(I),(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.node.id,class:(0,i.normalizeClass)([`preview-step`,e.colorClass])},[(0,i.createCommentVNode)(` 时间线连接线 `),(0,i.createElementVNode)(`div`,St,[(0,i.createElementVNode)(`div`,Ct,[(0,i.createVNode)((0,i.unref)(t.t),{name:e.icon,size:16},null,8,[`name`])]),n<(0,i.unref)(I).length-1?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,wt)):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createCommentVNode)(` 步骤内容 `),(0,i.createElementVNode)(`div`,Tt,[(0,i.createElementVNode)(`div`,Et,[(0,i.createElementVNode)(`span`,Dt,`步骤 `+(0,i.toDisplayString)(e.order),1),(0,i.createElementVNode)(`span`,Ot,(0,i.toDisplayString)(e.nodeTypeLabel),1)]),(0,i.createElementVNode)(`div`,kt,(0,i.toDisplayString)(e.node.data.title),1),e.details.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,At,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.details,(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:n,class:(0,i.normalizeClass)([`step-detail-item`,{"is-warning":e.type===`warning`}])},[(0,i.createElementVNode)(`span`,jt,(0,i.toDisplayString)(e.label)+`:`,1),(0,i.createCommentVNode)(` 审批方式 badge `),e.type===`mode`?((0,i.openBlock)(),(0,i.createElementBlock)(`span`,{key:0,class:(0,i.normalizeClass)([`mode-badge`,e.modeKey])},(0,i.toDisplayString)(e.value),3)):e.type===`users`?((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:1},[(0,i.createCommentVNode)(` 人员 tags `),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.users,e=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTag),{key:e.name,size:`small`,bordered:!1,round:``,class:`user-tag`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:account`,size:12})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(e.name),1)]),_:2},1024))),128))],64)):e.type===`warning`?((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:2},[(0,i.createCommentVNode)(` 警告文案 `),(0,i.createElementVNode)(`span`,Mt,` ⚠️ `+(0,i.toDisplayString)(e.value),1)],2112)):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:3},[(0,i.createCommentVNode)(` 普通文本 `),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)(e.value),1)],2112))],2))),128))])):(0,i.createCommentVNode)(`v-if`,!0)])],2))),128))]),(0,i.unref)(I).length===0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Nt,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:file-document-outline`,size:48,color:`#d1d5db`}),r[23]||=(0,i.createElementVNode)(`p`,null,`暂无流程节点`,-1)])):(0,i.createCommentVNode)(`v-if`,!0)]),_:1})]),_:1},8,[`show`])]))}});var It=n.t(Ft,[[`__scopeId`,`data-v-ffd6fa87`]]);Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return It}});
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./feedback.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`),r=require(`./data.cjs`);let i=require(`vue`),a=require(`naive-ui`),o=require(`@vue-flow/core`);const s=[{type:`approval`,label:`审批人`,icon:`mdi:account-check`,iconClass:`approval-icon`},{type:`copy`,label:`抄送人`,icon:`mdi:email-outline`,iconClass:`copy-icon`},{type:`condition`,label:`条件分支`,icon:`mdi:source-branch`,iconClass:`condition-icon`}],c=[{value:`any`,label:`或签`,desc:`任意一人同意即可通过`},{value:`all`,label:`会签`,desc:`所有人都同意才能通过`},{value:`sequence`,label:`顺序审批`,desc:`按选择顺序依次审批`}],l=[{label:`申请金额`,value:`amount`},{label:`申请人部门`,value:`department`},{label:`申请类型`,value:`type`},{label:`紧急程度`,value:`priority`}],u=[{label:`等于`,value:`equals`},{label:`大于`,value:`greater_than`},{label:`小于`,value:`less_than`},{label:`包含`,value:`contains`},{label:`不等于`,value:`not_equals`}],d={start:`发起人`,approval:`审批人`,copy:`抄送人`,condition:`条件分支`},f={approval:`审批人设置`,copy:`抄送人设置`,condition:`条件分支设置`},p={approvers:`审批人`,conditions:`条件配置`,connection:`节点连接`,copyUsers:`抄送人`},m={required:`必填`,incomplete:`不完整`,warning:`警告`,error:`错误`},h={id:`start-1`,type:`start`,position:{x:150,y:100},data:{title:`发起人`,status:`active`,initiators:[]}},g=e=>{let t=Array.from(e.trim()).slice(0,2).join(``).toUpperCase()||`?`,n=`<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80"><rect width="80" height="80" rx="40" fill="hsl(${Array.from(e).reduce((e,t)=>(e*31+(t.codePointAt(0)??0))%360,210)} 55% 46%)"/><text x="40" y="48" text-anchor="middle" font-family="sans-serif" font-size="28" fill="white">${t.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e])}</text></svg>`;return`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(n)}`};let _=0;const v=e=>typeof crypto<`u`&&`randomUUID`in crypto?`${e}-${crypto.randomUUID()}`:`${e}-${Date.now()}-${++_}`,y=()=>v(`condition`),b=(e,t)=>`edge-${e}-${t}`,x=()=>({id:y(),name:``,field:``,operator:`equals`,value:``}),S={key:0,class:`max-h-60vh overflow-y-auto`},C={class:`config-section`},w={class:`flex items-center gap-2 mb-4 text-base font-semibold`,style:{color:`var(--n-text-color-1)`}},T={class:`border rounded-lg p-3 mb-4 max-h-50 overflow-y-auto`,style:{borderColor:`var(--n-border-color)`,background:`var(--n-color-embedded)`}},E={key:0,class:`rounded-lg p-4 mb-4 border`,style:{borderColor:`var(--n-border-color)`,background:`var(--n-color-embedded)`}},D={class:`mb-2 text-sm font-medium`,style:{color:`var(--n-text-color-1)`}},O={class:`flex flex-wrap gap-3`},k={class:`flex items-center gap-2`},A={class:`font-medium text-sm`},j={class:`text-xs px-1.5 py-0.5 rounded`,style:{color:`var(--n-text-color-3)`,background:`var(--n-color-embedded)`}},M={key:0,class:`mt-4`},ee={class:`flex flex-col gap-1`},te={class:`text-sm`},N={class:`text-xs`,style:{color:`var(--n-text-color-3)`}},P={class:`max-h-60vh overflow-y-auto`},F={class:`config-section`},I={class:`flex items-center gap-2 mb-4 text-base font-semibold`,style:{color:`var(--n-text-color-1)`}},L={class:`space-y-3`},R={class:`flex items-center gap-3 flex-nowrap min-h-10 p-2`},z=(0,i.defineComponent)({__name:`NodeConfigModal`,props:{show:{type:Boolean,default:!1},currentNode:{default:null},users:{default:()=>[]},departments:{default:()=>[]}},emits:[`update:show`,`save`,`cancel`],setup(n,{emit:o}){let s=n,d=o,p=e.t(),m=(0,i.ref)(``),h=(0,i.ref)([]),_=(0,i.ref)([]),v=(0,i.ref)(`any`),y=(0,i.ref)(!1),b=(0,i.ref)([]),z=(0,i.computed)({get:()=>s.show,set:e=>d(`update:show`,e)}),ne=(0,i.computed)(()=>s.currentNode?.type===`start`?`发起人设置`:f[s.currentNode?.type]||`节点设置`),B=(0,i.computed)(()=>{let e=[],t=new Map;return s.departments?.forEach(e=>{t.has(e.id)||t.set(e.id,{key:`dept-${e.id}`,label:`${e.name} ${e.manager?`(负责人: ${e.manager})`:``}`,children:[],isLeaf:!1,disabled:!0})}),(s.users?.filter(e=>!m.value||e.name.includes(m.value)||e.department.includes(m.value))||[]).forEach(e=>{let n=s.departments?.find(t=>t.name===e.department);n&&t.has(n.id)&&t.get(n.id).children.push({key:e.id,label:`${e.name}${e.role?`(${e.role})`:``}`,isLeaf:!0,user:e})}),t.forEach(t=>{t.children.length>0&&e.push(t)}),e}),V=(0,i.computed)(()=>s.users?.filter(e=>h.value.includes(e.id))||[]),H=(0,i.computed)(()=>s.users?.filter(e=>_.value.includes(e.id))||[]),U=(0,i.computed)(()=>s.users?.filter(e=>h.value.includes(e.id))||[]),W=e=>{h.value=e.filter(e=>!e.startsWith(`dept-`))},G=e=>{_.value=e.filter(e=>!e.startsWith(`dept-`))},K=e=>{h.value=h.value.filter(t=>t!==e)},q=e=>{_.value=_.value.filter(t=>t!==e)},J=e=>{h.value=h.value.filter(t=>t!==e)},Y=()=>b.value.push(x()),X=e=>b.value.splice(e,1),Z=e=>{let{initiators:t}=e.data;h.value=t?t.map(e=>e.id):[]},re=e=>{h.value=(e.data.approvers||[]).map(e=>e.id),v.value=e.data.approvalMode||`any`},ie=e=>{_.value=(e.data.copyUsers||[]).map(e=>e.id)},ae=e=>{b.value=r.t(e.data.conditions||[])},oe=async()=>{if(h.value.length===0)return p.error(`请选择发起人`),!1;let e=U.value;return d(`save`,{initiators:e}),p.success(`已设置 ${e.length} 个发起人`),!0},se=async()=>{if(h.value.length===0)return p.error(`请至少选择一个审批人`),!1;let e=V.value;return d(`save`,{approvers:e,approvalMode:v.value}),p.success(`已设置 ${e.length} 个审批人`),!0},ce=async()=>{let e=H.value;return d(`save`,{copyUsers:e}),p.success(`已设置 ${e.length} 个抄送人`),!0},Q=async()=>b.value.length===0?(p.error(`请至少添加一个条件分支`),!1):b.value.some(e=>!e.name?.trim()||!e.field||!e.operator||!e.value?.trim())?(p.error(`请完善所有条件配置`),!1):(d(`save`,{conditions:r.t(b.value)}),p.success(`已设置 ${b.value.length} 个条件分支`),!0),le=async()=>{if(!s.currentNode)return!1;y.value=!0;try{let e={start:oe,approval:se,copy:ce,condition:Q}[s.currentNode.type];return e?await e():!1}catch(e){return p.error(`保存配置失败`,e),!1}finally{y.value=!1}},ue=()=>{d(`cancel`)};(0,i.watch)(()=>s.currentNode,e=>{if(e){m.value=``;let t={start:Z,approval:re,copy:ie,condition:ae}[e.type];t&&t(e)}},{immediate:!0});let de=(0,i.computed)(()=>[`start`,`approval`,`copy`].includes(s.currentNode?.type||``)),$=(0,i.computed)(()=>{let e=s.currentNode?.type;return e===`start`?{icon:`mdi:account-star`,title:`选择发起人`,checkedKeys:h.value,onSelect:W,selectedUsers:U.value,selectedLabel:`已选择发起人`,tagType:`primary`,onRemove:J}:e===`approval`?{icon:`mdi:account-check`,title:`选择审批人`,checkedKeys:h.value,onSelect:W,selectedUsers:V.value,selectedLabel:`已选择审批人`,tagType:`info`,onRemove:K}:e===`copy`?{icon:`mdi:email-outline`,title:`选择抄送人`,checkedKeys:_.value,onSelect:G,selectedUsers:H.value,selectedLabel:`已选择抄送人`,tagType:`success`,onRemove:q}:{icon:``,title:``,checkedKeys:[],onSelect:()=>{},selectedUsers:[],selectedLabel:``,tagType:`default`,onRemove:()=>{}}});return(e,n)=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NModal),{show:z.value,"onUpdate:show":n[2]||=e=>z.value=e,style:{width:`900px`},"mask-closable":!1,preset:`dialog`,title:ne.value,"positive-text":`确定`,"negative-text":`取消`,loading:y.value,onPositiveClick:le,onNegativeClick:ue},{default:(0,i.withCtx)(()=>[(0,i.createCommentVNode)(` 公共选择面板 `),de.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,S,[(0,i.createElementVNode)(`div`,C,[(0,i.createElementVNode)(`h4`,w,[$.value.icon?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(t.t),{key:0,name:$.value.icon,size:16},null,8,[`name`])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createTextVNode)(` `+(0,i.toDisplayString)($.value.title),1)]),(0,i.createVNode)((0,i.unref)(a.NInput),{value:m.value,"onUpdate:value":n[0]||=e=>m.value=e,placeholder:`搜索用户姓名或部门`,clearable:``,class:`mb-4`},{prefix:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:magnify`,size:16})]),_:1},8,[`value`]),(0,i.createElementVNode)(`div`,T,[(0,i.createVNode)((0,i.unref)(a.NTree),{data:B.value,"checked-keys":$.value.checkedKeys,selectable:!1,checkable:``,cascade:``,"virtual-scroll":!0,style:{"max-height":`300px`},"onUpdate:checkedKeys":$.value.onSelect},null,8,[`data`,`checked-keys`,`onUpdate:checkedKeys`])]),$.value.selectedUsers.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,E,[(0,i.createElementVNode)(`h5`,D,(0,i.toDisplayString)($.value.selectedLabel)+` (`+(0,i.toDisplayString)($.value.selectedUsers.length)+`) `,1),(0,i.createElementVNode)(`div`,O,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)($.value.selectedUsers,e=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTag),{key:e.id,closable:``,type:$.value.tagType,onClose:t=>$.value.onRemove(e.id)},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,k,[(0,i.createVNode)((0,i.unref)(a.NAvatar),{src:e.avatar,"fallback-src":(0,i.unref)(g)(e.name),size:`small`},null,8,[`src`,`fallback-src`]),(0,i.createElementVNode)(`span`,A,(0,i.toDisplayString)(e.name),1),(0,i.createElementVNode)(`span`,j,(0,i.toDisplayString)(e.department),1)])]),_:2},1032,[`type`,`onClose`]))),128))])])):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createCommentVNode)(` 审批节点时附带审批模式 `),s.currentNode?.type===`approval`?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,M,[n[3]||=(0,i.createElementVNode)(`h5`,{class:`mb-3 text-sm font-medium`,style:{color:`var(--n-text-color-1)`}},` 审批模式 `,-1),(0,i.createVNode)((0,i.unref)(a.NRadioGroup),{value:v.value,"onUpdate:value":n[1]||=e=>v.value=e},{default:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NSpace),{vertical:``},{default:(0,i.withCtx)(()=>[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)((0,i.unref)(c),e=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NRadio),{key:e.value,value:e.value},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,ee,[(0,i.createElementVNode)(`strong`,te,(0,i.toDisplayString)(e.label),1),(0,i.createElementVNode)(`span`,N,(0,i.toDisplayString)(e.desc),1)])]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`value`])])):(0,i.createCommentVNode)(`v-if`,!0)])):s.currentNode?.type===`condition`?((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:1},[(0,i.createCommentVNode)(` 条件节点配置 `),(0,i.createElementVNode)(`div`,P,[(0,i.createElementVNode)(`div`,F,[(0,i.createElementVNode)(`h4`,I,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:source-branch`,size:16}),n[4]||=(0,i.createTextVNode)(` 条件分支设置 `,-1)]),(0,i.createElementVNode)(`div`,L,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(b.value,(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.id,class:`condition-item`},[(0,i.createVNode)((0,i.unref)(a.NCard),{size:`small`,class:`border border-gray-200 hover:border-gray-300 transition-colors`},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,R,[(0,i.createVNode)((0,i.unref)(a.NInput),{value:e.name,"onUpdate:value":t=>e.name=t,placeholder:`分支名称`,style:{width:`150px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`]),(0,i.createVNode)((0,i.unref)(a.NSelect),{value:e.field,"onUpdate:value":t=>e.field=t,placeholder:`选择字段`,options:(0,i.unref)(l),style:{width:`120px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`,`options`]),(0,i.createVNode)((0,i.unref)(a.NSelect),{value:e.operator,"onUpdate:value":t=>e.operator=t,placeholder:`操作符`,options:(0,i.unref)(u),style:{width:`100px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`,`options`]),(0,i.createVNode)((0,i.unref)(a.NInput),{value:e.value,"onUpdate:value":t=>e.value=t,placeholder:`值`,style:{width:`120px`},class:`flex-shrink-0`},null,8,[`value`,`onUpdate:value`]),(0,i.createVNode)((0,i.unref)(a.NButton),{quaternary:``,type:`error`,onClick:e=>X(n),class:`flex-shrink-0 ml-auto`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:delete`,size:16})]),_:1},8,[`onClick`])])]),_:2},1024)]))),128)),(0,i.createVNode)((0,i.unref)(a.NButton),{dashed:``,block:``,onClick:Y,class:`w-full`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:plus`,size:16})]),default:(0,i.withCtx)(()=>[n[5]||=(0,i.createTextVNode)(` 添加条件 `,-1)]),_:1})])])])],2112)):(0,i.createCommentVNode)(`v-if`,!0)]),_:1},8,[`show`,`title`,`loading`]))}});var ne=n.t(z,[[`__scopeId`,`data-v-df36c1fc`]]);const B={class:`start-node`},V={class:`node-content`},H={class:`node-info`},U={class:`node-text`},W={key:0,class:`initiator-name`},G={key:1,class:`placeholder-text`},K=(0,i.defineComponent)({__name:`StartNode`,props:{id:{},data:{}},setup(e){let n=e,r=(0,i.inject)(`showAddMenu`),a=(0,i.computed)(()=>{let{initiators:e}=n.data;return!e||!Array.isArray(e)||e.length===0?``:e.map(e=>e?.name||`未知用户`).join(`、`)}),o=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)};return(n,r)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,B,[(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,V,[r[0]||=(0,i.createElementVNode)(`div`,{class:`node-icon`},`🚀`,-1),(0,i.createElementVNode)(`div`,H,[(0,i.createElementVNode)(`div`,U,(0,i.toDisplayString)(e.data.title),1),a.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,W,(0,i.toDisplayString)(a.value),1)):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,G,`点击设置发起人`))])]),(0,i.createCommentVNode)(` 添加节点按钮 `),(0,i.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:o,title:`添加下一个节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var q=n.t(K,[[`__scopeId`,`data-v-6fb2df95`]]);const J={class:`approval-node`},Y={class:`node-card`},X={class:`node-header`},Z={class:`node-icon`},re={class:`node-title`},ie={key:0,class:`node-badge`},ae={key:1,class:`approval-mode-badge`},oe={class:`node-content`},se={key:0,class:`approvers-list`},ce={class:`approver-info`},Q={class:`approver-avatar`},le={class:`approver-details`},ue={class:`approver-name`},de={class:`approver-dept`},$={class:`approver-role`},fe={key:0,class:`more-count`},pe={key:1,class:`placeholder`},me=(0,i.defineComponent)({__name:`ApprovalNode`,props:{id:{},data:{}},setup(e){let n=e,r=(0,i.inject)(`showAddMenu`),o=(0,i.inject)(`deleteNode`),s=(0,i.computed)(()=>n.data.approvers??[]),c=(0,i.computed)(()=>s.value.length),l=(0,i.computed)(()=>s.value.slice(0,3)),u=(0,i.computed)(()=>Math.max(0,c.value-3)),d=e=>({any:`或签`,all:`会签`,sequence:`顺序`})[e]||``,f=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)},p=e=>{e.stopPropagation(),o&&o(n.id)};return(n,r)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,J,[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`status-indicator`,e.data.status])},null,2),(0,i.createCommentVNode)(` 删除按钮 `),(0,i.createElementVNode)(`button`,{type:`button`,class:`delete-btn`,onClick:p,title:`删除节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:close`,size:12})]),(0,i.createElementVNode)(`div`,Y,[(0,i.createElementVNode)(`div`,X,[(0,i.createElementVNode)(`div`,Z,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:account`,size:12,color:`white`})]),(0,i.createElementVNode)(`span`,re,(0,i.toDisplayString)(e.data.title),1),c.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ie,(0,i.toDisplayString)(c.value),1)):(0,i.createCommentVNode)(`v-if`,!0),e.data.approvalMode?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ae,(0,i.toDisplayString)(d(e.data.approvalMode)),1)):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createElementVNode)(`div`,oe,[c.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,se,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(l.value,e=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.id,class:`approver-tag`},[(0,i.createElementVNode)(`div`,ce,[(0,i.createElementVNode)(`div`,Q,[(0,i.createVNode)((0,i.unref)(a.NAvatar),{src:e.avatar,"fallback-src":(0,i.unref)(g)(e.name),size:`small`},null,8,[`src`,`fallback-src`])]),(0,i.createElementVNode)(`div`,le,[(0,i.createElementVNode)(`span`,ue,(0,i.toDisplayString)(e.name),1),(0,i.createElementVNode)(`span`,de,(0,i.toDisplayString)(e.department),1),(0,i.createElementVNode)(`span`,$,(0,i.toDisplayString)(e.role),1)])])]))),128)),u.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,fe,`+`+(0,i.toDisplayString)(u.value),1)):(0,i.createCommentVNode)(`v-if`,!0)])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,pe,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:account-plus`,size:24,color:`#9ca3af`}),r[0]||=(0,i.createElementVNode)(`span`,null,`请设置审批人`,-1)]))])]),(0,i.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:f,title:`添加下一个节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var he=n.t(me,[[`__scopeId`,`data-v-e6968a42`]]);const ge={class:`copy-node`},_e={class:`node-card`},ve={class:`node-header`},ye={class:`node-title`},be={key:0,class:`node-badge`},xe={class:`node-content`},Se={key:0,class:`copy-users-list`},Ce={key:0,class:`more-count`},we={key:1,class:`placeholder`},Te=(0,i.defineComponent)({__name:`CopyNode`,props:{id:{},data:{}},setup(e){let n=e,r=(0,i.inject)(`showAddMenu`),a=(0,i.inject)(`deleteNode`),o=(0,i.computed)(()=>n.data.copyUsers??[]),s=(0,i.computed)(()=>o.value.length),c=(0,i.computed)(()=>o.value.slice(0,3)),l=(0,i.computed)(()=>Math.max(0,s.value-3)),u=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)},d=e=>{e.stopPropagation(),a&&a(n.id)};return(n,r)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ge,[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`status-indicator`,e.data.status])},null,2),(0,i.createCommentVNode)(` 删除按钮 `),(0,i.createElementVNode)(`button`,{type:`button`,class:`delete-btn`,onClick:d,title:`删除节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:close`,size:12})]),(0,i.createElementVNode)(`div`,_e,[(0,i.createElementVNode)(`div`,ve,[r[0]||=(0,i.createElementVNode)(`div`,{class:`node-icon`},`📋`,-1),(0,i.createElementVNode)(`span`,ye,(0,i.toDisplayString)(e.data.title),1),s.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,be,(0,i.toDisplayString)(s.value),1)):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createElementVNode)(`div`,xe,[s.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Se,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(c.value,e=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.id,class:`copy-user-tag`},(0,i.toDisplayString)(e.name),1))),128)),l.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ce,`+`+(0,i.toDisplayString)(l.value),1)):(0,i.createCommentVNode)(`v-if`,!0)])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,we,`请设置抄送人`))])]),(0,i.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:u,title:`添加下一个节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var Ee=n.t(Te,[[`__scopeId`,`data-v-010e7ec8`]]);const De={class:`condition-node`},Oe={class:`node-card`},ke={class:`node-header`},Ae={class:`node-title`},je={key:0,class:`node-badge`},Me={class:`node-content`},Ne={key:0,class:`conditions-list`},Pe={key:0,class:`more-count`},Fe={key:1,class:`placeholder`},Ie=(0,i.defineComponent)({__name:`ConditionNode`,props:{id:{},data:{}},setup(e){let n=e,r=(0,i.inject)(`showAddMenu`),a=(0,i.inject)(`deleteNode`),o=(0,i.computed)(()=>n.data.conditions??[]),s=(0,i.computed)(()=>o.value.length),c=(0,i.computed)(()=>o.value.slice(0,2)),l=(0,i.computed)(()=>Math.max(0,s.value-2)),u=e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();r&&r({x:t.left+t.width/2,y:t.bottom+10},n.id)},d=e=>{e.stopPropagation(),a&&a(n.id)};return(n,r)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,De,[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`status-indicator`,e.data.status])},null,2),(0,i.createCommentVNode)(` 删除按钮 `),(0,i.createElementVNode)(`button`,{type:`button`,class:`delete-btn`,onClick:d,title:`删除节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:close`,size:12})]),(0,i.createElementVNode)(`div`,Oe,[(0,i.createElementVNode)(`div`,ke,[r[0]||=(0,i.createElementVNode)(`div`,{class:`node-icon`},`🔀`,-1),(0,i.createElementVNode)(`span`,Ae,(0,i.toDisplayString)(e.data.title),1),s.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,je,(0,i.toDisplayString)(s.value),1)):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createElementVNode)(`div`,Me,[s.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ne,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(c.value,e=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.id,class:`condition-tag`},[r[1]||=(0,i.createElementVNode)(`span`,{class:`condition-icon`},`→`,-1),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)(e.name||`条件`+(c.value.indexOf(e)+1)),1)]))),128)),l.value>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Pe,`+`+(0,i.toDisplayString)(l.value),1)):(0,i.createCommentVNode)(`v-if`,!0)])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Fe,`请设置分支条件`))])]),(0,i.createElementVNode)(`button`,{type:`button`,class:`add-node-btn`,onClick:u,title:`添加下一个节点`},[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:plus`,size:16})])]))}});var Le=n.t(Ie,[[`__scopeId`,`data-v-5ede8782`]]);const Re={start:(0,i.markRaw)(q),approval:(0,i.markRaw)(he),copy:(0,i.markRaw)(Ee),condition:(0,i.markRaw)(Le)};function ze(t,n,a){let o=e.t(),s=(0,i.ref)(r.t(t.modelValue?.nodes??[h])),c=(0,i.ref)(r.t(t.modelValue?.edges??[])),l=(0,i.ref)(t.modelValue?r.t(t.modelValue.config):{version:`1.0`,createdAt:new Date().toISOString()}),u=(0,i.ref)(!1),f=(0,i.ref)({x:0,y:0}),p=(0,i.ref)(!1),m=(0,i.ref)(null),g=(0,i.ref)(null),_=new Set,y=!1,x=(e,t)=>{let n=setTimeout(()=>{_.delete(n),y||e()},t);_.add(n)},S=(0,i.computed)(()=>Re),C=(0,i.computed)(()=>{let e={totalNodes:s.value.length,approvalNodes:0,copyNodes:0,conditionNodes:0};return s.value.forEach(t=>{t.type===`approval`?e.approvalNodes++:t.type===`copy`?e.copyNodes++:t.type===`condition`&&e.conditionNodes++}),e}),w=()=>({nodes:r.t(s.value),edges:r.t(c.value),...l.value!==void 0&&{config:r.t(l.value)}}),T=()=>{let e=w();n(`update:modelValue`,e),n(`change`,e)},E=(e=60,t=400)=>{(0,i.nextTick)(()=>{y||x(()=>{a.value?.fitView?.({padding:e,duration:t})},100)})},D=(e,n)=>{t.readonly||(f.value={x:typeof e.x==`number`?e.x:0,y:typeof e.y==`number`?e.y:0},g.value=n||null,u.value=!0)},O=()=>{u.value=!1},k=e=>{if(t.readonly)return;let n=s.value.findIndex(t=>t.id===e);if(n===-1)return;if(s.value[n].type===`start`){o.warning(`不能删除开始节点`);return}let r=c.value.filter(t=>t.target===e),i=c.value.filter(t=>t.source===e);s.value.splice(n,1),c.value=c.value.filter(t=>t.source!==e&&t.target!==e),r.forEach(e=>{i.forEach(t=>{c.value.push({id:b(e.source,t.target),source:e.source,target:t.target,animated:!0,type:`default`})})}),s.value.forEach((e,t)=>{t>=n&&(e.position.y-=180)}),T(),o.success(`节点已删除`),E()};(0,i.provide)(`showAddMenu`,D),(0,i.provide)(`deleteNode`,k);let A=()=>{let e=s.value.length-1,t=s.value[e];if(g.value){let n=s.value.findIndex(e=>e.id===g.value);n!==-1&&(e=n,t=s.value[e])}return{targetNodeIndex:e,targetNode:t}},j=(e,t)=>({id:v(e),type:e,position:{x:t?.position.x??150,y:(t?.position.y??130)+180},data:{title:d[e],status:`pending`,...e===`approval`&&{approvers:[],approvalMode:`any`},...e===`copy`&&{copyUsers:[]},...e===`condition`&&{conditions:[]}}}),M=(e,t)=>{let n=c.value.filter(t=>t.source===e.id);c.value=c.value.filter(t=>t.source!==e.id),c.value.push({id:b(e.id,t.id),source:e.id,target:t.id,animated:!0,type:`default`}),n.forEach(e=>{c.value.push({id:b(t.id,e.target),source:t.id,target:e.target,animated:!0,type:`default`})})};return(0,i.watch)(()=>t.modelValue,e=>{e&&(r.a(e.nodes??[],s.value)&&r.a(e.edges??[],c.value)&&r.a(e.config,l.value)||(s.value=r.t(e.nodes??[]),c.value=r.t(e.edges??[]),l.value=r.t(e.config)))},{deep:!0}),(0,i.onMounted)(()=>{y=!1,(0,i.nextTick)(()=>{y||x(()=>{a.value?.fitView?.({padding:80,includeHiddenNodes:!1,minZoom:.8,maxZoom:1.2,duration:600})},300)})}),(0,i.onBeforeUnmount)(()=>{y=!0,_.forEach(e=>clearTimeout(e)),_.clear()}),{nodes:s,edges:c,showAddMenu:u,menuPosition:f,showNodeConfig:p,currentNode:m,nodeTypes:S,workflowStats:C,addNode:e=>{if(!t.readonly)try{let{targetNodeIndex:t,targetNode:n}=A(),r=j(e,n);s.value.splice(t+1,0,r);for(let e=t+2;e<s.value.length;e++)s.value[e].position.y+=180;n&&M(n,r),u.value=!1,g.value=null,T(),E()}catch(e){o.error(`添加节点失败,请重试`,e)}},onNodeClick:e=>{let i=s.value.find(t=>t.id===e.node.id);i&&(t.readonly||(m.value=i,p.value=!0),n(`node-click`,r.t(i)))},closeAddMenu:O,handleConfigSave:e=>{if(t.readonly||!m.value)return;let n=s.value.findIndex(e=>e.id===m.value.id);if(n!==-1){let t={...s.value[n],data:{...s.value[n].data,...r.t(e)}};s.value.splice(n,1,t),m.value=t}T(),p.value=!1,o.success(`节点配置已保存`)},resetNodes:()=>{t.readonly||(s.value=r.t([h]),c.value=[],T(),E(80,600),o.success(`画布已清空`))},getCurrentWorkflowData:w,fitView:()=>{let e=a.value;if(!e?.fitView){o.warning(`画布未准备就绪,请稍后重试`);return}(0,i.nextTick)(()=>{y||a.value!==e||e.fitView({padding:50,includeHiddenNodes:!1,minZoom:.5,maxZoom:1.5,duration:800})}),o.success(`已适应窗口大小`)},deleteNode:k}}function Be(t,n,r,a){let o=e.t(),s=(0,i.ref)([]),c=(0,i.ref)(!1),l,u=()=>{let e=[];t.value.forEach(t=>{if(t.type===`approval`&&(t.data.approvers||[]).length===0&&e.push({nodeId:t.id,nodeName:t.data.title,field:`approvers`,message:`审批节点必须设置至少一个审批人,否则流程无法正常运行`,type:`required`}),t.type===`condition`){let n=t.data.conditions||[];if(n.length===0)e.push({nodeId:t.id,nodeName:t.data.title,field:`conditions`,message:`条件分支节点必须配置至少一个分支条件,否则无法进行条件判断`,type:`required`});else{let r=n.filter(e=>!e.name||!e.field||!e.operator||!e.value);r.length>0&&e.push({nodeId:t.id,nodeName:t.data.title,field:`conditions`,message:`有 ${r.length} 个条件分支配置不完整,请完善所有必填字段`,type:`incomplete`})}}});let r=new Set;return n.value.forEach(e=>{r.add(e.source),r.add(e.target)}),t.value.forEach(t=>{t.type!==`start`&&!r.has(t.id)&&e.push({nodeId:t.id,nodeName:t.data.title,field:`connection`,message:`此节点未与其他节点连接,可能导致流程中断`,type:`warning`})}),e};return(0,i.onBeforeUnmount)(()=>{l&&clearTimeout(l)}),{validationErrors:s,showValidationErrors:c,validateWorkflow:u,validateCurrentWorkflow:()=>{let e=u();s.value=e,e.length===0?(o.success(`工作流验证通过!所有节点配置正确`),c.value=!1):(o.error(`发现 ${e.length} 个问题,请查看详细错误`),c.value=!0,a?.onValidateError?.(e))},jumpToErrorNode:e=>{let n=t.value.find(t=>t.id===e);!n||!r.value||(r.value.setCenter(n.position.x,n.position.y,{zoom:1.2,duration:800}),l&&clearTimeout(l),l=setTimeout(()=>{l=void 0,t.value.includes(n)&&(a?.onShowNodeConfig?.(n),c.value=!1)},900),o.info(`已定位到节点:${n.data.title}`))},getFieldDisplayName:e=>p[e]||e,getErrorTypeText:e=>m[e]||e,resetValidation:()=>{l&&clearTimeout(l),l=void 0,s.value=[],c.value=!1}}}const Ve={start:{label:`发起人`,icon:`mdi:play-circle`,colorClass:`start`},approval:{label:`审批节点`,icon:`mdi:account-check`,colorClass:`approval`},copy:{label:`抄送节点`,icon:`mdi:email-outline`,colorClass:`copy`},condition:{label:`条件分支`,icon:`mdi:source-branch`,colorClass:`condition`}},He={any:`或签(任一审批人通过即可)`,all:`会签(所有审批人必须通过)`,sequence:`顺序审批(按顺序依次审批)`},Ue={equals:`等于`,not_equals:`不等于`,greater_than:`大于`,less_than:`小于`,contains:`包含`};function We(e,t){let n=(0,i.ref)(!1),r=(0,i.ref)([]),a=(0,i.ref)({totalNodes:0,approvalNodes:0,copyNodes:0,conditionNodes:0,totalEdges:0}),o={start:e=>{let t=e.initiators||[];return t.length>0?[{type:`users`,label:`发起人`,users:t}]:[{type:`text`,label:`发起人`,value:`所有人`}]},approval:e=>{let t=e.approvalMode||`any`,n=e.approvers||[],r=[{type:`mode`,label:`审批方式`,value:He[t]||t,modeKey:t}];return n.length>0?r.push({type:`users`,label:`审批人`,users:n}):r.push({type:`warning`,label:`审批人`,value:`未设置`}),r},copy:e=>{let t=e.copyUsers||[];return t.length>0?[{type:`users`,label:`抄送人`,users:t}]:[{type:`text`,label:`抄送人`,value:`未设置`}]},condition:e=>{let t=e.conditions||[];return t.length===0?[{type:`warning`,label:`条件分支`,value:`未配置`}]:t.map((e,t)=>{let n=Ue[e.operator]||e.operator;return{type:`text`,label:`分支 ${t+1}`,value:`${e.name||`未命名`} — ${e.field||`?`} ${n} ${e.value||`?`}`}})}},s=e=>{let t=o[e.type||`start`];return t?t(e.data):[]},c=()=>{let n=new Map;e.value.forEach(e=>n.set(e.id,e));let r=new Map,i=new Map;e.value.forEach(e=>{r.set(e.id,[]),i.set(e.id,0)}),t.value.forEach(e=>{r.get(e.source)?.push(e.target),i.set(e.target,(i.get(e.target)||0)+1)});let a=[];i.forEach((e,t)=>{e===0&&a.push(t)});let o=[],s=new Set;for(;a.length>0;){let e=a.shift();if(s.has(e))continue;s.add(e);let t=n.get(e);t&&o.push(t);let c=r.get(e)||[];for(let e of c){let t=(i.get(e)||1)-1;i.set(e,t),t<=0&&!s.has(e)&&a.push(e)}}return e.value.forEach(e=>{s.has(e.id)||o.push(e)}),o},l=()=>c().map((e,t)=>{let n=Ve[e.type||`start`]||Ve.start;return{order:t+1,node:e,nodeTypeLabel:n.label,icon:n.icon,colorClass:n.colorClass,details:s(e)}}),u=()=>{let n={totalNodes:e.value.length,approvalNodes:0,copyNodes:0,conditionNodes:0,totalEdges:t.value.length};return e.value.forEach(e=>{e.type===`approval`?n.approvalNodes++:e.type===`copy`?n.copyNodes++:e.type===`condition`&&n.conditionNodes++}),n};return{showPreview:n,previewSteps:r,previewStats:a,openPreview:()=>{r.value=l(),a.value=u(),n.value=!0},closePreview:()=>{n.value=!1}}}const Ge={class:`approval-workflow-container`},Ke={class:`floating-toolbar`},qe={class:`add-menu-content`},Je=[`onClick`],Ye={class:`menu-text`},Xe={key:0,class:`validation-success`},Ze={class:`success-icon`},Qe={key:1,class:`validation-errors`},$e={class:`error-summary`},et={class:`error-icon`},tt={class:`error-list`},nt={class:`error-header`},rt={class:`error-number`},it={class:`error-info`},at={class:`error-node`},ot={class:`error-field`},st={class:`error-message`},ct={class:`error-actions`},lt={class:`validation-footer`},ut={class:`preview-stats`},dt={class:`stat-item`},ft={class:`stat-value`},pt={class:`stat-item approval`},mt={class:`stat-value`},ht={class:`stat-item copy`},gt={class:`stat-value`},_t={class:`stat-item condition`},vt={class:`stat-value`},yt={class:`stat-item edge`},bt={class:`stat-value`},xt={class:`preview-timeline`},St={class:`step-connector`},Ct={class:`step-dot`},wt={key:0,class:`step-line`},Tt={class:`step-content`},Et={class:`step-header`},Dt={class:`step-order`},Ot={class:`step-type-badge`},kt={class:`step-title`},At={key:0,class:`step-details`},jt={class:`detail-label`},Mt={class:`warning-text`},Nt={key:0,class:`preview-empty`},Pt={class:`preview-footer`},Ft=(0,i.defineComponent)({name:`C_WorkFlow`,__name:`index`,props:{users:{default:()=>[]},roles:{default:()=>[]},departments:{default:()=>[]},modelValue:{},readonly:{type:Boolean,default:!1},theme:{default:`light`}},emits:[`update:modelValue`,`change`,`node-click`,`edge-click`,`save`,`validate-error`],setup(n,{expose:r,emit:c}){let l=n,u=c,d=e.t(),f=(0,i.ref)(),{nodes:p,edges:m,showAddMenu:h,menuPosition:g,showNodeConfig:_,currentNode:v,nodeTypes:y,workflowStats:b,addNode:x,onNodeClick:S,closeAddMenu:C,handleConfigSave:w,resetNodes:T,getCurrentWorkflowData:E,fitView:D,deleteNode:O}=ze(l,u,f),{validationErrors:k,showValidationErrors:A,validateWorkflow:j,validateCurrentWorkflow:M,jumpToErrorNode:ee,getFieldDisplayName:te,getErrorTypeText:N,resetValidation:P}=Be(p,m,f,{onShowNodeConfig:e=>{l.readonly||(v.value=e,_.value=!0)},onValidateError:e=>u(`validate-error`,e)}),{showPreview:F,previewSteps:I,previewStats:L,openPreview:R,closePreview:z}=We(p,m),B=()=>{if(l.readonly)return;let e=j();if(e.length>0){d.error(`工作流验证失败: ${e[0].message}`),A.value=!0;return}u(`save`,E()),d.success(`工作流保存成功`)},V=()=>{R()},H=()=>{z(),B()},U=()=>{l.readonly||(T(),P())};return r({validateWorkflow:j,getCurrentWorkflowData:E,saveWorkflow:B,previewWorkflow:V,deleteNode:O,stats:b}),(e,r)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ge,[(0,i.createCommentVNode)(` 浮动工具栏 `),(0,i.createElementVNode)(`div`,Ke,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,disabled:n.readonly,onClick:B},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:content-save`,size:16})]),default:(0,i.withCtx)(()=>[r[7]||=(0,i.createTextVNode)(` 保存 `,-1)]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:V},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:eye`,size:16})]),default:(0,i.withCtx)(()=>[r[8]||=(0,i.createTextVNode)(` 预览 `,-1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:(0,i.unref)(M),title:`检查工作流配置是否正确`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:check-circle`,size:16})]),default:(0,i.withCtx)(()=>[r[9]||=(0,i.createTextVNode)(` 验证流程 `,-1)]),_:1},8,[`onClick`]),r[10]||=(0,i.createElementVNode)(`div`,{class:`toolbar-divider`},null,-1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:(0,i.unref)(D),title:`适应窗口`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:fit-to-screen`,size:16})]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`error`,disabled:n.readonly,onClick:U,title:`清空画布`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:delete-sweep`,size:16})]),_:1},8,[`disabled`])]),(0,i.createCommentVNode)(` Vue Flow 画布 `),(0,i.createVNode)((0,i.unref)(o.VueFlow),{ref_key:`vueFlowRef`,ref:f,nodes:(0,i.unref)(p),"onUpdate:nodes":r[0]||=e=>(0,i.isRef)(p)?p.value=e:null,edges:(0,i.unref)(m),"onUpdate:edges":r[1]||=e=>(0,i.isRef)(m)?m.value=e:null,"node-types":(0,i.unref)(y),class:`workflow-canvas`,"default-viewport":{zoom:1,x:0,y:0},"min-zoom":.5,"max-zoom":2,"fit-view-on-init":!0,"nodes-draggable":!n.readonly,"nodes-connectable":!n.readonly,"edges-updatable":!n.readonly,"delete-key-code":n.readonly?null:void 0,"elements-selectable":!0,onNodeClick:(0,i.unref)(S),onPaneClick:(0,i.unref)(C)},null,8,[`nodes`,`edges`,`node-types`,`nodes-draggable`,`nodes-connectable`,`edges-updatable`,`delete-key-code`,`onNodeClick`,`onPaneClick`]),(0,i.createCommentVNode)(` 节点添加菜单 `),((0,i.openBlock)(),(0,i.createBlock)(i.Teleport,{to:`body`},[(0,i.withDirectives)((0,i.createElementVNode)(`div`,{class:`add-node-menu`,style:(0,i.normalizeStyle)({left:(0,i.unref)(g).x+`px`,top:(0,i.unref)(g).y+`px`})},[(0,i.createElementVNode)(`div`,qe,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)((0,i.unref)(s),e=>((0,i.openBlock)(),(0,i.createElementBlock)(`button`,{key:e.type,type:`button`,class:`add-menu-item`,onClick:t=>(0,i.unref)(x)(e.type)},[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`menu-icon`,e.iconClass])},[(0,i.createVNode)((0,i.unref)(t.t),{name:e.icon,size:16},null,8,[`name`])],2),(0,i.createElementVNode)(`span`,Ye,(0,i.toDisplayString)(e.label),1)],8,Je))),128))])],4),[[i.vShow,(0,i.unref)(h)]])])),(0,i.createCommentVNode)(` 节点配置弹窗 - 拆分到独立组件 `),(0,i.createVNode)(ne,{show:(0,i.unref)(_),"onUpdate:show":r[2]||=e=>(0,i.isRef)(_)?_.value=e:null,"current-node":(0,i.unref)(v),users:n.users,departments:n.departments,onSave:(0,i.unref)(w),onCancel:r[3]||=e=>_.value=!1},null,8,[`show`,`current-node`,`users`,`departments`,`onSave`]),(0,i.createCommentVNode)(` 验证错误日志抽屉 `),(0,i.createVNode)((0,i.unref)(a.NDrawer),{show:(0,i.unref)(A),"onUpdate:show":r[5]||=e=>(0,i.isRef)(A)?A.value=e:null,width:450,placement:`right`},{default:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NDrawerContent),{title:`流程验证结果`,closable:``},{footer:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,lt,[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:r[4]||=e=>A.value=!1},{default:(0,i.withCtx)(()=>[...r[16]||=[(0,i.createTextVNode)(`关闭`,-1)]]),_:1}),(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(M)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:refresh`,size:16})]),default:(0,i.withCtx)(()=>[r[17]||=(0,i.createTextVNode)(` 重新验证 `,-1)]),_:1},8,[`onClick`])])]),default:(0,i.withCtx)(()=>[(0,i.unref)(k).length===0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Xe,[(0,i.createElementVNode)(`div`,Ze,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:check-circle`,size:32,color:`#52c41a`})]),r[11]||=(0,i.createElementVNode)(`h3`,null,`验证通过`,-1),r[12]||=(0,i.createElementVNode)(`p`,null,`工作流配置正确,所有节点都已正确设置!`,-1)])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Qe,[(0,i.createElementVNode)(`div`,$e,[(0,i.createElementVNode)(`div`,et,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:alert-circle`,size:24,color:`#ff4d4f`})]),(0,i.createElementVNode)(`h3`,null,`发现 `+(0,i.toDisplayString)((0,i.unref)(k).length)+` 个问题`,1),r[13]||=(0,i.createElementVNode)(`p`,null,`请修复以下问题后重新验证:`,-1)]),(0,i.createElementVNode)(`div`,tt,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)((0,i.unref)(k),(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.nodeId,class:`error-item`},[(0,i.createElementVNode)(`div`,nt,[(0,i.createElementVNode)(`span`,rt,(0,i.toDisplayString)(n+1),1),(0,i.createElementVNode)(`div`,it,[(0,i.createElementVNode)(`strong`,at,(0,i.toDisplayString)(e.nodeName),1),(0,i.createElementVNode)(`span`,ot,(0,i.toDisplayString)((0,i.unref)(te)(e.field)),1)]),(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`error-type`,e.type])},(0,i.toDisplayString)((0,i.unref)(N)(e.type)),3)]),(0,i.createElementVNode)(`div`,st,(0,i.toDisplayString)(e.message),1),(0,i.createElementVNode)(`div`,ct,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,onClick:t=>(0,i.unref)(ee)(e.nodeId)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:target`,size:16})]),default:(0,i.withCtx)(()=>[r[14]||=(0,i.createTextVNode)(` 定位节点 `,-1)]),_:1},8,[`onClick`])])]))),128))]),r[15]||=(0,i.createElementVNode)(`div`,{class:`validation-tips`},[(0,i.createElementVNode)(`h4`,null,`💡 常见问题解决方案:`),(0,i.createElementVNode)(`ul`,null,[(0,i.createElementVNode)(`li`,null,[(0,i.createElementVNode)(`strong`,null,`审批人未设置:`),(0,i.createTextVNode)(`点击审批节点,在弹窗中选择审批人员 `)]),(0,i.createElementVNode)(`li`,null,[(0,i.createElementVNode)(`strong`,null,`条件分支未配置:`),(0,i.createTextVNode)(`点击条件节点,添加至少一个条件分支 `)]),(0,i.createElementVNode)(`li`,null,[(0,i.createElementVNode)(`strong`,null,`节点连接断开:`),(0,i.createTextVNode)(` 检查节点之间的连线是否正确 `)])])],-1)]))]),_:1})]),_:1},8,[`show`]),(0,i.createCommentVNode)(` 流程预览抽屉 `),(0,i.createVNode)((0,i.unref)(a.NDrawer),{show:(0,i.unref)(F),"onUpdate:show":r[6]||=e=>(0,i.isRef)(F)?F.value=e:null,width:520,placement:`right`},{default:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NDrawerContent),{title:`流程预览`,closable:``},{footer:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,Pt,[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(z)},{default:(0,i.withCtx)(()=>[...r[24]||=[(0,i.createTextVNode)(`关闭`,-1)]]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:H},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:content-save`,size:16})]),default:(0,i.withCtx)(()=>[r[25]||=(0,i.createTextVNode)(` 确认并保存 `,-1)]),_:1})])]),default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,ut,[(0,i.createElementVNode)(`div`,dt,[(0,i.createElementVNode)(`span`,ft,(0,i.toDisplayString)((0,i.unref)(L).totalNodes),1),r[18]||=(0,i.createElementVNode)(`span`,{class:`stat-label`},`总节点`,-1)]),(0,i.createElementVNode)(`div`,pt,[(0,i.createElementVNode)(`span`,mt,(0,i.toDisplayString)((0,i.unref)(L).approvalNodes),1),r[19]||=(0,i.createElementVNode)(`span`,{class:`stat-label`},`审批`,-1)]),(0,i.createElementVNode)(`div`,ht,[(0,i.createElementVNode)(`span`,gt,(0,i.toDisplayString)((0,i.unref)(L).copyNodes),1),r[20]||=(0,i.createElementVNode)(`span`,{class:`stat-label`},`抄送`,-1)]),(0,i.createElementVNode)(`div`,_t,[(0,i.createElementVNode)(`span`,vt,(0,i.toDisplayString)((0,i.unref)(L).conditionNodes),1),r[21]||=(0,i.createElementVNode)(`span`,{class:`stat-label`},`条件`,-1)]),(0,i.createElementVNode)(`div`,yt,[(0,i.createElementVNode)(`span`,bt,(0,i.toDisplayString)((0,i.unref)(L).totalEdges),1),r[22]||=(0,i.createElementVNode)(`span`,{class:`stat-label`},`连线`,-1)])]),(0,i.createElementVNode)(`div`,xt,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)((0,i.unref)(I),(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:e.node.id,class:(0,i.normalizeClass)([`preview-step`,e.colorClass])},[(0,i.createCommentVNode)(` 时间线连接线 `),(0,i.createElementVNode)(`div`,St,[(0,i.createElementVNode)(`div`,Ct,[(0,i.createVNode)((0,i.unref)(t.t),{name:e.icon,size:16},null,8,[`name`])]),n<(0,i.unref)(I).length-1?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,wt)):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createCommentVNode)(` 步骤内容 `),(0,i.createElementVNode)(`div`,Tt,[(0,i.createElementVNode)(`div`,Et,[(0,i.createElementVNode)(`span`,Dt,`步骤 `+(0,i.toDisplayString)(e.order),1),(0,i.createElementVNode)(`span`,Ot,(0,i.toDisplayString)(e.nodeTypeLabel),1)]),(0,i.createElementVNode)(`div`,kt,(0,i.toDisplayString)(e.node.data.title),1),e.details.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,At,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.details,(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:n,class:(0,i.normalizeClass)([`step-detail-item`,{"is-warning":e.type===`warning`}])},[(0,i.createElementVNode)(`span`,jt,(0,i.toDisplayString)(e.label)+`:`,1),(0,i.createCommentVNode)(` 审批方式 badge `),e.type===`mode`?((0,i.openBlock)(),(0,i.createElementBlock)(`span`,{key:0,class:(0,i.normalizeClass)([`mode-badge`,e.modeKey])},(0,i.toDisplayString)(e.value),3)):e.type===`users`?((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:1},[(0,i.createCommentVNode)(` 人员 tags `),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.users,e=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTag),{key:e.name,size:`small`,bordered:!1,round:``,class:`user-tag`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:account`,size:12})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(e.name),1)]),_:2},1024))),128))],64)):e.type===`warning`?((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:2},[(0,i.createCommentVNode)(` 警告文案 `),(0,i.createElementVNode)(`span`,Mt,` ⚠️ `+(0,i.toDisplayString)(e.value),1)],2112)):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:3},[(0,i.createCommentVNode)(` 普通文本 `),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)(e.value),1)],2112))],2))),128))])):(0,i.createCommentVNode)(`v-if`,!0)])],2))),128))]),(0,i.unref)(I).length===0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Nt,[(0,i.createVNode)((0,i.unref)(t.t),{name:`mdi:file-document-outline`,size:48,color:`#d1d5db`}),r[23]||=(0,i.createElementVNode)(`p`,null,`暂无流程节点`,-1)])):(0,i.createCommentVNode)(`v-if`,!0)]),_:1})]),_:1},8,[`show`])]))}});var It=n.t(Ft,[[`__scopeId`,`data-v-ffd6fa87`]]);Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return It}});
|