adtec-hnyzfc-core-package 1.5.2 → 1.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,7 +25,11 @@ declare const _default: {
25
25
  /**
26
26
  * 通过鉴权接口下载附件,不向前端暴露存储地址。
27
27
  * format:original(默认,原始附件)/ pdf(Office 文档导出 PDF,后端转换后同样叠加水印)。
28
+ * 返回后端 Content-Disposition 指定的文件名,前端据此命名可保证 .pdf 等后缀与内容一致。
28
29
  */
29
- downloadFile(id: string, format?: string): Promise<Blob>;
30
+ downloadFile(id: string, format?: string): Promise<{
31
+ blob: Blob;
32
+ fileName?: string;
33
+ }>;
30
34
  };
31
35
  export default _default;
@@ -1 +1 @@
1
- import r from"../utils/request.js";import i from"../utils/AxiosConfig.js";import"axios";import"../utils/uuid.js";import"uuid";import"../utils/encrypt.js";import"jsencrypt";import"../utils/behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../utils/behaviorContext.js";import"../utils/dateTime.js";import"element-plus";import"../utils/frontendBus.js";import"../utils/globalLoading.js";import"vue";import"../utils/workflowTaskContext.js";import"../config/GlobalLoadingConfig.js";const t="/api/doc/",I={getUpLoadFilesVoById(e){return r.get(t+"getUpLoadFilesVoById/"+e)},getFileAccessAddress(e){return r.get(t+"getFileAccessAddress",{id:e})},async createRichTextImageUrl(e){const{url:s}=await this.createPreviewSession(e),o=/\/preview\/fileView\/([^/]+)\//.exec(s||"");if(!o?.[1])throw new Error("预览会话创建失败");return`${t}preview/fileView/${encodeURIComponent(o[1])}/image`},getUpLoadFilesByBussinessIds(e,s){const o=s===void 0?t+"getUpLoadFilesByBussinessIds":t+"getUpLoadFilesByBussinessIds/"+s;return r.post(o,e)},delSysUploadFile(e){return r.get(t+"delSysUploadFile/"+e)},getBusinessDocuments(e,s){return r.get(t+"getBusinessDocuments/"+e+"/"+s)},fileStatusConfirmation(e){return r.post(t+"fileStatusConfirmation",e)},delSysUploadFiles(e){return r.post(t+"delSysUploadFiles",e)},updateFilesCreateBy(e,s){return r.post(t+"updateFilesCreateBy",{ids:e,createBy:s})},createPreviewSession(e){return r.post(t+"preview/session/"+e)},downloadFile(e,s){return i({url:t+"preview/download/"+e+(s?"?format="+s:""),method:"get",responseType:"blob"}).then(o=>o.data)}};export{I as default};
1
+ import o from"../utils/request.js";import i from"../utils/AxiosConfig.js";import"axios";import"../utils/uuid.js";import"uuid";import"../utils/encrypt.js";import"jsencrypt";import"../utils/behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../utils/behaviorContext.js";import"../utils/dateTime.js";import"element-plus";import"../utils/frontendBus.js";import"../utils/globalLoading.js";import"vue";import"../utils/workflowTaskContext.js";import"../config/GlobalLoadingConfig.js";const r="/api/doc/",n=e=>{if(!e)return;const t=/filename\*=(?:UTF-8|utf-8)''([^;]+)/i.exec(e);if(t?.[1])try{return decodeURIComponent(t[1].trim())}catch{}return/filename="?([^";]+)"?/i.exec(e)?.[1]?.trim()},x={getUpLoadFilesVoById(e){return o.get(r+"getUpLoadFilesVoById/"+e)},getFileAccessAddress(e){return o.get(r+"getFileAccessAddress",{id:e})},async createRichTextImageUrl(e){const{url:t}=await this.createPreviewSession(e),s=/\/preview\/fileView\/([^/]+)\//.exec(t||"");if(!s?.[1])throw new Error("预览会话创建失败");return`${r}preview/fileView/${encodeURIComponent(s[1])}/image`},getUpLoadFilesByBussinessIds(e,t){const s=t===void 0?r+"getUpLoadFilesByBussinessIds":r+"getUpLoadFilesByBussinessIds/"+t;return o.post(s,e)},delSysUploadFile(e){return o.get(r+"delSysUploadFile/"+e)},getBusinessDocuments(e,t){return o.get(r+"getBusinessDocuments/"+e+"/"+t)},fileStatusConfirmation(e){return o.post(r+"fileStatusConfirmation",e)},delSysUploadFiles(e){return o.post(r+"delSysUploadFiles",e)},updateFilesCreateBy(e,t){return o.post(r+"updateFilesCreateBy",{ids:e,createBy:t})},createPreviewSession(e){return o.post(r+"preview/session/"+e)},async downloadFile(e,t){const s=await i({url:r+"preview/download/"+e+(t?"?format="+t:""),method:"get",responseType:"blob"});return{blob:s.data,fileName:n(s.headers?.["content-disposition"])}}};export{x as default};
@@ -55,6 +55,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
55
55
  "onUpdate:fileType"?: ((type: string) => any) | undefined;
56
56
  }>, {
57
57
  title: string;
58
+ fileName: string;
58
59
  emptyDescription: string;
59
60
  showSearch: boolean;
60
61
  showZoom: boolean;
@@ -62,7 +63,6 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
62
63
  showRefresh: boolean;
63
64
  showFullscreen: boolean;
64
65
  fileId: string;
65
- fileName: string;
66
66
  fileType: string;
67
67
  showHeader: boolean;
68
68
  lostDescription: string;
@@ -48,6 +48,7 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
48
48
  title: string;
49
49
  url: string;
50
50
  showClose: boolean;
51
+ fileName: string;
51
52
  fullscreen: boolean;
52
53
  showSearch: boolean;
53
54
  showPageNav: boolean;
@@ -58,7 +59,6 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
58
59
  downloadLoading: boolean;
59
60
  refreshLoading: boolean;
60
61
  fileId: string;
61
- fileName: string;
62
62
  fileType: string;
63
63
  showHeader: boolean;
64
64
  lostDescription: string;
@@ -1,2 +1,2 @@
1
- import{defineComponent as te,useModel as se,ref as t,computed as i,watch as ne,onMounted as ie,onBeforeUnmount as ue,openBlock as m,createElementBlock as M,normalizeClass as V,createBlock as N,unref as B,createCommentVNode as p,createElementVNode as y,createVNode as de,Transition as ce,withCtx as O,normalizeStyle as fe,createTextVNode as me,mergeModels as $}from"vue";import{ElEmpty as ve,ElButton as we,ElMessage as A}from"element-plus";import he from"../../api/DocumentApi.js";import pe from"../../utils/FrameworkUtils.js";import ye from"../../utils/fileDownload.js";import{resolveOfficeFileExt as ge,canExportPdf as xe,MAX_RICH_PREVIEW_ZOOM as Ee,MIN_OFFICE_ZOOM as Be,clampRichPreviewZoom as W,OFFICE_ZOOM_STEP as U}from"../../utils/officePreviewUtil.js";import Ie from"./OfficePreviewHeaderBar.vue.js";import{_ as Se}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";import"../../utils/uuid.js";import"uuid";import"../../utils/encrypt.js";import"jsencrypt";import"../../utils/behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../utils/behaviorContext.js";import"../../utils/dateTime.js";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"xlsx-js-style";import"@element-plus/icons-vue";const ze={key:0,class:"preview-loading-overlay"},Me=["src","title"],Ne=te({__name:"OfficePreview",props:$({url:{default:""},fileId:{default:""},fileName:{default:""},fileType:{default:""},title:{default:""},showHeader:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showPageNav:{type:Boolean,default:!1},showZoom:{type:Boolean,default:!0},showDownload:{type:Boolean,default:!1},showRefresh:{type:Boolean,default:!1},showFullscreen:{type:Boolean,default:!1},showClose:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},downloadLoading:{type:Boolean,default:!1},refreshLoading:{type:Boolean,default:!1},lostDescription:{default:"附件已丢失或无权访问"},attachmentLost:{type:Boolean,default:!1}},{scale:{default:1},scaleModifiers:{}}),emits:$(["loaded","error","download","refresh","toggle-fullscreen","close"],["update:scale"]),setup(r,{expose:Q,emit:X}){const a=r,l=se(r,"scale"),u=X,c=t(""),I=t(null),f=t(!1),d=t(!1),g=t(""),s=t(""),v=t(-1),w=t(0),x=t(!1),h=t(!1),S=t(!1);let E=0;const j=new Set(["pdf","doc","docx","xls","xlsx","ppt","pptx","txt","csv","html","htm","xml","json","md"]),G=i(()=>g.value||a.lostDescription),P=i(()=>a.title||a.fileName),C=i(()=>ge(a.fileType,a.fileName,a.url)),F=i(()=>a.showSearch&&!d.value&&j.has(C.value)),J=i(()=>a.showZoom&&!d.value),K=i(()=>a.showDownload&&xe(C.value)),Y=i(()=>a.downloadLoading||S.value),L=i(()=>h.value&&l.value!==1),_=i(()=>{if(!L.value)return;const o=l.value;return{width:`${100/o}%`,height:`${100/o}%`,transform:`scale(${o})`,transformOrigin:"top left"}}),n=o=>{I.value?.contentWindow?.postMessage({source:"adtec-office-preview",type:"command",...o},"*")},k=()=>{l.value=W(l.value+U),n({command:"zoom",scale:l.value})},D=()=>{l.value=W(l.value-U),n({command:"zoom",scale:l.value})},Z=()=>{l.value=1,n({command:"zoom",scale:l.value})},ee=o=>{const e=o.trim();if(s.value=e,v.value=-1,w.value=0,!e){R();return}if(h.value){A.warning("当前预览服务不支持内容搜索,请下载后查看");return}n({command:"search",query:e,direction:"first"})},R=()=>{s.value="",v.value=-1,w.value=0,n({command:"clear-search"})},oe=()=>{s.value&&n({command:"search",query:s.value,direction:"prev"})},ae=()=>{s.value&&n({command:"search",query:s.value,direction:"next"})},T=o=>{if(!(o.source!==I.value?.contentWindow||o.data?.source!=="adtec-fileview")){if(o.data.type==="ready"){x.value=!0,h.value=!1,n({command:"zoom",scale:l.value});return}if(o.data.type==="search-result"){const e=Number(o.data.total||0);w.value=e,v.value=e>0?Number(o.data.index||0):-1,e===0&&s.value&&A.warning("未找到匹配内容")}}},b=async()=>{const o=++E;if(c.value="",f.value=!1,d.value=!1,g.value="",l.value=1,s.value="",v.value=-1,w.value=0,x.value=!1,h.value=!1,a.attachmentLost){d.value=!0,u("error");return}f.value=!0;try{if(a.fileId){const e=await he.createPreviewSession(a.fileId);if(o!==E)return;c.value=e.url;return}if(a.url.startsWith("/api/doc/preview/fileView/")){c.value=a.url;return}throw new Error("为保护附件地址,旧版文件直链已停止预览,请使用附件 ID 打开")}catch(e){if(o!==E)return;f.value=!1,d.value=!0,g.value=e?.msg||e?.message||"文件预览失败,请下载后查看",u("error",e)}},q=()=>{u("refresh"),b()},z=async(o="original")=>{if(u("download",o),!!a.fileId){S.value=!0;try{await ye(a.fileId,a.fileName,o)}catch(e){pe.messageError(e)}finally{S.value=!1}}},le=()=>{f.value=!1,x.value||window.setTimeout(()=>{x.value||(h.value=!0)},1500),n({command:"zoom",scale:l.value}),u("loaded")},re=o=>{f.value=!1,d.value=!0,g.value="文件预览服务暂不可用,请稍后重试或下载后查看",u("error",o)};return ne(()=>[a.fileId,a.url,a.attachmentLost],()=>void b(),{immediate:!0}),ie(()=>window.addEventListener("message",T)),ue(()=>{E++,window.removeEventListener("message",T)}),Q({reloadPreview:q,zoomIn:k,zoomOut:D,resetZoom:Z,download:z}),(o,e)=>(m(),M("div",{class:V(["office-preview-root",{"is-fullscreen":r.fullscreen}])},[r.showHeader?(m(),N(Ie,{key:0,title:P.value,"title-only":!F.value,zoom:l.value,"search-query":s.value,"search-index":v.value,"search-total":w.value,"show-search":F.value,"show-page-nav":!1,"show-zoom":J.value,"show-download":r.showDownload,"pdf-export":K.value,"show-refresh":r.showRefresh,"show-fullscreen":r.showFullscreen,"show-close":r.showClose,fullscreen:r.fullscreen,"download-loading":Y.value,"refresh-loading":r.refreshLoading,"min-zoom":B(Be),"max-zoom":B(Ee),onZoomIn:k,onZoomOut:D,onZoomReset:Z,onSearch:ee,onSearchClear:R,onSearchPrev:oe,onSearchNext:ae,onDownload:z,onRefresh:q,onToggleFullscreen:e[0]||(e[0]=H=>u("toggle-fullscreen")),onClose:e[1]||(e[1]=H=>u("close"))},null,8,["title","title-only","zoom","search-query","search-index","search-total","show-search","show-zoom","show-download","pdf-export","show-refresh","show-fullscreen","show-close","fullscreen","download-loading","refresh-loading","min-zoom","max-zoom"])):p("v-if",!0),p(` 外层加载层与预览页内层样式完全一致(spinner + 正在加载文件... + 进度条),
2
- 切换时淡出过渡,避免 spinner 相位/进度条状态差异造成的跳动 `),y("div",{class:V(["fileview-frame-wrap",{"is-fallback-zoom":L.value}])},[de(ce,{name:"preview-loading-fade"},{default:O(()=>[f.value?(m(),M("div",ze,[...e[3]||(e[3]=[y("div",{class:"preview-loading-spinner"},null,-1),y("div",{class:"preview-loading-text"},"正在加载文件...",-1),y("div",{class:"preview-loading-progress"},[y("div",{class:"preview-loading-bar is-indeterminate"})],-1)])])):p("v-if",!0)]),_:1}),c.value&&!d.value?(m(),M("iframe",{key:c.value,ref_key:"previewFrameRef",ref:I,class:"fileview-frame",style:fe(_.value),src:c.value,title:P.value||"文件预览",referrerpolicy:"same-origin",onLoad:le,onError:re},null,44,Me)):d.value?(m(),N(B(ve),{key:1,description:G.value},{default:O(()=>[r.showDownload?(m(),N(B(we),{key:0,type:"primary",onClick:e[2]||(e[2]=H=>z())},{default:O(()=>[...e[4]||(e[4]=[me(" 下载文件 ",-1)])]),_:1})):p("v-if",!0)]),_:1},8,["description"])):p("v-if",!0)],2)],2))}}),eo=Se(Ne,[["__scopeId","data-v-705a8cef"]]);export{eo as default};
1
+ import{defineComponent as Be,useModel as Me,ref as c,computed as m,watch as ee,nextTick as Ie,onMounted as Le,onBeforeUnmount as Pe,openBlock as N,createElementBlock as W,normalizeClass as Re,createBlock as A,unref as O,createCommentVNode as M,createElementVNode as I,createVNode as Oe,Transition as Te,withCtx as H,normalizeStyle as be,createTextVNode as ze,mergeModels as te}from"vue";import{ElEmpty as ke,ElButton as Ze,ElMessage as $}from"element-plus";import De from"../../api/DocumentApi.js";import Ve from"../../utils/FrameworkUtils.js";import We from"../../utils/fileDownload.js";import{resolveOfficeFileExt as Ae,canExportPdf as He,MAX_RICH_PREVIEW_ZOOM as oe,MIN_OFFICE_ZOOM as ae,clampRichPreviewZoom as re,OFFICE_ZOOM_STEP as le}from"../../utils/officePreviewUtil.js";import $e from"./OfficePreviewHeaderBar.vue.js";import{_ as qe}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";import"../../utils/uuid.js";import"uuid";import"../../utils/encrypt.js";import"jsencrypt";import"../../utils/behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../utils/behaviorContext.js";import"../../utils/dateTime.js";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"xlsx-js-style";import"@element-plus/icons-vue";const _e={class:"fileview-frame-wrap"},Ue={key:0,class:"preview-loading-overlay"},Xe=["src","title"],Qe=Be({__name:"OfficePreview",props:te({url:{default:""},fileId:{default:""},fileName:{default:""},fileType:{default:""},title:{default:""},showHeader:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showPageNav:{type:Boolean,default:!1},showZoom:{type:Boolean,default:!0},showDownload:{type:Boolean,default:!1},showRefresh:{type:Boolean,default:!1},showFullscreen:{type:Boolean,default:!1},showClose:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},downloadLoading:{type:Boolean,default:!1},refreshLoading:{type:Boolean,default:!1},lostDescription:{default:"附件已丢失或无权访问"},attachmentLost:{type:Boolean,default:!1}},{scale:{default:1},scaleModifiers:{}}),emits:te(["loaded","error","download","refresh","toggle-fullscreen","close"],["update:scale"]),setup(s,{expose:ne,emit:se}){const o=s,n=Me(s,"scale"),v=se,y=c(""),x=c(null),E=c(!1),h=c(!1),L=c(""),u=c(""),S=c(-1),F=c(0),C=c(!1),d=c(!1),T=c(!1);let P=0;const ie=new Set(["pdf","doc","docx","xls","xlsx","ppt","pptx","txt","csv","html","htm","xml","json","md"]),ce=m(()=>L.value||o.lostDescription),q=m(()=>o.title||o.fileName),_=m(()=>Ae(o.fileType,o.fileName,o.url)),U=m(()=>o.showSearch&&!h.value&&ie.has(_.value)),ue=m(()=>o.showZoom&&!h.value),de=m(()=>o.showDownload&&He(_.value)),fe=m(()=>o.downloadLoading||T.value),me=m(()=>d.value&&n.value!==1),ve=m(()=>{if(!me.value)return;const t=n.value;return{position:"absolute",top:"0",left:"0",width:`${100/t}%`,height:`${100/t}%`,transform:`scale(${t})`,transformOrigin:"top left"}}),b=t=>{x.value?.contentWindow?.postMessage({source:"adtec-office-preview",type:"command",...t},"*")},z=()=>{try{return x.value?.contentWindow||null}catch{return null}},k=t=>{const e=Number(t?.total||0);F.value=e,S.value=e>0?Number(t?.index||0):-1,e===0&&u.value&&$.warning("未找到匹配内容")},he=t=>{const e=t?.adtecFileViewAdapter;if(e?.zoom)try{return e.zoom(n.value),!0}catch{}try{const a=t?.document?.documentElement;if(a){const l=Math.max(ae,Math.min(oe,n.value));return a.style.zoom=String(l),a.style.width=`${100/l}%`,a.style.height=`${100/l}%`,!0}}catch{}return!1},B=()=>{!d.value&&he(z())||b({command:"zoom",scale:n.value})},X=()=>{n.value=re(n.value+le),B()},Q=()=>{n.value=re(n.value-le),B()},j=()=>{n.value=1,B()};let i={query:"",matches:[],index:-1};const we=(t,e)=>{const a=[],l=t.body;if(!l)return a;const r=e.toLocaleLowerCase(),w=t.createTreeWalker(l,NodeFilter.SHOW_TEXT,{acceptNode:f=>{const g=f.parentElement;return!g||!f.nodeValue||!f.nodeValue.trim()||g.closest("script, style, noscript, input, textarea, #wm_div_id")?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}});let p=w.nextNode();for(;p;){const f=p.nodeValue?.toLocaleLowerCase()||"";let g=f.indexOf(r);for(;g!==-1;)a.push({node:p,start:g,end:g+e.length}),g=f.indexOf(r,g+Math.max(1,e.length));p=w.nextNode()}return a},pe=(t,e,a)=>{const l=t?.document;if(!l?.body)return null;(a==="first"||i.query!==e)&&(i={query:e,matches:we(l,e),index:-1});const r=i.matches.length;if(r===0)return{total:0,index:-1};a==="prev"?i.index=(i.index-1+r)%r:i.index=(i.index+1)%r;const w=i.matches[i.index];try{const p=l.createRange();p.setStart(w.node,w.start),p.setEnd(w.node,w.end);const f=t?.getSelection?.();f?.removeAllRanges(),f?.addRange(p),w.node.parentElement?.scrollIntoView({block:"center",behavior:"smooth"})}catch{}return{total:r,index:i.index}},Z=t=>{const e=u.value;if(!e)return;const a=z(),l=a?.adtecFileViewAdapter;if(l?.search)try{const r=l.search(e,t);r&&typeof r.then=="function"?r.then(k):k(r);return}catch{}if(!d.value){const r=pe(a,e,t);if(r){k(r);return}}b({command:"search",query:e,direction:t})},ge=()=>{i={query:"",matches:[],index:-1};const t=z(),e=t?.adtecFileViewAdapter;if(e?.clearSearch)try{e.clearSearch();return}catch{}if(!d.value)try{t?.getSelection?.()?.removeAllRanges()}catch{}b({command:"clear-search"})},ye=t=>{const e=t.trim();if(u.value=e,S.value=-1,F.value=0,!e){J();return}if(d.value){$.warning("当前预览服务不支持内容搜索,请下载后查看");return}Z("first")},J=()=>{u.value="",S.value=-1,F.value=0,ge()},xe=()=>{u.value&&Z("prev")},Ee=()=>{u.value&&Z("next")},G=t=>{if(!(t.source!==x.value?.contentWindow||t.data?.source!=="adtec-fileview")){if(t.data.type==="ready"){C.value=!0,d.value=!1,B();return}if(t.data.type==="search-result"){const e=Number(t.data.total||0);F.value=e,S.value=e>0?Number(t.data.index||0):-1,e===0&&u.value&&$.warning("未找到匹配内容")}}},R=new Set,Se=()=>{const t=x.value;if(!t)return null;try{const e=t.contentWindow;if(e?.parent&&e.parent!==e)return e.parent}catch{}return null},D=()=>{[window,Se()].forEach(e=>{if(!(!e||R.has(e)))try{e.addEventListener("message",G),R.add(e)}catch{}})},Fe=()=>{R.forEach(t=>{try{t.removeEventListener("message",G)}catch{}}),R.clear()},K=async()=>{const t=++P;if(y.value="",E.value=!1,h.value=!1,L.value="",n.value=1,u.value="",S.value=-1,F.value=0,C.value=!1,d.value=!1,o.attachmentLost){h.value=!0,v("error");return}E.value=!0;try{if(o.fileId){const e=await De.createPreviewSession(o.fileId);if(t!==P)return;y.value=e.url;return}if(o.url.startsWith("/api/doc/preview/fileView/")){y.value=o.url;return}throw new Error("为保护附件地址,旧版文件直链已停止预览,请使用附件 ID 打开")}catch(e){if(t!==P)return;E.value=!1,h.value=!0,L.value=e?.msg||e?.message||"文件预览失败,请下载后查看",v("error",e)}},Y=()=>{v("refresh"),K()},V=async(t="original")=>{if(v("download",t),!!o.fileId){T.value=!0;try{await We(o.fileId,o.fileName,t)}catch(e){Ve.messageError(e)}finally{T.value=!1}}},Ce=()=>{E.value=!1,D();const t=x.value?.contentWindow;if(t&&!C.value)try{t.adtecPreviewBridge&&(C.value=!0,d.value=!1)}catch{}C.value||window.setTimeout(()=>{C.value||(d.value=!0)},1500),B(),v("loaded")},Ne=t=>{E.value=!1,h.value=!0,L.value="文件预览服务暂不可用,请稍后重试或下载后查看",v("error",t)};return ee(()=>[o.fileId,o.url,o.attachmentLost],()=>void K(),{immediate:!0}),ee(y,t=>{t&&Ie(()=>D())}),Le(()=>D()),Pe(()=>{P++,Fe()}),ne({reloadPreview:Y,zoomIn:X,zoomOut:Q,resetZoom:j,download:V}),(t,e)=>(N(),W("div",{class:Re(["office-preview-root",{"is-fullscreen":s.fullscreen}])},[s.showHeader?(N(),A($e,{key:0,title:q.value,"title-only":!U.value,zoom:n.value,"search-query":u.value,"search-index":S.value,"search-total":F.value,"show-search":U.value,"show-page-nav":!1,"show-zoom":ue.value,"show-download":s.showDownload,"pdf-export":de.value,"show-refresh":s.showRefresh,"show-fullscreen":s.showFullscreen,"show-close":s.showClose,fullscreen:s.fullscreen,"download-loading":fe.value,"refresh-loading":s.refreshLoading,"min-zoom":O(ae),"max-zoom":O(oe),onZoomIn:X,onZoomOut:Q,onZoomReset:j,onSearch:ye,onSearchClear:J,onSearchPrev:xe,onSearchNext:Ee,onDownload:V,onRefresh:Y,onToggleFullscreen:e[0]||(e[0]=a=>v("toggle-fullscreen")),onClose:e[1]||(e[1]=a=>v("close"))},null,8,["title","title-only","zoom","search-query","search-index","search-total","show-search","show-zoom","show-download","pdf-export","show-refresh","show-fullscreen","show-close","fullscreen","download-loading","refresh-loading","min-zoom","max-zoom"])):M("v-if",!0),M(` 外层加载层与预览页内层样式完全一致(spinner + 正在加载文件... + 进度条),
2
+ 切换时淡出过渡,避免 spinner 相位/进度条状态差异造成的跳动 `),I("div",_e,[Oe(Te,{name:"preview-loading-fade"},{default:H(()=>[E.value?(N(),W("div",Ue,[...e[3]||(e[3]=[I("div",{class:"preview-loading-spinner"},null,-1),I("div",{class:"preview-loading-text"},"正在加载文件...",-1),I("div",{class:"preview-loading-progress"},[I("div",{class:"preview-loading-bar is-indeterminate"})],-1)])])):M("v-if",!0)]),_:1}),y.value&&!h.value?(N(),W("iframe",{key:y.value,ref_key:"previewFrameRef",ref:x,class:"fileview-frame",style:be(ve.value),src:y.value,title:q.value||"文件预览",referrerpolicy:"same-origin",onLoad:Ce,onError:Ne},null,44,Xe)):h.value?(N(),A(O(ke),{key:1,description:ce.value},{default:H(()=>[s.showDownload?(N(),A(O(Ze),{key:0,type:"primary",onClick:e[2]||(e[2]=a=>V())},{default:H(()=>[...e[4]||(e[4]=[ze(" 下载文件 ",-1)])]),_:1})):M("v-if",!0)]),_:1},8,["description"])):M("v-if",!0)])],2))}}),Et=qe(Qe,[["__scopeId","data-v-e2b19417"]]);export{Et as default};
@@ -1 +1 @@
1
- import e from"../api/DocumentApi.js";import"./request.js";import"./AxiosConfig.js";import"axios";import"./uuid.js";import"uuid";import"./encrypt.js";import"jsencrypt";import"./behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"./behaviorContext.js";import"./dateTime.js";import"element-plus";import"./frontendBus.js";import"./globalLoading.js";import"vue";import"./workflowTaskContext.js";import"../config/GlobalLoadingConfig.js";const v=async(o,i,m)=>{if(!o)return;const p=await e.downloadFile(o,m),r=URL.createObjectURL(p),t=document.createElement("a");t.href=r,t.download=i||o,t.click(),URL.revokeObjectURL(r)};export{v as default,v as downloadFileById};
1
+ import a from"../api/DocumentApi.js";import"./request.js";import"./AxiosConfig.js";import"axios";import"./uuid.js";import"uuid";import"./encrypt.js";import"jsencrypt";import"./behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"./behaviorContext.js";import"./dateTime.js";import"element-plus";import"./frontendBus.js";import"./globalLoading.js";import"vue";import"./workflowTaskContext.js";import"../config/GlobalLoadingConfig.js";const $=async(o,e,r)=>{if(!o)return;const{blob:t,fileName:p}=await a.downloadFile(o,r),m=URL.createObjectURL(t),i=document.createElement("a");i.href=m,i.download=p||c(e,o,r),i.click(),URL.revokeObjectURL(m)},c=(o,e,r)=>{const t=o||e;return r?.toLowerCase()==="pdf"&&!/\.pdf$/i.test(t)?t.replace(/\.[^./\\]+$/,"")+".pdf":t};export{$ as default,$ as downloadFileById};