@robot-admin/naive-ui-components 0.17.1 → 0.17.3
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 +18 -0
- package/dist/C_AntV.css +105 -105
- package/dist/C_AntV2.cjs +3 -3
- package/dist/C_AntV2.js +3 -3
- package/dist/C_AudioPlayer.css +53 -53
- package/dist/C_AudioPlayer2.cjs +1 -1
- package/dist/C_AudioPlayer2.js +1 -1
- package/dist/C_FilePreview.css +38 -38
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_FullCalendar.css +10 -11
- package/dist/C_FullCalendar2.cjs +1 -1
- package/dist/C_FullCalendar2.js +1 -1
- package/dist/C_Table.base.css +109 -109
- package/dist/C_Table.css +109 -109
- package/dist/C_Tabs.css +18 -18
- package/dist/C_TagsView.css +51 -51
- package/dist/C_TagsView2.cjs +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_VideoPlayer.css +20 -20
- package/dist/C_VideoPlayer2.cjs +2 -2
- package/dist/C_VideoPlayer2.js +3 -3
- package/dist/C_VtableGantt.css +44 -29
- package/dist/C_VtableGantt2.cjs +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_WorkFlow.css +111 -111
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/constants.d.cts +3 -3
- package/dist/constants.d.ts +3 -3
- package/dist/constants2.d.cts +2 -2
- package/dist/constants2.d.ts +2 -2
- package/dist/constants4.d.cts +6 -6
- package/dist/constants4.d.ts +6 -6
- package/dist/constants5.d.cts +11 -10
- package/dist/constants5.d.ts +11 -10
- package/dist/data.d.cts +13 -13
- package/dist/data.d.ts +13 -13
- package/dist/data2.cjs +1 -1
- package/dist/data2.js +1 -1
- package/dist/index.vue.d.cts +6 -6
- package/dist/index.vue.d.ts +6 -6
- package/dist/index10.vue.d.cts +5 -5
- package/dist/index10.vue.d.ts +4 -4
- package/dist/index11.vue.d.cts +4 -4
- package/dist/index11.vue.d.ts +6 -6
- package/dist/index12.vue.d.cts +6 -6
- package/dist/index13.vue.d.ts +5 -5
- package/dist/index14.vue.d.cts +5 -5
- package/dist/index14.vue.d.ts +5 -5
- package/dist/index15.vue.d.cts +5 -5
- package/dist/index15.vue.d.ts +2 -2
- package/dist/index16.vue.d.cts +2 -2
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.cts +1 -1
- package/dist/index18.vue.d.ts +6 -6
- package/dist/index19.vue.d.cts +6 -6
- package/dist/index19.vue.d.ts +5 -5
- package/dist/index2.vue.d.cts +2 -2
- package/dist/index2.vue.d.ts +2 -2
- package/dist/index20.vue.d.cts +1 -1
- package/dist/index20.vue.d.ts +1 -1
- package/dist/index21.vue.d.cts +1 -1
- package/dist/index21.vue.d.ts +1 -1
- package/dist/index22.vue.d.cts +2 -2
- package/dist/index22.vue.d.ts +2 -2
- package/dist/index23.vue.d.cts +1 -1
- package/dist/index23.vue.d.ts +1 -1
- package/dist/index25.vue.d.cts +8 -3
- package/dist/index25.vue.d.ts +8 -3
- package/dist/index27.vue.d.cts +2 -2
- package/dist/index27.vue.d.ts +2 -2
- package/dist/index28.vue.d.cts +4 -4
- package/dist/index28.vue.d.ts +4 -4
- package/dist/index3.vue.d.cts +2 -2
- package/dist/index3.vue.d.ts +2 -2
- package/dist/index4.vue.d.cts +5 -5
- package/dist/index5.vue.d.ts +2 -2
- package/dist/index6.vue.d.cts +2 -2
- package/dist/index6.vue.d.ts +4 -4
- package/dist/index7.vue.d.cts +4 -4
- package/dist/index7.vue.d.ts +2 -2
- package/dist/index8.vue.d.cts +2 -2
- package/dist/index8.vue.d.ts +4 -4
- package/dist/index9.vue.d.cts +4 -4
- package/dist/index9.vue.d.ts +5 -5
- package/dist/mapUtils.d.cts +2 -2
- package/dist/mapUtils.d.ts +2 -2
- package/dist/presets.d.cts +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/style.css +559 -545
- package/dist/useCalendarEvents.d.cts +10 -0
- package/dist/useCalendarEvents.d.ts +10 -0
- package/dist/useCollapsePanel.d.cts +3 -3
- package/dist/useCollapsePanel.d.ts +3 -3
- package/dist/useCropperCore.d.cts +5 -5
- package/dist/useCropperCore.d.ts +5 -5
- package/dist/useDraggableLayout.d.cts +7 -7
- package/dist/useDraggableLayout.d.ts +7 -7
- package/dist/useDynamicFormState.d.cts +3 -3
- package/dist/useDynamicFormState.d.ts +3 -3
- package/dist/useEdgeInteraction.d.cts +4 -2
- package/dist/useEdgeInteraction.d.ts +4 -2
- package/dist/useFullscreen.d.cts +5 -3
- package/dist/useFullscreen.d.ts +5 -3
- package/dist/useInfiniteScroll.d.cts +2 -2
- package/dist/useInfiniteScroll.d.ts +2 -2
- package/dist/useQRCode.d.cts +3 -3
- package/dist/useQRCode.d.ts +3 -3
- package/dist/useSearchState.d.cts +5 -5
- package/dist/useSearchState.d.ts +5 -5
- package/dist/useSignatureHistory.d.cts +6 -6
- package/dist/useSignatureHistory.d.ts +6 -6
- package/dist/useSplitResize.d.cts +8 -8
- package/dist/useSplitResize.d.ts +8 -8
- package/dist/useTableQuery.cjs +3 -3
- package/dist/useTableQuery.d.cts +12 -12
- package/dist/useTableQuery.d.ts +12 -12
- package/dist/useTableQuery.js +3 -3
- package/dist/useTimeSelection.d.cts +4 -4
- package/dist/useTimeSelection.d.ts +4 -4
- package/dist/useWorkflowValidation.d.cts +9 -4
- package/dist/useWorkflowValidation.d.ts +9 -4
- package/dist/verification.d.cts +5 -5
- package/dist/verification.d.ts +5 -5
- package/docs/components.en.md +4 -0
- package/docs/components.md +4 -0
- package/docs/guides/table-density.md +6 -0
- package/package.json +1 -1
package/dist/C_FilePreview2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`),r=require(`./html.cjs`);let i=require(`vue`),a=require(`naive-ui`),o=require(`xlsx`);o=e.t(o);let s=require(`mammoth`);s=e.t(s);const c={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},l={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},u={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},d=[20,50,100,200],f=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],p=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},m=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},h=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&c[t]||`unknown`},g=e=>l[e]||l.unknown,_=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},v=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},y=e=>{if(e==null||e===``)return``;let t=String(e).trim();if(!isNaN(Number(t))&&t!==``&&t.length<15){let e=Number(t);return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:2})}return t},b=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`},x=(e,t)=>{let{c:n,r}=o.utils.decode_range(e[`!ref`]||`A1:A1`).e,i=Array.from({length:n+1},(t,n)=>{let r=e[o.utils.encode_cell({r:0,c:n})],i=r?String(r.v??``).trim():`列${n+1}`;return{title:i||`列${n+1}`,key:`col_${n}`,width:Math.min(Math.max(i.length*12,80),200)}}),a=new Map;return t.forEach(({s:{r:e,c:t},e:{r:n,c:r}})=>{for(let i=e;i<=n;i++)for(let o=t;o<=r;o++)a.set(`${i}-${o}`,{isMain:i===e&&o===t,rowspan:n-e+1,colspan:r-t+1})}),{data:Array.from({length:r+1},(t,r)=>{let i={};for(let t=0;t<=n;t++){let n=e[o.utils.encode_cell({r,c:t})],s=a.get(`${r}-${t}`);i[`col_${t}`]={value:n?n.v??``:``,merged:!!s,hidden:s&&!s.isMain,rowspan:s?.isMain?s.rowspan:1,colspan:s?.isMain?s.colspan:1}}return i}),columns:i}};async function S(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function C(e){let t=await e.arrayBuffer(),n=await s.default.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),i=[],a=document.createElement(`div`);a.innerHTML=r.t(n.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,r=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,i.push({id:n,text:a,level:r})}),{content:a.innerHTML,headings:i}}async function w(e){let t=await e.arrayBuffer(),n=o.read(t,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!n.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);return{sheets:n.SheetNames.map(e=>{let t=n.Sheets[e],r=t[`!merges`]||[],{data:i,columns:a}=x(t,r);return{name:e,data:i,merges:r,columns:a}})}}const T={class:`file-container pdf-container`},E={class:`file-toolbar`},D={class:`file-viewer`},O=[`src`],k=(0,i.defineComponent)({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,T,[(0,i.createElementVNode)(`div`,E,[n[1]||=(0,i.createElementVNode)(`span`,null,`PDF 阅读器 · 翻页、缩放与打印由浏览器提供`,-1),e.pdfUrl?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NButton),{key:0,tag:`a`,href:e.pdfUrl,target:`_blank`,rel:`noopener noreferrer`,size:`small`},{default:(0,i.withCtx)(()=>[...n[0]||=[(0,i.createTextVNode)(`在新标签页打开`,-1)]]),_:1},8,[`href`])):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createElementVNode)(`div`,D,[e.pdfUrl?((0,i.openBlock)(),(0,i.createElementBlock)(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,O)):(0,i.createCommentVNode)(`v-if`,!0)])]))}});var A=n.t(k,[[`__scopeId`,`data-v-db027bb4`]]);const j={class:`file-container word-container`},M={class:`file-toolbar`},ee={class:`flex gap-2 items-center`},te={class:`text-sm text-gray-600 min-w-12 text-center`},ne={class:`word-layout`},re={class:`word-main`},ie={key:0,class:`word-outline`},ae={class:`outline-content`},N=[`onClick`],P={class:`word-content`},F=[`innerHTML`],I=(0,i.defineComponent)({__name:`index`,props:{content:{},headings:{}},setup(e){let n=(0,i.ref)(!0),r=(0,i.ref)(100),o=_(r,u.word),s=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(c,l)=>{let u=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,j,[(0,i.createElementVNode)(`div`,M,[(0,i.createElementVNode)(`div`,ee,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[0]||=e=>n.value=!n.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-list`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(n.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NDivider),{vertical:``}),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value<=50,onClick:l[1]||=e=>(0,i.unref)(o)(`out`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),(0,i.createElementVNode)(`span`,te,(0,i.toDisplayString)(r.value)+`% `,1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value>=200,onClick:l[2]||=e=>(0,i.unref)(o)(`in`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[3]||=e=>(0,i.unref)(o)(`reset`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-fit-screen`})]),default:(0,i.withCtx)(()=>[l[4]||=(0,i.createTextVNode)(` 重置 `,-1)]),_:1})])]),(0,i.createElementVNode)(`div`,ne,[(0,i.createElementVNode)(`div`,re,[(0,i.createCommentVNode)(` 侧边栏目录 `),n.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ie,[l[5]||=(0,i.createElementVNode)(`div`,{class:`outline-header`},[(0,i.createElementVNode)(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),(0,i.createElementVNode)(`div`,ae,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.headings,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:t,class:(0,i.normalizeClass)([`outline-item`,`level-${e.level}`]),onClick:t=>s(e.id)},(0,i.toDisplayString)(e.text),11,N))),128))])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,P,[(0,i.createElementVNode)(`div`,{class:`word-document`,style:(0,i.normalizeStyle)({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,F)])])])])}}});var L=n.t(I,[[`__scopeId`,`data-v-dae08a5f`]]);const R={class:`file-container excel-container`},z={class:`file-toolbar`},B={class:`flex justify-between items-center`},V={class:`flex gap-2 items-center`},H={key:1,class:`text-sm text-gray-600`},U={class:`flex gap-2 items-center`},W={class:`excel-viewer`},G={key:0,class:`excel-info`},K={class:`excel-table-container`},q={key:0,class:`excel-table`},J={class:`header-content`},oe={class:`column-letter`},se={class:`column-title`},ce={class:`row-number`},le=[`rowspan`,`colspan`,`title`],ue={key:1,class:`excel-empty`},de={key:0,class:`excel-pagination`},fe=(0,i.defineComponent)({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(e){let n=e,r=(0,i.ref)(``),o=(0,i.ref)(!1),s=(0,i.ref)(1),c=(0,i.ref)(50),l=(0,i.ref)([]),u=(0,i.ref)([]),f=(0,i.computed)(()=>Math.ceil(l.value.length/c.value)),p=(0,i.computed)(()=>{let e=(s.value-1)*c.value;return l.value.slice(e,e+c.value)}),m=e=>{c.value=e,s.value=1},h=e=>{let t=n.sheets.find(t=>t.name===e);t&&(l.value=t.data,u.value=t.columns,s.value=1)};return(0,i.watch)(r,e=>{h(e)}),(0,i.watch)(()=>n.sheets,e=>{if(e.length>0){let[t]=e;r.value=t.name,l.value=t.data,u.value=t.columns,s.value=1}},{immediate:!0}),(n,h)=>{let g=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,R,[(0,i.createCommentVNode)(` 工具栏 `),(0,i.createElementVNode)(`div`,z,[(0,i.createElementVNode)(`div`,B,[(0,i.createElementVNode)(`div`,V,[e.sheets.length>1?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabs),{key:0,value:r.value,"onUpdate:value":h[0]||=e=>r.value=e,type:`card`,size:`small`},{default:(0,i.withCtx)(()=>[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.sheets,e=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabPane),{key:e.name,name:e.name,tab:e.name},null,8,[`name`,`tab`]))),128))]),_:1},8,[`value`])):((0,i.openBlock)(),(0,i.createElementBlock)(`span`,H,` 工作表: `+(0,i.toDisplayString)(r.value),1))]),(0,i.createElementVNode)(`div`,U,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:h[1]||=e=>o.value=!o.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(g,{name:`ic:outline-format-paint`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(o.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),(0,i.createElementVNode)(`div`,W,[(0,i.createCommentVNode)(` 信息面板 `),l.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,G,[(0,i.createVNode)((0,i.unref)(a.NText),{depth:`3`,class:`text-sm`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` 当前工作表: `+(0,i.toDisplayString)(r.value)+` | 总行数: `+(0,i.toDisplayString)(l.value.length)+` | 总列数: `+(0,i.toDisplayString)(u.value.length)+` | 当前页: `+(0,i.toDisplayString)(s.value)+`/`+(0,i.toDisplayString)(f.value),1)]),_:1})])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 表格 `),(0,i.createElementVNode)(`div`,K,[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`excel-table-wrapper`,{"simple-mode":!o.value}])},[l.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`table`,q,[(0,i.createElementVNode)(`thead`,null,[(0,i.createElementVNode)(`tr`,null,[h[4]||=(0,i.createElementVNode)(`th`,{class:`row-number`},`行号`,-1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(u.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`th`,{key:e.key,class:`excel-header`,style:(0,i.normalizeStyle)({minWidth:e.width+`px`})},[(0,i.createElementVNode)(`div`,J,[(0,i.createElementVNode)(`span`,oe,(0,i.toDisplayString)((0,i.unref)(v)(t)),1),(0,i.createElementVNode)(`span`,se,(0,i.toDisplayString)(e.title),1)])],4))),128))])]),(0,i.createElementVNode)(`tbody`,null,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(p.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`tr`,{key:t,class:`excel-row`},[(0,i.createElementVNode)(`td`,ce,(0,i.toDisplayString)((s.value-1)*c.value+t+1),1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(u.value,t=>(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)(`td`,{key:t.key,class:(0,i.normalizeClass)([`excel-cell`,[(0,i.unref)(b)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,o.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.value},(0,i.toDisplayString)((0,i.unref)(y)(e[t.key]?.value)),11,le)),[[i.vShow,!e[t.key]?.hidden]])),128))]))),128))])])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ue,[(0,i.createVNode)((0,i.unref)(a.NEmpty),{description:`该工作表没有数据或解析失败`},{extra:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:h[2]||=e=>n.$emit(`reload`)},{default:(0,i.withCtx)(()=>[...h[5]||=[(0,i.createTextVNode)(` 重新解析 `,-1)]]),_:1})]),_:1})]))],2),(0,i.createCommentVNode)(` 分页 `),f.value>1?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,de,[(0,i.createVNode)((0,i.unref)(a.NPagination),{page:s.value,"onUpdate:page":h[3]||=e=>s.value=e,"page-count":f.value,"page-size":c.value,"show-size-picker":``,"page-sizes":(0,i.unref)(d),"onUpdate:pageSize":m},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):(0,i.createCommentVNode)(`v-if`,!0)])])])}}});var Y=n.t(fe,[[`__scopeId`,`data-v-c415f23c`]]);function X(e,t){if(!e.trim())return null;try{let n=new URL(t),r=new URL(e,n);if(r.username||r.password)return null;if(r.protocol===`https:`||r.protocol===`http:`&&r.origin===n.origin)return r.href}catch{}return null}function Z(e,t){let{file:n,url:r,fileName:a}=e,o=(0,i.ref)(!1),s=(0,i.ref)(``),c=(0,i.ref)(0),l=(0,i.ref)(!1),u=(0,i.ref)(``),d=(0,i.ref)(0),f=(0,i.ref)(``),m=(0,i.ref)([]),_=(0,i.ref)([]),v=0,y=null,b=(0,i.computed)(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?p(r.value):`未知文件`),x=(0,i.computed)(()=>h(b.value)),T=(0,i.computed)(()=>g(x.value)),E=()=>{let e=u.value;u.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},D=()=>{s.value=``,o.value=!1,c.value=0,E(),d.value=0,f.value=``,m.value=[],_.value=[]},O=e=>{s.value=e,o.value=!1},k=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=X(i,window.location.href);if(!t)throw Error(`不支持此文件地址`);let n=await fetch(t,{signal:e});if(!n.ok)throw Error(`HTTP ${n.status}: ${n.statusText}`);let r=await n.blob();return new File([r],b.value,{type:r.type})}throw Error(`未提供文件或URL`)},A=async(e,t,n)=>{switch(t){case`pdf`:{let t=await S(e);if(n!==v){URL.revokeObjectURL(t.url.split(`#`)[0]);return}u.value=t.url,d.value=t.totalPages;break}case`word`:{let t=await C(e);if(n!==v)return;f.value=t.content,m.value=t.headings;break}case`excel`:{let t=await w(e);if(n!==v)return;_.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},j=async()=>{let e=++v;y?.abort();let t=new AbortController;if(y=t,D(),!n.value&&!r.value){O(`未提供文件或URL`),y=null;return}o.value=!0;try{let n=x.value,r=await k(t.signal);if(e!==v)return;c.value=r.size,await A(r,n,e)}catch(n){if(e!==v||t.signal.aborted)return;let r=n instanceof Error?n.message:`未知错误`;O(`${x.value.toUpperCase()}文件加载失败: ${r}`)}finally{e===v&&(o.value=!1,y=null)}};return(0,i.watch)(()=>n.value?.size,e=>{c.value=e||0},{immediate:!0}),(0,i.onUnmounted)(()=>{v+=1,y?.abort(),E()}),{loading:o,error:s,fileSize:c,showModal:l,pdfUrl:u,pdfTotalPages:d,wordContent:f,wordHeadings:m,excelSheets:_,displayFileName:b,fileType:x,fileConfig:T,loadFile:j,openPreview:async()=>{l.value=!0,await j(),t(`preview`,n.value||r.value)},downloadFile:()=>{if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:b.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=X(r.value,window.location.href);if(!e){O(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,n.value||r.value)}}}function Q(e){let t=(0,i.ref)(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return(0,i.onMounted)(()=>{f.forEach(e=>document.addEventListener(e,n))}),(0,i.onUnmounted)(()=>{f.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const pe={class:`c-file-preview-wrapper`},me={key:0,class:`file-info-card`},he={class:`file-info`},ge={class:`file-icon`},_e={class:`file-details`},ve={class:`file-name`},ye={class:`file-meta`},be={class:`file-size`},xe={class:`file-actions`},Se={key:1,class:`c-file-preview-inline`},Ce={key:0,class:`status-container`,role:`status`},we={class:`modal-header`},Te={class:`modal-title`},Ee={class:`modal-actions`},De={class:`modal-content`},$={class:`preview-header`},Oe={class:`flex justify-between items-center`},ke={class:`flex items-center gap-3`},Ae={class:`text-sm text-gray-500`},je={class:`flex gap-2`},Me={class:`preview-content`},Ne={key:0,class:`status-container`},Pe=(0,i.defineComponent)({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:n}){let{file:r,url:o,fileName:s,autoPreview:c,inline:l}=(0,i.toRefs)(e),{loading:u,error:d,fileSize:f,showModal:p,pdfUrl:h,pdfTotalPages:g,wordContent:_,wordHeadings:v,excelSheets:y,displayFileName:b,fileType:x,fileConfig:S,loadFile:C,openPreview:w,downloadFile:T}=Z({file:r,url:o,fileName:s},n),E=(0,i.ref)(),{isFullscreen:D,toggleFullscreen:O,exitFullscreen:k}=Q(E);return(0,i.watch)(p,e=>{e||k()}),(0,i.watch)([r,o,c,l],([e,t],n)=>{if(!(typeof window>`u`)){if(l.value){(e||t)&&C();return}if(p.value){(e!==n?.[0]||t!==n?.[1])&&C();return}c.value&&(e||t)&&w()}},{immediate:!0}),(e,n)=>{let r=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,pe,[(0,i.createCommentVNode)(` 文件信息卡片模式 `),!(0,i.unref)(c)&&!(0,i.unref)(l)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,me,[(0,i.createElementVNode)(`div`,he,[(0,i.createElementVNode)(`div`,ge,[(0,i.createVNode)(r,{name:(0,i.unref)(S).icon,size:40,color:(0,i.unref)(S).color},null,8,[`name`,`color`])]),(0,i.createElementVNode)(`div`,_e,[(0,i.createElementVNode)(`div`,ve,[(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`250px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(b)),1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(S).tagType,size:`small`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(x).toUpperCase()),1)]),_:1},8,[`type`])]),(0,i.createElementVNode)(`div`,ye,[(0,i.createElementVNode)(`span`,be,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(f))),1)])]),(0,i.createElementVNode)(`div`,xe,[(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(w)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-visibility`})]),default:(0,i.withCtx)(()=>[n[2]||=(0,i.createTextVNode)(` 预览 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{type:`tertiary`,onClick:(0,i.unref)(T)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[3]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`])])])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.unref)(l)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Se,[(0,i.unref)(u)||(0,i.unref)(d)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ce,[(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NSpin),{key:0,size:`large`},{description:(0,i.withCtx)(()=>[...n[4]||=[(0,i.createTextVNode)(`正在加载文档…`,-1)]]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(d)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:(0,i.unref)(C)},{default:(0,i.withCtx)(()=>[...n[5]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(0,i.unref)(x)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(A,{key:1,"pdf-url":(0,i.unref)(h),"total-pages":(0,i.unref)(g)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(x)===`word`?((0,i.openBlock)(),(0,i.createBlock)(L,{key:2,content:(0,i.unref)(_),headings:(0,i.unref)(v)},null,8,[`content`,`headings`])):(0,i.unref)(x)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:3,sheets:(0,i.unref)(y),onReload:(0,i.unref)(C)},null,8,[`sheets`,`onReload`])):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:4,status:`warning`,title:`不支持的文件格式`,description:`支持 PDF、DOCX、XLSX 和 XLS 文件`}))])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 模态框预览 `),(0,i.unref)(l)?(0,i.createCommentVNode)(`v-if`,!0):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NModal),{key:2,show:(0,i.unref)(p),"onUpdate:show":n[1]||=e=>(0,i.isRef)(p)?p.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,{ref_key:`modalContainer`,ref:E,class:`modal-container`},[(0,i.createCommentVNode)(` 自定义头部 `),(0,i.createElementVNode)(`div`,we,[(0,i.createElementVNode)(`div`,Te,[(0,i.createVNode)(r,{name:(0,i.unref)(S).icon,size:20,color:(0,i.unref)(S).color},null,8,[`name`,`color`]),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)((0,i.unref)(b)),1)]),(0,i.createElementVNode)(`div`,Ee,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:(0,i.unref)(T)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[6]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>p.value=!1},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-close`})]),_:1})])]),(0,i.createCommentVNode)(` 预览内容 `),(0,i.createElementVNode)(`div`,De,[(0,i.createCommentVNode)(` 文件信息头部 `),(0,i.createElementVNode)(`div`,$,[(0,i.createElementVNode)(`div`,Oe,[(0,i.createElementVNode)(`div`,ke,[(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(S).tagType,size:`small`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(S).icon},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(x).toUpperCase()),1)]),_:1},8,[`type`]),(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`300px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(b)),1)]),_:1}),(0,i.createElementVNode)(`span`,Ae,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(f))),1)]),(0,i.createElementVNode)(`div`,je,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,disabled:(0,i.unref)(u),onClick:(0,i.unref)(C)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-refresh`})]),default:(0,i.withCtx)(()=>[n[7]||=(0,i.createTextVNode)(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,onClick:(0,i.unref)(O)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(D)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(D)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),(0,i.createCommentVNode)(` 预览内容区域 `),(0,i.createElementVNode)(`div`,Me,[(0,i.createCommentVNode)(` 加载和错误状态 `),(0,i.unref)(u)||(0,i.unref)(d)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ne,[(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NSpin),{key:0,size:`large`},{description:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` 正在加载`+(0,i.toDisplayString)((0,i.unref)(x).toUpperCase())+`文件... `,1)]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(d)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(C)},{default:(0,i.withCtx)(()=>[...n[8]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:1},[(0,i.createCommentVNode)(` 文件预览 — 委托给子组件 `),(0,i.unref)(x)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(A,{key:0,"pdf-url":(0,i.unref)(h),"total-pages":(0,i.unref)(g)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(x)===`word`?((0,i.openBlock)(),(0,i.createBlock)(L,{key:1,content:(0,i.unref)(_),headings:(0,i.unref)(v)},null,8,[`content`,`headings`])):(0,i.unref)(x)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:2,sheets:(0,i.unref)(y),onReload:(0,i.unref)(C)},null,8,[`sheets`,`onReload`])):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:3},[(0,i.createCommentVNode)(` 不支持的文件类型 `),(0,i.createVNode)((0,i.unref)(a.NResult),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${(0,i.unref)(x).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64))])])],512)]),_:1},8,[`show`]))])}}});var Fe=n.t(Pe,[[`__scopeId`,`data-v-c409e6f4`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Fe}});
|
|
1
|
+
const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`),r=require(`./html.cjs`);let i=require(`vue`),a=require(`naive-ui`),o=require(`xlsx`);o=e.t(o);let s=require(`mammoth`);s=e.t(s);const c={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},l={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},u={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},d=[20,50,100,200],f=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],p=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},m=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},h=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&c[t]||`unknown`},g=e=>l[e]||l.unknown,_=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},v=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},y=e=>{if(e==null||e===``)return``;let t=String(e).trim();if(!isNaN(Number(t))&&t!==``&&t.length<15){let e=Number(t);return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:2})}return t},b=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`},x=(e,t)=>{let{c:n,r}=o.utils.decode_range(e[`!ref`]||`A1:A1`).e,i=Array.from({length:n+1},(t,n)=>{let r=e[o.utils.encode_cell({r:0,c:n})],i=r?String(r.v??``).trim():`列${n+1}`;return{title:i||`列${n+1}`,key:`col_${n}`,width:Math.min(Math.max(i.length*12,80),200)}}),a=new Map;return t.forEach(({s:{r:e,c:t},e:{r:n,c:r}})=>{for(let i=e;i<=n;i++)for(let o=t;o<=r;o++)a.set(`${i}-${o}`,{isMain:i===e&&o===t,rowspan:n-e+1,colspan:r-t+1})}),{data:Array.from({length:r+1},(t,r)=>{let i={};for(let t=0;t<=n;t++){let n=e[o.utils.encode_cell({r,c:t})],s=a.get(`${r}-${t}`);i[`col_${t}`]={value:n?n.v??``:``,merged:!!s,hidden:s&&!s.isMain,rowspan:s?.isMain?s.rowspan:1,colspan:s?.isMain?s.colspan:1}}return i}),columns:i}};async function S(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function C(e){let t=await e.arrayBuffer(),n=await s.default.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),i=[],a=document.createElement(`div`);a.innerHTML=r.t(n.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,r=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,i.push({id:n,text:a,level:r})}),{content:a.innerHTML,headings:i}}async function w(e){let t=await e.arrayBuffer(),n=o.read(t,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!n.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);return{sheets:n.SheetNames.map(e=>{let t=n.Sheets[e],r=t[`!merges`]||[],{data:i,columns:a}=x(t,r);return{name:e,data:i,merges:r,columns:a}})}}const T={class:`file-container pdf-container`},E={class:`file-toolbar`},D={class:`file-viewer`},O=[`src`],k=(0,i.defineComponent)({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,T,[(0,i.createElementVNode)(`div`,E,[n[1]||=(0,i.createElementVNode)(`span`,null,`PDF 阅读器 · 翻页、缩放与打印由浏览器提供`,-1),e.pdfUrl?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NButton),{key:0,tag:`a`,href:e.pdfUrl,target:`_blank`,rel:`noopener noreferrer`,size:`small`},{default:(0,i.withCtx)(()=>[...n[0]||=[(0,i.createTextVNode)(`在新标签页打开`,-1)]]),_:1},8,[`href`])):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createElementVNode)(`div`,D,[e.pdfUrl?((0,i.openBlock)(),(0,i.createElementBlock)(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,O)):(0,i.createCommentVNode)(`v-if`,!0)])]))}});var A=n.t(k,[[`__scopeId`,`data-v-db027bb4`]]);const j={class:`file-container word-container`},M={class:`file-toolbar`},N={class:`flex gap-2 items-center`},P={class:`text-sm text-gray-600 min-w-12 text-center`},F={class:`word-layout`},I={class:`word-main`},ee={key:0,class:`word-outline`},te={class:`outline-content`},ne=[`onClick`],re={class:`word-content`},ie=[`innerHTML`],ae=(0,i.defineComponent)({__name:`index`,props:{content:{},headings:{}},setup(e){let n=(0,i.ref)(!0),r=(0,i.ref)(100),o=_(r,u.word),s=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(c,l)=>{let u=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,j,[(0,i.createElementVNode)(`div`,M,[(0,i.createElementVNode)(`div`,N,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[0]||=e=>n.value=!n.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-list`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(n.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NDivider),{vertical:``}),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value<=50,onClick:l[1]||=e=>(0,i.unref)(o)(`out`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),(0,i.createElementVNode)(`span`,P,(0,i.toDisplayString)(r.value)+`% `,1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value>=200,onClick:l[2]||=e=>(0,i.unref)(o)(`in`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[3]||=e=>(0,i.unref)(o)(`reset`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-fit-screen`})]),default:(0,i.withCtx)(()=>[l[4]||=(0,i.createTextVNode)(` 重置 `,-1)]),_:1})])]),(0,i.createElementVNode)(`div`,F,[(0,i.createElementVNode)(`div`,I,[(0,i.createCommentVNode)(` 侧边栏目录 `),n.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ee,[l[5]||=(0,i.createElementVNode)(`div`,{class:`outline-header`},[(0,i.createElementVNode)(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),(0,i.createElementVNode)(`div`,te,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.headings,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:t,class:(0,i.normalizeClass)([`outline-item`,`level-${e.level}`]),onClick:t=>s(e.id)},(0,i.toDisplayString)(e.text),11,ne))),128))])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,re,[(0,i.createElementVNode)(`div`,{class:`word-document`,style:(0,i.normalizeStyle)({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,ie)])])])])}}});var L=n.t(ae,[[`__scopeId`,`data-v-dae08a5f`]]);const R={class:`file-container excel-container`},z={class:`file-toolbar`},B={class:`flex justify-between items-center`},V={class:`flex gap-2 items-center`},H={key:1,class:`text-sm text-gray-600`},U={class:`flex gap-2 items-center`},W={class:`excel-viewer`},G={key:0,class:`excel-info`},K={class:`excel-table-container`},q={key:0,class:`excel-table`},J={class:`header-content`},oe={class:`column-letter`},se={class:`column-title`},ce={class:`row-number`},le=[`rowspan`,`colspan`,`title`],ue={key:1,class:`excel-empty`},de={key:0,class:`excel-pagination`},fe=(0,i.defineComponent)({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(e){let n=e,r=(0,i.ref)(``),o=(0,i.ref)(!1),s=(0,i.ref)(1),c=(0,i.ref)(50),l=(0,i.ref)([]),u=(0,i.ref)([]),f=(0,i.computed)(()=>Math.ceil(l.value.length/c.value)),p=(0,i.computed)(()=>{let e=(s.value-1)*c.value;return l.value.slice(e,e+c.value)}),m=e=>{c.value=e,s.value=1},h=e=>{let t=n.sheets.find(t=>t.name===e);t&&(l.value=t.data,u.value=t.columns,s.value=1)};return(0,i.watch)(r,e=>{h(e)}),(0,i.watch)(()=>n.sheets,e=>{if(e.length>0){let[t]=e;r.value=t.name,l.value=t.data,u.value=t.columns,s.value=1}},{immediate:!0}),(n,h)=>{let g=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,R,[(0,i.createCommentVNode)(` 工具栏 `),(0,i.createElementVNode)(`div`,z,[(0,i.createElementVNode)(`div`,B,[(0,i.createElementVNode)(`div`,V,[e.sheets.length>1?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabs),{key:0,value:r.value,"onUpdate:value":h[0]||=e=>r.value=e,type:`card`,size:`small`},{default:(0,i.withCtx)(()=>[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.sheets,e=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabPane),{key:e.name,name:e.name,tab:e.name},null,8,[`name`,`tab`]))),128))]),_:1},8,[`value`])):((0,i.openBlock)(),(0,i.createElementBlock)(`span`,H,` 工作表: `+(0,i.toDisplayString)(r.value),1))]),(0,i.createElementVNode)(`div`,U,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:h[1]||=e=>o.value=!o.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(g,{name:`ic:outline-format-paint`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(o.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),(0,i.createElementVNode)(`div`,W,[(0,i.createCommentVNode)(` 信息面板 `),l.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,G,[(0,i.createVNode)((0,i.unref)(a.NText),{depth:`3`,class:`text-sm`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` 当前工作表: `+(0,i.toDisplayString)(r.value)+` | 总行数: `+(0,i.toDisplayString)(l.value.length)+` | 总列数: `+(0,i.toDisplayString)(u.value.length)+` | 当前页: `+(0,i.toDisplayString)(s.value)+`/`+(0,i.toDisplayString)(f.value),1)]),_:1})])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 表格 `),(0,i.createElementVNode)(`div`,K,[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`excel-table-wrapper`,{"simple-mode":!o.value}])},[l.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`table`,q,[(0,i.createElementVNode)(`thead`,null,[(0,i.createElementVNode)(`tr`,null,[h[4]||=(0,i.createElementVNode)(`th`,{class:`row-number`},`行号`,-1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(u.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`th`,{key:e.key,class:`excel-header`,style:(0,i.normalizeStyle)({minWidth:e.width+`px`})},[(0,i.createElementVNode)(`div`,J,[(0,i.createElementVNode)(`span`,oe,(0,i.toDisplayString)((0,i.unref)(v)(t)),1),(0,i.createElementVNode)(`span`,se,(0,i.toDisplayString)(e.title),1)])],4))),128))])]),(0,i.createElementVNode)(`tbody`,null,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(p.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`tr`,{key:t,class:`excel-row`},[(0,i.createElementVNode)(`td`,ce,(0,i.toDisplayString)((s.value-1)*c.value+t+1),1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(u.value,t=>(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)(`td`,{key:t.key,class:(0,i.normalizeClass)([`excel-cell`,[(0,i.unref)(b)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,o.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.value},(0,i.toDisplayString)((0,i.unref)(y)(e[t.key]?.value)),11,le)),[[i.vShow,!e[t.key]?.hidden]])),128))]))),128))])])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ue,[(0,i.createVNode)((0,i.unref)(a.NEmpty),{description:`该工作表没有数据或解析失败`},{extra:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:h[2]||=e=>n.$emit(`reload`)},{default:(0,i.withCtx)(()=>[...h[5]||=[(0,i.createTextVNode)(` 重新解析 `,-1)]]),_:1})]),_:1})]))],2),(0,i.createCommentVNode)(` 分页 `),f.value>1?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,de,[(0,i.createVNode)((0,i.unref)(a.NPagination),{page:s.value,"onUpdate:page":h[3]||=e=>s.value=e,"page-count":f.value,"page-size":c.value,"show-size-picker":``,"page-sizes":(0,i.unref)(d),"onUpdate:pageSize":m},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):(0,i.createCommentVNode)(`v-if`,!0)])])])}}});var Y=n.t(fe,[[`__scopeId`,`data-v-c415f23c`]]);function X(e,t){if(!e.trim())return null;try{let n=new URL(t),r=new URL(e,n);if(r.username||r.password)return null;if(r.protocol===`https:`||r.protocol===`http:`&&r.origin===n.origin)return r.href}catch{}return null}function Z(e,t){let{file:n,url:r,fileName:a}=e,o=(0,i.ref)(!1),s=(0,i.ref)(``),c=(0,i.ref)(0),l=(0,i.ref)(!1),u=(0,i.ref)(``),d=(0,i.ref)(0),f=(0,i.ref)(``),m=(0,i.ref)([]),_=(0,i.ref)([]),v=0,y=null,b=!1,x=(e,t)=>e===v&&!b&&!t.signal.aborted,T=(0,i.computed)(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?p(r.value):`未知文件`),E=(0,i.computed)(()=>h(T.value)),D=(0,i.computed)(()=>g(E.value)),O=(0,i.computed)(()=>!!(n.value||r.value)),k=()=>{let e=u.value;u.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},A=()=>{s.value=``,o.value=!1,c.value=0,k(),d.value=0,f.value=``,m.value=[],_.value=[]},j=e=>{s.value=e,o.value=!1},M=()=>{v+=1,y?.abort(),y=null,A()},N=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=X(i,window.location.href);if(!t)throw Error(`不支持此文件地址`);let n=await fetch(t,{signal:e});if(!n.ok)throw Error(`HTTP ${n.status}: ${n.statusText}`);let r=await n.blob();return new File([r],T.value,{type:r.type})}throw Error(`未提供文件或URL`)},P=async(e,t,n)=>{switch(t){case`pdf`:{let t=await S(e);if(n!==v){URL.revokeObjectURL(t.url.split(`#`)[0]);return}u.value=t.url,d.value=t.totalPages;break}case`word`:{let t=await C(e);if(n!==v)return;f.value=t.content,m.value=t.headings;break}case`excel`:{let t=await w(e);if(n!==v)return;_.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},F=async()=>{if(b)return!1;let e=++v;y?.abort();let t=new AbortController;if(y=t,A(),!O.value)return y=null,!1;o.value=!0;try{let n=E.value,r=await N(t.signal);return e===v?(c.value=r.size,await P(r,n,e),x(e,t)):!1}catch(n){if(!x(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return j(`${E.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===v&&(o.value=!1,y=null)}};return(0,i.watch)([n,r],([e,t])=>{!e&&!t&&M()},{flush:`sync`}),(0,i.watch)(()=>n.value?.size,e=>{c.value=e||0},{immediate:!0}),(0,i.onUnmounted)(()=>{b=!0,M()}),{loading:o,error:s,fileSize:c,showModal:l,hasSource:O,pdfUrl:u,pdfTotalPages:d,wordContent:f,wordHeadings:m,excelSheets:_,displayFileName:T,fileType:E,fileConfig:D,loadFile:F,openPreview:async()=>{if(b)return;let e=n.value||r.value;l.value=!0,await F()&&e&&e===(n.value||r.value)&&!b&&t(`preview`,e)},downloadFile:()=>{let e=n.value||r.value;if(!(b||!e)){if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:T.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=X(r.value,window.location.href);if(!e){j(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:M}}function Q(e){let t=(0,i.ref)(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return(0,i.onMounted)(()=>{f.forEach(e=>document.addEventListener(e,n))}),(0,i.onUnmounted)(()=>{f.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const pe={class:`c-file-preview-wrapper`},me={key:0,class:`file-info-card`},he={class:`file-info`},ge={class:`file-icon`},_e={class:`file-details`},ve={class:`file-name`},ye={class:`file-meta`},be={class:`file-size`},xe={class:`file-actions`},Se={key:1,class:`c-file-preview-inline`},Ce={key:1,class:`status-container`,role:`status`},we={class:`modal-header`},Te={class:`modal-title`},Ee={class:`modal-actions`},De={class:`modal-content`},$={class:`preview-header`},Oe={class:`flex justify-between items-center`},ke={class:`flex items-center gap-3`},Ae={class:`text-sm text-gray-500`},je={class:`flex gap-2`},Me={class:`preview-content`},Ne={key:1,class:`status-container`},Pe=(0,i.defineComponent)({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:n}){let{file:r,url:o,fileName:s,autoPreview:c,inline:l}=(0,i.toRefs)(e),{loading:u,error:d,fileSize:f,showModal:p,hasSource:h,pdfUrl:g,pdfTotalPages:_,wordContent:v,wordHeadings:y,excelSheets:b,displayFileName:x,fileType:S,fileConfig:C,loadFile:w,openPreview:T,downloadFile:E}=Z({file:r,url:o,fileName:s},n),D=(0,i.ref)(),{isFullscreen:O,toggleFullscreen:k,exitFullscreen:j}=Q(D);return(0,i.watch)(p,e=>{e||j()}),(0,i.watch)([r,o,c,l,s],(e,t)=>{if(!(typeof window>`u`||!h.value)){if(l.value){w();return}if(p.value){[0,1,4].some(n=>e[n]!==t?.[n])&&w();return}c.value&&T()}},{immediate:!0}),(e,n)=>{let r=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,pe,[(0,i.createCommentVNode)(` 文件信息卡片模式 `),!(0,i.unref)(c)&&!(0,i.unref)(l)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,me,[(0,i.createElementVNode)(`div`,he,[(0,i.createElementVNode)(`div`,ge,[(0,i.createVNode)(r,{name:(0,i.unref)(C).icon,size:40,color:(0,i.unref)(C).color},null,8,[`name`,`color`])]),(0,i.createElementVNode)(`div`,_e,[(0,i.createElementVNode)(`div`,ve,[(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`250px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(x)),1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(C).tagType,size:`small`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(S).toUpperCase()),1)]),_:1},8,[`type`])]),(0,i.createElementVNode)(`div`,ye,[(0,i.createElementVNode)(`span`,be,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(f))),1)])]),(0,i.createElementVNode)(`div`,xe,[(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(T)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-visibility`})]),default:(0,i.withCtx)(()=>[n[2]||=(0,i.createTextVNode)(` 预览 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{type:`tertiary`,onClick:(0,i.unref)(E)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[3]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`])])])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.unref)(l)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Se,[(0,i.unref)(h)?(0,i.unref)(u)||(0,i.unref)(d)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ce,[(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NSpin),{key:0,size:`large`},{description:(0,i.withCtx)(()=>[...n[4]||=[(0,i.createTextVNode)(`正在加载文档…`,-1)]]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(d)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:(0,i.unref)(w)},{default:(0,i.withCtx)(()=>[...n[5]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(0,i.unref)(S)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(A,{key:2,"pdf-url":(0,i.unref)(g),"total-pages":(0,i.unref)(_)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(S)===`word`?((0,i.openBlock)(),(0,i.createBlock)(L,{key:3,content:(0,i.unref)(v),headings:(0,i.unref)(y)},null,8,[`content`,`headings`])):(0,i.unref)(S)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:4,sheets:(0,i.unref)(b),onReload:(0,i.unref)(w)},null,8,[`sheets`,`onReload`])):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:5,status:`warning`,title:`不支持的文件格式`,description:`支持 PDF、DOCX、XLSX 和 XLS 文件`})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 模态框预览 `),(0,i.unref)(l)?(0,i.createCommentVNode)(`v-if`,!0):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NModal),{key:2,show:(0,i.unref)(p),"onUpdate:show":n[1]||=e=>(0,i.isRef)(p)?p.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,{ref_key:`modalContainer`,ref:D,class:`modal-container`},[(0,i.createCommentVNode)(` 自定义头部 `),(0,i.createElementVNode)(`div`,we,[(0,i.createElementVNode)(`div`,Te,[(0,i.createVNode)(r,{name:(0,i.unref)(C).icon,size:20,color:(0,i.unref)(C).color},null,8,[`name`,`color`]),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)((0,i.unref)(x)),1)]),(0,i.createElementVNode)(`div`,Ee,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:(0,i.unref)(E)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[6]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>p.value=!1},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-close`})]),_:1})])]),(0,i.createCommentVNode)(` 预览内容 `),(0,i.createElementVNode)(`div`,De,[(0,i.createCommentVNode)(` 文件信息头部 `),(0,i.createElementVNode)(`div`,$,[(0,i.createElementVNode)(`div`,Oe,[(0,i.createElementVNode)(`div`,ke,[(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(C).tagType,size:`small`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(C).icon},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(S).toUpperCase()),1)]),_:1},8,[`type`]),(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`300px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(x)),1)]),_:1}),(0,i.createElementVNode)(`span`,Ae,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(f))),1)]),(0,i.createElementVNode)(`div`,je,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,disabled:(0,i.unref)(u),onClick:(0,i.unref)(w)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-refresh`})]),default:(0,i.withCtx)(()=>[n[7]||=(0,i.createTextVNode)(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,onClick:(0,i.unref)(k)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(O)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(O)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),(0,i.createCommentVNode)(` 预览内容区域 `),(0,i.createElementVNode)(`div`,Me,[(0,i.createCommentVNode)(` 加载和错误状态 `),(0,i.unref)(h)?(0,i.unref)(u)||(0,i.unref)(d)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ne,[(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NSpin),{key:0,size:`large`},{description:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` 正在加载`+(0,i.toDisplayString)((0,i.unref)(S).toUpperCase())+`文件... `,1)]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(d)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(w)},{default:(0,i.withCtx)(()=>[...n[8]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:2},[(0,i.createCommentVNode)(` 文件预览 — 委托给子组件 `),(0,i.unref)(S)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(A,{key:0,"pdf-url":(0,i.unref)(g),"total-pages":(0,i.unref)(_)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(S)===`word`?((0,i.openBlock)(),(0,i.createBlock)(L,{key:1,content:(0,i.unref)(v),headings:(0,i.unref)(y)},null,8,[`content`,`headings`])):(0,i.unref)(S)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:2,sheets:(0,i.unref)(b),onReload:(0,i.unref)(w)},null,8,[`sheets`,`onReload`])):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:3},[(0,i.createCommentVNode)(` 不支持的文件类型 `),(0,i.createVNode)((0,i.unref)(a.NResult),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${(0,i.unref)(S).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64)):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])])],512)]),_:1},8,[`show`]))])}}});var Fe=n.t(Pe,[[`__scopeId`,`data-v-15033e6f`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Fe}});
|
package/dist/C_FilePreview2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{t as n}from"./html.js";import{Fragment as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createTextVNode as l,createVNode as u,defineComponent as d,isRef as f,normalizeClass as p,normalizeStyle as m,onMounted as h,onUnmounted as g,openBlock as _,ref as v,renderList as y,resolveComponent as b,toDisplayString as x,toRefs as S,unref as C,vShow as w,watch as T,withCtx as E,withDirectives as D}from"vue";import{NButton as O,NDivider as k,NEllipsis as A,NEmpty as j,NModal as ee,NPagination as M,NResult as N,NSpin as P,NTabPane as F,NTabs as I,NTag as L,NText as R}from"naive-ui";import*as z from"xlsx";import B from"mammoth";const V={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},H={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},U={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},W=[20,50,100,200],G=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],K=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},q=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},te=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&V[t]||`unknown`},ne=e=>H[e]||H.unknown,re=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},ie=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},ae=e=>{if(e==null||e===``)return``;let t=String(e).trim();if(!isNaN(Number(t))&&t!==``&&t.length<15){let e=Number(t);return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:2})}return t},oe=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`},se=(e,t)=>{let{c:n,r}=z.utils.decode_range(e[`!ref`]||`A1:A1`).e,i=Array.from({length:n+1},(t,n)=>{let r=e[z.utils.encode_cell({r:0,c:n})],i=r?String(r.v??``).trim():`列${n+1}`;return{title:i||`列${n+1}`,key:`col_${n}`,width:Math.min(Math.max(i.length*12,80),200)}}),a=new Map;return t.forEach(({s:{r:e,c:t},e:{r:n,c:r}})=>{for(let i=e;i<=n;i++)for(let o=t;o<=r;o++)a.set(`${i}-${o}`,{isMain:i===e&&o===t,rowspan:n-e+1,colspan:r-t+1})}),{data:Array.from({length:r+1},(t,r)=>{let i={};for(let t=0;t<=n;t++){let n=e[z.utils.encode_cell({r,c:t})],o=a.get(`${r}-${t}`);i[`col_${t}`]={value:n?n.v??``:``,merged:!!o,hidden:o&&!o.isMain,rowspan:o?.isMain?o.rowspan:1,colspan:o?.isMain?o.colspan:1}}return i}),columns:i}};async function ce(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function le(e){let t=await e.arrayBuffer(),r=await B.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),i=[],a=document.createElement(`div`);a.innerHTML=n(r.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,r=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,i.push({id:n,text:a,level:r})}),{content:a.innerHTML,headings:i}}async function ue(e){let t=await e.arrayBuffer(),n=z.read(t,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!n.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);return{sheets:n.SheetNames.map(e=>{let t=n.Sheets[e],r=t[`!merges`]||[],{data:i,columns:a}=se(t,r);return{name:e,data:i,merges:r,columns:a}})}}const de={class:`file-container pdf-container`},fe={class:`file-toolbar`},pe={class:`file-viewer`},me=[`src`];var J=t(d({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>(_(),s(`div`,de,[c(`div`,fe,[n[1]||=c(`span`,null,`PDF 阅读器 · 翻页、缩放与打印由浏览器提供`,-1),e.pdfUrl?(_(),a(C(O),{key:0,tag:`a`,href:e.pdfUrl,target:`_blank`,rel:`noopener noreferrer`,size:`small`},{default:E(()=>[...n[0]||=[l(`在新标签页打开`,-1)]]),_:1},8,[`href`])):o(`v-if`,!0)]),c(`div`,pe,[e.pdfUrl?(_(),s(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,me)):o(`v-if`,!0)])]))}}),[[`__scopeId`,`data-v-db027bb4`]]);const he={class:`file-container word-container`},ge={class:`file-toolbar`},_e={class:`flex gap-2 items-center`},ve={class:`text-sm text-gray-600 min-w-12 text-center`},ye={class:`word-layout`},be={class:`word-main`},xe={key:0,class:`word-outline`},Se={class:`outline-content`},Ce=[`onClick`],we={class:`word-content`},Te=[`innerHTML`];var Y=t(d({__name:`index`,props:{content:{},headings:{}},setup(t){let n=v(!0),i=v(100),a=re(i,U.word),d=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(f,h)=>{let g=e;return _(),s(`div`,he,[c(`div`,ge,[c(`div`,_e,[u(C(O),{size:`small`,onClick:h[0]||=e=>n.value=!n.value},{icon:E(()=>[u(g,{name:`ic:outline-list`})]),default:E(()=>[l(` `+x(n.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),u(C(k),{vertical:``}),u(C(O),{size:`small`,disabled:i.value<=50,onClick:h[1]||=e=>C(a)(`out`)},{icon:E(()=>[u(g,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),c(`span`,ve,x(i.value)+`% `,1),u(C(O),{size:`small`,disabled:i.value>=200,onClick:h[2]||=e=>C(a)(`in`)},{icon:E(()=>[u(g,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),u(C(O),{size:`small`,onClick:h[3]||=e=>C(a)(`reset`)},{icon:E(()=>[u(g,{name:`ic:outline-fit-screen`})]),default:E(()=>[h[4]||=l(` 重置 `,-1)]),_:1})])]),c(`div`,ye,[c(`div`,be,[o(` 侧边栏目录 `),n.value?(_(),s(`div`,xe,[h[5]||=c(`div`,{class:`outline-header`},[c(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),c(`div`,Se,[(_(!0),s(r,null,y(t.headings,(e,t)=>(_(),s(`div`,{key:t,class:p([`outline-item`,`level-${e.level}`]),onClick:t=>d(e.id)},x(e.text),11,Ce))),128))])])):o(`v-if`,!0),o(` 主要内容区域 `),c(`div`,we,[c(`div`,{class:`word-document`,style:m({transform:`scale(${i.value/100})`,transformOrigin:`top center`}),innerHTML:t.content},null,12,Te)])])])])}}}),[[`__scopeId`,`data-v-dae08a5f`]]);const Ee={class:`file-container excel-container`},De={class:`file-toolbar`},Oe={class:`flex justify-between items-center`},ke={class:`flex gap-2 items-center`},Ae={key:1,class:`text-sm text-gray-600`},je={class:`flex gap-2 items-center`},Me={class:`excel-viewer`},Ne={key:0,class:`excel-info`},Pe={class:`excel-table-container`},Fe={key:0,class:`excel-table`},Ie={class:`header-content`},Le={class:`column-letter`},Re={class:`column-title`},ze={class:`row-number`},Be=[`rowspan`,`colspan`,`title`],Ve={key:1,class:`excel-empty`},He={key:0,class:`excel-pagination`};var X=t(d({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(t){let n=t,d=v(``),f=v(!1),h=v(1),g=v(50),b=v([]),S=v([]),k=i(()=>Math.ceil(b.value.length/g.value)),A=i(()=>{let e=(h.value-1)*g.value;return b.value.slice(e,e+g.value)}),ee=e=>{g.value=e,h.value=1},N=e=>{let t=n.sheets.find(t=>t.name===e);t&&(b.value=t.data,S.value=t.columns,h.value=1)};return T(d,e=>{N(e)}),T(()=>n.sheets,e=>{if(e.length>0){let[t]=e;d.value=t.name,b.value=t.data,S.value=t.columns,h.value=1}},{immediate:!0}),(n,i)=>{let v=e;return _(),s(`div`,Ee,[o(` 工具栏 `),c(`div`,De,[c(`div`,Oe,[c(`div`,ke,[t.sheets.length>1?(_(),a(C(I),{key:0,value:d.value,"onUpdate:value":i[0]||=e=>d.value=e,type:`card`,size:`small`},{default:E(()=>[(_(!0),s(r,null,y(t.sheets,e=>(_(),a(C(F),{key:e.name,name:e.name,tab:e.name},null,8,[`name`,`tab`]))),128))]),_:1},8,[`value`])):(_(),s(`span`,Ae,` 工作表: `+x(d.value),1))]),c(`div`,je,[u(C(O),{size:`small`,onClick:i[1]||=e=>f.value=!f.value},{icon:E(()=>[u(v,{name:`ic:outline-format-paint`})]),default:E(()=>[l(` `+x(f.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),c(`div`,Me,[o(` 信息面板 `),b.value.length>0?(_(),s(`div`,Ne,[u(C(R),{depth:`3`,class:`text-sm`},{default:E(()=>[l(` 当前工作表: `+x(d.value)+` | 总行数: `+x(b.value.length)+` | 总列数: `+x(S.value.length)+` | 当前页: `+x(h.value)+`/`+x(k.value),1)]),_:1})])):o(`v-if`,!0),o(` 表格 `),c(`div`,Pe,[c(`div`,{class:p([`excel-table-wrapper`,{"simple-mode":!f.value}])},[b.value.length>0?(_(),s(`table`,Fe,[c(`thead`,null,[c(`tr`,null,[i[4]||=c(`th`,{class:`row-number`},`行号`,-1),(_(!0),s(r,null,y(S.value,(e,t)=>(_(),s(`th`,{key:e.key,class:`excel-header`,style:m({minWidth:e.width+`px`})},[c(`div`,Ie,[c(`span`,Le,x(C(ie)(t)),1),c(`span`,Re,x(e.title),1)])],4))),128))])]),c(`tbody`,null,[(_(!0),s(r,null,y(A.value,(e,t)=>(_(),s(`tr`,{key:t,class:`excel-row`},[c(`td`,ze,x((h.value-1)*g.value+t+1),1),(_(!0),s(r,null,y(S.value,t=>D((_(),s(`td`,{key:t.key,class:p([`excel-cell`,[C(oe)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,f.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.value},x(C(ae)(e[t.key]?.value)),11,Be)),[[w,!e[t.key]?.hidden]])),128))]))),128))])])):(_(),s(`div`,Ve,[u(C(j),{description:`该工作表没有数据或解析失败`},{extra:E(()=>[u(C(O),{size:`small`,onClick:i[2]||=e=>n.$emit(`reload`)},{default:E(()=>[...i[5]||=[l(` 重新解析 `,-1)]]),_:1})]),_:1})]))],2),o(` 分页 `),k.value>1?(_(),s(`div`,He,[u(C(M),{page:h.value,"onUpdate:page":i[3]||=e=>h.value=e,"page-count":k.value,"page-size":g.value,"show-size-picker":``,"page-sizes":C(W),"onUpdate:pageSize":ee},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):o(`v-if`,!0)])])])}}}),[[`__scopeId`,`data-v-c415f23c`]]);function Z(e,t){if(!e.trim())return null;try{let n=new URL(t),r=new URL(e,n);if(r.username||r.password)return null;if(r.protocol===`https:`||r.protocol===`http:`&&r.origin===n.origin)return r.href}catch{}return null}function Q(e,t){let{file:n,url:r,fileName:a}=e,o=v(!1),s=v(``),c=v(0),l=v(!1),u=v(``),d=v(0),f=v(``),p=v([]),m=v([]),h=0,_=null,y=i(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?K(r.value):`未知文件`),b=i(()=>te(y.value)),x=i(()=>ne(b.value)),S=()=>{let e=u.value;u.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},C=()=>{s.value=``,o.value=!1,c.value=0,S(),d.value=0,f.value=``,p.value=[],m.value=[]},w=e=>{s.value=e,o.value=!1},E=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=Z(i,window.location.href);if(!t)throw Error(`不支持此文件地址`);let n=await fetch(t,{signal:e});if(!n.ok)throw Error(`HTTP ${n.status}: ${n.statusText}`);let r=await n.blob();return new File([r],y.value,{type:r.type})}throw Error(`未提供文件或URL`)},D=async(e,t,n)=>{switch(t){case`pdf`:{let t=await ce(e);if(n!==h){URL.revokeObjectURL(t.url.split(`#`)[0]);return}u.value=t.url,d.value=t.totalPages;break}case`word`:{let t=await le(e);if(n!==h)return;f.value=t.content,p.value=t.headings;break}case`excel`:{let t=await ue(e);if(n!==h)return;m.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},O=async()=>{let e=++h;_?.abort();let t=new AbortController;if(_=t,C(),!n.value&&!r.value){w(`未提供文件或URL`),_=null;return}o.value=!0;try{let n=b.value,r=await E(t.signal);if(e!==h)return;c.value=r.size,await D(r,n,e)}catch(n){if(e!==h||t.signal.aborted)return;let r=n instanceof Error?n.message:`未知错误`;w(`${b.value.toUpperCase()}文件加载失败: ${r}`)}finally{e===h&&(o.value=!1,_=null)}};return T(()=>n.value?.size,e=>{c.value=e||0},{immediate:!0}),g(()=>{h+=1,_?.abort(),S()}),{loading:o,error:s,fileSize:c,showModal:l,pdfUrl:u,pdfTotalPages:d,wordContent:f,wordHeadings:p,excelSheets:m,displayFileName:y,fileType:b,fileConfig:x,loadFile:O,openPreview:async()=>{l.value=!0,await O(),t(`preview`,n.value||r.value)},downloadFile:()=>{if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:y.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=Z(r.value,window.location.href);if(!e){w(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,n.value||r.value)}}}function $(e){let t=v(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return h(()=>{G.forEach(e=>document.addEventListener(e,n))}),g(()=>{G.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const Ue={class:`c-file-preview-wrapper`},We={key:0,class:`file-info-card`},Ge={class:`file-info`},Ke={class:`file-icon`},qe={class:`file-details`},Je={class:`file-name`},Ye={class:`file-meta`},Xe={class:`file-size`},Ze={class:`file-actions`},Qe={key:1,class:`c-file-preview-inline`},$e={key:0,class:`status-container`,role:`status`},et={class:`modal-header`},tt={class:`modal-title`},nt={class:`modal-actions`},rt={class:`modal-content`},it={class:`preview-header`},at={class:`flex justify-between items-center`},ot={class:`flex items-center gap-3`},st={class:`text-sm text-gray-500`},ct={class:`flex gap-2`},lt={class:`preview-content`},ut={key:0,class:`status-container`};var dt=t(d({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(t,{emit:n}){let{file:i,url:d,fileName:p,autoPreview:m,inline:h}=S(t),{loading:g,error:y,fileSize:b,showModal:w,pdfUrl:D,pdfTotalPages:k,wordContent:j,wordHeadings:M,excelSheets:F,displayFileName:I,fileType:R,fileConfig:z,loadFile:B,openPreview:V,downloadFile:H}=Q({file:i,url:d,fileName:p},n),U=v(),{isFullscreen:W,toggleFullscreen:G,exitFullscreen:K}=$(U);return T(w,e=>{e||K()}),T([i,d,m,h],([e,t],n)=>{if(!(typeof window>`u`)){if(h.value){(e||t)&&B();return}if(w.value){(e!==n?.[0]||t!==n?.[1])&&B();return}m.value&&(e||t)&&V()}},{immediate:!0}),(t,n)=>{let i=e;return _(),s(`div`,Ue,[o(` 文件信息卡片模式 `),!C(m)&&!C(h)?(_(),s(`div`,We,[c(`div`,Ge,[c(`div`,Ke,[u(i,{name:C(z).icon,size:40,color:C(z).color},null,8,[`name`,`color`])]),c(`div`,qe,[c(`div`,Je,[u(C(A),{style:{"max-width":`250px`}},{default:E(()=>[l(x(C(I)),1)]),_:1}),u(C(L),{type:C(z).tagType,size:`small`},{default:E(()=>[l(x(C(R).toUpperCase()),1)]),_:1},8,[`type`])]),c(`div`,Ye,[c(`span`,Xe,x(C(q)(C(b))),1)])]),c(`div`,Ze,[u(C(O),{type:`primary`,onClick:C(V)},{icon:E(()=>[u(i,{name:`ic:outline-visibility`})]),default:E(()=>[n[2]||=l(` 预览 `,-1)]),_:1},8,[`onClick`]),u(C(O),{type:`tertiary`,onClick:C(H)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[3]||=l(` 下载 `,-1)]),_:1},8,[`onClick`])])])])):o(`v-if`,!0),C(h)?(_(),s(`div`,Qe,[C(g)||C(y)?(_(),s(`div`,$e,[C(g)?(_(),a(C(P),{key:0,size:`large`},{description:E(()=>[...n[4]||=[l(`正在加载文档…`,-1)]]),_:1})):(_(),a(C(N),{key:1,status:`error`,title:`预览失败`,description:C(y)},{footer:E(()=>[u(C(O),{size:`small`,onClick:C(B)},{default:E(()=>[...n[5]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):C(R)===`pdf`?(_(),a(J,{key:1,"pdf-url":C(D),"total-pages":C(k)},null,8,[`pdf-url`,`total-pages`])):C(R)===`word`?(_(),a(Y,{key:2,content:C(j),headings:C(M)},null,8,[`content`,`headings`])):C(R)===`excel`?(_(),a(X,{key:3,sheets:C(F),onReload:C(B)},null,8,[`sheets`,`onReload`])):(_(),a(C(N),{key:4,status:`warning`,title:`不支持的文件格式`,description:`支持 PDF、DOCX、XLSX 和 XLS 文件`}))])):o(`v-if`,!0),o(` 模态框预览 `),C(h)?o(`v-if`,!0):(_(),a(C(ee),{key:2,show:C(w),"onUpdate:show":n[1]||=e=>f(w)?w.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:E(()=>[c(`div`,{ref_key:`modalContainer`,ref:U,class:`modal-container`},[o(` 自定义头部 `),c(`div`,et,[c(`div`,tt,[u(i,{name:C(z).icon,size:20,color:C(z).color},null,8,[`name`,`color`]),c(`span`,null,x(C(I)),1)]),c(`div`,nt,[u(C(O),{size:`small`,type:`tertiary`,onClick:C(H)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[6]||=l(` 下载 `,-1)]),_:1},8,[`onClick`]),u(C(O),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>w.value=!1},{icon:E(()=>[u(i,{name:`ic:outline-close`})]),_:1})])]),o(` 预览内容 `),c(`div`,rt,[o(` 文件信息头部 `),c(`div`,it,[c(`div`,at,[c(`div`,ot,[u(C(L),{type:C(z).tagType,size:`small`},{icon:E(()=>[u(i,{name:C(z).icon},null,8,[`name`])]),default:E(()=>[l(` `+x(C(R).toUpperCase()),1)]),_:1},8,[`type`]),u(C(A),{style:{"max-width":`300px`}},{default:E(()=>[l(x(C(I)),1)]),_:1}),c(`span`,st,x(C(q)(C(b))),1)]),c(`div`,ct,[u(C(O),{size:`small`,type:`tertiary`,disabled:C(g),onClick:C(B)},{icon:E(()=>[u(i,{name:`ic:outline-refresh`})]),default:E(()=>[n[7]||=l(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),u(C(O),{size:`small`,type:`primary`,onClick:C(G)},{icon:E(()=>[u(i,{name:C(W)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:E(()=>[l(` `+x(C(W)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),o(` 预览内容区域 `),c(`div`,lt,[o(` 加载和错误状态 `),C(g)||C(y)?(_(),s(`div`,ut,[C(g)?(_(),a(C(P),{key:0,size:`large`},{description:E(()=>[l(` 正在加载`+x(C(R).toUpperCase())+`文件... `,1)]),_:1})):(_(),a(C(N),{key:1,status:`error`,title:`预览失败`,description:C(y)},{footer:E(()=>[u(C(O),{onClick:C(B)},{default:E(()=>[...n[8]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(_(),s(r,{key:1},[o(` 文件预览 — 委托给子组件 `),C(R)===`pdf`?(_(),a(J,{key:0,"pdf-url":C(D),"total-pages":C(k)},null,8,[`pdf-url`,`total-pages`])):C(R)===`word`?(_(),a(Y,{key:1,content:C(j),headings:C(M)},null,8,[`content`,`headings`])):C(R)===`excel`?(_(),a(X,{key:2,sheets:C(F),onReload:C(B)},null,8,[`sheets`,`onReload`])):(_(),s(r,{key:3},[o(` 不支持的文件类型 `),u(C(N),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${C(R).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64))])])],512)]),_:1},8,[`show`]))])}}}),[[`__scopeId`,`data-v-c409e6f4`]]);export{$ as n,Q as r,dt as t};
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{t as n}from"./html.js";import{Fragment as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createTextVNode as l,createVNode as u,defineComponent as d,isRef as f,normalizeClass as p,normalizeStyle as m,onMounted as h,onUnmounted as g,openBlock as _,ref as v,renderList as y,resolveComponent as b,toDisplayString as x,toRefs as S,unref as C,vShow as w,watch as T,withCtx as E,withDirectives as D}from"vue";import{NButton as O,NDivider as k,NEllipsis as A,NEmpty as j,NModal as M,NPagination as N,NResult as P,NSpin as F,NTabPane as I,NTabs as L,NTag as R,NText as z}from"naive-ui";import*as B from"xlsx";import V from"mammoth";const H={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},U={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},W={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},G=[20,50,100,200],K=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],q=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},J=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},Y=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&H[t]||`unknown`},ee=e=>U[e]||U.unknown,te=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},ne=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},re=e=>{if(e==null||e===``)return``;let t=String(e).trim();if(!isNaN(Number(t))&&t!==``&&t.length<15){let e=Number(t);return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:2})}return t},ie=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`},ae=(e,t)=>{let{c:n,r}=B.utils.decode_range(e[`!ref`]||`A1:A1`).e,i=Array.from({length:n+1},(t,n)=>{let r=e[B.utils.encode_cell({r:0,c:n})],i=r?String(r.v??``).trim():`列${n+1}`;return{title:i||`列${n+1}`,key:`col_${n}`,width:Math.min(Math.max(i.length*12,80),200)}}),a=new Map;return t.forEach(({s:{r:e,c:t},e:{r:n,c:r}})=>{for(let i=e;i<=n;i++)for(let o=t;o<=r;o++)a.set(`${i}-${o}`,{isMain:i===e&&o===t,rowspan:n-e+1,colspan:r-t+1})}),{data:Array.from({length:r+1},(t,r)=>{let i={};for(let t=0;t<=n;t++){let n=e[B.utils.encode_cell({r,c:t})],o=a.get(`${r}-${t}`);i[`col_${t}`]={value:n?n.v??``:``,merged:!!o,hidden:o&&!o.isMain,rowspan:o?.isMain?o.rowspan:1,colspan:o?.isMain?o.colspan:1}}return i}),columns:i}};async function oe(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function se(e){let t=await e.arrayBuffer(),r=await V.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),i=[],a=document.createElement(`div`);a.innerHTML=n(r.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,r=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,i.push({id:n,text:a,level:r})}),{content:a.innerHTML,headings:i}}async function ce(e){let t=await e.arrayBuffer(),n=B.read(t,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!n.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);return{sheets:n.SheetNames.map(e=>{let t=n.Sheets[e],r=t[`!merges`]||[],{data:i,columns:a}=ae(t,r);return{name:e,data:i,merges:r,columns:a}})}}const le={class:`file-container pdf-container`},ue={class:`file-toolbar`},de={class:`file-viewer`},fe=[`src`];var X=t(d({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>(_(),s(`div`,le,[c(`div`,ue,[n[1]||=c(`span`,null,`PDF 阅读器 · 翻页、缩放与打印由浏览器提供`,-1),e.pdfUrl?(_(),a(C(O),{key:0,tag:`a`,href:e.pdfUrl,target:`_blank`,rel:`noopener noreferrer`,size:`small`},{default:E(()=>[...n[0]||=[l(`在新标签页打开`,-1)]]),_:1},8,[`href`])):o(`v-if`,!0)]),c(`div`,de,[e.pdfUrl?(_(),s(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,fe)):o(`v-if`,!0)])]))}}),[[`__scopeId`,`data-v-db027bb4`]]);const pe={class:`file-container word-container`},me={class:`file-toolbar`},he={class:`flex gap-2 items-center`},ge={class:`text-sm text-gray-600 min-w-12 text-center`},_e={class:`word-layout`},ve={class:`word-main`},ye={key:0,class:`word-outline`},be={class:`outline-content`},xe=[`onClick`],Se={class:`word-content`},Ce=[`innerHTML`];var Z=t(d({__name:`index`,props:{content:{},headings:{}},setup(t){let n=v(!0),i=v(100),a=te(i,W.word),d=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(f,h)=>{let g=e;return _(),s(`div`,pe,[c(`div`,me,[c(`div`,he,[u(C(O),{size:`small`,onClick:h[0]||=e=>n.value=!n.value},{icon:E(()=>[u(g,{name:`ic:outline-list`})]),default:E(()=>[l(` `+x(n.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),u(C(k),{vertical:``}),u(C(O),{size:`small`,disabled:i.value<=50,onClick:h[1]||=e=>C(a)(`out`)},{icon:E(()=>[u(g,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),c(`span`,ge,x(i.value)+`% `,1),u(C(O),{size:`small`,disabled:i.value>=200,onClick:h[2]||=e=>C(a)(`in`)},{icon:E(()=>[u(g,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),u(C(O),{size:`small`,onClick:h[3]||=e=>C(a)(`reset`)},{icon:E(()=>[u(g,{name:`ic:outline-fit-screen`})]),default:E(()=>[h[4]||=l(` 重置 `,-1)]),_:1})])]),c(`div`,_e,[c(`div`,ve,[o(` 侧边栏目录 `),n.value?(_(),s(`div`,ye,[h[5]||=c(`div`,{class:`outline-header`},[c(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),c(`div`,be,[(_(!0),s(r,null,y(t.headings,(e,t)=>(_(),s(`div`,{key:t,class:p([`outline-item`,`level-${e.level}`]),onClick:t=>d(e.id)},x(e.text),11,xe))),128))])])):o(`v-if`,!0),o(` 主要内容区域 `),c(`div`,Se,[c(`div`,{class:`word-document`,style:m({transform:`scale(${i.value/100})`,transformOrigin:`top center`}),innerHTML:t.content},null,12,Ce)])])])])}}}),[[`__scopeId`,`data-v-dae08a5f`]]);const we={class:`file-container excel-container`},Te={class:`file-toolbar`},Ee={class:`flex justify-between items-center`},De={class:`flex gap-2 items-center`},Oe={key:1,class:`text-sm text-gray-600`},ke={class:`flex gap-2 items-center`},Ae={class:`excel-viewer`},je={key:0,class:`excel-info`},Me={class:`excel-table-container`},Ne={key:0,class:`excel-table`},Pe={class:`header-content`},Fe={class:`column-letter`},Ie={class:`column-title`},Le={class:`row-number`},Re=[`rowspan`,`colspan`,`title`],ze={key:1,class:`excel-empty`},Be={key:0,class:`excel-pagination`};var Q=t(d({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(t){let n=t,d=v(``),f=v(!1),h=v(1),g=v(50),b=v([]),S=v([]),k=i(()=>Math.ceil(b.value.length/g.value)),A=i(()=>{let e=(h.value-1)*g.value;return b.value.slice(e,e+g.value)}),M=e=>{g.value=e,h.value=1},P=e=>{let t=n.sheets.find(t=>t.name===e);t&&(b.value=t.data,S.value=t.columns,h.value=1)};return T(d,e=>{P(e)}),T(()=>n.sheets,e=>{if(e.length>0){let[t]=e;d.value=t.name,b.value=t.data,S.value=t.columns,h.value=1}},{immediate:!0}),(n,i)=>{let v=e;return _(),s(`div`,we,[o(` 工具栏 `),c(`div`,Te,[c(`div`,Ee,[c(`div`,De,[t.sheets.length>1?(_(),a(C(L),{key:0,value:d.value,"onUpdate:value":i[0]||=e=>d.value=e,type:`card`,size:`small`},{default:E(()=>[(_(!0),s(r,null,y(t.sheets,e=>(_(),a(C(I),{key:e.name,name:e.name,tab:e.name},null,8,[`name`,`tab`]))),128))]),_:1},8,[`value`])):(_(),s(`span`,Oe,` 工作表: `+x(d.value),1))]),c(`div`,ke,[u(C(O),{size:`small`,onClick:i[1]||=e=>f.value=!f.value},{icon:E(()=>[u(v,{name:`ic:outline-format-paint`})]),default:E(()=>[l(` `+x(f.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),c(`div`,Ae,[o(` 信息面板 `),b.value.length>0?(_(),s(`div`,je,[u(C(z),{depth:`3`,class:`text-sm`},{default:E(()=>[l(` 当前工作表: `+x(d.value)+` | 总行数: `+x(b.value.length)+` | 总列数: `+x(S.value.length)+` | 当前页: `+x(h.value)+`/`+x(k.value),1)]),_:1})])):o(`v-if`,!0),o(` 表格 `),c(`div`,Me,[c(`div`,{class:p([`excel-table-wrapper`,{"simple-mode":!f.value}])},[b.value.length>0?(_(),s(`table`,Ne,[c(`thead`,null,[c(`tr`,null,[i[4]||=c(`th`,{class:`row-number`},`行号`,-1),(_(!0),s(r,null,y(S.value,(e,t)=>(_(),s(`th`,{key:e.key,class:`excel-header`,style:m({minWidth:e.width+`px`})},[c(`div`,Pe,[c(`span`,Fe,x(C(ne)(t)),1),c(`span`,Ie,x(e.title),1)])],4))),128))])]),c(`tbody`,null,[(_(!0),s(r,null,y(A.value,(e,t)=>(_(),s(`tr`,{key:t,class:`excel-row`},[c(`td`,Le,x((h.value-1)*g.value+t+1),1),(_(!0),s(r,null,y(S.value,t=>D((_(),s(`td`,{key:t.key,class:p([`excel-cell`,[C(ie)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,f.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.value},x(C(re)(e[t.key]?.value)),11,Re)),[[w,!e[t.key]?.hidden]])),128))]))),128))])])):(_(),s(`div`,ze,[u(C(j),{description:`该工作表没有数据或解析失败`},{extra:E(()=>[u(C(O),{size:`small`,onClick:i[2]||=e=>n.$emit(`reload`)},{default:E(()=>[...i[5]||=[l(` 重新解析 `,-1)]]),_:1})]),_:1})]))],2),o(` 分页 `),k.value>1?(_(),s(`div`,Be,[u(C(N),{page:h.value,"onUpdate:page":i[3]||=e=>h.value=e,"page-count":k.value,"page-size":g.value,"show-size-picker":``,"page-sizes":C(G),"onUpdate:pageSize":M},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):o(`v-if`,!0)])])])}}}),[[`__scopeId`,`data-v-c415f23c`]]);function $(e,t){if(!e.trim())return null;try{let n=new URL(t),r=new URL(e,n);if(r.username||r.password)return null;if(r.protocol===`https:`||r.protocol===`http:`&&r.origin===n.origin)return r.href}catch{}return null}function Ve(e,t){let{file:n,url:r,fileName:a}=e,o=v(!1),s=v(``),c=v(0),l=v(!1),u=v(``),d=v(0),f=v(``),p=v([]),m=v([]),h=0,_=null,y=!1,b=(e,t)=>e===h&&!y&&!t.signal.aborted,x=i(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?q(r.value):`未知文件`),S=i(()=>Y(x.value)),C=i(()=>ee(S.value)),w=i(()=>!!(n.value||r.value)),E=()=>{let e=u.value;u.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},D=()=>{s.value=``,o.value=!1,c.value=0,E(),d.value=0,f.value=``,p.value=[],m.value=[]},O=e=>{s.value=e,o.value=!1},k=()=>{h+=1,_?.abort(),_=null,D()},A=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=$(i,window.location.href);if(!t)throw Error(`不支持此文件地址`);let n=await fetch(t,{signal:e});if(!n.ok)throw Error(`HTTP ${n.status}: ${n.statusText}`);let r=await n.blob();return new File([r],x.value,{type:r.type})}throw Error(`未提供文件或URL`)},j=async(e,t,n)=>{switch(t){case`pdf`:{let t=await oe(e);if(n!==h){URL.revokeObjectURL(t.url.split(`#`)[0]);return}u.value=t.url,d.value=t.totalPages;break}case`word`:{let t=await se(e);if(n!==h)return;f.value=t.content,p.value=t.headings;break}case`excel`:{let t=await ce(e);if(n!==h)return;m.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},M=async()=>{if(y)return!1;let e=++h;_?.abort();let t=new AbortController;if(_=t,D(),!w.value)return _=null,!1;o.value=!0;try{let n=S.value,r=await A(t.signal);return e===h?(c.value=r.size,await j(r,n,e),b(e,t)):!1}catch(n){if(!b(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return O(`${S.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===h&&(o.value=!1,_=null)}};return T([n,r],([e,t])=>{!e&&!t&&k()},{flush:`sync`}),T(()=>n.value?.size,e=>{c.value=e||0},{immediate:!0}),g(()=>{y=!0,k()}),{loading:o,error:s,fileSize:c,showModal:l,hasSource:w,pdfUrl:u,pdfTotalPages:d,wordContent:f,wordHeadings:p,excelSheets:m,displayFileName:x,fileType:S,fileConfig:C,loadFile:M,openPreview:async()=>{if(y)return;let e=n.value||r.value;l.value=!0,await M()&&e&&e===(n.value||r.value)&&!y&&t(`preview`,e)},downloadFile:()=>{let e=n.value||r.value;if(!(y||!e)){if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:x.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=$(r.value,window.location.href);if(!e){O(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:k}}function He(e){let t=v(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return h(()=>{K.forEach(e=>document.addEventListener(e,n))}),g(()=>{K.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const Ue={class:`c-file-preview-wrapper`},We={key:0,class:`file-info-card`},Ge={class:`file-info`},Ke={class:`file-icon`},qe={class:`file-details`},Je={class:`file-name`},Ye={class:`file-meta`},Xe={class:`file-size`},Ze={class:`file-actions`},Qe={key:1,class:`c-file-preview-inline`},$e={key:1,class:`status-container`,role:`status`},et={class:`modal-header`},tt={class:`modal-title`},nt={class:`modal-actions`},rt={class:`modal-content`},it={class:`preview-header`},at={class:`flex justify-between items-center`},ot={class:`flex items-center gap-3`},st={class:`text-sm text-gray-500`},ct={class:`flex gap-2`},lt={class:`preview-content`},ut={key:1,class:`status-container`};var dt=t(d({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(t,{emit:n}){let{file:i,url:d,fileName:p,autoPreview:m,inline:h}=S(t),{loading:g,error:y,fileSize:b,showModal:w,hasSource:D,pdfUrl:k,pdfTotalPages:j,wordContent:N,wordHeadings:I,excelSheets:L,displayFileName:z,fileType:B,fileConfig:V,loadFile:H,openPreview:U,downloadFile:W}=Ve({file:i,url:d,fileName:p},n),G=v(),{isFullscreen:K,toggleFullscreen:q,exitFullscreen:Y}=He(G);return T(w,e=>{e||Y()}),T([i,d,m,h,p],(e,t)=>{if(!(typeof window>`u`||!D.value)){if(h.value){H();return}if(w.value){[0,1,4].some(n=>e[n]!==t?.[n])&&H();return}m.value&&U()}},{immediate:!0}),(t,n)=>{let i=e;return _(),s(`div`,Ue,[o(` 文件信息卡片模式 `),!C(m)&&!C(h)?(_(),s(`div`,We,[c(`div`,Ge,[c(`div`,Ke,[u(i,{name:C(V).icon,size:40,color:C(V).color},null,8,[`name`,`color`])]),c(`div`,qe,[c(`div`,Je,[u(C(A),{style:{"max-width":`250px`}},{default:E(()=>[l(x(C(z)),1)]),_:1}),u(C(R),{type:C(V).tagType,size:`small`},{default:E(()=>[l(x(C(B).toUpperCase()),1)]),_:1},8,[`type`])]),c(`div`,Ye,[c(`span`,Xe,x(C(J)(C(b))),1)])]),c(`div`,Ze,[u(C(O),{type:`primary`,onClick:C(U)},{icon:E(()=>[u(i,{name:`ic:outline-visibility`})]),default:E(()=>[n[2]||=l(` 预览 `,-1)]),_:1},8,[`onClick`]),u(C(O),{type:`tertiary`,onClick:C(W)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[3]||=l(` 下载 `,-1)]),_:1},8,[`onClick`])])])])):o(`v-if`,!0),C(h)?(_(),s(`div`,Qe,[C(D)?C(g)||C(y)?(_(),s(`div`,$e,[C(g)?(_(),a(C(F),{key:0,size:`large`},{description:E(()=>[...n[4]||=[l(`正在加载文档…`,-1)]]),_:1})):(_(),a(C(P),{key:1,status:`error`,title:`预览失败`,description:C(y)},{footer:E(()=>[u(C(O),{size:`small`,onClick:C(H)},{default:E(()=>[...n[5]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):C(B)===`pdf`?(_(),a(X,{key:2,"pdf-url":C(k),"total-pages":C(j)},null,8,[`pdf-url`,`total-pages`])):C(B)===`word`?(_(),a(Z,{key:3,content:C(N),headings:C(I)},null,8,[`content`,`headings`])):C(B)===`excel`?(_(),a(Q,{key:4,sheets:C(L),onReload:C(H)},null,8,[`sheets`,`onReload`])):(_(),a(C(P),{key:5,status:`warning`,title:`不支持的文件格式`,description:`支持 PDF、DOCX、XLSX 和 XLS 文件`})):(_(),a(C(P),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])):o(`v-if`,!0),o(` 模态框预览 `),C(h)?o(`v-if`,!0):(_(),a(C(M),{key:2,show:C(w),"onUpdate:show":n[1]||=e=>f(w)?w.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:E(()=>[c(`div`,{ref_key:`modalContainer`,ref:G,class:`modal-container`},[o(` 自定义头部 `),c(`div`,et,[c(`div`,tt,[u(i,{name:C(V).icon,size:20,color:C(V).color},null,8,[`name`,`color`]),c(`span`,null,x(C(z)),1)]),c(`div`,nt,[u(C(O),{size:`small`,type:`tertiary`,onClick:C(W)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[6]||=l(` 下载 `,-1)]),_:1},8,[`onClick`]),u(C(O),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>w.value=!1},{icon:E(()=>[u(i,{name:`ic:outline-close`})]),_:1})])]),o(` 预览内容 `),c(`div`,rt,[o(` 文件信息头部 `),c(`div`,it,[c(`div`,at,[c(`div`,ot,[u(C(R),{type:C(V).tagType,size:`small`},{icon:E(()=>[u(i,{name:C(V).icon},null,8,[`name`])]),default:E(()=>[l(` `+x(C(B).toUpperCase()),1)]),_:1},8,[`type`]),u(C(A),{style:{"max-width":`300px`}},{default:E(()=>[l(x(C(z)),1)]),_:1}),c(`span`,st,x(C(J)(C(b))),1)]),c(`div`,ct,[u(C(O),{size:`small`,type:`tertiary`,disabled:C(g),onClick:C(H)},{icon:E(()=>[u(i,{name:`ic:outline-refresh`})]),default:E(()=>[n[7]||=l(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),u(C(O),{size:`small`,type:`primary`,onClick:C(q)},{icon:E(()=>[u(i,{name:C(K)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:E(()=>[l(` `+x(C(K)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),o(` 预览内容区域 `),c(`div`,lt,[o(` 加载和错误状态 `),C(D)?C(g)||C(y)?(_(),s(`div`,ut,[C(g)?(_(),a(C(F),{key:0,size:`large`},{description:E(()=>[l(` 正在加载`+x(C(B).toUpperCase())+`文件... `,1)]),_:1})):(_(),a(C(P),{key:1,status:`error`,title:`预览失败`,description:C(y)},{footer:E(()=>[u(C(O),{onClick:C(H)},{default:E(()=>[...n[8]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(_(),s(r,{key:2},[o(` 文件预览 — 委托给子组件 `),C(B)===`pdf`?(_(),a(X,{key:0,"pdf-url":C(k),"total-pages":C(j)},null,8,[`pdf-url`,`total-pages`])):C(B)===`word`?(_(),a(Z,{key:1,content:C(N),headings:C(I)},null,8,[`content`,`headings`])):C(B)===`excel`?(_(),a(Q,{key:2,sheets:C(L),onReload:C(H)},null,8,[`sheets`,`onReload`])):(_(),s(r,{key:3},[o(` 不支持的文件类型 `),u(C(P),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${C(B).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64)):(_(),a(C(P),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])])],512)]),_:1},8,[`show`]))])}}}),[[`__scopeId`,`data-v-15033e6f`]]);export{He as n,Ve as r,dt as t};
|
package/dist/C_FullCalendar.css
CHANGED
|
@@ -1,24 +1,23 @@
|
|
|
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
3
|
|
|
4
|
-
.c-full-calendar[data-v-
|
|
4
|
+
.c-full-calendar[data-v-3604329b] {
|
|
5
5
|
width: 100%;
|
|
6
6
|
}
|
|
7
|
-
.event-color-swatch[data-v-
|
|
7
|
+
.event-color-swatch[data-v-3604329b] {
|
|
8
8
|
cursor: pointer;
|
|
9
9
|
}
|
|
10
|
-
.event-color-swatch[data-v-
|
|
10
|
+
.event-color-swatch[data-v-3604329b]:focus-visible {
|
|
11
11
|
outline: 2px solid #3f86ff;
|
|
12
12
|
outline-offset: 2px;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
/* layer: default */
|
|
17
|
-
.grid[data-v-
|
|
18
|
-
.ml-10\%[data-v-
|
|
19
|
-
.mt-20px[data-v-
|
|
20
|
-
.block[data-v-
|
|
21
|
-
.flex[data-v-
|
|
22
|
-
.border[data-v-
|
|
23
|
-
.outline[data-v-
|
|
24
|
-
.transition[data-v-01d32289]{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;}
|
|
17
|
+
.grid[data-v-3604329b]{display:grid;}
|
|
18
|
+
.ml-10\%[data-v-3604329b]{margin-left:10%;}
|
|
19
|
+
.mt-20px[data-v-3604329b]{margin-top:20px;}
|
|
20
|
+
.block[data-v-3604329b]{display:block;}
|
|
21
|
+
.flex[data-v-3604329b]{display:flex;}
|
|
22
|
+
.border[data-v-3604329b]{border-width:1px;}
|
|
23
|
+
.outline[data-v-3604329b]{outline-style:solid;}
|
package/dist/C_FullCalendar2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./chunk.cjs`),t=require(`./feedback.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`@fullcalendar/vue3`);a=e.t(a);let o=require(`@fullcalendar/daygrid`);o=e.t(o);let s=require(`@fullcalendar/interaction`);s=e.t(s);let c=require(`@fullcalendar/list`);c=e.t(c);let l=require(`@fullcalendar/core/locales/zh-cn`);l=e.t(l);const u=[`#3f86ff`,`#ff6b6b`,`#67c23a`,`#e6a23c`,`#9c27b0`,`#00bcd4`,`#ff5722`],d={id:``,title:``,date:Date.now(),startTime:`09:00`,endTime:`10:00`,color:`#3f86ff`},f={left:`prev,next today`,center:`title`,right:`dayGridMonth,dayGridWeek,dayGridDay,listWeek`},p={today:`今天`,month:`月`,week:`周`,day:`日`,list:`列表`},m=/^([01]\d|2[0-3]):([0-5]\d)$/;function h(e,t,n){if(e===null||!Number.isFinite(e))return null;let r=m.exec(t),i=m.exec(n);if(!r||!i)return null;let a=Number(r[1])*60+Number(r[2]),o=Number(i[1])*60+Number(i[2]);if(o<=a)return null;let s=new Date(e);if(Number.isNaN(s.getTime()))return null;let c=e=>new Date(s.getFullYear(),s.getMonth(),s.getDate(),Math.floor(e/60),e%60),l=c(a),u=c(o);return l.getHours()*60+l.getMinutes()!==a||u.getHours()*60+u.getMinutes()!==o?null:{start:l,end:u}}let g=0;const _=()=>globalThis.crypto?.randomUUID?.()??`calendar-${Date.now()}-${++g}`;function v(e,n){let i=t.t(),a=(0,r.ref)(null),m=(0,r.ref)([...e.events??[]]),g=(0,r.ref)(!1),v=(0,r.ref)(!1),y=(0,r.ref)(!1),b=(0,r.shallowRef)(null),x=(0,r.ref)({...d}),S=e=>{m.value=[...m.value,e],n(`update:events`,m.value)},C=e=>{let t=m.value.findIndex(t=>t.id===e.id);t!==-1&&(m.value=m.value.map((n,r)=>r===t?{...n,...e}:n),n(`update:events`,m.value))},w=e=>{m.value=m.value.filter(t=>t.id!==e),n(`update:events`,m.value)};function T(t){e.editable&&(t.jsEvent.preventDefault(),b.value=t.event,e.showEditDialog&&(g.value=!0))}function E(t){!e.editable||!e.showAddDialog||k(t.date)}function D(e){let t={id:e.event.id,start:e.event.start??void 0,end:e.event.end??void 0};C(t),n(`event-dropped`,t),i.success(`事件 "${e.event.title}" 时间已更新`)}function O(e){let t={id:e.event.id,start:e.event.start??void 0,end:e.event.end??void 0};C(t),n(`event-updated`,t)}function k(e){y.value=!1,x.value={...d,date:e.getTime(),color:u[Math.floor(Math.random()*u.length)]},v.value=!0}function A(){let e=b.value;if(!e?.start)return;let{start:t}=e;y.value=!0;let n=new Date(t),r=e.end&&!e.allDay?new Date(e.end):new Date(t.getTime()+36e5);x.value={id:e.id,title:e.title,date:n.getTime(),startTime:`${String(n.getHours()).padStart(2,`0`)}:${String(n.getMinutes()).padStart(2,`0`)}`,endTime:`${String(r.getHours()).padStart(2,`0`)}:${String(r.getMinutes()).padStart(2,`0`)}`,color:e.backgroundColor||`#3f86ff`},g.value=!1,v.value=!0}function j(){if(!x.value.title.trim())return i.error(`请输入事件标题`),!1;let e=h(x.value.date,x.value.startTime,x.value.endTime);if(!e)return i.error(`请选择有效日期和时间,且结束时间须晚于开始时间`),!1;if(y.value&&!m.value.some(e=>e.id===x.value.id))return i.error(`事件已不存在,请刷新后重试`),!1;let t={id:y.value?x.value.id:_(),title:x.value.title.trim(),...e,color:x.value.color};return y.value?(C(t),n(`event-updated`,t),i.success(`事件已更新`)):(S(t),n(`event-added`,t),i.success(`事件已添加`)),v.value=!1,!0}function M(){if(!b.value)return;let{id:e,title:t}=b.value;if(!m.value.some(t=>t.id===e)){g.value=!1;return}w(e),n(`event-deleted`,{id:e,title:t}),g.value=!1,i.success(`已删除事件: ${t}`)}let N=(0,r.computed)(()=>({locale:l.default,headerToolbar:f,buttonText:p,eventClick:T,dateClick:E,eventDrop:D,eventResize:O,...e.config,plugins:[o.default,s.default,c.default],initialView:e.initialView??`dayGridMonth`,events:m.value,eventSources:void 0,editable:e.editable??!0}));return(0,r.watch)(()=>e.events,e=>{m.value=[...e??[]]},{deep:!0}),(0,r.watch)(()=>e.initialView,e=>{e&&a.value?.getApi().changeView(e)}),{calendarRef:a,calendarOptions:N,showActionDialog:g,showEditModal:v,isEditing:y,selectedEvent:b,editForm:x,eventColors:u,openEditModal:A,saveEvent:j,deleteEvent:M,expose:{getApi:()=>a.value?.getApi(),addEvent:S,updateEvent:C,deleteEvent:w,getEvents:()=>m.value.map(e=>({...e,start:e.start instanceof Date?new Date(e.start):e.start,end:e.end instanceof Date?new Date(e.end):e.end}))}}}const y={class:`c-full-calendar`},b={class:`ml-10% mt-20px`},x={style:{padding:`20px`}},S={style:{"margin-bottom":`16px`}},C={style:{"margin-bottom":`16px`}},w={style:{display:`grid`,"grid-template-columns":`1fr 1fr`,gap:`16px`}},T={style:{"margin-top":`16px`}},E={style:{display:`flex`,gap:`8px`}},D=[`aria-label`,`aria-pressed`,`onClick`],O=(0,r.defineComponent)({name:`C_FullCalendar`,__name:`index`,props:{config:{},events:{default:()=>[]},initialView:{default:`dayGridMonth`},editable:{type:Boolean,default:!0},showAddDialog:{type:Boolean,default:!0},showEditDialog:{type:Boolean,default:!0}},emits:[`update:events`,`event-added`,`event-updated`,`event-deleted`,`event-dropped`],setup(e,{expose:t,emit:n}){let{calendarRef:o,calendarOptions:s,showActionDialog:c,showEditModal:l,isEditing:u,selectedEvent:d,editForm:f,eventColors:p,openEditModal:m,saveEvent:h,deleteEvent:g,expose:_}=v(e,n);return t(_),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,y,[(0,r.createVNode)((0,r.unref)(a.default),{ref_key:`calendarRef`,ref:o,options:(0,r.unref)(s)},null,8,[`options`]),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NModal),{key:0,show:(0,r.unref)(c),"onUpdate:show":t[0]||=e=>(0,r.isRef)(c)?c.value=e:null,preset:`dialog`,title:`事件操作 - ${(0,r.unref)(d)?.title}`,style:{width:`400px`}},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,b,[(0,r.createVNode)((0,r.unref)(i.NButton),{type:`primary`,onClick:(0,r.unref)(m),style:{"margin-right":`12px`},size:`small`},{default:(0,r.withCtx)(()=>[...t[6]||=[(0,r.createTextVNode)(` 编辑 `,-1)]]),_:1},8,[`onClick`]),(0,r.createVNode)((0,r.unref)(i.NButton),{type:`error`,onClick:(0,r.unref)(g),size:`small`},{default:(0,r.withCtx)(()=>[...t[7]||=[(0,r.createTextVNode)(` 删除 `,-1)]]),_:1},8,[`onClick`])])]),_:1},8,[`show`,`title`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NModal),{show:(0,r.unref)(l),"onUpdate:show":t[5]||=e=>(0,r.isRef)(l)?l.value=e:null,preset:`dialog`,title:(0,r.unref)(u)?`编辑事件`:`添加事件`,"positive-text":`保存`,"negative-text":`取消`,onPositiveClick:(0,r.unref)(h)},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,x,[(0,r.createElementVNode)(`div`,S,[t[8]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件标题`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).title,"onUpdate:value":t[1]||=e=>(0,r.unref)(f).title=e,placeholder:`请输入事件标题`,"aria-label":`事件标题`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,C,[t[9]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件日期`,-1),(0,r.createVNode)((0,r.unref)(i.NDatePicker),{value:(0,r.unref)(f).date,"onUpdate:value":t[2]||=e=>(0,r.unref)(f).date=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`事件日期`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,w,[(0,r.createElementVNode)(`div`,null,[t[10]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).startTime,"onUpdate:value":t[3]||=e=>(0,r.unref)(f).startTime=e,placeholder:`09:00`,"aria-label":`开始时间(24 小时制)`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,null,[t[11]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).endTime,"onUpdate:value":t[4]||=e=>(0,r.unref)(f).endTime=e,placeholder:`10:00`,"aria-label":`结束时间(24 小时制)`},null,8,[`value`])])]),(0,r.createElementVNode)(`div`,T,[t[12]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件颜色`,-1),(0,r.createElementVNode)(`div`,E,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(p),e=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:e,type:`button`,class:`event-color-swatch`,"aria-label":`事件颜色 ${e}`,"aria-pressed":(0,r.unref)(f).color===e,style:(0,r.normalizeStyle)({width:`30px`,height:`30px`,backgroundColor:e,borderRadius:`50%`,border:(0,r.unref)(f).color===e?`3px solid #000`:`2px solid #ddd`}),onClick:t=>(0,r.unref)(f).color=e},null,12,D))),128))])])])]),_:1},8,[`show`,`title`,`onPositiveClick`])]))}});var k=n.t(O,[[`__scopeId`,`data-v-01d32289`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return k}});
|
|
1
|
+
const e=require(`./chunk.cjs`),t=require(`./feedback.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`@fullcalendar/vue3`);a=e.t(a);let o=require(`@fullcalendar/daygrid`);o=e.t(o);let s=require(`@fullcalendar/interaction`);s=e.t(s);let c=require(`@fullcalendar/list`);c=e.t(c);let l=require(`@fullcalendar/core/locales/zh-cn`);l=e.t(l);const u=[`#3f86ff`,`#ff6b6b`,`#67c23a`,`#e6a23c`,`#9c27b0`,`#00bcd4`,`#ff5722`],d={id:``,title:``,date:Date.now(),startTime:`09:00`,endTime:`10:00`,color:`#3f86ff`},f={left:`prev,next today`,center:`title`,right:`dayGridMonth,dayGridWeek,dayGridDay,listWeek`},p={today:`今天`,month:`月`,week:`周`,day:`日`,list:`列表`},m=/^([01]\d|2[0-3]):([0-5]\d)$/,h=e=>{if(e===null||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t},g=(e,t)=>{let n=m.exec(t);if(!n)return null;let r=Number(n[1]),i=Number(n[2]),a=new Date(e.getFullYear(),e.getMonth(),e.getDate(),r,i);return a.getHours()===r&&a.getMinutes()===i?a:null};function _(e,t,n,r=e,i=!1){let a=h(e),o=h(r);if(!a||!o)return null;if(i){let e=new Date(a.getFullYear(),a.getMonth(),a.getDate()),t=new Date(o.getFullYear(),o.getMonth(),o.getDate()+1);return t>e?{start:e,end:t}:null}let s=g(a,t),c=g(o,n);return s&&c&&c>s?{start:s,end:c}:null}let v=0;const y=()=>globalThis.crypto?.randomUUID?.()??`calendar-${Date.now()}-${++v}`;function b(e,n){let i=t.t(),a=(0,r.ref)(null),m=(0,r.ref)([...e.events??[]]),h=(0,r.ref)(!1),g=(0,r.ref)(!1),v=(0,r.ref)(!1),b=(0,r.shallowRef)(null),x=(0,r.ref)({...d}),S=e=>[e.date,e.endDate,e.startTime,e.endTime,e.allDay],C=[];(0,r.watch)(()=>[x.value,x.value.date],([e,t],[n,r])=>{if(e!==n)return;let{endDate:i}=x.value;if(t==null||r==null||i==null)return;let a=new Date(r),o=new Date(i);a.toDateString()===o.toDateString()&&(x.value.endDate=t)},{flush:`sync`});let w=e=>{m.value=[...m.value,e],n(`update:events`,m.value)},T=e=>{let t=m.value.findIndex(t=>t.id===e.id);t!==-1&&(m.value=m.value.map((n,r)=>r===t?{...n,...e}:n),n(`update:events`,m.value))},E=e=>{m.value=m.value.filter(t=>t.id!==e),n(`update:events`,m.value)};function D(t){e.editable&&(t.jsEvent.preventDefault(),b.value=t.event,e.showEditDialog&&(h.value=!0))}function O(t){!e.editable||!e.showAddDialog||j(t.date)}function k(t){if(e.editable===!1){t.revert();return}let r={id:t.event.id,start:t.event.start??void 0,end:t.event.end??void 0,allDay:t.event.allDay};T(r),n(`event-dropped`,r),i.success(`事件 "${t.event.title}" 时间已更新`)}function A(t){if(e.editable===!1){t.revert();return}let r={id:t.event.id,start:t.event.start??void 0,end:t.event.end??void 0,allDay:t.event.allDay};T(r),n(`event-updated`,r)}function j(t){e.editable!==!1&&(v.value=!1,x.value={...d,date:t.getTime(),endDate:t.getTime(),allDay:!1,color:u[Math.floor(Math.random()*u.length)]},g.value=!0)}function M(){if(e.editable===!1)return;let t=b.value;if(!t?.start)return;let{start:n}=t;v.value=!0;let r=new Date(n),i=t.end?new Date(t.end):new Date(n.getTime()+(t.allDay?0:36e5));t.allDay&&t.end&&i.setDate(i.getDate()-1),x.value={id:t.id,title:t.title,date:r.getTime(),endDate:i.getTime(),allDay:t.allDay,startTime:`${String(r.getHours()).padStart(2,`0`)}:${String(r.getMinutes()).padStart(2,`0`)}`,endTime:`${String(i.getHours()).padStart(2,`0`)}:${String(i.getMinutes()).padStart(2,`0`)}`,color:t.backgroundColor||`#3f86ff`},C=S(x.value),h.value=!1,g.value=!0}function N(e){if(e&&S(x.value).every((e,t)=>e===C[t]))return{start:e.start,end:e.end,allDay:e.allDay};let t=_(x.value.date,x.value.startTime,x.value.endTime,x.value.endDate===void 0?x.value.date:x.value.endDate,x.value.allDay);return t&&{...t,allDay:!!x.value.allDay}}function P(){if(e.editable===!1)return!1;if(!x.value.title.trim())return i.error(`请输入事件标题`),!1;let t=v.value?m.value.find(e=>e.id===x.value.id):void 0;if(v.value&&!t)return i.error(`事件已不存在,请刷新后重试`),!1;let r=N(t);if(!r)return i.error(`请选择有效日期和时间,且结束时间须晚于开始时间`),!1;let a={id:v.value?x.value.id:y(),title:x.value.title.trim(),...r,color:x.value.color};return v.value?(T(a),n(`event-updated`,a),i.success(`事件已更新`)):(w(a),n(`event-added`,a),i.success(`事件已添加`)),g.value=!1,!0}function F(){if(e.editable===!1||!b.value)return;let{id:t,title:r}=b.value;if(!m.value.some(e=>e.id===t)){h.value=!1;return}E(t),n(`event-deleted`,{id:t,title:r}),h.value=!1,i.success(`已删除事件: ${r}`)}let I=(0,r.computed)(()=>({locale:l.default,headerToolbar:f,buttonText:p,eventClick:D,dateClick:O,eventDrop:k,eventResize:A,...e.config,plugins:[o.default,s.default,c.default],initialView:e.initialView??`dayGridMonth`,events:m.value,eventSources:void 0,editable:e.editable??!0}));return(0,r.watch)(()=>e.editable,e=>{e===!1&&(h.value=!1,g.value=!1,b.value=null)},{flush:`sync`}),(0,r.watch)(()=>e.events,e=>{m.value=[...e??[]]},{deep:!0}),(0,r.watch)(()=>e.initialView,e=>{e&&a.value?.getApi().changeView(e)}),{calendarRef:a,calendarOptions:I,showActionDialog:h,showEditModal:g,isEditing:v,selectedEvent:b,editForm:x,eventColors:u,openEditModal:M,saveEvent:P,deleteEvent:F,expose:{getApi:()=>a.value?.getApi(),addEvent:w,updateEvent:T,deleteEvent:E,getEvents:()=>m.value.map(e=>({...e,start:e.start instanceof Date?new Date(e.start):e.start,end:e.end instanceof Date?new Date(e.end):e.end}))}}}const x={class:`c-full-calendar`},S={class:`ml-10% mt-20px`},C={style:{padding:`20px`}},w={style:{"margin-bottom":`16px`}},T={style:{"margin-bottom":`16px`}},E={style:{"margin-bottom":`16px`}},D={key:0,style:{display:`grid`,"grid-template-columns":`1fr 1fr`,gap:`16px`}},O={style:{"margin-top":`16px`}},k={style:{display:`flex`,gap:`8px`}},A=[`aria-label`,`aria-pressed`,`onClick`],j=(0,r.defineComponent)({name:`C_FullCalendar`,__name:`index`,props:{config:{},events:{default:()=>[]},initialView:{default:`dayGridMonth`},editable:{type:Boolean,default:!0},showAddDialog:{type:Boolean,default:!0},showEditDialog:{type:Boolean,default:!0}},emits:[`update:events`,`event-added`,`event-updated`,`event-deleted`,`event-dropped`],setup(e,{expose:t,emit:n}){let{calendarRef:o,calendarOptions:s,showActionDialog:c,showEditModal:l,isEditing:u,selectedEvent:d,editForm:f,eventColors:p,openEditModal:m,saveEvent:h,deleteEvent:g,expose:_}=b(e,n);return t(_),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,x,[(0,r.createVNode)((0,r.unref)(a.default),{ref_key:`calendarRef`,ref:o,options:(0,r.unref)(s)},null,8,[`options`]),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NModal),{key:0,show:(0,r.unref)(c),"onUpdate:show":t[0]||=e=>(0,r.isRef)(c)?c.value=e:null,preset:`dialog`,title:`事件操作 - ${(0,r.unref)(d)?.title}`,style:{width:`400px`}},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,S,[(0,r.createVNode)((0,r.unref)(i.NButton),{type:`primary`,onClick:(0,r.unref)(m),style:{"margin-right":`12px`},size:`small`},{default:(0,r.withCtx)(()=>[...t[8]||=[(0,r.createTextVNode)(` 编辑 `,-1)]]),_:1},8,[`onClick`]),(0,r.createVNode)((0,r.unref)(i.NButton),{type:`error`,onClick:(0,r.unref)(g),size:`small`},{default:(0,r.withCtx)(()=>[...t[9]||=[(0,r.createTextVNode)(` 删除 `,-1)]]),_:1},8,[`onClick`])])]),_:1},8,[`show`,`title`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NModal),{show:(0,r.unref)(l),"onUpdate:show":t[7]||=e=>(0,r.isRef)(l)?l.value=e:null,preset:`dialog`,title:(0,r.unref)(u)?`编辑事件`:`添加事件`,"positive-text":`保存`,"negative-text":`取消`,onPositiveClick:(0,r.unref)(h)},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,C,[(0,r.createElementVNode)(`div`,w,[t[10]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件标题`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).title,"onUpdate:value":t[1]||=e=>(0,r.unref)(f).title=e,placeholder:`请输入事件标题`,"aria-label":`事件标题`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,T,[t[11]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始日期`,-1),(0,r.createVNode)((0,r.unref)(i.NDatePicker),{value:(0,r.unref)(f).date,"onUpdate:value":t[2]||=e=>(0,r.unref)(f).date=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`开始日期`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,E,[t[12]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束日期`,-1),(0,r.createVNode)((0,r.unref)(i.NDatePicker),{value:(0,r.unref)(f).endDate,"onUpdate:value":t[3]||=e=>(0,r.unref)(f).endDate=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`结束日期`},null,8,[`value`])]),(0,r.createVNode)((0,r.unref)(i.NCheckbox),{checked:(0,r.unref)(f).allDay,"onUpdate:checked":t[4]||=e=>(0,r.unref)(f).allDay=e,style:{"margin-bottom":`16px`}},{default:(0,r.withCtx)(()=>[...t[13]||=[(0,r.createTextVNode)(` 全天事件 `,-1)]]),_:1},8,[`checked`]),(0,r.unref)(f).allDay?(0,r.createCommentVNode)(`v-if`,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,D,[(0,r.createElementVNode)(`div`,null,[t[14]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).startTime,"onUpdate:value":t[5]||=e=>(0,r.unref)(f).startTime=e,placeholder:`09:00`,"aria-label":`开始时间(24 小时制)`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,null,[t[15]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).endTime,"onUpdate:value":t[6]||=e=>(0,r.unref)(f).endTime=e,placeholder:`10:00`,"aria-label":`结束时间(24 小时制)`},null,8,[`value`])])])),(0,r.createElementVNode)(`div`,O,[t[16]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件颜色`,-1),(0,r.createElementVNode)(`div`,k,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(p),e=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:e,type:`button`,class:`event-color-swatch`,"aria-label":`事件颜色 ${e}`,"aria-pressed":(0,r.unref)(f).color===e,style:(0,r.normalizeStyle)({width:`30px`,height:`30px`,backgroundColor:e,borderRadius:`50%`,border:(0,r.unref)(f).color===e?`3px solid #000`:`2px solid #ddd`}),onClick:t=>(0,r.unref)(f).color=e},null,12,A))),128))])])])]),_:1},8,[`show`,`title`,`onPositiveClick`])]))}});var M=n.t(j,[[`__scopeId`,`data-v-3604329b`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return M}});
|
package/dist/C_FullCalendar2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./feedback.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,isRef as d,normalizeStyle as f,openBlock as p,ref as m,renderList as h,shallowRef as g,unref as _,watch as v,withCtx as y}from"vue";import{NButton as b,
|
|
1
|
+
import{t as e}from"./feedback.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,isRef as d,normalizeStyle as f,openBlock as p,ref as m,renderList as h,shallowRef as g,unref as _,watch as v,withCtx as y}from"vue";import{NButton as b,NCheckbox as x,NDatePicker as S,NInput as C,NModal as w}from"naive-ui";import T from"@fullcalendar/vue3";import E from"@fullcalendar/daygrid";import D from"@fullcalendar/interaction";import O from"@fullcalendar/list";import k from"@fullcalendar/core/locales/zh-cn";const A=[`#3f86ff`,`#ff6b6b`,`#67c23a`,`#e6a23c`,`#9c27b0`,`#00bcd4`,`#ff5722`],j={id:``,title:``,date:Date.now(),startTime:`09:00`,endTime:`10:00`,color:`#3f86ff`},M={left:`prev,next today`,center:`title`,right:`dayGridMonth,dayGridWeek,dayGridDay,listWeek`},N={today:`今天`,month:`月`,week:`周`,day:`日`,list:`列表`},P=/^([01]\d|2[0-3]):([0-5]\d)$/,F=e=>{if(e===null||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t},I=(e,t)=>{let n=P.exec(t);if(!n)return null;let r=Number(n[1]),i=Number(n[2]),a=new Date(e.getFullYear(),e.getMonth(),e.getDate(),r,i);return a.getHours()===r&&a.getMinutes()===i?a:null};function L(e,t,n,r=e,i=!1){let a=F(e),o=F(r);if(!a||!o)return null;if(i){let e=new Date(a.getFullYear(),a.getMonth(),a.getDate()),t=new Date(o.getFullYear(),o.getMonth(),o.getDate()+1);return t>e?{start:e,end:t}:null}let s=I(a,t),c=I(o,n);return s&&c&&c>s?{start:s,end:c}:null}let R=0;const z=()=>globalThis.crypto?.randomUUID?.()??`calendar-${Date.now()}-${++R}`;function B(t,n){let i=e(),a=m(null),o=m([...t.events??[]]),s=m(!1),c=m(!1),l=m(!1),u=g(null),d=m({...j}),f=e=>[e.date,e.endDate,e.startTime,e.endTime,e.allDay],p=[];v(()=>[d.value,d.value.date],([e,t],[n,r])=>{if(e!==n)return;let{endDate:i}=d.value;if(t==null||r==null||i==null)return;let a=new Date(r),o=new Date(i);a.toDateString()===o.toDateString()&&(d.value.endDate=t)},{flush:`sync`});let h=e=>{o.value=[...o.value,e],n(`update:events`,o.value)},_=e=>{let t=o.value.findIndex(t=>t.id===e.id);t!==-1&&(o.value=o.value.map((n,r)=>r===t?{...n,...e}:n),n(`update:events`,o.value))},y=e=>{o.value=o.value.filter(t=>t.id!==e),n(`update:events`,o.value)};function b(e){t.editable&&(e.jsEvent.preventDefault(),u.value=e.event,t.showEditDialog&&(s.value=!0))}function x(e){!t.editable||!t.showAddDialog||w(e.date)}function S(e){if(t.editable===!1){e.revert();return}let r={id:e.event.id,start:e.event.start??void 0,end:e.event.end??void 0,allDay:e.event.allDay};_(r),n(`event-dropped`,r),i.success(`事件 "${e.event.title}" 时间已更新`)}function C(e){if(t.editable===!1){e.revert();return}let r={id:e.event.id,start:e.event.start??void 0,end:e.event.end??void 0,allDay:e.event.allDay};_(r),n(`event-updated`,r)}function w(e){t.editable!==!1&&(l.value=!1,d.value={...j,date:e.getTime(),endDate:e.getTime(),allDay:!1,color:A[Math.floor(Math.random()*A.length)]},c.value=!0)}function T(){if(t.editable===!1)return;let e=u.value;if(!e?.start)return;let{start:n}=e;l.value=!0;let r=new Date(n),i=e.end?new Date(e.end):new Date(n.getTime()+(e.allDay?0:36e5));e.allDay&&e.end&&i.setDate(i.getDate()-1),d.value={id:e.id,title:e.title,date:r.getTime(),endDate:i.getTime(),allDay:e.allDay,startTime:`${String(r.getHours()).padStart(2,`0`)}:${String(r.getMinutes()).padStart(2,`0`)}`,endTime:`${String(i.getHours()).padStart(2,`0`)}:${String(i.getMinutes()).padStart(2,`0`)}`,color:e.backgroundColor||`#3f86ff`},p=f(d.value),s.value=!1,c.value=!0}function P(e){if(e&&f(d.value).every((e,t)=>e===p[t]))return{start:e.start,end:e.end,allDay:e.allDay};let t=L(d.value.date,d.value.startTime,d.value.endTime,d.value.endDate===void 0?d.value.date:d.value.endDate,d.value.allDay);return t&&{...t,allDay:!!d.value.allDay}}function F(){if(t.editable===!1)return!1;if(!d.value.title.trim())return i.error(`请输入事件标题`),!1;let e=l.value?o.value.find(e=>e.id===d.value.id):void 0;if(l.value&&!e)return i.error(`事件已不存在,请刷新后重试`),!1;let r=P(e);if(!r)return i.error(`请选择有效日期和时间,且结束时间须晚于开始时间`),!1;let a={id:l.value?d.value.id:z(),title:d.value.title.trim(),...r,color:d.value.color};return l.value?(_(a),n(`event-updated`,a),i.success(`事件已更新`)):(h(a),n(`event-added`,a),i.success(`事件已添加`)),c.value=!1,!0}function I(){if(t.editable===!1||!u.value)return;let{id:e,title:r}=u.value;if(!o.value.some(t=>t.id===e)){s.value=!1;return}y(e),n(`event-deleted`,{id:e,title:r}),s.value=!1,i.success(`已删除事件: ${r}`)}let R=r(()=>({locale:k,headerToolbar:M,buttonText:N,eventClick:b,dateClick:x,eventDrop:S,eventResize:C,...t.config,plugins:[E,D,O],initialView:t.initialView??`dayGridMonth`,events:o.value,eventSources:void 0,editable:t.editable??!0}));return v(()=>t.editable,e=>{e===!1&&(s.value=!1,c.value=!1,u.value=null)},{flush:`sync`}),v(()=>t.events,e=>{o.value=[...e??[]]},{deep:!0}),v(()=>t.initialView,e=>{e&&a.value?.getApi().changeView(e)}),{calendarRef:a,calendarOptions:R,showActionDialog:s,showEditModal:c,isEditing:l,selectedEvent:u,editForm:d,eventColors:A,openEditModal:T,saveEvent:F,deleteEvent:I,expose:{getApi:()=>a.value?.getApi(),addEvent:h,updateEvent:_,deleteEvent:y,getEvents:()=>o.value.map(e=>({...e,start:e.start instanceof Date?new Date(e.start):e.start,end:e.end instanceof Date?new Date(e.end):e.end}))}}}const V={class:`c-full-calendar`},H={class:`ml-10% mt-20px`},U={style:{padding:`20px`}},W={style:{"margin-bottom":`16px`}},G={style:{"margin-bottom":`16px`}},K={style:{"margin-bottom":`16px`}},q={key:0,style:{display:`grid`,"grid-template-columns":`1fr 1fr`,gap:`16px`}},J={style:{"margin-top":`16px`}},Y={style:{display:`flex`,gap:`8px`}},X=[`aria-label`,`aria-pressed`,`onClick`];var Z=t(u({name:`C_FullCalendar`,__name:`index`,props:{config:{},events:{default:()=>[]},initialView:{default:`dayGridMonth`},editable:{type:Boolean,default:!0},showAddDialog:{type:Boolean,default:!0},showEditDialog:{type:Boolean,default:!0}},emits:[`update:events`,`event-added`,`event-updated`,`event-deleted`,`event-dropped`],setup(e,{expose:t,emit:r}){let{calendarRef:u,calendarOptions:m,showActionDialog:g,showEditModal:v,isEditing:E,selectedEvent:D,editForm:O,eventColors:k,openEditModal:A,saveEvent:j,deleteEvent:M,expose:N}=B(e,r);return t(N),(e,t)=>(p(),o(`div`,V,[l(_(T),{ref_key:`calendarRef`,ref:u,options:_(m)},null,8,[`options`]),_(g)?(p(),i(_(w),{key:0,show:_(g),"onUpdate:show":t[0]||=e=>d(g)?g.value=e:null,preset:`dialog`,title:`事件操作 - ${_(D)?.title}`,style:{width:`400px`}},{default:y(()=>[s(`div`,H,[l(_(b),{type:`primary`,onClick:_(A),style:{"margin-right":`12px`},size:`small`},{default:y(()=>[...t[8]||=[c(` 编辑 `,-1)]]),_:1},8,[`onClick`]),l(_(b),{type:`error`,onClick:_(M),size:`small`},{default:y(()=>[...t[9]||=[c(` 删除 `,-1)]]),_:1},8,[`onClick`])])]),_:1},8,[`show`,`title`])):a(`v-if`,!0),l(_(w),{show:_(v),"onUpdate:show":t[7]||=e=>d(v)?v.value=e:null,preset:`dialog`,title:_(E)?`编辑事件`:`添加事件`,"positive-text":`保存`,"negative-text":`取消`,onPositiveClick:_(j)},{default:y(()=>[s(`div`,U,[s(`div`,W,[t[10]||=s(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件标题`,-1),l(_(C),{value:_(O).title,"onUpdate:value":t[1]||=e=>_(O).title=e,placeholder:`请输入事件标题`,"aria-label":`事件标题`},null,8,[`value`])]),s(`div`,G,[t[11]||=s(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始日期`,-1),l(_(S),{value:_(O).date,"onUpdate:value":t[2]||=e=>_(O).date=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`开始日期`},null,8,[`value`])]),s(`div`,K,[t[12]||=s(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束日期`,-1),l(_(S),{value:_(O).endDate,"onUpdate:value":t[3]||=e=>_(O).endDate=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`结束日期`},null,8,[`value`])]),l(_(x),{checked:_(O).allDay,"onUpdate:checked":t[4]||=e=>_(O).allDay=e,style:{"margin-bottom":`16px`}},{default:y(()=>[...t[13]||=[c(` 全天事件 `,-1)]]),_:1},8,[`checked`]),_(O).allDay?a(`v-if`,!0):(p(),o(`div`,q,[s(`div`,null,[t[14]||=s(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始时间`,-1),l(_(C),{value:_(O).startTime,"onUpdate:value":t[5]||=e=>_(O).startTime=e,placeholder:`09:00`,"aria-label":`开始时间(24 小时制)`},null,8,[`value`])]),s(`div`,null,[t[15]||=s(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束时间`,-1),l(_(C),{value:_(O).endTime,"onUpdate:value":t[6]||=e=>_(O).endTime=e,placeholder:`10:00`,"aria-label":`结束时间(24 小时制)`},null,8,[`value`])])])),s(`div`,J,[t[16]||=s(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件颜色`,-1),s(`div`,Y,[(p(!0),o(n,null,h(_(k),e=>(p(),o(`button`,{key:e,type:`button`,class:`event-color-swatch`,"aria-label":`事件颜色 ${e}`,"aria-pressed":_(O).color===e,style:f({width:`30px`,height:`30px`,backgroundColor:e,borderRadius:`50%`,border:_(O).color===e?`3px solid #000`:`2px solid #ddd`}),onClick:t=>_(O).color=e},null,12,X))),128))])])])]),_:1},8,[`show`,`title`,`onPositiveClick`])]))}}),[[`__scopeId`,`data-v-3604329b`]]);export{A as a,j as i,B as n,M as o,N as r,Z as t};
|