@robot-admin/naive-ui-components 0.13.2 → 0.13.6
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 +27 -0
- package/README.md +25 -5
- package/README_EN.md +17 -5
- package/dist/C_ActionBar.css +75 -63
- package/dist/C_ActionBar2.cjs +1 -1
- package/dist/C_ActionBar2.js +1 -1
- package/dist/C_AntV.css +249 -79
- package/dist/C_AntV2.cjs +3 -3
- package/dist/C_AntV2.js +2 -2
- package/dist/C_AudioPlayer.css +88 -76
- package/dist/C_AudioPlayer2.cjs +1 -1
- package/dist/C_AudioPlayer2.js +1 -1
- package/dist/C_AvatarGroup.css +32 -28
- package/dist/C_AvatarGroup2.cjs +1 -1
- package/dist/C_AvatarGroup2.js +1 -1
- package/dist/C_Breadcrumb.css +35 -17
- package/dist/C_Breadcrumb2.cjs +1 -1
- package/dist/C_Breadcrumb2.js +1 -1
- package/dist/C_Captcha.css +66 -53
- package/dist/C_Captcha2.cjs +1 -1
- package/dist/C_Captcha2.js +1 -1
- package/dist/C_Cascade.css +6 -2
- package/dist/C_Cascade2.cjs +1 -1
- package/dist/C_Cascade2.js +1 -1
- package/dist/C_Chat.css +40 -33
- package/dist/C_City.css +37 -32
- package/dist/C_City2.cjs +1 -1
- package/dist/C_City2.js +1 -1
- package/dist/C_Code.css +53 -40
- package/dist/C_Code2.cjs +1 -1
- package/dist/C_Code2.js +1 -1
- package/dist/C_CollapsePanel.css +68 -55
- package/dist/C_CollapsePanel2.cjs +1 -1
- package/dist/C_CollapsePanel2.js +1 -1
- package/dist/C_ContextMenu.css +68 -26
- package/dist/C_ContextMenu2.cjs +1 -1
- package/dist/C_ContextMenu2.js +1 -1
- package/dist/C_Cron.css +95 -68
- package/dist/C_Cron2.cjs +1 -1
- package/dist/C_Cron2.js +1 -1
- package/dist/C_Date.css +8 -1
- package/dist/C_Date2.cjs +1 -1
- package/dist/C_Date2.js +1 -1
- package/dist/C_Draggable.css +60 -51
- package/dist/C_Draggable2.cjs +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_Editor.css +23 -15
- package/dist/C_Editor2.cjs +1 -1
- package/dist/C_Editor2.js +1 -1
- package/dist/C_FilePreview.css +200 -90
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_Form.base.css +284 -224
- package/dist/C_Form.css +307 -239
- package/dist/C_Form2.cjs +1 -1
- package/dist/C_Form2.js +1 -1
- package/dist/C_FormModal.css +18 -8
- package/dist/C_FormModal2.cjs +1 -1
- package/dist/C_FormModal2.js +1 -1
- package/dist/C_FormSearch.css +58 -45
- package/dist/C_FormSearch2.cjs +1 -1
- package/dist/C_FormSearch2.js +1 -1
- package/dist/C_FormulaEditor.css +62 -37
- package/dist/C_FormulaEditor2.cjs +1 -1
- package/dist/C_FormulaEditor2.js +1 -1
- package/dist/C_FullCalendar.css +16 -3
- package/dist/C_FullCalendar2.cjs +1 -1
- package/dist/C_FullCalendar2.js +1 -1
- package/dist/C_GlobalSearch.css +121 -112
- package/dist/C_GlobalSearch2.cjs +1 -1
- package/dist/C_GlobalSearch2.js +1 -1
- package/dist/C_Guide.css +30 -18
- package/dist/C_Guide2.cjs +1 -1
- package/dist/C_Guide2.js +1 -1
- package/dist/C_Icon.css +24 -17
- package/dist/C_Icon2.cjs +1 -1
- package/dist/C_Icon2.js +1 -1
- package/dist/C_ImageCropper.css +39 -22
- package/dist/C_ImageCropper2.cjs +1 -1
- package/dist/C_ImageCropper2.js +1 -1
- package/dist/C_Language.css +30 -17
- package/dist/C_Language2.cjs +1 -1
- package/dist/C_Language2.js +1 -1
- package/dist/C_Loading.cjs +1 -0
- package/dist/C_Loading.css +119 -0
- package/dist/C_Loading.d.cts +2 -0
- package/dist/C_Loading.d.ts +2 -0
- package/dist/C_Loading.js +1 -0
- package/dist/C_Loading2.cjs +1 -0
- package/dist/C_Loading2.js +1 -0
- package/dist/C_Login.css +162 -137
- package/dist/C_Login.d.cts +1 -1
- package/dist/C_Login.d.ts +1 -1
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Map.css +25 -4
- package/dist/C_Map2.cjs +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_Markdown.css +47 -42
- package/dist/C_Markdown.d.cts +1 -1
- package/dist/C_Markdown.d.ts +1 -1
- package/dist/C_Markdown2.cjs +1 -1
- package/dist/C_Markdown2.js +1 -1
- package/dist/C_Menu.css +7 -1
- package/dist/C_Menu.d.ts +1 -1
- package/dist/C_Menu2.cjs +1 -1
- package/dist/C_Menu2.js +1 -1
- package/dist/C_NotificationCenter.css +134 -90
- package/dist/C_NotificationCenter2.cjs +1 -1
- package/dist/C_NotificationCenter2.js +1 -1
- package/dist/C_OrgChart.css +10 -0
- package/dist/C_OrgChart.d.cts +1 -1
- package/dist/C_OrgChart.d.ts +1 -1
- package/dist/C_OrgChart2.cjs +1 -1
- package/dist/C_OrgChart2.js +1 -1
- package/dist/C_Progress.d.cts +1 -1
- package/dist/C_Progress.d.ts +1 -1
- package/dist/C_QRCode.css +12 -8
- package/dist/C_QRCode2.cjs +1 -1
- package/dist/C_QRCode2.js +1 -1
- package/dist/C_Signature.css +18 -14
- package/dist/C_Signature2.cjs +1 -1
- package/dist/C_Signature2.js +1 -1
- package/dist/C_Skeleton.css +5 -0
- package/dist/C_Skeleton.d.cts +1 -1
- package/dist/C_Skeleton.d.ts +1 -1
- package/dist/C_Skeleton2.cjs +1 -1
- package/dist/C_Skeleton2.js +1 -1
- package/dist/C_SplitPane.css +61 -39
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Steps.css +42 -38
- package/dist/C_Steps.d.cts +1 -1
- package/dist/C_Steps.d.ts +1 -1
- package/dist/C_Steps2.cjs +1 -1
- package/dist/C_Steps2.js +1 -1
- package/dist/C_Table.base.css +585 -352
- package/dist/C_Table.cjs +1 -1
- package/dist/C_Table.css +608 -367
- package/dist/C_Table.d.ts +2 -2
- package/dist/C_Table.js +1 -1
- package/dist/C_TagsView.css +93 -55
- package/dist/C_TagsView.d.cts +1 -1
- package/dist/C_TagsView.d.ts +1 -1
- package/dist/C_TagsView2.cjs +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_Theme.css +24 -17
- package/dist/C_Theme.d.cts +1 -1
- package/dist/C_Theme.d.ts +1 -1
- package/dist/C_Timeline.css +47 -36
- package/dist/C_Timeline.d.cts +1 -1
- package/dist/C_Timeline.d.ts +1 -1
- package/dist/C_Transfer.css +86 -67
- package/dist/C_Transfer.d.cts +1 -1
- package/dist/C_Transfer.d.ts +1 -1
- package/dist/C_Transfer2.cjs +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Tree.css +48 -33
- package/dist/C_Tree2.cjs +1 -1
- package/dist/C_Tree2.js +1 -1
- package/dist/C_Upload.css +104 -51
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_VideoPlayer.css +140 -69
- package/dist/C_VideoPlayer2.cjs +1 -1
- package/dist/C_VideoPlayer2.js +1 -1
- package/dist/C_VtableGantt.css +42 -19
- package/dist/C_VtableGantt.d.cts +1 -1
- package/dist/C_VtableGantt.d.ts +1 -1
- package/dist/C_VtableGantt2.cjs +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_WaterFall.css +32 -16
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WorkFlow.css +332 -221
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/config.cjs +1 -1
- package/dist/config.js +1 -1
- package/dist/constants.d.cts +4 -4
- package/dist/constants.d.ts +4 -4
- package/dist/constants2.d.cts +4 -4
- package/dist/constants2.d.ts +4 -4
- package/dist/constants3.d.cts +3 -3
- package/dist/constants3.d.ts +3 -3
- package/dist/constants4.d.cts +6 -6
- package/dist/constants4.d.ts +6 -6
- package/dist/constants5.d.cts +2 -2
- package/dist/constants5.d.ts +2 -2
- package/dist/data.d.cts +8 -8
- package/dist/data.d.ts +8 -8
- package/dist/data2.cjs +1 -1
- package/dist/data2.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +28 -27
- package/dist/index.d.ts +28 -27
- package/dist/index.js +1 -1
- package/dist/index.vue.d.cts +1 -1
- package/dist/index.vue.d.ts +1 -1
- package/dist/index10.vue.d.cts +5 -5
- package/dist/index10.vue.d.ts +3 -3
- package/dist/index11.vue.d.cts +3 -3
- package/dist/index11.vue.d.ts +2 -2
- package/dist/index12.vue.d.cts +2 -2
- package/dist/index13.vue.d.ts +1 -1
- package/dist/index14.vue.d.cts +1 -1
- package/dist/index14.vue.d.ts +11 -9
- package/dist/index15.vue.d.cts +11 -9
- package/dist/index15.vue.d.ts +3 -3
- package/dist/index16.vue.d.cts +3 -3
- package/dist/index16.vue.d.ts +13 -129
- package/dist/index17.vue.d.cts +13 -129
- package/dist/index17.vue.d.ts +129 -76
- package/dist/index18.vue.d.cts +129 -76
- package/dist/index18.vue.d.ts +75 -71
- package/dist/index19.vue.d.cts +75 -93
- package/dist/index19.vue.d.ts +68 -90
- package/dist/index2.vue.d.cts +2 -2
- package/dist/index2.vue.d.ts +2 -2
- package/dist/index20.vue.d.cts +87 -40
- package/dist/index20.vue.d.ts +87 -40
- package/dist/index21.vue.d.cts +40 -89
- package/dist/index21.vue.d.ts +40 -89
- package/dist/index22.vue.d.cts +95 -37
- package/dist/index22.vue.d.ts +95 -37
- package/dist/index23.vue.d.cts +34 -8
- package/dist/index23.vue.d.ts +34 -8
- package/dist/index24.vue.d.cts +12 -654
- package/dist/index24.vue.d.ts +12 -654
- package/dist/index25.vue.d.cts +650 -85
- package/dist/index25.vue.d.ts +650 -85
- package/dist/index26.vue.d.cts +85 -100
- package/dist/index26.vue.d.ts +85 -100
- package/dist/index27.vue.d.cts +92 -61
- package/dist/index27.vue.d.ts +92 -61
- package/dist/index28.vue.d.cts +80 -0
- package/dist/index28.vue.d.ts +80 -0
- package/dist/index3.vue.d.cts +5 -5
- package/dist/index3.vue.d.ts +5 -5
- package/dist/index5.vue.d.ts +2 -2
- package/dist/index6.vue.d.cts +2 -2
- package/dist/index6.vue.d.ts +1 -1
- package/dist/index7.vue.d.cts +1 -1
- package/dist/index7.vue.d.ts +2 -2
- package/dist/index8.vue.d.cts +2 -2
- package/dist/index8.vue.d.ts +3 -3
- package/dist/index9.vue.d.cts +3 -3
- 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/resolver.cjs +1 -1
- package/dist/resolver.d.cts +1 -1
- package/dist/resolver.d.ts +1 -1
- package/dist/resolver.js +1 -1
- package/dist/style.css +3205 -1982
- package/dist/useCollapsePanel.d.cts +2 -2
- package/dist/useCollapsePanel.d.ts +2 -2
- package/dist/useCropperCore.d.cts +8 -8
- package/dist/useCropperCore.d.ts +8 -8
- package/dist/useDraggableLayout.d.cts +5 -5
- package/dist/useDraggableLayout.d.ts +5 -5
- package/dist/useDynamicFormState.d.cts +2 -2
- package/dist/useDynamicFormState.d.ts +2 -2
- package/dist/useEdgeInteraction.d.cts +1 -1
- package/dist/useEdgeInteraction.d.ts +1 -1
- package/dist/useFullscreen.d.cts +2 -2
- package/dist/useFullscreen.d.ts +2 -2
- package/dist/useInfiniteScroll.d.cts +3 -3
- package/dist/useInfiniteScroll.d.ts +3 -3
- package/dist/useQRCode.d.cts +2 -2
- package/dist/useQRCode.d.ts +2 -2
- package/dist/useSearchState.d.cts +6 -6
- package/dist/useSearchState.d.ts +6 -6
- package/dist/useSignatureHistory.d.cts +6 -6
- package/dist/useSignatureHistory.d.ts +6 -6
- package/dist/useSplitResize.d.cts +4 -4
- package/dist/useSplitResize.d.ts +4 -4
- package/dist/useTableQuery.cjs +3 -3
- package/dist/useTableQuery.d.cts +3 -1
- package/dist/useTableQuery.d.ts +3 -1
- package/dist/useTableQuery.js +3 -3
- package/dist/useTimeSelection.d.cts +4 -4
- package/dist/useTimeSelection.d.ts +4 -4
- package/dist/useTreeOperations.d.cts +6 -6
- package/dist/useTreeOperations.d.ts +6 -6
- package/dist/useWorkflowValidation.d.cts +6 -6
- package/dist/useWorkflowValidation.d.ts +6 -6
- package/dist/verification.d.cts +2 -2
- package/dist/verification.d.ts +2 -2
- package/package.json +10 -3
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:`flex justify-between items-center`},O={class:`flex gap-2 items-center`},k={class:`text-sm text-gray-600`},A={class:`flex gap-2 items-center`},j={class:`text-sm text-gray-600 min-w-12 text-center`},ee={class:`file-viewer`},te=[`src`],ne=(0,i.defineComponent)({__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){let n=e,r=(0,i.ref)(1),o=(0,i.ref)(1),s=_(o,u.pdf),c=e=>{if(typeof e==`number`)r.value=Math.max(1,Math.min(e,n.totalPages));else{let t=e===`prev`?-1:1;r.value=Math.max(1,Math.min(r.value+t,n.totalPages))}};return(n,l)=>{let u=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,T,[(0,i.createElementVNode)(`div`,E,[(0,i.createElementVNode)(`div`,D,[(0,i.createCommentVNode)(` 翻页控制 `),(0,i.createElementVNode)(`div`,O,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value<=1,onClick:l[0]||=e=>c(`prev`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-chevron-left`})]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NInputNumber),{value:r.value,"onUpdate:value":[l[1]||=e=>r.value=e,c],size:`small`,min:1,max:e.totalPages,style:{width:`80px`}},null,8,[`value`,`max`,`onUpdate:value`]),(0,i.createElementVNode)(`span`,k,`/ `+(0,i.toDisplayString)(e.totalPages),1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value>=e.totalPages,onClick:l[2]||=e=>c(`next`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-chevron-right`})]),_:1},8,[`disabled`])]),(0,i.createCommentVNode)(` 缩放控制 `),(0,i.createElementVNode)(`div`,A,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:o.value<=.5,onClick:l[3]||=e=>(0,i.unref)(s)(`out`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),(0,i.createElementVNode)(`span`,j,(0,i.toDisplayString)(Math.round(o.value*100))+`% `,1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:o.value>=3,onClick:l[4]||=e=>(0,i.unref)(s)(`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[5]||=e=>(0,i.unref)(s)(`reset`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-fit-screen`})]),default:(0,i.withCtx)(()=>[l[6]||=(0,i.createTextVNode)(` 适应 `,-1)]),_:1})])])]),(0,i.createElementVNode)(`div`,ee,[e.pdfUrl?((0,i.openBlock)(),(0,i.createElementBlock)(`iframe`,{key:0,src:e.pdfUrl,class:`w-full h-full border-0`,title:`PDF预览`,frameborder:`0`,allowfullscreen:``},null,8,te)):(0,i.createCommentVNode)(`v-if`,!0)])])}}});var re=n.t(ne,[[`__scopeId`,`data-v-6ef071db`]]);const ie={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`},L={key:0,class:`word-outline`},R={class:`outline-content`},z=[`onClick`],B={class:`word-content`},V=[`innerHTML`],H=(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`,ie,[(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`,L,[l[5]||=(0,i.createElementVNode)(`div`,{class:`outline-header`},[(0,i.createElementVNode)(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),(0,i.createElementVNode)(`div`,R,[((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,z))),128))])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,B,[(0,i.createElementVNode)(`div`,{class:`word-document`,style:(0,i.normalizeStyle)({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,V)])])])])}}});var U=n.t(H,[[`__scopeId`,`data-v-31f606d3`]]);const W={class:`file-container excel-container`},G={class:`file-toolbar`},K={class:`flex justify-between items-center`},q={class:`flex gap-2 items-center`},J={key:1,class:`text-sm text-gray-600`},Y={class:`flex gap-2 items-center`},ae={class:`excel-viewer`},oe={key:0,class:`excel-info`},se={class:`excel-table-container`},ce={key:0,class:`excel-table`},le={class:`header-content`},ue={class:`column-letter`},de={class:`column-title`},fe={class:`row-number`},pe=[`rowspan`,`colspan`,`title`],me={key:1,class:`excel-empty`},he={key:0,class:`excel-pagination`},ge=(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`,W,[(0,i.createCommentVNode)(` 工具栏 `),(0,i.createElementVNode)(`div`,G,[(0,i.createElementVNode)(`div`,K,[(0,i.createElementVNode)(`div`,q,[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`,J,` 工作表: `+(0,i.toDisplayString)(r.value),1))]),(0,i.createElementVNode)(`div`,Y,[(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`,ae,[(0,i.createCommentVNode)(` 信息面板 `),l.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,oe,[(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`,se,[(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`,ce,[(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`,le,[(0,i.createElementVNode)(`span`,ue,(0,i.toDisplayString)((0,i.unref)(v)(t)),1),(0,i.createElementVNode)(`span`,de,(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`,fe,(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,pe)),[[i.vShow,!e[t.key]?.hidden]])),128))]))),128))])])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,me,[(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`,he,[(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 _e=n.t(ge,[[`__scopeId`,`data-v-5569b81f`]]);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 ve={class:`c-file-preview-wrapper`},ye={key:0,class:`file-info-card`},be={class:`file-info`},xe={class:`file-icon`},Se={class:`file-details`},Ce={class:`file-name`},we={class:`file-meta`},Te={class:`file-size`},Ee={class:`file-actions`},De={class:`modal-header`},$={class:`modal-title`},Oe={class:`modal-actions`},ke={class:`modal-content`},Ae={class:`preview-header`},je={class:`flex justify-between items-center`},Me={class:`flex items-center gap-3`},Ne={class:`text-sm text-gray-500`},Pe={class:`flex gap-2`},Fe={class:`preview-content`},Ie={key:0,class:`status-container`},Le=(0,i.defineComponent)({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:n}){let{file:r,url:o,fileName:s,autoPreview:c}=(0,i.toRefs)(e),{loading:l,error:u,fileSize:d,showModal:f,pdfUrl:p,pdfTotalPages:h,wordContent:g,wordHeadings:_,excelSheets:v,displayFileName:y,fileType:b,fileConfig:x,loadFile:S,openPreview:C,downloadFile:w}=Z({file:r,url:o,fileName:s},n),T=(0,i.ref)(),{isFullscreen:E,toggleFullscreen:D,exitFullscreen:O}=Q(T);return(0,i.watch)(f,e=>{e||O()}),(0,i.watch)([r,o,c],([e,t],n)=>{if(!(typeof window>`u`)){if(f.value){(e!==n?.[0]||t!==n?.[1])&&S();return}c.value&&(e||t)&&C()}},{immediate:!0}),(e,n)=>{let r=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,ve,[(0,i.createCommentVNode)(` 文件信息卡片模式 `),(0,i.unref)(c)?(0,i.createCommentVNode)(`v-if`,!0):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ye,[(0,i.createElementVNode)(`div`,be,[(0,i.createElementVNode)(`div`,xe,[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon,size:40,color:(0,i.unref)(x).color},null,8,[`name`,`color`])]),(0,i.createElementVNode)(`div`,Se,[(0,i.createElementVNode)(`div`,Ce,[(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)(y)),1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(x).tagType,size:`small`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(b).toUpperCase()),1)]),_:1},8,[`type`])]),(0,i.createElementVNode)(`div`,we,[(0,i.createElementVNode)(`span`,Te,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(d))),1)])]),(0,i.createElementVNode)(`div`,Ee,[(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(C)},{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)(w)},{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)(` 模态框预览 `),(0,i.createVNode)((0,i.unref)(a.NModal),{show:(0,i.unref)(f),"onUpdate:show":n[1]||=e=>(0,i.isRef)(f)?f.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:T,class:`modal-container`},[(0,i.createCommentVNode)(` 自定义头部 `),(0,i.createElementVNode)(`div`,De,[(0,i.createElementVNode)(`div`,$,[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon,size:20,color:(0,i.unref)(x).color},null,8,[`name`,`color`]),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)((0,i.unref)(y)),1)]),(0,i.createElementVNode)(`div`,Oe,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:(0,i.unref)(w)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[4]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>f.value=!1},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-close`})]),_:1})])]),(0,i.createCommentVNode)(` 预览内容 `),(0,i.createElementVNode)(`div`,ke,[(0,i.createCommentVNode)(` 文件信息头部 `),(0,i.createElementVNode)(`div`,Ae,[(0,i.createElementVNode)(`div`,je,[(0,i.createElementVNode)(`div`,Me,[(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(x).tagType,size:`small`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(b).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)(y)),1)]),_:1}),(0,i.createElementVNode)(`span`,Ne,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(d))),1)]),(0,i.createElementVNode)(`div`,Pe,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,disabled:(0,i.unref)(l),onClick:(0,i.unref)(S)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-refresh`})]),default:(0,i.withCtx)(()=>[n[5]||=(0,i.createTextVNode)(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,onClick:(0,i.unref)(D)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(E)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(E)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),(0,i.createCommentVNode)(` 预览内容区域 `),(0,i.createElementVNode)(`div`,Fe,[(0,i.createCommentVNode)(` 加载和错误状态 `),(0,i.unref)(l)||(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ie,[(0,i.unref)(l)?((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)(b).toUpperCase())+`文件... `,1)]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(u)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(S)},{default:(0,i.withCtx)(()=>[...n[6]||=[(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)(b)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(re,{key:0,"pdf-url":(0,i.unref)(p),"total-pages":(0,i.unref)(h)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(b)===`word`?((0,i.openBlock)(),(0,i.createBlock)(U,{key:1,content:(0,i.unref)(g),headings:(0,i.unref)(_)},null,8,[`content`,`headings`])):(0,i.unref)(b)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(_e,{key:2,sheets:(0,i.unref)(v),onReload:(0,i.unref)(S)},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)(b).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64))])])],512)]),_:1},8,[`show`])])}}});var Re=n.t(Le,[[`__scopeId`,`data-v-3e4e0b9c`]]);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 Re}});
|
|
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:`flex justify-between items-center`},O={class:`flex gap-2 items-center`},k={class:`text-sm text-gray-600`},A={class:`flex gap-2 items-center`},j={class:`text-sm text-gray-600 min-w-12 text-center`},ee={class:`file-viewer`},te=[`src`],ne=(0,i.defineComponent)({__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){let n=e,r=(0,i.ref)(1),o=(0,i.ref)(1),s=_(o,u.pdf),c=e=>{if(typeof e==`number`)r.value=Math.max(1,Math.min(e,n.totalPages));else{let t=e===`prev`?-1:1;r.value=Math.max(1,Math.min(r.value+t,n.totalPages))}};return(n,l)=>{let u=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,T,[(0,i.createElementVNode)(`div`,E,[(0,i.createElementVNode)(`div`,D,[(0,i.createCommentVNode)(` 翻页控制 `),(0,i.createElementVNode)(`div`,O,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value<=1,onClick:l[0]||=e=>c(`prev`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-chevron-left`})]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NInputNumber),{value:r.value,"onUpdate:value":[l[1]||=e=>r.value=e,c],size:`small`,min:1,max:e.totalPages,style:{width:`80px`}},null,8,[`value`,`max`,`onUpdate:value`]),(0,i.createElementVNode)(`span`,k,`/ `+(0,i.toDisplayString)(e.totalPages),1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value>=e.totalPages,onClick:l[2]||=e=>c(`next`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-chevron-right`})]),_:1},8,[`disabled`])]),(0,i.createCommentVNode)(` 缩放控制 `),(0,i.createElementVNode)(`div`,A,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:o.value<=.5,onClick:l[3]||=e=>(0,i.unref)(s)(`out`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),(0,i.createElementVNode)(`span`,j,(0,i.toDisplayString)(Math.round(o.value*100))+`% `,1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:o.value>=3,onClick:l[4]||=e=>(0,i.unref)(s)(`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[5]||=e=>(0,i.unref)(s)(`reset`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-fit-screen`})]),default:(0,i.withCtx)(()=>[l[6]||=(0,i.createTextVNode)(` 适应 `,-1)]),_:1})])])]),(0,i.createElementVNode)(`div`,ee,[e.pdfUrl?((0,i.openBlock)(),(0,i.createElementBlock)(`iframe`,{key:0,src:e.pdfUrl,class:`w-full h-full border-0`,title:`PDF预览`,frameborder:`0`,allowfullscreen:``},null,8,te)):(0,i.createCommentVNode)(`v-if`,!0)])])}}});var re=n.t(ne,[[`__scopeId`,`data-v-86f8c1ab`]]);const ie={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`},L={key:0,class:`word-outline`},R={class:`outline-content`},z=[`onClick`],B={class:`word-content`},V=[`innerHTML`],H=(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`,ie,[(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`,L,[l[5]||=(0,i.createElementVNode)(`div`,{class:`outline-header`},[(0,i.createElementVNode)(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),(0,i.createElementVNode)(`div`,R,[((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,z))),128))])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,B,[(0,i.createElementVNode)(`div`,{class:`word-document`,style:(0,i.normalizeStyle)({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,V)])])])])}}});var U=n.t(H,[[`__scopeId`,`data-v-dae08a5f`]]);const W={class:`file-container excel-container`},G={class:`file-toolbar`},K={class:`flex justify-between items-center`},q={class:`flex gap-2 items-center`},J={key:1,class:`text-sm text-gray-600`},Y={class:`flex gap-2 items-center`},ae={class:`excel-viewer`},oe={key:0,class:`excel-info`},se={class:`excel-table-container`},ce={key:0,class:`excel-table`},le={class:`header-content`},ue={class:`column-letter`},de={class:`column-title`},fe={class:`row-number`},pe=[`rowspan`,`colspan`,`title`],me={key:1,class:`excel-empty`},he={key:0,class:`excel-pagination`},ge=(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`,W,[(0,i.createCommentVNode)(` 工具栏 `),(0,i.createElementVNode)(`div`,G,[(0,i.createElementVNode)(`div`,K,[(0,i.createElementVNode)(`div`,q,[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`,J,` 工作表: `+(0,i.toDisplayString)(r.value),1))]),(0,i.createElementVNode)(`div`,Y,[(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`,ae,[(0,i.createCommentVNode)(` 信息面板 `),l.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,oe,[(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`,se,[(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`,ce,[(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`,le,[(0,i.createElementVNode)(`span`,ue,(0,i.toDisplayString)((0,i.unref)(v)(t)),1),(0,i.createElementVNode)(`span`,de,(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`,fe,(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,pe)),[[i.vShow,!e[t.key]?.hidden]])),128))]))),128))])])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,me,[(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`,he,[(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 _e=n.t(ge,[[`__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 ve={class:`c-file-preview-wrapper`},ye={key:0,class:`file-info-card`},be={class:`file-info`},xe={class:`file-icon`},Se={class:`file-details`},Ce={class:`file-name`},we={class:`file-meta`},Te={class:`file-size`},Ee={class:`file-actions`},De={class:`modal-header`},$={class:`modal-title`},Oe={class:`modal-actions`},ke={class:`modal-content`},Ae={class:`preview-header`},je={class:`flex justify-between items-center`},Me={class:`flex items-center gap-3`},Ne={class:`text-sm text-gray-500`},Pe={class:`flex gap-2`},Fe={class:`preview-content`},Ie={key:0,class:`status-container`},Le=(0,i.defineComponent)({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:n}){let{file:r,url:o,fileName:s,autoPreview:c}=(0,i.toRefs)(e),{loading:l,error:u,fileSize:d,showModal:f,pdfUrl:p,pdfTotalPages:h,wordContent:g,wordHeadings:_,excelSheets:v,displayFileName:y,fileType:b,fileConfig:x,loadFile:S,openPreview:C,downloadFile:w}=Z({file:r,url:o,fileName:s},n),T=(0,i.ref)(),{isFullscreen:E,toggleFullscreen:D,exitFullscreen:O}=Q(T);return(0,i.watch)(f,e=>{e||O()}),(0,i.watch)([r,o,c],([e,t],n)=>{if(!(typeof window>`u`)){if(f.value){(e!==n?.[0]||t!==n?.[1])&&S();return}c.value&&(e||t)&&C()}},{immediate:!0}),(e,n)=>{let r=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,ve,[(0,i.createCommentVNode)(` 文件信息卡片模式 `),(0,i.unref)(c)?(0,i.createCommentVNode)(`v-if`,!0):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ye,[(0,i.createElementVNode)(`div`,be,[(0,i.createElementVNode)(`div`,xe,[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon,size:40,color:(0,i.unref)(x).color},null,8,[`name`,`color`])]),(0,i.createElementVNode)(`div`,Se,[(0,i.createElementVNode)(`div`,Ce,[(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)(y)),1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(x).tagType,size:`small`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(b).toUpperCase()),1)]),_:1},8,[`type`])]),(0,i.createElementVNode)(`div`,we,[(0,i.createElementVNode)(`span`,Te,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(d))),1)])]),(0,i.createElementVNode)(`div`,Ee,[(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(C)},{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)(w)},{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)(` 模态框预览 `),(0,i.createVNode)((0,i.unref)(a.NModal),{show:(0,i.unref)(f),"onUpdate:show":n[1]||=e=>(0,i.isRef)(f)?f.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:T,class:`modal-container`},[(0,i.createCommentVNode)(` 自定义头部 `),(0,i.createElementVNode)(`div`,De,[(0,i.createElementVNode)(`div`,$,[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon,size:20,color:(0,i.unref)(x).color},null,8,[`name`,`color`]),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)((0,i.unref)(y)),1)]),(0,i.createElementVNode)(`div`,Oe,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:(0,i.unref)(w)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[4]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>f.value=!1},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-close`})]),_:1})])]),(0,i.createCommentVNode)(` 预览内容 `),(0,i.createElementVNode)(`div`,ke,[(0,i.createCommentVNode)(` 文件信息头部 `),(0,i.createElementVNode)(`div`,Ae,[(0,i.createElementVNode)(`div`,je,[(0,i.createElementVNode)(`div`,Me,[(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(x).tagType,size:`small`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(b).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)(y)),1)]),_:1}),(0,i.createElementVNode)(`span`,Ne,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(d))),1)]),(0,i.createElementVNode)(`div`,Pe,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,disabled:(0,i.unref)(l),onClick:(0,i.unref)(S)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-refresh`})]),default:(0,i.withCtx)(()=>[n[5]||=(0,i.createTextVNode)(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,onClick:(0,i.unref)(D)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(E)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(E)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),(0,i.createCommentVNode)(` 预览内容区域 `),(0,i.createElementVNode)(`div`,Fe,[(0,i.createCommentVNode)(` 加载和错误状态 `),(0,i.unref)(l)||(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ie,[(0,i.unref)(l)?((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)(b).toUpperCase())+`文件... `,1)]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(u)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(S)},{default:(0,i.withCtx)(()=>[...n[6]||=[(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)(b)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(re,{key:0,"pdf-url":(0,i.unref)(p),"total-pages":(0,i.unref)(h)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(b)===`word`?((0,i.openBlock)(),(0,i.createBlock)(U,{key:1,content:(0,i.unref)(g),headings:(0,i.unref)(_)},null,8,[`content`,`headings`])):(0,i.unref)(b)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(_e,{key:2,sheets:(0,i.unref)(v),onReload:(0,i.unref)(S)},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)(b).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64))])])],512)]),_:1},8,[`show`])])}}});var Re=n.t(Le,[[`__scopeId`,`data-v-bd24aa22`]]);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 Re}});
|
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,NInputNumber as M,NModal as N,NPagination as P,NResult as F,NSpin as ee,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`],te=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]},ne=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&H[t]||`unknown`},re=e=>U[e]||U.unknown,J=(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},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},ae=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`},oe=(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 se(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function ce(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 le(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}=oe(t,r);return{name:e,data:i,merges:r,columns:a}})}}const ue={class:`file-container pdf-container`},de={class:`file-toolbar`},fe={class:`flex justify-between items-center`},pe={class:`flex gap-2 items-center`},me={class:`text-sm text-gray-600`},he={class:`flex gap-2 items-center`},ge={class:`text-sm text-gray-600 min-w-12 text-center`},_e={class:`file-viewer`},ve=[`src`];var ye=t(d({__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(t){let n=t,r=v(1),i=v(1),a=J(i,W.pdf),d=e=>{if(typeof e==`number`)r.value=Math.max(1,Math.min(e,n.totalPages));else{let t=e===`prev`?-1:1;r.value=Math.max(1,Math.min(r.value+t,n.totalPages))}};return(n,f)=>{let p=e;return _(),s(`div`,ue,[c(`div`,de,[c(`div`,fe,[o(` 翻页控制 `),c(`div`,pe,[u(C(O),{size:`small`,disabled:r.value<=1,onClick:f[0]||=e=>d(`prev`)},{icon:E(()=>[u(p,{name:`ic:outline-chevron-left`})]),_:1},8,[`disabled`]),u(C(M),{value:r.value,"onUpdate:value":[f[1]||=e=>r.value=e,d],size:`small`,min:1,max:t.totalPages,style:{width:`80px`}},null,8,[`value`,`max`,`onUpdate:value`]),c(`span`,me,`/ `+x(t.totalPages),1),u(C(O),{size:`small`,disabled:r.value>=t.totalPages,onClick:f[2]||=e=>d(`next`)},{icon:E(()=>[u(p,{name:`ic:outline-chevron-right`})]),_:1},8,[`disabled`])]),o(` 缩放控制 `),c(`div`,he,[u(C(O),{size:`small`,disabled:i.value<=.5,onClick:f[3]||=e=>C(a)(`out`)},{icon:E(()=>[u(p,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),c(`span`,ge,x(Math.round(i.value*100))+`% `,1),u(C(O),{size:`small`,disabled:i.value>=3,onClick:f[4]||=e=>C(a)(`in`)},{icon:E(()=>[u(p,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),u(C(O),{size:`small`,onClick:f[5]||=e=>C(a)(`reset`)},{icon:E(()=>[u(p,{name:`ic:outline-fit-screen`})]),default:E(()=>[f[6]||=l(` 适应 `,-1)]),_:1})])])]),c(`div`,_e,[t.pdfUrl?(_(),s(`iframe`,{key:0,src:t.pdfUrl,class:`w-full h-full border-0`,title:`PDF预览`,frameborder:`0`,allowfullscreen:``},null,8,ve)):o(`v-if`,!0)])])}}}),[[`__scopeId`,`data-v-6ef071db`]]);const be={class:`file-container word-container`},xe={class:`file-toolbar`},Se={class:`flex gap-2 items-center`},Ce={class:`text-sm text-gray-600 min-w-12 text-center`},we={class:`word-layout`},Te={class:`word-main`},Ee={key:0,class:`word-outline`},De={class:`outline-content`},Oe=[`onClick`],ke={class:`word-content`},Ae=[`innerHTML`];var je=t(d({__name:`index`,props:{content:{},headings:{}},setup(t){let n=v(!0),i=v(100),a=J(i,W.word),d=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(f,h)=>{let g=e;return _(),s(`div`,be,[c(`div`,xe,[c(`div`,Se,[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`,Ce,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`,we,[c(`div`,Te,[o(` 侧边栏目录 `),n.value?(_(),s(`div`,Ee,[h[5]||=c(`div`,{class:`outline-header`},[c(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),c(`div`,De,[(_(!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,Oe))),128))])])):o(`v-if`,!0),o(` 主要内容区域 `),c(`div`,ke,[c(`div`,{class:`word-document`,style:m({transform:`scale(${i.value/100})`,transformOrigin:`top center`}),innerHTML:t.content},null,12,Ae)])])])])}}}),[[`__scopeId`,`data-v-31f606d3`]]);const Me={class:`file-container excel-container`},Ne={class:`file-toolbar`},Pe={class:`flex justify-between items-center`},Fe={class:`flex gap-2 items-center`},Ie={key:1,class:`text-sm text-gray-600`},Le={class:`flex gap-2 items-center`},Re={class:`excel-viewer`},ze={key:0,class:`excel-info`},Be={class:`excel-table-container`},Ve={key:0,class:`excel-table`},He={class:`header-content`},Ue={class:`column-letter`},We={class:`column-title`},Ge={class:`row-number`},Ke=[`rowspan`,`colspan`,`title`],qe={key:1,class:`excel-empty`},Je={key:0,class:`excel-pagination`};var Ye=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},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`,Me,[o(` 工具栏 `),c(`div`,Ne,[c(`div`,Pe,[c(`div`,Fe,[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`,Ie,` 工作表: `+x(d.value),1))]),c(`div`,Le,[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`,Re,[o(` 信息面板 `),b.value.length>0?(_(),s(`div`,ze,[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`,Be,[c(`div`,{class:p([`excel-table-wrapper`,{"simple-mode":!f.value}])},[b.value.length>0?(_(),s(`table`,Ve,[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`,He,[c(`span`,Ue,x(C(ie)(t)),1),c(`span`,We,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`,Ge,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(ae)(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(Y)(e[t.key]?.value)),11,Ke)),[[w,!e[t.key]?.hidden]])),128))]))),128))])])):(_(),s(`div`,qe,[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`,Je,[u(C(P),{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-5569b81f`]]);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=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?te(r.value):`未知文件`),b=i(()=>ne(y.value)),x=i(()=>re(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=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],y.value,{type:r.type})}throw Error(`未提供文件或URL`)},D=async(e,t,n)=>{switch(t){case`pdf`:{let t=await se(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 ce(e);if(n!==h)return;f.value=t.content,p.value=t.headings;break}case`excel`:{let t=await le(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=X(r.value,window.location.href);if(!e){w(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,n.value||r.value)}}}function Q(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 Xe={class:`c-file-preview-wrapper`},Ze={key:0,class:`file-info-card`},Qe={class:`file-info`},$e={class:`file-icon`},et={class:`file-details`},tt={class:`file-name`},$={class:`file-meta`},nt={class:`file-size`},rt={class:`file-actions`},it={class:`modal-header`},at={class:`modal-title`},ot={class:`modal-actions`},st={class:`modal-content`},ct={class:`preview-header`},lt={class:`flex justify-between items-center`},ut={class:`flex items-center gap-3`},dt={class:`text-sm text-gray-500`},ft={class:`flex gap-2`},pt={class:`preview-content`},mt={key:0,class:`status-container`};var ht=t(d({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(t,{emit:n}){let{file:i,url:d,fileName:p,autoPreview:m}=S(t),{loading:h,error:g,fileSize:y,showModal:b,pdfUrl:w,pdfTotalPages:D,wordContent:k,wordHeadings:j,excelSheets:M,displayFileName:P,fileType:I,fileConfig:L,loadFile:z,openPreview:B,downloadFile:V}=Z({file:i,url:d,fileName:p},n),H=v(),{isFullscreen:U,toggleFullscreen:W,exitFullscreen:G}=Q(H);return T(b,e=>{e||G()}),T([i,d,m],([e,t],n)=>{if(!(typeof window>`u`)){if(b.value){(e!==n?.[0]||t!==n?.[1])&&z();return}m.value&&(e||t)&&B()}},{immediate:!0}),(t,n)=>{let i=e;return _(),s(`div`,Xe,[o(` 文件信息卡片模式 `),C(m)?o(`v-if`,!0):(_(),s(`div`,Ze,[c(`div`,Qe,[c(`div`,$e,[u(i,{name:C(L).icon,size:40,color:C(L).color},null,8,[`name`,`color`])]),c(`div`,et,[c(`div`,tt,[u(C(A),{style:{"max-width":`250px`}},{default:E(()=>[l(x(C(P)),1)]),_:1}),u(C(R),{type:C(L).tagType,size:`small`},{default:E(()=>[l(x(C(I).toUpperCase()),1)]),_:1},8,[`type`])]),c(`div`,$,[c(`span`,nt,x(C(q)(C(y))),1)])]),c(`div`,rt,[u(C(O),{type:`primary`,onClick:C(B)},{icon:E(()=>[u(i,{name:`ic:outline-visibility`})]),default:E(()=>[n[2]||=l(` 预览 `,-1)]),_:1},8,[`onClick`]),u(C(O),{type:`tertiary`,onClick:C(V)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[3]||=l(` 下载 `,-1)]),_:1},8,[`onClick`])])])])),o(` 模态框预览 `),u(C(N),{show:C(b),"onUpdate:show":n[1]||=e=>f(b)?b.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:H,class:`modal-container`},[o(` 自定义头部 `),c(`div`,it,[c(`div`,at,[u(i,{name:C(L).icon,size:20,color:C(L).color},null,8,[`name`,`color`]),c(`span`,null,x(C(P)),1)]),c(`div`,ot,[u(C(O),{size:`small`,type:`tertiary`,onClick:C(V)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[4]||=l(` 下载 `,-1)]),_:1},8,[`onClick`]),u(C(O),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>b.value=!1},{icon:E(()=>[u(i,{name:`ic:outline-close`})]),_:1})])]),o(` 预览内容 `),c(`div`,st,[o(` 文件信息头部 `),c(`div`,ct,[c(`div`,lt,[c(`div`,ut,[u(C(R),{type:C(L).tagType,size:`small`},{icon:E(()=>[u(i,{name:C(L).icon},null,8,[`name`])]),default:E(()=>[l(` `+x(C(I).toUpperCase()),1)]),_:1},8,[`type`]),u(C(A),{style:{"max-width":`300px`}},{default:E(()=>[l(x(C(P)),1)]),_:1}),c(`span`,dt,x(C(q)(C(y))),1)]),c(`div`,ft,[u(C(O),{size:`small`,type:`tertiary`,disabled:C(h),onClick:C(z)},{icon:E(()=>[u(i,{name:`ic:outline-refresh`})]),default:E(()=>[n[5]||=l(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),u(C(O),{size:`small`,type:`primary`,onClick:C(W)},{icon:E(()=>[u(i,{name:C(U)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:E(()=>[l(` `+x(C(U)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),o(` 预览内容区域 `),c(`div`,pt,[o(` 加载和错误状态 `),C(h)||C(g)?(_(),s(`div`,mt,[C(h)?(_(),a(C(ee),{key:0,size:`large`},{description:E(()=>[l(` 正在加载`+x(C(I).toUpperCase())+`文件... `,1)]),_:1})):(_(),a(C(F),{key:1,status:`error`,title:`预览失败`,description:C(g)},{footer:E(()=>[u(C(O),{onClick:C(z)},{default:E(()=>[...n[6]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(_(),s(r,{key:1},[o(` 文件预览 — 委托给子组件 `),C(I)===`pdf`?(_(),a(ye,{key:0,"pdf-url":C(w),"total-pages":C(D)},null,8,[`pdf-url`,`total-pages`])):C(I)===`word`?(_(),a(je,{key:1,content:C(k),headings:C(j)},null,8,[`content`,`headings`])):C(I)===`excel`?(_(),a(Ye,{key:2,sheets:C(M),onReload:C(z)},null,8,[`sheets`,`onReload`])):(_(),s(r,{key:3},[o(` 不支持的文件类型 `),u(C(F),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${C(I).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64))])])],512)]),_:1},8,[`show`])])}}}),[[`__scopeId`,`data-v-3e4e0b9c`]]);export{Q as n,Z as r,ht 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,NInputNumber as M,NModal as N,NPagination as P,NResult as F,NSpin as ee,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`],te=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]},ne=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&H[t]||`unknown`},re=e=>U[e]||U.unknown,J=(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},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},ae=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`},oe=(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 se(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function ce(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 le(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}=oe(t,r);return{name:e,data:i,merges:r,columns:a}})}}const ue={class:`file-container pdf-container`},de={class:`file-toolbar`},fe={class:`flex justify-between items-center`},pe={class:`flex gap-2 items-center`},me={class:`text-sm text-gray-600`},he={class:`flex gap-2 items-center`},ge={class:`text-sm text-gray-600 min-w-12 text-center`},_e={class:`file-viewer`},ve=[`src`];var ye=t(d({__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(t){let n=t,r=v(1),i=v(1),a=J(i,W.pdf),d=e=>{if(typeof e==`number`)r.value=Math.max(1,Math.min(e,n.totalPages));else{let t=e===`prev`?-1:1;r.value=Math.max(1,Math.min(r.value+t,n.totalPages))}};return(n,f)=>{let p=e;return _(),s(`div`,ue,[c(`div`,de,[c(`div`,fe,[o(` 翻页控制 `),c(`div`,pe,[u(C(O),{size:`small`,disabled:r.value<=1,onClick:f[0]||=e=>d(`prev`)},{icon:E(()=>[u(p,{name:`ic:outline-chevron-left`})]),_:1},8,[`disabled`]),u(C(M),{value:r.value,"onUpdate:value":[f[1]||=e=>r.value=e,d],size:`small`,min:1,max:t.totalPages,style:{width:`80px`}},null,8,[`value`,`max`,`onUpdate:value`]),c(`span`,me,`/ `+x(t.totalPages),1),u(C(O),{size:`small`,disabled:r.value>=t.totalPages,onClick:f[2]||=e=>d(`next`)},{icon:E(()=>[u(p,{name:`ic:outline-chevron-right`})]),_:1},8,[`disabled`])]),o(` 缩放控制 `),c(`div`,he,[u(C(O),{size:`small`,disabled:i.value<=.5,onClick:f[3]||=e=>C(a)(`out`)},{icon:E(()=>[u(p,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),c(`span`,ge,x(Math.round(i.value*100))+`% `,1),u(C(O),{size:`small`,disabled:i.value>=3,onClick:f[4]||=e=>C(a)(`in`)},{icon:E(()=>[u(p,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),u(C(O),{size:`small`,onClick:f[5]||=e=>C(a)(`reset`)},{icon:E(()=>[u(p,{name:`ic:outline-fit-screen`})]),default:E(()=>[f[6]||=l(` 适应 `,-1)]),_:1})])])]),c(`div`,_e,[t.pdfUrl?(_(),s(`iframe`,{key:0,src:t.pdfUrl,class:`w-full h-full border-0`,title:`PDF预览`,frameborder:`0`,allowfullscreen:``},null,8,ve)):o(`v-if`,!0)])])}}}),[[`__scopeId`,`data-v-86f8c1ab`]]);const be={class:`file-container word-container`},xe={class:`file-toolbar`},Se={class:`flex gap-2 items-center`},Ce={class:`text-sm text-gray-600 min-w-12 text-center`},we={class:`word-layout`},Te={class:`word-main`},Ee={key:0,class:`word-outline`},De={class:`outline-content`},Oe=[`onClick`],ke={class:`word-content`},Ae=[`innerHTML`];var je=t(d({__name:`index`,props:{content:{},headings:{}},setup(t){let n=v(!0),i=v(100),a=J(i,W.word),d=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(f,h)=>{let g=e;return _(),s(`div`,be,[c(`div`,xe,[c(`div`,Se,[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`,Ce,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`,we,[c(`div`,Te,[o(` 侧边栏目录 `),n.value?(_(),s(`div`,Ee,[h[5]||=c(`div`,{class:`outline-header`},[c(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),c(`div`,De,[(_(!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,Oe))),128))])])):o(`v-if`,!0),o(` 主要内容区域 `),c(`div`,ke,[c(`div`,{class:`word-document`,style:m({transform:`scale(${i.value/100})`,transformOrigin:`top center`}),innerHTML:t.content},null,12,Ae)])])])])}}}),[[`__scopeId`,`data-v-dae08a5f`]]);const Me={class:`file-container excel-container`},Ne={class:`file-toolbar`},Pe={class:`flex justify-between items-center`},Fe={class:`flex gap-2 items-center`},Ie={key:1,class:`text-sm text-gray-600`},Le={class:`flex gap-2 items-center`},Re={class:`excel-viewer`},ze={key:0,class:`excel-info`},Be={class:`excel-table-container`},Ve={key:0,class:`excel-table`},He={class:`header-content`},Ue={class:`column-letter`},We={class:`column-title`},Ge={class:`row-number`},Ke=[`rowspan`,`colspan`,`title`],qe={key:1,class:`excel-empty`},Je={key:0,class:`excel-pagination`};var Ye=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},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`,Me,[o(` 工具栏 `),c(`div`,Ne,[c(`div`,Pe,[c(`div`,Fe,[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`,Ie,` 工作表: `+x(d.value),1))]),c(`div`,Le,[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`,Re,[o(` 信息面板 `),b.value.length>0?(_(),s(`div`,ze,[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`,Be,[c(`div`,{class:p([`excel-table-wrapper`,{"simple-mode":!f.value}])},[b.value.length>0?(_(),s(`table`,Ve,[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`,He,[c(`span`,Ue,x(C(ie)(t)),1),c(`span`,We,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`,Ge,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(ae)(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(Y)(e[t.key]?.value)),11,Ke)),[[w,!e[t.key]?.hidden]])),128))]))),128))])])):(_(),s(`div`,qe,[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`,Je,[u(C(P),{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 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=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?te(r.value):`未知文件`),b=i(()=>ne(y.value)),x=i(()=>re(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=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],y.value,{type:r.type})}throw Error(`未提供文件或URL`)},D=async(e,t,n)=>{switch(t){case`pdf`:{let t=await se(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 ce(e);if(n!==h)return;f.value=t.content,p.value=t.headings;break}case`excel`:{let t=await le(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=X(r.value,window.location.href);if(!e){w(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,n.value||r.value)}}}function Q(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 Xe={class:`c-file-preview-wrapper`},Ze={key:0,class:`file-info-card`},Qe={class:`file-info`},$e={class:`file-icon`},et={class:`file-details`},tt={class:`file-name`},$={class:`file-meta`},nt={class:`file-size`},rt={class:`file-actions`},it={class:`modal-header`},at={class:`modal-title`},ot={class:`modal-actions`},st={class:`modal-content`},ct={class:`preview-header`},lt={class:`flex justify-between items-center`},ut={class:`flex items-center gap-3`},dt={class:`text-sm text-gray-500`},ft={class:`flex gap-2`},pt={class:`preview-content`},mt={key:0,class:`status-container`};var ht=t(d({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(t,{emit:n}){let{file:i,url:d,fileName:p,autoPreview:m}=S(t),{loading:h,error:g,fileSize:y,showModal:b,pdfUrl:w,pdfTotalPages:D,wordContent:k,wordHeadings:j,excelSheets:M,displayFileName:P,fileType:I,fileConfig:L,loadFile:z,openPreview:B,downloadFile:V}=Z({file:i,url:d,fileName:p},n),H=v(),{isFullscreen:U,toggleFullscreen:W,exitFullscreen:G}=Q(H);return T(b,e=>{e||G()}),T([i,d,m],([e,t],n)=>{if(!(typeof window>`u`)){if(b.value){(e!==n?.[0]||t!==n?.[1])&&z();return}m.value&&(e||t)&&B()}},{immediate:!0}),(t,n)=>{let i=e;return _(),s(`div`,Xe,[o(` 文件信息卡片模式 `),C(m)?o(`v-if`,!0):(_(),s(`div`,Ze,[c(`div`,Qe,[c(`div`,$e,[u(i,{name:C(L).icon,size:40,color:C(L).color},null,8,[`name`,`color`])]),c(`div`,et,[c(`div`,tt,[u(C(A),{style:{"max-width":`250px`}},{default:E(()=>[l(x(C(P)),1)]),_:1}),u(C(R),{type:C(L).tagType,size:`small`},{default:E(()=>[l(x(C(I).toUpperCase()),1)]),_:1},8,[`type`])]),c(`div`,$,[c(`span`,nt,x(C(q)(C(y))),1)])]),c(`div`,rt,[u(C(O),{type:`primary`,onClick:C(B)},{icon:E(()=>[u(i,{name:`ic:outline-visibility`})]),default:E(()=>[n[2]||=l(` 预览 `,-1)]),_:1},8,[`onClick`]),u(C(O),{type:`tertiary`,onClick:C(V)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[3]||=l(` 下载 `,-1)]),_:1},8,[`onClick`])])])])),o(` 模态框预览 `),u(C(N),{show:C(b),"onUpdate:show":n[1]||=e=>f(b)?b.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:H,class:`modal-container`},[o(` 自定义头部 `),c(`div`,it,[c(`div`,at,[u(i,{name:C(L).icon,size:20,color:C(L).color},null,8,[`name`,`color`]),c(`span`,null,x(C(P)),1)]),c(`div`,ot,[u(C(O),{size:`small`,type:`tertiary`,onClick:C(V)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[4]||=l(` 下载 `,-1)]),_:1},8,[`onClick`]),u(C(O),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>b.value=!1},{icon:E(()=>[u(i,{name:`ic:outline-close`})]),_:1})])]),o(` 预览内容 `),c(`div`,st,[o(` 文件信息头部 `),c(`div`,ct,[c(`div`,lt,[c(`div`,ut,[u(C(R),{type:C(L).tagType,size:`small`},{icon:E(()=>[u(i,{name:C(L).icon},null,8,[`name`])]),default:E(()=>[l(` `+x(C(I).toUpperCase()),1)]),_:1},8,[`type`]),u(C(A),{style:{"max-width":`300px`}},{default:E(()=>[l(x(C(P)),1)]),_:1}),c(`span`,dt,x(C(q)(C(y))),1)]),c(`div`,ft,[u(C(O),{size:`small`,type:`tertiary`,disabled:C(h),onClick:C(z)},{icon:E(()=>[u(i,{name:`ic:outline-refresh`})]),default:E(()=>[n[5]||=l(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),u(C(O),{size:`small`,type:`primary`,onClick:C(W)},{icon:E(()=>[u(i,{name:C(U)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:E(()=>[l(` `+x(C(U)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),o(` 预览内容区域 `),c(`div`,pt,[o(` 加载和错误状态 `),C(h)||C(g)?(_(),s(`div`,mt,[C(h)?(_(),a(C(ee),{key:0,size:`large`},{description:E(()=>[l(` 正在加载`+x(C(I).toUpperCase())+`文件... `,1)]),_:1})):(_(),a(C(F),{key:1,status:`error`,title:`预览失败`,description:C(g)},{footer:E(()=>[u(C(O),{onClick:C(z)},{default:E(()=>[...n[6]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(_(),s(r,{key:1},[o(` 文件预览 — 委托给子组件 `),C(I)===`pdf`?(_(),a(ye,{key:0,"pdf-url":C(w),"total-pages":C(D)},null,8,[`pdf-url`,`total-pages`])):C(I)===`word`?(_(),a(je,{key:1,content:C(k),headings:C(j)},null,8,[`content`,`headings`])):C(I)===`excel`?(_(),a(Ye,{key:2,sheets:C(M),onReload:C(z)},null,8,[`sheets`,`onReload`])):(_(),s(r,{key:3},[o(` 不支持的文件类型 `),u(C(F),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${C(I).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64))])])],512)]),_:1},8,[`show`])])}}}),[[`__scopeId`,`data-v-bd24aa22`]]);export{Q as n,Z as r,ht as t};
|