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.
- package/dist/src/api/DocumentApi.d.ts +5 -1
- package/dist/src/api/DocumentApi.js +1 -1
- package/dist/src/components/upload/AttachmentPreview.vue.d.ts +1 -1
- package/dist/src/components/upload/OfficePreview.vue.d.ts +1 -1
- package/dist/src/components/upload/OfficePreview.vue.js +2 -2
- package/dist/src/utils/fileDownload.js +1 -1
- package/dist/styles/element-ui.css +1 -1
- package/package.json +1 -1
|
@@ -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<
|
|
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
|
|
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
|
|
2
|
-
切换时淡出过渡,避免 spinner 相位/进度条状态差异造成的跳动 `),
|
|
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
|
|
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};
|