adtec-hnyzfc-core-package 1.5.0 → 1.5.2

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.
Files changed (49) hide show
  1. package/dist/chunks/operationAuth.vue_vue_type_script_lang-BgqMGXbQ.js +1 -0
  2. package/dist/src/api/DocumentApi.d.ts +5 -2
  3. package/dist/src/api/DocumentApi.js +1 -1
  4. package/dist/src/components/AsideCardList/AsideCardList.vue.js +1 -1
  5. package/dist/src/components/ElGrid/ElGridColumnSetting.vue.js +1 -1
  6. package/dist/src/components/OperationAuth/operationAuth.vue.js +1 -1
  7. package/dist/src/components/upload/AttachmentPreview.vue.d.ts +78 -0
  8. package/dist/src/components/upload/AttachmentPreview.vue.js +1 -0
  9. package/dist/src/components/upload/CustomElUpload.vue.d.ts +2 -2
  10. package/dist/src/components/upload/CustomElUpload.vue.js +1 -1
  11. package/dist/src/components/upload/FileView.vue.d.ts +2 -2
  12. package/dist/src/components/upload/FileView.vue.js +1 -1
  13. package/dist/src/components/upload/FileViewComponents.vue.js +1 -1
  14. package/dist/src/components/upload/OfficePreview.vue.d.ts +6 -2
  15. package/dist/src/components/upload/OfficePreview.vue.js +2 -2
  16. package/dist/src/components/upload/OfficePreviewHeaderBar.vue.d.ts +5 -2
  17. package/dist/src/components/upload/OfficePreviewHeaderBar.vue.js +1 -1
  18. package/dist/src/components/workflow/TaskOperation.vue.js +1 -1
  19. package/dist/src/components/workflow/WorkflowTodoShell.vue.js +2 -2
  20. package/dist/src/hooks/createDialogHooks.js +18 -3
  21. package/dist/src/hooks/useFileOpen.d.ts +14 -0
  22. package/dist/src/hooks/useFileOpen.js +1 -0
  23. package/dist/src/hooks/useOpenNewMenu.js +1 -1
  24. package/dist/src/hooks/useOperationAuth.d.ts +15 -0
  25. package/dist/src/hooks/useOperationAuth.js +1 -0
  26. package/dist/src/hooks/usePermissionHooks.js +1 -1
  27. package/dist/src/hooks/usePermissionToolHooks.d.ts +1 -1
  28. package/dist/src/hooks/usePermissionToolHooks.js +1 -1
  29. package/dist/src/hooks/usePreviewFullscreen.d.ts +25 -0
  30. package/dist/src/hooks/usePreviewFullscreen.js +1 -0
  31. package/dist/src/hooks/workflowTodo.js +1 -1
  32. package/dist/src/mixin/globalMixin.js +1 -1
  33. package/dist/src/packages/index.d.ts +5 -0
  34. package/dist/src/packages/index.js +1 -1
  35. package/dist/src/plugins/plugins.js +1 -1
  36. package/dist/src/plugins/renderDialog.js +1 -1
  37. package/dist/src/stores/permissionStore.d.ts +9 -2
  38. package/dist/src/stores/permissionStore.js +1 -1
  39. package/dist/src/utils/fileDownload.d.ts +9 -0
  40. package/dist/src/utils/fileDownload.js +1 -0
  41. package/dist/src/utils/modules.js +2 -2
  42. package/dist/src/utils/officePreviewUtil.d.ts +7 -0
  43. package/dist/src/utils/officePreviewUtil.js +1 -1
  44. package/dist/src/utils/operationAuth.d.ts +43 -0
  45. package/dist/src/utils/operationAuth.js +1 -0
  46. package/dist/src/utils/uploadAccept.js +1 -1
  47. package/dist/styles/element-ui.css +1 -1
  48. package/package.json +1 -1
  49. package/dist/chunks/operationAuth.vue_vue_type_script_lang-B0muG8DV.js +0 -1
@@ -0,0 +1 @@
1
+ import{defineComponent as H,computed as n,isVNode as c,h as a,resolveComponent as s,resolveDynamicComponent as L,cloneVNode as J}from"vue";import K from"../src/hooks/useBehaviorAction.js";import Y from"../src/hooks/useOperationAuth.js";const O={primary:"var(--el-color-primary)",success:"var(--el-color-success)",info:"var(--el-color-info)",warning:"var(--el-color-warning)",danger:"var(--el-color-danger)",error:"var(--el-color-danger)"},G=H({name:"OperationAuth",props:{operCode:{type:[String,Array],required:!0},menuCode:String,noConfig:Boolean,loadType:String,icon:String,remark:String,alias:String,color:String},setup(r,{slots:i}){const{getOperation:V}=Y(),{runBehaviorAction:B}=K(),N=n(()=>Array.isArray(r.operCode)?r.operCode:[r.operCode]),v=n(()=>V(N.value,r.menuCode)),x=n(()=>!!v.value),T=n(()=>{const e=r.remark??v.value?.remark;if(!e)return{alias:"",color:""};try{const o=JSON.parse(e);return{alias:o?.aliases?.alias1||o?.aliases?.alias||"",color:o?.color||o?.icon?.color||o?.text?.color||""}}catch{return{alias:"",color:""}}}),d=n(()=>(r.icon??v.value?.icon??"").trim()),h=n(()=>r.alias||T.value.alias||v.value?.name||""),b=n(()=>v.value?.code||N.value[0]||""),p=n(()=>h.value||b.value||"未命名操作"),f=n(()=>({"data-behavior-operation-code":b.value,"data-behavior-operation-name":p.value,"data-behavior-scope":"manual","data-track-code":b.value,"data-track-name":p.value})),k=n(()=>r.color||T.value.color||""),y=n(()=>k.value.trim().toLowerCase()),u=n(()=>y.value!==""&&y.value in O),C=n(()=>{if(u.value)return y.value==="error"?"danger":y.value}),g=n(()=>{if(u.value)return;const e=k.value.trim();if(e)return{color:O[y.value]||e}}),I=n(()=>r.loadType??v.value?.loadType??""),S=n(()=>String(I.value??"")),z=n(()=>{const e=i.default?.()[0];if(!e||!c(e))return!1;const o=e.type||{},l=String(o?.name||o?.__name||"").replace(/[^a-zA-Z]/g,"");return/^elicon/i.test(l)?!0:/^elbutton$/i.test(l)&&!!e.props?.icon}),P=n(()=>{const e=i.default?.()[0];if(!e||!c(e))return!1;const o=e.type||{};return String(o?.name||o?.__name||"").replace(/[^a-zA-Z]/g,"").toLowerCase()==="elbutton"&&S.value==="20"}),A=n(()=>r.noConfig?"slot":P.value||z.value?"icon":S.value==="10"?"text":S.value==="20"?"icon":S.value==="30"?"iconText":"slot"),Z=n(()=>i.default?.()[0]?.props?.onClick),_=n(()=>{const e=i.default?.()[0];return c(e)&&e.props?.["data-behavior-scope"]==="manual"}),w=e=>{const o=Z.value;return Array.isArray(o)?o.reduce((t,l)=>typeof l=="function"?l(...e):t,void 0):typeof o=="function"?o(...e):void 0},m=(...e)=>_.value?w(e):B({code:b.value,name:p.value,actionType:"CLICK"},()=>w(e)),E=e=>{if(e.type==="button")return!0;const o=e.type,t=String(o?.name||o?.__name||"").replace(/[^a-zA-Z]/g,"").toLowerCase();return t==="elbutton"||t==="eliconbtn"||t==="eliconsearch"},M=e=>{const o=e.type;return String(o?.name||o?.__name||"").replace(/[^a-zA-Z]/g,"").toLowerCase()==="eliconbtn"},R=e=>u.value||!M(e)?{}:{neutral:!0},W=()=>(i.default?.()||[]).map(o=>{if(!c(o)||!E(o))return o;const t=J(o,{...f.value,..._.value?{}:{onClick:m},type:u.value?C.value:void 0,...R(o),style:k.value.trim()?g.value:void 0});return!_.value&&t.props&&(t.props.onClick=m),t});return()=>{if(!x.value)return null;if(A.value==="icon"){const e=i.default?.()[0],o=c(e)?e.props||{}:{};if(P.value){const t={...o};delete t.modelValue,delete t.tip,delete t.elementType,delete t.neutral,delete t.icon;const l=d.value||"adtec-tips",q=a(s("el-icon"),{},()=>l.startsWith("adtec-")?a("svg",{class:"icon","aria-hidden":"true"},[a("use",{href:"#"+l})]):a(L(l))),D=a(s("el-button"),{...t,...f.value,type:u.value?C.value:void 0,title:p.value,"aria-label":p.value,style:[t.style,g.value],onClick:m},{icon:()=>q});return a(s("el-tooltip"),{content:p.value,placement:"top"},{default:()=>D})}return a(s("el-icon-btn"),{...o,...f.value,modelValue:d.value||o.modelValue||"adtec-tips",tip:h.value||o.tip,type:u.value?C.value:void 0,neutral:!u.value,style:g.value,onClick:m})}if(A.value==="text"){const e=i.default?.()[0],t={...c(e)?e.props||{}:{}};return delete t.modelValue,delete t.tip,delete t.icon,a(s("el-button"),{...t,...f.value,type:u.value?C.value:void 0,size:z.value?"small":t.size,style:[t.style,g.value],onClick:m},()=>h.value)}if(A.value==="iconText"){const e=i.default?.()[0],o=c(e)?e.props||{}:{},t=d.value?a(s("el-icon"),{},()=>d.value.startsWith("adtec-")?a("svg",{class:"icon","aria-hidden":"true"},[a("use",{href:"#"+d.value})]):a(L(d.value))):void 0;return a(s("el-button"),{...o,...f.value,type:C.value,style:[o.style,g.value],onClick:m},[t,a("span",{},h.value)])}return W()}}});export{G as _};
@@ -22,7 +22,10 @@ declare const _default: {
22
22
  createPreviewSession(id: string): Promise<{
23
23
  url: string;
24
24
  }>;
25
- /** 通过鉴权接口下载原始附件,不向前端暴露存储地址。 */
26
- downloadFile(id: string): Promise<Blob>;
25
+ /**
26
+ * 通过鉴权接口下载附件,不向前端暴露存储地址。
27
+ * format:original(默认,原始附件)/ pdf(Office 文档导出 PDF,后端转换后同样叠加水印)。
28
+ */
29
+ downloadFile(id: string, format?: string): Promise<Blob>;
27
30
  };
28
31
  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){return i({url:t+"preview/download/"+e,method:"get",responseType:"blob"}).then(s=>s.data)}};export{I as default};
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 +1 @@
1
- import{defineComponent as $,useModel as p,resolveComponent as o,openBlock as a,createBlock as s,withCtx as c,createVNode as b,renderSlot as d,createElementBlock as v,Fragment as M,renderList as w,normalizeClass as A,createCommentVNode as B,mergeModels as f}from"vue";import L from"../../utils/FrameworkUtils.js";import{_ as U}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"element-plus";import"xlsx-js-style";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";const D={key:1,class:"aside-card-list__items"},I=$({__name:"AsideCardList",props:f({items:{},total:{},title:{},emptyDescription:{},itemKey:{default:"id"},activeKey:{default:void 0}},{currentPage:{default:1},currentPageModifiers:{},pageSize:{default:L.getPageSize()},pageSizeModifiers:{}}),emits:f(["select","current-change","size-change"],["update:currentPage","update:pageSize"]),setup(i,{emit:y}){const r=i,m=p(i,"currentPage"),u=p(i,"pageSize"),l=y,z=(e,n)=>e?.[r.itemKey]??n,C=e=>r.activeKey!==void 0&&e?.[r.itemKey]===r.activeKey,_=e=>{l("size-change",e),l("current-change",1)};return(e,n)=>{const h=o("el-title"),k=o("el-empty"),S=o("el-card"),K=o("el-page-pagination"),P=o("el-content-panel");return a(),s(P,{class:"aside-card-list"},{default:c(()=>[b(h,{title:i.title,style:{"border-bottom":"var(--border)"}},{titleRight:c(()=>[d(e.$slots,"titleRight",{},void 0,!0)]),default:c(()=>[d(e.$slots,"actions",{},void 0,!0)]),_:3},8,["title"]),d(e.$slots,"filters",{},void 0,!0),i.items.length===0?(a(),s(k,{key:0,class:"aside-card-list__empty",description:i.emptyDescription},null,8,["description"])):(a(),v("div",D,[(a(!0),v(M,null,w(i.items,(t,g)=>(a(),s(S,{key:z(t,g),class:A(["aside-card-list__item",{active:C(t)}]),shadow:"never",onClick:N=>l("select",t)},{default:c(()=>[d(e.$slots,"default",{item:t,index:g},void 0,!0)]),_:2},1032,["class","onClick"]))),128))])),i.items.length>0?(a(),s(K,{key:2,"current-page":m.value,"onUpdate:currentPage":n[0]||(n[0]=t=>m.value=t),"page-size":u.value,"onUpdate:pageSize":n[1]||(n[1]=t=>u.value=t),total:i.total,onCurrentChange:n[2]||(n[2]=t=>l("current-change",t)),onSizeChange:_},null,8,["current-page","page-size","total"])):B("v-if",!0)]),_:3})}}}),H=U(I,[["__scopeId","data-v-fdd138b6"]]);export{H as default};
1
+ import{defineComponent as $,useModel as p,resolveComponent as o,openBlock as a,createBlock as s,withCtx as c,createVNode as b,renderSlot as d,createElementBlock as v,Fragment as M,renderList as w,normalizeClass as A,createCommentVNode as B,mergeModels as f}from"vue";import L from"../../utils/FrameworkUtils.js";import{_ as U}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"element-plus";import"xlsx-js-style";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";const D={key:1,class:"aside-card-list__items"},I=$({__name:"AsideCardList",props:f({items:{},total:{},title:{},emptyDescription:{},itemKey:{default:"id"},activeKey:{default:void 0}},{currentPage:{default:1},currentPageModifiers:{},pageSize:{default:L.getPageSize()},pageSizeModifiers:{}}),emits:f(["select","current-change","size-change"],["update:currentPage","update:pageSize"]),setup(i,{emit:y}){const r=i,m=p(i,"currentPage"),u=p(i,"pageSize"),l=y,z=(e,n)=>e?.[r.itemKey]??n,C=e=>r.activeKey!==void 0&&e?.[r.itemKey]===r.activeKey,_=e=>{l("size-change",e),l("current-change",1)};return(e,n)=>{const h=o("el-title"),k=o("el-empty"),S=o("el-card"),K=o("el-page-pagination"),P=o("el-content-panel");return a(),s(P,{class:"aside-card-list"},{default:c(()=>[b(h,{title:i.title,style:{"border-bottom":"var(--border)"}},{titleRight:c(()=>[d(e.$slots,"titleRight",{},void 0,!0)]),default:c(()=>[d(e.$slots,"actions",{},void 0,!0)]),_:3},8,["title"]),d(e.$slots,"filters",{},void 0,!0),i.items.length===0?(a(),s(k,{key:0,class:"aside-card-list__empty",description:i.emptyDescription},null,8,["description"])):(a(),v("div",D,[(a(!0),v(M,null,w(i.items,(t,g)=>(a(),s(S,{key:z(t,g),class:A(["aside-card-list__item",{active:C(t)}]),shadow:"never",onClick:N=>l("select",t)},{default:c(()=>[d(e.$slots,"default",{item:t,index:g},void 0,!0)]),_:2},1032,["class","onClick"]))),128))])),i.items.length>0?(a(),s(K,{key:2,"current-page":m.value,"onUpdate:currentPage":n[0]||(n[0]=t=>m.value=t),"page-size":u.value,"onUpdate:pageSize":n[1]||(n[1]=t=>u.value=t),total:i.total,onCurrentChange:n[2]||(n[2]=t=>l("current-change",t)),onSizeChange:_},null,8,["current-page","page-size","total"])):B("v-if",!0)]),_:3})}}}),H=U(I,[["__scopeId","data-v-b1961096"]]);export{H as default};
@@ -1 +1 @@
1
- import{defineComponent as X,ref as f,watch as L,computed as N,resolveComponent as K,openBlock as p,createBlock as Y,withCtx as x,createElementBlock as _,Fragment as Z,renderList as ee,normalizeStyle as le,normalizeClass as z,createElementVNode as G,createVNode as S,toDisplayString as ne}from"vue";import{_ as te}from"../../../chunks/DragHandleIcon.vue_vue_type_script_setup_true_lang-DnMWn5jY.js";import{loadColumnSetting as se,saveColumnSetting as re}from"../../utils/columnSettingStorage.js";import{_ as ie}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/userSessionStorage.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";const ae={key:0,class:"el-grid-column-setting__list"},ce=["onDragover","onDrop","onDragleave"],oe=["onDragstart"],de={class:"el-grid-column-setting__title"},ue={key:1,class:"el-grid-column-setting__empty"},ve=X({__name:"ElGridColumnSetting",props:{columns:{},storageKey:{}},emits:["change"],setup(M,{emit:A}){const g=M,F=A,c=f([]),b=f([]),u=f(),h=f(),v=f(),P=(l,e,n,t)=>{const i=l.field||l.type||l.title||`column-${n}`,s=e?`${e}__${i}`:i;let r=s,o=2;for(;t.has(r);)r=`${s}_${o}`,o++;return t.add(r),r},E=(l,e=null,n=0)=>{const t=new Set;return l.map((i,s)=>{const r=P(i,e,s,t);return{key:r,parentKey:e,level:n,column:i,title:i.title||i.type||"列",visible:i.visible!==!1,children:i.children?.length?E(i.children,r,n+1):[]}})},w=(l,e)=>{for(const n of l){if(n.key===e)return n;const t=n.children?.length?w(n.children,e):null;if(t)return t}return null},y=l=>l.map(e=>({key:e.key,visible:e.visible,children:e.children?.length?y(e.children):void 0})),$=l=>{if(l.children?.length){const e=l.children.map($);return{...l.column,children:e,visible:l.visible===!1?!1:e.some(n=>n.visible!==!1)}}return{...l.column,visible:l.visible}},k=()=>{F("change",c.value.map($))},B=l=>l.flatMap(e=>e.children?.length?B(e.children):e.visible),C=l=>{l.forEach(e=>{e.children?.length&&(C(e.children),e.visible!==!1&&(e.visible=e.children.some(n=>n.visible)))})},D=(l,e)=>{l.forEach(n=>{n.visible=e,n.children?.length&&D(n.children,e)})},j=(l,e)=>{if(!e?.columns?.length)return;const n=(t,i)=>{const s=new Map(i.map(a=>[a.key,a])),r=i.map(a=>t.find(d=>d.key===a.key)).filter(Boolean),o=t.filter(a=>!r.includes(a));t.splice(0,t.length,...r,...o),t.forEach(a=>{const d=s.get(a.key);d?.visible!==void 0&&(a.visible=d.visible,a.visible===!1&&a.children?.length&&D(a.children,!1)),a.children?.length&&n(a.children,d?.children||[])})};n(l,e.columns)},I=()=>{re(g.storageKey,{version:1,columns:y(c.value)})},O=(l=[])=>{const e=E(l);c.value=e,b.value=y(e),j(c.value,se(g.storageKey)),C(c.value),k()};L(()=>g.columns,l=>O(l),{immediate:!0,deep:!0}),L(()=>g.storageKey,()=>O(g.columns));const T=N(()=>{const l=[],e=n=>{n.forEach(t=>{l.push({key:t.key,parentKey:t.parentKey,level:t.level,option:t}),t.children?.length&&e(t.children)})};return e(c.value),l}),V=(l,e)=>{if(l.key!==e.key||l.visible!==e.visible)return!1;const n=l.children||[],t=e.children||[];return n.length===t.length&&n.every((i,s)=>V(i,t[s]))},q=N(()=>{const l=y(c.value);return l.length!==b.value.length||l.some((e,n)=>!V(e,b.value[n]))}),H=l=>{if(!l.children?.length)return!1;const e=B(l.children);return e.some(Boolean)&&!e.every(Boolean)},J=(l,e)=>{const n=!!e;l.visible=n,l.children?.length&&D(l.children,n),C(c.value),k(),I()},Q=(l,e)=>{if(!e.target.closest(".el-grid-column-setting__drag")){e.preventDefault();return}u.value=l.key,h.value=l.parentKey,v.value=void 0,e.dataTransfer&&(e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",l.key))},R=(l,e)=>{u.value===void 0||l.parentKey!==h.value||u.value!==l.key&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move"),v.value=l.key)},U=l=>{const e=u.value;if(e===void 0||l.parentKey!==h.value||e===l.key){m();return}const n=h.value,t=n?w(c.value,n):null,i=t?.children||c.value,s=i.findIndex(d=>d.key===e),r=i.findIndex(d=>d.key===l.key);if(s<0||r<0||s===r){m();return}const o=i.slice(),[a]=o.splice(s,1);o.splice(r,0,a),t?t.children=o:c.value=o,m(),k(),I()},W=l=>{v.value===l.key&&(v.value=void 0)},m=()=>{u.value=void 0,h.value=void 0,v.value=void 0};return(l,e)=>{const n=K("el-button"),t=K("el-checkbox"),i=K("el-popover");return p(),Y(i,{trigger:"click",width:280,placement:"top-start","popper-class":"el-grid-column-setting-popper"},{reference:x(()=>[S(n,{circle:"",icon:"Setting",class:z(["el-grid-column-setting__trigger",{"is-modified":q.value}]),"aria-label":"列设置"},null,8,["class"])]),default:x(()=>[T.value.length?(p(),_("ul",ae,[(p(!0),_(Z,null,ee(T.value,s=>(p(),_("li",{key:s.key,class:z(["el-grid-column-setting__item",{"is--group":s.option.children.length>0,"is--dragging":s.key===u.value,"is--drag-over":s.key===v.value}]),style:le({paddingLeft:`${8+s.level*16}px`}),onDragover:r=>R(s,r),onDrop:r=>U(s),onDragleave:r=>W(s)},[G("span",{class:"el-grid-column-setting__drag",draggable:"true",onDragstart:r=>Q(s,r),onDragend:m},[S(te)],40,oe),S(t,{"model-value":s.option.visible,indeterminate:H(s.option),onChange:r=>J(s.option,r)},{default:x(()=>[G("span",de,ne(s.option.title),1)]),_:2},1032,["model-value","indeterminate","onChange"])],46,ce))),128))])):(p(),_("div",ue,"暂无列"))]),_:1})}}}),be=ie(ve,[["__scopeId","data-v-08be49fd"]]);export{be as default};
1
+ import{defineComponent as X,ref as f,watch as L,computed as N,resolveComponent as K,openBlock as p,createBlock as Y,withCtx as x,createElementBlock as _,Fragment as Z,renderList as ee,normalizeStyle as le,normalizeClass as z,createElementVNode as G,createVNode as S,toDisplayString as ne}from"vue";import{_ as te}from"../../../chunks/DragHandleIcon.vue_vue_type_script_setup_true_lang-DnMWn5jY.js";import{loadColumnSetting as se,saveColumnSetting as re}from"../../utils/columnSettingStorage.js";import{_ as ie}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/userSessionStorage.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";const ae={key:0,class:"el-grid-column-setting__list"},ce=["onDragover","onDrop","onDragleave"],oe=["onDragstart"],de={class:"el-grid-column-setting__title"},ue={key:1,class:"el-grid-column-setting__empty"},ve=X({__name:"ElGridColumnSetting",props:{columns:{},storageKey:{}},emits:["change"],setup(M,{emit:A}){const g=M,F=A,c=f([]),b=f([]),u=f(),h=f(),v=f(),P=(l,e,n,t)=>{const i=l.field||l.type||l.title||`column-${n}`,s=e?`${e}__${i}`:i;let r=s,o=2;for(;t.has(r);)r=`${s}_${o}`,o++;return t.add(r),r},E=(l,e=null,n=0)=>{const t=new Set;return l.map((i,s)=>{const r=P(i,e,s,t);return{key:r,parentKey:e,level:n,column:i,title:i.title||i.type||"列",visible:i.visible!==!1,children:i.children?.length?E(i.children,r,n+1):[]}})},w=(l,e)=>{for(const n of l){if(n.key===e)return n;const t=n.children?.length?w(n.children,e):null;if(t)return t}return null},y=l=>l.map(e=>({key:e.key,visible:e.visible,children:e.children?.length?y(e.children):void 0})),$=l=>{if(l.children?.length){const e=l.children.map($);return{...l.column,children:e,visible:l.visible===!1?!1:e.some(n=>n.visible!==!1)}}return{...l.column,visible:l.visible}},k=()=>{F("change",c.value.map($))},B=l=>l.flatMap(e=>e.children?.length?B(e.children):e.visible),C=l=>{l.forEach(e=>{e.children?.length&&(C(e.children),e.visible!==!1&&(e.visible=e.children.some(n=>n.visible)))})},D=(l,e)=>{l.forEach(n=>{n.visible=e,n.children?.length&&D(n.children,e)})},j=(l,e)=>{if(!e?.columns?.length)return;const n=(t,i)=>{const s=new Map(i.map(a=>[a.key,a])),r=i.map(a=>t.find(d=>d.key===a.key)).filter(Boolean),o=t.filter(a=>!r.includes(a));t.splice(0,t.length,...r,...o),t.forEach(a=>{const d=s.get(a.key);d?.visible!==void 0&&(a.visible=d.visible,a.visible===!1&&a.children?.length&&D(a.children,!1)),a.children?.length&&n(a.children,d?.children||[])})};n(l,e.columns)},I=()=>{re(g.storageKey,{version:1,columns:y(c.value)})},O=(l=[])=>{const e=E(l);c.value=e,b.value=y(e),j(c.value,se(g.storageKey)),C(c.value),k()};L(()=>g.columns,l=>O(l),{immediate:!0,deep:!0}),L(()=>g.storageKey,()=>O(g.columns));const T=N(()=>{const l=[],e=n=>{n.forEach(t=>{l.push({key:t.key,parentKey:t.parentKey,level:t.level,option:t}),t.children?.length&&e(t.children)})};return e(c.value),l}),V=(l,e)=>{if(l.key!==e.key||l.visible!==e.visible)return!1;const n=l.children||[],t=e.children||[];return n.length===t.length&&n.every((i,s)=>V(i,t[s]))},q=N(()=>{const l=y(c.value);return l.length!==b.value.length||l.some((e,n)=>!V(e,b.value[n]))}),H=l=>{if(!l.children?.length)return!1;const e=B(l.children);return e.some(Boolean)&&!e.every(Boolean)},J=(l,e)=>{const n=!!e;l.visible=n,l.children?.length&&D(l.children,n),C(c.value),k(),I()},Q=(l,e)=>{if(!e.target.closest(".el-grid-column-setting__drag")){e.preventDefault();return}u.value=l.key,h.value=l.parentKey,v.value=void 0,e.dataTransfer&&(e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",l.key))},R=(l,e)=>{u.value===void 0||l.parentKey!==h.value||u.value!==l.key&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move"),v.value=l.key)},U=l=>{const e=u.value;if(e===void 0||l.parentKey!==h.value||e===l.key){m();return}const n=h.value,t=n?w(c.value,n):null,i=t?.children||c.value,s=i.findIndex(d=>d.key===e),r=i.findIndex(d=>d.key===l.key);if(s<0||r<0||s===r){m();return}const o=i.slice(),[a]=o.splice(s,1);o.splice(r,0,a),t?t.children=o:c.value=o,m(),k(),I()},W=l=>{v.value===l.key&&(v.value=void 0)},m=()=>{u.value=void 0,h.value=void 0,v.value=void 0};return(l,e)=>{const n=K("el-button"),t=K("el-checkbox"),i=K("el-popover");return p(),Y(i,{trigger:"click",width:280,placement:"top-start","popper-class":"el-grid-column-setting-popper"},{reference:x(()=>[S(n,{circle:"",icon:"Setting",class:z(["el-grid-column-setting__trigger",{"is-modified":q.value}]),"aria-label":"列设置"},null,8,["class"])]),default:x(()=>[T.value.length?(p(),_("ul",ae,[(p(!0),_(Z,null,ee(T.value,s=>(p(),_("li",{key:s.key,class:z(["el-grid-column-setting__item",{"is--group":s.option.children.length>0,"is--dragging":s.key===u.value,"is--drag-over":s.key===v.value}]),style:le({paddingLeft:`${8+s.level*16}px`}),onDragover:r=>R(s,r),onDrop:r=>U(s),onDragleave:r=>W(s)},[G("span",{class:"el-grid-column-setting__drag",draggable:"true",onDragstart:r=>Q(s,r),onDragend:m},[S(te)],40,oe),S(t,{"model-value":s.option.visible,indeterminate:H(s.option),onChange:r=>J(s.option,r)},{default:x(()=>[G("span",de,ne(s.option.title),1)]),_:2},1032,["model-value","indeterminate","onChange"])],46,ce))),128))])):(p(),_("div",ue,"暂无列"))]),_:1})}}}),be=ie(ve,[["__scopeId","data-v-b38db213"]]);export{be as default};
@@ -1 +1 @@
1
- import{_ as o}from"../../../chunks/operationAuth.vue_vue_type_script_lang-B0muG8DV.js";import"vue";import"vue-router";import"../../stores/userInfoStore.js";import"pinia";import"../../utils/userSessionStorage.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../stores/permissionStore.js";import"../../utils/frontendBus.js";import"../../hooks/useBehaviorAction.js";import"../../utils/behaviorTrack.js";import"axios";import"../../utils/uuid.js";import"uuid";import"../../utils/behaviorContext.js";import"../../utils/encrypt.js";import"jsencrypt";import"../../utils/dateTime.js";export{o as default};
1
+ import{_ as o}from"../../../chunks/operationAuth.vue_vue_type_script_lang-BgqMGXbQ.js";import"vue";import"../../hooks/useBehaviorAction.js";import"../../utils/behaviorTrack.js";import"axios";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../utils/uuid.js";import"uuid";import"../../utils/behaviorContext.js";import"../../utils/encrypt.js";import"jsencrypt";import"../../utils/dateTime.js";import"../../hooks/useOperationAuth.js";import"vue-router";import"../../stores/permissionStore.js";import"pinia";import"../../utils/frontendBus.js";import"../../utils/operationAuth.js";import"../../stores/userInfoStore.js";import"../../utils/userSessionStorage.js";export{o as default};
@@ -0,0 +1,78 @@
1
+ /** 附件信息(刷新附件方法返回它来切换预览目标) */
2
+ type PreviewAttachment = {
3
+ id: string;
4
+ name?: string;
5
+ type?: string;
6
+ };
7
+ type __VLS_Props = {
8
+ fileId?: string;
9
+ fileName?: string;
10
+ fileType?: string;
11
+ /** 预览标题;不传时用文件名。下载文件名始终取 fileName */
12
+ title?: string;
13
+ showHeader?: boolean;
14
+ showSearch?: boolean;
15
+ showZoom?: boolean;
16
+ showDownload?: boolean;
17
+ showRefresh?: boolean;
18
+ showFullscreen?: boolean;
19
+ /** 附件已丢失:不做预览,直接给出丢失提示(仍可下载) */
20
+ attachmentLost?: boolean;
21
+ emptyDescription?: string;
22
+ lostDescription?: string;
23
+ /** 刷新附件方法:重新取附件(可重新生成),返回新附件则切换预览目标 */
24
+ refreshAttachment?: () => Promise<PreviewAttachment | void>;
25
+ };
26
+ declare var __VLS_18: {};
27
+ type __VLS_Slots = {} & {
28
+ empty?: (props: typeof __VLS_18) => any;
29
+ };
30
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
31
+ /** 重载预览(不重新取附件) */
32
+ reload: () => void | undefined;
33
+ /** 下载当前附件(format 省略时下载原始附件) */
34
+ download: (format?: string) => Promise<void> | undefined;
35
+ /** 刷新附件(等价于点击工具栏刷新) */
36
+ refreshAttachment: () => Promise<void>;
37
+ isFullscreen: globalThis.Ref<boolean, boolean>;
38
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
39
+ change: (attachment: PreviewAttachment) => any;
40
+ error: (err?: unknown) => any;
41
+ loaded: () => any;
42
+ download: (format?: string | undefined) => any;
43
+ refresh: () => any;
44
+ "update:fileId": (id: string) => any;
45
+ "update:fileName": (name: string) => any;
46
+ "update:fileType": (type: string) => any;
47
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
48
+ onChange?: ((attachment: PreviewAttachment) => any) | undefined;
49
+ onError?: ((err?: unknown) => any) | undefined;
50
+ onLoaded?: (() => any) | undefined;
51
+ onDownload?: ((format?: string | undefined) => any) | undefined;
52
+ onRefresh?: (() => any) | undefined;
53
+ "onUpdate:fileId"?: ((id: string) => any) | undefined;
54
+ "onUpdate:fileName"?: ((name: string) => any) | undefined;
55
+ "onUpdate:fileType"?: ((type: string) => any) | undefined;
56
+ }>, {
57
+ title: string;
58
+ emptyDescription: string;
59
+ showSearch: boolean;
60
+ showZoom: boolean;
61
+ showDownload: boolean;
62
+ showRefresh: boolean;
63
+ showFullscreen: boolean;
64
+ fileId: string;
65
+ fileName: string;
66
+ fileType: string;
67
+ showHeader: boolean;
68
+ lostDescription: string;
69
+ attachmentLost: boolean;
70
+ refreshAttachment: () => Promise<PreviewAttachment | void>;
71
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
72
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
73
+ export default _default;
74
+ type __VLS_WithSlots<T, S> = T & {
75
+ new (): {
76
+ $slots: S;
77
+ };
78
+ };
@@ -0,0 +1 @@
1
+ import{defineComponent as F,ref as s,watch as P,openBlock as c,createElementBlock as R,normalizeClass as T,unref as f,createBlock as w,withCtx as D,renderSlot as I}from"vue";import{ElEmpty as A}from"element-plus";import N from"../../utils/FrameworkUtils.js";import x from"../../hooks/usePreviewFullscreen.js";import C from"./OfficePreview.vue.js";import{_ as E}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"xlsx-js-style";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../api/DocumentApi.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"../../utils/behaviorContext.js";import"../../utils/dateTime.js";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"../../utils/fileDownload.js";import"../../utils/officePreviewUtil.js";import"./OfficePreviewHeaderBar.vue.js";import"@element-plus/icons-vue";const L=F({__name:"AttachmentPreview",props:{fileId:{default:""},fileName:{default:""},fileType:{default:""},title:{default:""},showHeader:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showZoom:{type:Boolean,default:!0},showDownload:{type:Boolean,default:!1},showRefresh:{type:Boolean,default:!1},showFullscreen:{type:Boolean,default:!1},attachmentLost:{type:Boolean,default:!1},emptyDescription:{default:"暂无附件"},lostDescription:{default:"附件已丢失或无权访问"},refreshAttachment:{type:Function,default:void 0}},emits:["loaded","error","download","refresh","change","update:fileId","update:fileName","update:fileType"],setup(t,{expose:v,emit:y}){const r=t,l=y,a=s(r.fileId||""),d=s(r.fileName||""),u=s(r.fileType||""),m=s(!1),n=s(null);P(()=>[r.fileId,r.fileName,r.fileType],([e,o,i])=>{a.value=e||"",d.value=o||"",u.value=i||""});const{previewContainerRef:g,isPreviewFullscreen:p,togglePreviewFullscreen:B}=x(),k=e=>{const o=e.id!==a.value;return a.value=e.id,d.value=e.name||"",u.value=e.type||"",l("update:fileId",e.id),l("update:fileName",e.name||""),l("update:fileType",e.type||""),l("change",e),o},h=async()=>{l("refresh");const e=r.refreshAttachment;if(e){m.value=!0;try{const o=await e();if(o?.id&&k(o))return;n.value?.reloadPreview()}catch(o){N.messageError(o)}finally{m.value=!1}}};return v({reload:()=>n.value?.reloadPreview(),download:e=>n.value?.download(e),refreshAttachment:h,isFullscreen:p}),(e,o)=>(c(),R("div",{ref_key:"previewContainerRef",ref:g,class:T(["attachment-preview",{"preview-fullscreen-fallback":f(p)}])},[a.value?(c(),w(C,{key:0,ref_key:"previewRef",ref:n,"file-id":a.value,"file-name":d.value,"file-type":u.value,title:t.title,"show-header":t.showHeader,"show-search":t.showSearch,"show-zoom":t.showZoom,"show-download":t.showDownload,"show-refresh":t.showRefresh,"show-fullscreen":t.showFullscreen,fullscreen:f(p),"refresh-loading":m.value,"attachment-lost":t.attachmentLost,"lost-description":t.lostDescription,onLoaded:o[0]||(o[0]=i=>l("loaded")),onError:o[1]||(o[1]=i=>l("error",i)),onRefresh:h,onDownload:o[2]||(o[2]=i=>l("download",i)),onToggleFullscreen:f(B)},null,8,["file-id","file-name","file-type","title","show-header","show-search","show-zoom","show-download","show-refresh","show-fullscreen","fullscreen","refresh-loading","attachment-lost","lost-description","onToggleFullscreen"])):(c(),w(f(A),{key:1,description:t.emptyDescription},{default:D(()=>[I(e.$slots,"empty",{},void 0,!0)]),_:3},8,["description"]))],2))}}),ne=E(L,[["__scopeId","data-v-8d6329ed"]]);export{ne as default};
@@ -20,7 +20,7 @@ declare const _default: import("vue").DefineComponent<globalThis.ExtractPropType
20
20
  /**
21
21
  * @description 上传文件类型
22
22
  * @default ''
23
- * @type {'images'|'document'|'txt'|'pdf'|'word'|'excel'|'ppt'}
23
+ * @type {'images'|'document'|'txt'|'pdf'|'word'|'excel'|'ppt'|'xml'}
24
24
  */
25
25
  accept: {
26
26
  type: StringConstructor;
@@ -139,7 +139,7 @@ declare const _default: import("vue").DefineComponent<globalThis.ExtractPropType
139
139
  /**
140
140
  * @description 上传文件类型
141
141
  * @default ''
142
- * @type {'images'|'document'|'txt'|'pdf'|'word'|'excel'|'ppt'}
142
+ * @type {'images'|'document'|'txt'|'pdf'|'word'|'excel'|'ppt'|'xml'}
143
143
  */
144
144
  accept: {
145
145
  type: StringConstructor;
@@ -1 +1 @@
1
- import{defineComponent as me,ref as _,computed as k,useModel as H,resolveComponent as h,resolveDirective as pe,openBlock as y,createElementBlock as C,normalizeClass as fe,Fragment as ve,renderList as ge,createVNode as p,withCtx as f,createElementVNode as U,unref as J,toDisplayString as E,withDirectives as ye,createBlock as A,createTextVNode as N,createCommentVNode as W,normalizeStyle as he,withModifiers as we,mergeModels as q}from"vue";import{UploadFilled as xe}from"@element-plus/icons-vue";import{ElMessage as c,ElMessageBox as _e}from"element-plus";import Ce from"../../hooks/useFileView.js";import S from"../../api/DocumentApi.js";import F from"../../utils/FrameworkUtils.js";import{confirmDelete as Fe}from"../../hooks/useDeleteConfirmHooks.js";import{userInfoStore as Be}from"../../stores/userInfoStore.js";import{getAcceptString as ke}from"../../utils/uploadAccept.js";import{buildUploadHeaders as Ue}from"../../utils/buildUploadHeaders.js";import{_ as Ee}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/frontendBus.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/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"xlsx-js-style";import"../../hooks/useBehaviorAction.js";import"pinia";import"../../utils/userSessionStorage.js";const Se={key:0},Me=["onClick"],be={key:1,style:{"text-align":"center",color:"var(--el-disabled-text-color)"}},Ie={class:"el-upload__tip"},De=me({__name:"CustomElUpload",props:q({limit:{type:Number,default:1},vertical:{type:Boolean,default:!1},accept:{type:String,default:""},business:{type:String,default:"default"},businessId:{type:String,default:"default"},isEdit:{type:Boolean,default:!0},association:{type:Boolean,default:!1},size:{type:Number,default:50},itemWidth:{type:String,default:"100%"},isConfirmDelete:{type:Boolean,default:!1},overwrite:{type:Boolean,default:!0},autoUpload:{type:Boolean,default:!0},showOptMessage:{type:Boolean,default:!0},showLoading:{type:Boolean,default:!0},watermarkCode:{type:String,default:()=>{}},readonlyFileIds:{type:Array,default:()=>[]},fileOwnerAccounts:{type:Array,default:()=>[]},uploadCreateBy:{type:String,default:""}},{uploadFilesList:{default:[]},uploadFilesListModifiers:{},loading:{type:Boolean},loadingModifiers:{}}),emits:q(["success"],["update:uploadFilesList","update:loading"]),setup(d,{expose:K,emit:Q}){const{fileView:R}=Ce(),$=Q,X=Be(),v=_(),m=_([]),w=_(""),M=_([]),o=d,O=k(()=>"/api/doc/uploadFile/"+o.business+"/"+o.businessId+"/"+o.association+(o.watermarkCode?"?watermarkCode="+o.watermarkCode:"")),Y=k(()=>Ue(O.value)),n=H(d,"uploadFilesList"),Z=e=>{w.value=e},ee=()=>{w.value=""},b=k(()=>ke(o.accept)),V=e=>{const t=e.split(".").pop()+"";return".jpg,.jpeg,.png,.gif,.bmp,.JPG,.JPEG,.PBG,.GIF,.BMP".includes(t)?"adtec-image":"txt".includes(t)?"adtec-text":"pdf".includes(t)?"adtec-pdf":"doc,docx".includes(t)?"adtec-word":"xls,xlsx".includes(t)?"adtec-excel":"ppt,pptx".includes(t)?"adtec-ppt":"adtec-text"},te=async e=>{const t=o.uploadCreateBy?.trim(),l=e.id!=null?String(e.id):"";if(!t||!l)return e;try{await S.updateFilesCreateBy([l],t),e.createBy=t}catch(a){F.messageError(a)}return e},ae=async(e,t,l)=>{if(e.code==="0"){const a=await te(e.data);n.value.push(a)}else c.error(e.msg),v.value?.handleRemove(t);for(let a=r.value.length-1;a>=0;a--)r.value[a]===t.name&&r.value.splice(a,1);e.code==="0"&&(o.showOptMessage&&c.success("上传成功"),$("success",{files:n.value,deleteFiles:m.value})),r.value.length===0&&(g.value=!1,G(e.code==="0"?void 0:new Error(e.msg||"上传失败")))},g=H(d,"loading"),r=_([]);let I,D;const j=k(()=>M.value.some(e=>e.status!=="success"&&e.status!=="fail")),le=()=>n.value.length>0||j.value,G=e=>{r.value.length>0||(e?D?.(e):I?.(),I=void 0,D=void 0)},L=async e=>{if(n.value.find(i=>i.name===e.name))return c.warning(e.name+",文件已存在"),!1;if(e.size>o.size*1024*1024)return c.warning("文件大小不能超过"+o.size+"MB"),!1;const l=b.value?.split(",").map(i=>i.slice(1).toLowerCase()),a=e.name.split(".").pop()?.toLowerCase();return l&&!l.includes(a??"")?(c.error(`文件 ${e.name} 格式不支持,仅允许 ${b.value}!`),setTimeout(()=>{v.value?.clearFiles(["ready"])},1),!1):(r.value.includes(e.name)||r.value.push(e.name),!0)},B=e=>{const t=e?.id!=null?String(e.id):"";return!!t&&o.readonlyFileIds.includes(t)},oe=e=>{if(B(e))return!1;if(!e?.createBy?.trim())return!0;const t=o.fileOwnerAccounts?.map(l=>l.trim()).filter(Boolean)??[];return t.length>0?t.includes(e.createBy.trim()):X.getUserInfo.userCode===e.createBy},se=async e=>{if(B(e)){c.warning("该附件非您上传,无法预览或删除");return}if(e.name===w.value){if(e.createBy&&!oe(e)){c.warning("您没有权限删除此文件!");return}if(o.isConfirmDelete)v.value?.handleRemove(e);else if(!await Fe({message:"删除不可恢复!您确定删除此附件?",title:"提示",request:()=>v.value?.handleRemove(e),successMessage:!1}))return}else P(e)},ne=(e,t)=>{M.value=t},ie=async(e,t)=>{if(o.limit===1&&o.overwrite&&n.value.length>=1){const l=[...n.value],a=l[0];if(!o.isConfirmDelete){if(!await _e.confirm("只允许上传一个附件,是否点击确定覆盖原有附件?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}))return;try{g.value=!0,await S.delSysUploadFile(a.id).catch(u=>{F.messageError(u)})}catch(u){F.messageError(u);return}finally{g.value=!1}}n.value=[],v.value?.clearFiles(),e.length>0?await L(e[0])?(o.isConfirmDelete&&l.forEach(u=>{m.value.some(x=>x.id===u.id)||m.value.push(u)}),v.value?.handleStart(e[0]),o.autoUpload&&v.value?.submit()):n.value.push(...l):l.forEach(i=>{m.value.some(u=>u.id===i.id)||m.value.push(i)})}else c.warning(`最多上传${o.limit}个文件,上传文件数量已达到限制`)},re=(e,t,l)=>{c.error("上传失败");for(let a=r.value.length-1;a>=0;a--)r.value[a]===t.name&&r.value.splice(a,1);r.value.length===0&&(g.value=!1,G(e))},P=async e=>{const t=n.value.find(l=>l.name===e.name);if(t){if(B(t)){c.warning("该附件非您上传,无法预览或删除");return}R(t.id)}},T=async(e,t=!0)=>{const l=n.value.find(a=>a.name===e.name);if(!(!l||B(l)))try{o.isConfirmDelete?m.value.push(l):await S.delSysUploadFile(l.id),n.value.splice(n.value.indexOf(l),1)}catch(a){F.messageError(a)}},ue=(e,t)=>{g.value=!0};return K({remove:T,confirm:async(e=!0)=>{try{if(g.value=!0,o.isConfirmDelete&&m.value.length>0&&e&&(await S.delSysUploadFiles(m.value.map(t=>t.id)),m.value=[]),!o.autoUpload)if(j.value){const t=M.value.filter(a=>a.status!=="success"&&a.status!=="fail");for(const a of t)if(!a.raw||!await L(a.raw))throw new Error("待上传文件校验失败");const l=new Promise((a,i)=>{I=a,D=i});v.value?.submit(),await l}else o.showOptMessage&&c.success("操作成功"),$("success",{files:n.value,deleteFiles:m.value});g.value=!1}catch(t){throw F.messageError(t),g.value=!1,t}},hasFiles:le}),(e,t)=>{const l=h("el-icons"),a=h("el-tooltip"),i=h("el-icon"),u=h("el-text"),x=h("el-flex"),ce=h("el-upload"),de=pe("loading");return d.isEdit?ye((y(),A(ce,{key:1,ref_key:"ref_upload",ref:v,"file-list":n.value,onSuccess:ae,onRemove:T,onPreview:P,"auto-upload":d.autoUpload,onChange:ne,onError:re,onExceed:ie,onProgress:ue,"before-upload":L,drag:"",accept:b.value,action:O.value,multiple:"",limit:d.limit,headers:Y.value},{file:f(({file:s})=>[p(x,{class:"file-class",onMousemove:z=>Z(s.name),onMouseout:ee,onClick:z=>P(s),height:"20px",width:d.itemWidth},{default:f(()=>[p(x,{align:"center",justify:"flex-start",style:{overflow:"hidden"}},{default:f(()=>[p(a,{class:"box-item",content:s.name,placement:"top"},{default:f(()=>[p(u,{truncated:"",style:{cursor:"pointer"}},{default:f(()=>[p(l,{"model-value":V(s.name),style:{"margin-right":"5px"}},null,8,["model-value"]),N(" "+E(s.name),1)]),_:2},1024)]),_:2},1032,["content"])]),_:2},1024),p(x,{align:"center",justify:"flex-end",width:"50px"},{default:f(()=>[!s?.businessId&&s.percentage!==100?(y(),A(u,{key:0},{default:f(()=>[N(E(s.percentage)+"% ",1)]),_:2},1024)):W("v-if",!0),s?.businessId||s.percentage===100?(y(),A(l,{key:1,onClick:we(z=>se(s),["prevent","stop"]),"model-value":s.name===w.value?"adtec-close":"adtec-success",style:he([{color:"var(--el-color-success)","font-size":"14px"},{color:s.name===w.value?"var(--el-color-danger)":"var(--el-color-success)"}])},null,8,["onClick","model-value","style"])):W("v-if",!0)]),_:2},1024)]),_:2},1032,["onMousemove","onClick","width"])]),default:f(()=>[p(i,{class:"el-icon--upload"},{default:f(()=>[p(J(xe))]),_:1}),t[0]||(t[0]=U("div",{class:"el-upload__text"},[N("拖动文件或"),U("em",null,"点击上传")],-1)),U("div",Ie,"最大上传文件大小"+E(d.size)+"MB",1)]),_:1},8,["file-list","auto-upload","accept","action","limit","headers"])),[[de,d.showLoading&&g.value]]):(y(),C("div",Se,[n.value?.length?(y(),C("div",{key:0,class:fe(["readonly-file-list",{"is-vertical":d.vertical}])},[(y(!0),C(ve,null,ge(n.value,s=>(y(),C("div",{key:s.id,class:"file-item"},[p(l,{"model-value":V(s.name),style:{"margin-right":"5px"}},null,8,["model-value"]),p(a,{content:s.name,placement:"top"},{default:f(()=>[U("span",{class:"link-name",onClick:z=>J(R)(s.id)},E(s.name),9,Me)]),_:2},1032,["content"])]))),128))],2)):(y(),C("div",be,"暂无附件"))]))}}}),dt=Ee(De,[["__scopeId","data-v-39c23d51"]]);export{dt as default};
1
+ import{defineComponent as me,ref as _,computed as k,useModel as H,resolveComponent as h,resolveDirective as pe,openBlock as y,createElementBlock as C,normalizeClass as fe,Fragment as ve,renderList as ge,createVNode as p,withCtx as f,createElementVNode as U,unref as J,toDisplayString as E,withDirectives as ye,createBlock as A,createTextVNode as N,createCommentVNode as W,normalizeStyle as he,withModifiers as we,mergeModels as q}from"vue";import{UploadFilled as xe}from"@element-plus/icons-vue";import{ElMessage as c,ElMessageBox as _e}from"element-plus";import Ce from"../../hooks/useFileView.js";import S from"../../api/DocumentApi.js";import F from"../../utils/FrameworkUtils.js";import{confirmDelete as Fe}from"../../hooks/useDeleteConfirmHooks.js";import{userInfoStore as Be}from"../../stores/userInfoStore.js";import{getAcceptString as ke}from"../../utils/uploadAccept.js";import{buildUploadHeaders as Ue}from"../../utils/buildUploadHeaders.js";import{_ as Ee}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/frontendBus.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/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"xlsx-js-style";import"../../hooks/useBehaviorAction.js";import"pinia";import"../../utils/userSessionStorage.js";const Se={key:0},be=["onClick"],Me={key:1,style:{"text-align":"center",color:"var(--el-disabled-text-color)"}},Ie={class:"el-upload__tip"},De=me({__name:"CustomElUpload",props:q({limit:{type:Number,default:1},vertical:{type:Boolean,default:!1},accept:{type:String,default:""},business:{type:String,default:"default"},businessId:{type:String,default:"default"},isEdit:{type:Boolean,default:!0},association:{type:Boolean,default:!1},size:{type:Number,default:50},itemWidth:{type:String,default:"100%"},isConfirmDelete:{type:Boolean,default:!1},overwrite:{type:Boolean,default:!0},autoUpload:{type:Boolean,default:!0},showOptMessage:{type:Boolean,default:!0},showLoading:{type:Boolean,default:!0},watermarkCode:{type:String,default:()=>{}},readonlyFileIds:{type:Array,default:()=>[]},fileOwnerAccounts:{type:Array,default:()=>[]},uploadCreateBy:{type:String,default:""}},{uploadFilesList:{default:[]},uploadFilesListModifiers:{},loading:{type:Boolean},loadingModifiers:{}}),emits:q(["success"],["update:uploadFilesList","update:loading"]),setup(d,{expose:K,emit:Q}){const{fileView:R}=Ce(),$=Q,X=Be(),v=_(),m=_([]),w=_(""),b=_([]),o=d,O=k(()=>"/api/doc/uploadFile/"+o.business+"/"+o.businessId+"/"+o.association+(o.watermarkCode?"?watermarkCode="+o.watermarkCode:"")),Y=k(()=>Ue(O.value)),n=H(d,"uploadFilesList"),Z=e=>{w.value=e},ee=()=>{w.value=""},M=k(()=>ke(o.accept)),V=e=>{const t=e.split(".").pop()+"";return".jpg,.jpeg,.png,.gif,.bmp,.JPG,.JPEG,.PBG,.GIF,.BMP".includes(t)?"adtec-image":"txt".includes(t)?"adtec-text":"pdf".includes(t)?"adtec-pdf":"doc,docx".includes(t)?"adtec-word":"xls,xlsx".includes(t)?"adtec-excel":"ppt,pptx".includes(t)?"adtec-ppt":"adtec-text"},te=async e=>{const t=o.uploadCreateBy?.trim(),l=e.id!=null?String(e.id):"";if(!t||!l)return e;try{await S.updateFilesCreateBy([l],t),e.createBy=t}catch(a){F.messageError(a)}return e},ae=async(e,t,l)=>{if(e.code==="0"){const a=await te(e.data);n.value.push(a)}else c.error(e.msg),v.value?.handleRemove(t);for(let a=r.value.length-1;a>=0;a--)r.value[a]===t.name&&r.value.splice(a,1);e.code==="0"&&(o.showOptMessage&&c.success("上传成功"),$("success",{files:n.value,deleteFiles:m.value})),r.value.length===0&&(g.value=!1,G(e.code==="0"?void 0:new Error(e.msg||"上传失败")))},g=H(d,"loading"),r=_([]);let I,D;const j=k(()=>b.value.some(e=>e.status!=="success"&&e.status!=="fail")),le=()=>n.value.length>0||j.value,G=e=>{r.value.length>0||(e?D?.(e):I?.(),I=void 0,D=void 0)},L=async e=>{if(n.value.find(i=>i.name===e.name))return c.warning(e.name+",文件已存在"),!1;if(e.size>o.size*1024*1024)return c.warning("文件大小不能超过"+o.size+"MB"),!1;const l=M.value?.split(",").map(i=>i.slice(1).toLowerCase()),a=e.name.split(".").pop()?.toLowerCase();return l&&!l.includes(a??"")?(c.error(`文件 ${e.name} 格式不支持,仅允许 ${M.value}!`),setTimeout(()=>{v.value?.clearFiles(["ready"])},1),!1):(r.value.includes(e.name)||r.value.push(e.name),!0)},B=e=>{const t=e?.id!=null?String(e.id):"";return!!t&&o.readonlyFileIds.includes(t)},oe=e=>{if(B(e))return!1;if(!e?.createBy?.trim())return!0;const t=o.fileOwnerAccounts?.map(l=>l.trim()).filter(Boolean)??[];return t.length>0?t.includes(e.createBy.trim()):X.getUserInfo.userCode===e.createBy},se=async e=>{if(B(e)){c.warning("该附件非您上传,无法预览或删除");return}if(e.name===w.value){if(e.createBy&&!oe(e)){c.warning("您没有权限删除此文件!");return}if(o.isConfirmDelete)v.value?.handleRemove(e);else if(!await Fe({message:"删除不可恢复!您确定删除此附件?",title:"提示",request:()=>v.value?.handleRemove(e),successMessage:!1}))return}else P(e)},ne=(e,t)=>{b.value=t},ie=async(e,t)=>{if(o.limit===1&&o.overwrite&&n.value.length>=1){const l=[...n.value],a=l[0];if(!o.isConfirmDelete){if(!await _e.confirm("只允许上传一个附件,是否点击确定覆盖原有附件?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}))return;try{g.value=!0,await S.delSysUploadFile(a.id).catch(u=>{F.messageError(u)})}catch(u){F.messageError(u);return}finally{g.value=!1}}n.value=[],v.value?.clearFiles(),e.length>0?await L(e[0])?(o.isConfirmDelete&&l.forEach(u=>{m.value.some(x=>x.id===u.id)||m.value.push(u)}),v.value?.handleStart(e[0]),o.autoUpload&&v.value?.submit()):n.value.push(...l):l.forEach(i=>{m.value.some(u=>u.id===i.id)||m.value.push(i)})}else c.warning(`最多上传${o.limit}个文件,上传文件数量已达到限制`)},re=(e,t,l)=>{c.error("上传失败");for(let a=r.value.length-1;a>=0;a--)r.value[a]===t.name&&r.value.splice(a,1);r.value.length===0&&(g.value=!1,G(e))},P=async e=>{const t=n.value.find(l=>l.name===e.name);if(t){if(B(t)){c.warning("该附件非您上传,无法预览或删除");return}R(t.id)}},T=async(e,t=!0)=>{const l=n.value.find(a=>a.name===e.name);if(!(!l||B(l)))try{o.isConfirmDelete?m.value.push(l):await S.delSysUploadFile(l.id),n.value.splice(n.value.indexOf(l),1)}catch(a){F.messageError(a)}},ue=(e,t)=>{g.value=!0};return K({remove:T,confirm:async(e=!0)=>{try{if(g.value=!0,o.isConfirmDelete&&m.value.length>0&&e&&(await S.delSysUploadFiles(m.value.map(t=>t.id)),m.value=[]),!o.autoUpload)if(j.value){const t=b.value.filter(a=>a.status!=="success"&&a.status!=="fail");for(const a of t)if(!a.raw||!await L(a.raw))throw new Error("待上传文件校验失败");const l=new Promise((a,i)=>{I=a,D=i});v.value?.submit(),await l}else o.showOptMessage&&c.success("操作成功"),$("success",{files:n.value,deleteFiles:m.value});g.value=!1}catch(t){throw F.messageError(t),g.value=!1,t}},hasFiles:le}),(e,t)=>{const l=h("el-icons"),a=h("el-tooltip"),i=h("el-icon"),u=h("el-text"),x=h("el-flex"),ce=h("el-upload"),de=pe("loading");return d.isEdit?ye((y(),A(ce,{key:1,ref_key:"ref_upload",ref:v,"file-list":n.value,onSuccess:ae,onRemove:T,onPreview:P,"auto-upload":d.autoUpload,onChange:ne,onError:re,onExceed:ie,onProgress:ue,"before-upload":L,drag:"",accept:M.value,action:O.value,multiple:"",limit:d.limit,headers:Y.value},{file:f(({file:s})=>[p(x,{class:"file-class",onMousemove:z=>Z(s.name),onMouseout:ee,onClick:z=>P(s),height:"20px",width:d.itemWidth},{default:f(()=>[p(x,{align:"center",justify:"flex-start",style:{overflow:"hidden"}},{default:f(()=>[p(a,{class:"box-item",content:s.name,placement:"top"},{default:f(()=>[p(u,{truncated:"",style:{cursor:"pointer"}},{default:f(()=>[p(l,{"model-value":V(s.name),style:{"margin-right":"5px"}},null,8,["model-value"]),N(" "+E(s.name),1)]),_:2},1024)]),_:2},1032,["content"])]),_:2},1024),p(x,{align:"center",justify:"flex-end",width:"50px"},{default:f(()=>[!s?.businessId&&s.percentage!==100?(y(),A(u,{key:0},{default:f(()=>[N(E(s.percentage)+"% ",1)]),_:2},1024)):W("v-if",!0),s?.businessId||s.percentage===100?(y(),A(l,{key:1,onClick:we(z=>se(s),["prevent","stop"]),"model-value":s.name===w.value?"adtec-close":"adtec-success",style:he([{color:"var(--el-color-success)","font-size":"14px"},{color:s.name===w.value?"var(--el-color-danger)":"var(--el-color-success)"}])},null,8,["onClick","model-value","style"])):W("v-if",!0)]),_:2},1024)]),_:2},1032,["onMousemove","onClick","width"])]),default:f(()=>[p(i,{class:"el-icon--upload"},{default:f(()=>[p(J(xe))]),_:1}),t[0]||(t[0]=U("div",{class:"el-upload__text"},[N("拖动文件或"),U("em",null,"点击上传")],-1)),U("div",Ie,"最大上传文件大小"+E(d.size)+"MB",1)]),_:1},8,["file-list","auto-upload","accept","action","limit","headers"])),[[de,d.showLoading&&g.value]]):(y(),C("div",Se,[n.value?.length?(y(),C("div",{key:0,class:fe(["readonly-file-list",{"is-vertical":d.vertical}])},[(y(!0),C(ve,null,ge(n.value,s=>(y(),C("div",{key:s.id,class:"file-item"},[p(l,{"model-value":V(s.name),style:{"margin-right":"5px"}},null,8,["model-value"]),p(a,{content:s.name,placement:"top"},{default:f(()=>[U("span",{class:"link-name",onClick:z=>J(R)(s.id)},E(s.name),9,be)]),_:2},1032,["content"])]))),128))],2)):(y(),C("div",Me,"暂无附件"))]))}}}),dt=Ee(De,[["__scopeId","data-v-c9dafb01"]]);export{dt as default};
@@ -19,9 +19,9 @@ declare const _default: import("vue").DefineComponent<globalThis.ExtractPropType
19
19
  type: globalThis.PropType<any>;
20
20
  };
21
21
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
22
+ "update:fileId": (...args: any[]) => void;
22
23
  "update:title": (...args: any[]) => void;
23
24
  "update:url": (...args: any[]) => void;
24
- "update:fileId": (...args: any[]) => void;
25
25
  "update:edit": (...args: any[]) => void;
26
26
  "update:modelValue": (value: any) => void;
27
27
  }, string, import("vue").PublicProps, Readonly<globalThis.ExtractPropTypes<{
@@ -46,9 +46,9 @@ declare const _default: import("vue").DefineComponent<globalThis.ExtractPropType
46
46
  };
47
47
  }>> & Readonly<{
48
48
  "onUpdate:modelValue"?: ((value: any) => any) | undefined;
49
+ "onUpdate:fileId"?: ((...args: any[]) => any) | undefined;
49
50
  "onUpdate:title"?: ((...args: any[]) => any) | undefined;
50
51
  "onUpdate:url"?: ((...args: any[]) => any) | undefined;
51
- "onUpdate:fileId"?: ((...args: any[]) => any) | undefined;
52
52
  "onUpdate:edit"?: ((...args: any[]) => any) | undefined;
53
53
  }>, {
54
54
  title: string;
@@ -1 +1 @@
1
- import{defineComponent as k,useModel as E,ref as c,onMounted as L,onBeforeUnmount as x,openBlock as C,createBlock as R,Teleport as U,createElementVNode as w,normalizeClass as y,createVNode as I,unref as s,createCommentVNode as M,mergeModels as g}from"vue";import{useVModel as u}from"@vueuse/core";import S from"../../api/DocumentApi.js";import B from"../../utils/FrameworkUtils.js";import N from"./OfficePreview.vue.js";import{_ as O}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"element-plus";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"xlsx-js-style";import"../../utils/officePreviewUtil.js";import"./OfficePreviewHeaderBar.vue.js";import"@element-plus/icons-vue";const j=k({__name:"FileView",props:g({title:{type:String,default:""},url:{type:String,default:""},fileId:{type:String,default:""},edit:{type:String,default:"view"}},{modelValue:{},modelModifiers:{}}),emits:g(["update:title","update:url","update:fileId","update:edit"],["update:modelValue"]),setup(d,{emit:h}){const m=E(d,"modelValue"),r=d,n=h,f=u(r,"title",n),i=u(r,"fileId",n),F=u(r,"url",n),l=c(null),t=c(!1),a=c(!1),p=()=>{const e=l.value;t.value=!!e&&document.fullscreenElement===e,document.body.style.overflow=t.value?"hidden":""},v=async()=>{try{document.fullscreenElement===l.value&&await document.exitFullscreen()}catch{}t.value=!1,document.body.style.overflow=""},_=async()=>{const e=l.value;if(e)try{document.fullscreenElement===e?await document.exitFullscreen():await e.requestFullscreen()}catch{t.value=!t.value,document.body.style.overflow=t.value?"hidden":""}},V=async()=>{await v(),m.value=!1},b=async()=>{if(i.value)try{a.value=!0;const e=await S.downloadFile(i.value),o=document.createElement("a");o.href=URL.createObjectURL(e),o.download=f.value,o.click(),URL.revokeObjectURL(o.href)}catch(e){B.messageError(e)}finally{a.value=!1}};return L(()=>document.addEventListener("fullscreenchange",p)),x(()=>{document.removeEventListener("fullscreenchange",p),v()}),(e,o)=>m.value?(C(),R(U,{key:0,to:"body"},[w("div",{class:y(["file-view-overlay",{"is-preview-fullscreen":t.value}])},[w("div",{ref_key:"previewContainerRef",ref:l,class:y(["office-preview",{"fullscreen-mode":t.value}])},[I(N,{url:s(F),"file-id":s(i),"file-name":s(f),"show-header":"","show-download":"","show-fullscreen":"","show-close":"",fullscreen:t.value,"download-loading":a.value,onDownload:b,onToggleFullscreen:_,onClose:V},null,8,["url","file-id","file-name","fullscreen","download-loading"])],2)],2)])):M("v-if",!0)}}),de=O(j,[["__scopeId","data-v-52672773"]]);export{de as default};
1
+ import{defineComponent as F,useModel as _,openBlock as y,createBlock as V,Teleport as h,createElementVNode as m,normalizeClass as n,unref as e,createVNode as C,createCommentVNode as P,mergeModels as p}from"vue";import{useVModel as i}from"@vueuse/core";import x from"../../hooks/usePreviewFullscreen.js";import I from"./OfficePreview.vue.js";import{_ as k}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"element-plus";import"../../api/DocumentApi.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"../../utils/FrameworkUtils.js";import"xlsx-js-style";import"../../utils/fileDownload.js";import"../../utils/officePreviewUtil.js";import"./OfficePreviewHeaderBar.vue.js";import"@element-plus/icons-vue";const M=F({__name:"FileView",props:p({title:{type:String,default:""},url:{type:String,default:""},fileId:{type:String,default:""},edit:{type:String,default:"view"}},{modelValue:{},modelModifiers:{}}),emits:p(["update:title","update:url","update:fileId","update:edit"],["update:modelValue"]),setup(l,{emit:c}){const s=_(l,"modelValue"),t=l,o=c,u=i(t,"title",o),a=i(t,"fileId",o),d=i(t,"url",o),{previewContainerRef:f,isPreviewFullscreen:r,togglePreviewFullscreen:w,exitPreviewFullscreen:v}=x(),g=async()=>{await v(),s.value=!1};return(S,N)=>s.value?(y(),V(h,{key:0,to:"body"},[m("div",{class:n(["file-view-overlay",{"is-preview-fullscreen":e(r)}])},[m("div",{ref_key:"previewContainerRef",ref:f,class:n(["office-preview",{"fullscreen-mode":e(r)}])},[C(I,{url:e(d),"file-id":e(a),"file-name":e(u),"show-header":"","show-download":"","show-fullscreen":"","show-close":"",fullscreen:e(r),onToggleFullscreen:e(w),onClose:g},null,8,["url","file-id","file-name","fullscreen","onToggleFullscreen"])],2)],2)])):P("v-if",!0)}}),se=k(M,[["__scopeId","data-v-ecb4067a"]]);export{se as default};
@@ -1 +1 @@
1
- import{defineComponent as c,ref as a,openBlock as d,createBlock as v,createCommentVNode as w}from"vue";import n from"../../api/DocumentApi.js";import F from"../../utils/FrameworkUtils.js";import V from"./FileView.vue.js";import{getFileSuffix as k,isPreviewableSuffix as U}from"../../utils/uploadAccept.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"element-plus";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"xlsx-js-style";import"@vueuse/core";import"./OfficePreview.vue.js";import"../../utils/officePreviewUtil.js";import"./OfficePreviewHeaderBar.vue.js";import"@element-plus/icons-vue";import"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";const Z=c({__name:"FileViewComponents",setup(b,{expose:u}){const t=a(!1),m=a(""),l=a(""),s=a("view");let p=0;const f=async(o,i)=>{const e=await n.downloadFile(o),r=document.createElement("a");r.href=URL.createObjectURL(e),r.download=i,r.click(),URL.revokeObjectURL(r.href)};return u({viewFile:async o=>{const i=++p;m.value="文件预览",l.value=o,t.value=!0;try{const e=await n.getUpLoadFilesVoById(o);if(i!==p||!t.value||l.value!==o)return;const r=k(e);if(!U(r)){t.value=!1,await f(e.id,e.name);return}m.value=e.name}catch(e){if(i!==p||!t.value||l.value!==o)return;t.value=!1,F.messageError(e)}}}),(o,i)=>t.value?(d(),v(V,{key:0,modelValue:t.value,"onUpdate:modelValue":i[0]||(i[0]=e=>t.value=e),title:m.value,"file-id":l.value,edit:s.value},null,8,["modelValue","title","file-id","edit"])):w("v-if",!0)}});export{Z as default};
1
+ import{defineComponent as s,ref as m,openBlock as f,createBlock as v,createCommentVNode as d}from"vue";import c from"../../api/DocumentApi.js";import w from"../../utils/FrameworkUtils.js";import V from"../../utils/fileDownload.js";import F from"./FileView.vue.js";import{getFileSuffix as x,isPreviewableSuffix as _}from"../../utils/uploadAccept.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"element-plus";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"xlsx-js-style";import"@vueuse/core";import"../../hooks/usePreviewFullscreen.js";import"./OfficePreview.vue.js";import"../../utils/officePreviewUtil.js";import"./OfficePreviewHeaderBar.vue.js";import"@element-plus/icons-vue";import"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";const ee=s({__name:"FileViewComponents",setup(y,{expose:p}){const e=m(!1),l=m(""),r=m(""),u=m("view");let a=0;return p({viewFile:async i=>{const o=++a;l.value="文件预览",r.value=i,e.value=!0;try{const t=await c.getUpLoadFilesVoById(i);if(o!==a||!e.value||r.value!==i)return;const n=x(t);if(!_(n)){e.value=!1,await V(t.id,t.name);return}l.value=t.name}catch(t){if(o!==a||!e.value||r.value!==i)return;e.value=!1,w.messageError(t)}}}),(i,o)=>e.value?(f(),v(F,{key:0,modelValue:e.value,"onUpdate:modelValue":o[0]||(o[0]=t=>e.value=t),title:l.value,"file-id":r.value,edit:u.value},null,8,["modelValue","title","file-id","edit"])):d("v-if",!0)}});export{ee as default};
@@ -3,6 +3,8 @@ type __VLS_Props = {
3
3
  fileId?: string;
4
4
  fileName?: string;
5
5
  fileType?: string;
6
+ /** 预览标题:不传时用文件名(文件名仍用于下载命名) */
7
+ title?: string;
6
8
  showHeader?: boolean;
7
9
  showSearch?: boolean;
8
10
  showPageNav?: boolean;
@@ -25,11 +27,12 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
25
27
  zoomIn: () => void;
26
28
  zoomOut: () => void;
27
29
  resetZoom: () => void;
30
+ download: (format?: string) => Promise<void>;
28
31
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
29
32
  close: () => any;
30
33
  error: (err?: unknown) => any;
31
34
  loaded: () => any;
32
- download: () => any;
35
+ download: (format?: string | undefined) => any;
33
36
  refresh: () => any;
34
37
  "toggle-fullscreen": () => any;
35
38
  "update:scale": (value: number) => any;
@@ -37,11 +40,12 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
37
40
  onClose?: (() => any) | undefined;
38
41
  onError?: ((err?: unknown) => any) | undefined;
39
42
  onLoaded?: (() => any) | undefined;
40
- onDownload?: (() => any) | undefined;
43
+ onDownload?: ((format?: string | undefined) => any) | undefined;
41
44
  onRefresh?: (() => any) | undefined;
42
45
  "onToggle-fullscreen"?: (() => any) | undefined;
43
46
  "onUpdate:scale"?: ((value: number) => any) | undefined;
44
47
  }>, {
48
+ title: string;
45
49
  url: string;
46
50
  showClose: boolean;
47
51
  fullscreen: boolean;
@@ -1,2 +1,2 @@
1
- import{defineComponent as U,useModel as G,ref as d,computed as g,watch as J,onMounted as K,onBeforeUnmount as Y,openBlock as f,createElementBlock as S,normalizeClass as _,createBlock as z,unref as x,createCommentVNode as w,createElementVNode as h,createVNode as ee,Transition as oe,withCtx as I,createTextVNode as ae,mergeModels as Z}from"vue";import{ElEmpty as le,ElButton as re,ElMessage as te}from"element-plus";import se from"../../api/DocumentApi.js";import{resolveOfficeFileExt as ne,MAX_RICH_PREVIEW_ZOOM as ie,MIN_OFFICE_ZOOM as de,clampRichPreviewZoom as k,OFFICE_ZOOM_STEP as T}from"../../utils/officePreviewUtil.js";import ue from"./OfficePreviewHeaderBar.vue.js";import{_ as ce}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"@element-plus/icons-vue";const fe={class:"fileview-frame-wrap"},me={key:0,class:"preview-loading-overlay"},ve=["src","title"],we=U({__name:"OfficePreview",props:Z({url:{default:""},fileId:{default:""},fileName:{default:""},fileType:{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:Z(["loaded","error","download","refresh","toggle-fullscreen","close"],["update:scale"]),setup(a,{expose:D,emit:q}){const l=a,r=G(a,"scale"),t=q,u=d(""),E=d(null),c=d(!1),i=d(!1),p=d(""),s=d(""),m=d(-1),v=d(0);let y=0;const H=new Set(["pdf","doc","docx","xls","xlsx","ppt","pptx","txt","csv","html","htm","xml","json","md"]),V=g(()=>p.value||l.lostDescription),A=g(()=>ne(l.fileType,l.fileName,l.url)),M=g(()=>l.showSearch&&!i.value&&H.has(A.value)),W=g(()=>l.showZoom&&!i.value),n=o=>{E.value?.contentWindow?.postMessage({source:"adtec-office-preview",type:"command",...o},"*")},N=()=>{r.value=k(r.value+T),n({command:"zoom",scale:r.value})},C=()=>{r.value=k(r.value-T),n({command:"zoom",scale:r.value})},O=()=>{r.value=1,n({command:"zoom",scale:r.value})},$=o=>{const e=o.trim();if(s.value=e,m.value=-1,v.value=0,!e){P();return}n({command:"search",query:e,direction:"first"})},P=()=>{s.value="",m.value=-1,v.value=0,n({command:"clear-search"})},b=()=>{s.value&&n({command:"search",query:s.value,direction:"prev"})},Q=()=>{s.value&&n({command:"search",query:s.value,direction:"next"})},F=o=>{if(!(o.source!==E.value?.contentWindow||o.data?.source!=="adtec-fileview")){if(o.data.type==="ready"){n({command:"zoom",scale:r.value});return}if(o.data.type==="search-result"){const e=Number(o.data.total||0);v.value=e,m.value=e>0?Number(o.data.index||0):-1,e===0&&s.value&&te.warning("未找到匹配内容")}}},L=async()=>{const o=++y;if(u.value="",c.value=!1,i.value=!1,p.value="",r.value=1,s.value="",m.value=-1,v.value=0,l.attachmentLost){i.value=!0,t("error");return}c.value=!0;try{if(l.fileId){const e=await se.createPreviewSession(l.fileId);if(o!==y)return;u.value=e.url;return}if(l.url.startsWith("/api/doc/preview/fileView/")){u.value=l.url;return}throw new Error("为保护附件地址,旧版文件直链已停止预览,请使用附件 ID 打开")}catch(e){if(o!==y)return;c.value=!1,i.value=!0,p.value=e?.msg||e?.message||"文件预览失败,请下载后查看",t("error",e)}},R=()=>{t("refresh"),L()},X=()=>{c.value=!1,window.setTimeout(()=>{n({command:"zoom",scale:r.value})},0),t("loaded")},j=o=>{c.value=!1,i.value=!0,p.value="文件预览服务暂不可用,请稍后重试或下载后查看",t("error",o)};return J(()=>[l.fileId,l.url,l.attachmentLost],()=>void L(),{immediate:!0}),K(()=>window.addEventListener("message",F)),Y(()=>{y++,window.removeEventListener("message",F)}),D({reloadPreview:R,zoomIn:N,zoomOut:C,resetZoom:O}),(o,e)=>(f(),S("div",{class:_(["office-preview-root",{"is-fullscreen":a.fullscreen}])},[a.showHeader?(f(),z(ue,{key:0,title:a.fileName,"title-only":!M.value,zoom:r.value,"search-query":s.value,"search-index":m.value,"search-total":v.value,"show-search":M.value,"show-page-nav":!1,"show-zoom":W.value,"show-download":a.showDownload,"show-refresh":a.showRefresh,"show-fullscreen":a.showFullscreen,"show-close":a.showClose,fullscreen:a.fullscreen,"download-loading":a.downloadLoading,"refresh-loading":a.refreshLoading,"min-zoom":x(de),"max-zoom":x(ie),onZoomIn:N,onZoomOut:C,onZoomReset:O,onSearch:$,onSearchClear:P,onSearchPrev:b,onSearchNext:Q,onDownload:e[0]||(e[0]=B=>t("download")),onRefresh:R,onToggleFullscreen:e[1]||(e[1]=B=>t("toggle-fullscreen")),onClose:e[2]||(e[2]=B=>t("close"))},null,8,["title","title-only","zoom","search-query","search-index","search-total","show-search","show-zoom","show-download","show-refresh","show-fullscreen","show-close","fullscreen","download-loading","refresh-loading","min-zoom","max-zoom"])):w("v-if",!0),w(` 外层加载层与预览页内层样式完全一致(spinner + 正在加载文件... + 进度条),
2
- 切换时淡出过渡,避免 spinner 相位/进度条状态差异造成的跳动 `),h("div",fe,[ee(oe,{name:"preview-loading-fade"},{default:I(()=>[c.value?(f(),S("div",me,[...e[4]||(e[4]=[h("div",{class:"preview-loading-spinner"},null,-1),h("div",{class:"preview-loading-text"},"正在加载文件...",-1),h("div",{class:"preview-loading-progress"},[h("div",{class:"preview-loading-bar is-indeterminate"})],-1)])])):w("v-if",!0)]),_:1}),u.value&&!i.value?(f(),S("iframe",{key:u.value,ref_key:"previewFrameRef",ref:E,class:"fileview-frame",src:u.value,title:a.fileName||"文件预览",referrerpolicy:"same-origin",onLoad:X,onError:j},null,40,ve)):i.value?(f(),z(x(le),{key:1,description:V.value},{default:I(()=>[a.showDownload?(f(),z(x(re),{key:0,type:"primary",onClick:e[3]||(e[3]=B=>t("download"))},{default:I(()=>[...e[5]||(e[5]=[ae(" 下载文件 ",-1)])]),_:1})):w("v-if",!0)]),_:1},8,["description"])):w("v-if",!0)])],2))}}),He=ce(we,[["__scopeId","data-v-c543d9c4"]]);export{He as default};
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};
@@ -11,6 +11,8 @@ type __VLS_Props = {
11
11
  showPageNav?: boolean;
12
12
  showZoom?: boolean;
13
13
  showDownload?: boolean;
14
+ /** 是否提供“下载原始文件 / 下载 PDF”的下载菜单(Office 类附件) */
15
+ pdfExport?: boolean;
14
16
  showRefresh?: boolean;
15
17
  showFullscreen?: boolean;
16
18
  showClose?: boolean;
@@ -26,7 +28,7 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
26
28
  "zoom-in": () => any;
27
29
  "zoom-out": () => any;
28
30
  "zoom-reset": () => any;
29
- download: () => any;
31
+ download: (format: string) => any;
30
32
  refresh: () => any;
31
33
  "toggle-fullscreen": () => any;
32
34
  "page-prev": () => any;
@@ -40,7 +42,7 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
40
42
  "onZoom-in"?: (() => any) | undefined;
41
43
  "onZoom-out"?: (() => any) | undefined;
42
44
  "onZoom-reset"?: (() => any) | undefined;
43
- onDownload?: (() => any) | undefined;
45
+ onDownload?: ((format: string) => any) | undefined;
44
46
  onRefresh?: (() => any) | undefined;
45
47
  "onToggle-fullscreen"?: (() => any) | undefined;
46
48
  "onPage-prev"?: (() => any) | undefined;
@@ -63,6 +65,7 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
63
65
  showPageNav: boolean;
64
66
  showZoom: boolean;
65
67
  showDownload: boolean;
68
+ pdfExport: boolean;
66
69
  showRefresh: boolean;
67
70
  showFullscreen: boolean;
68
71
  downloadLoading: boolean;
@@ -1 +1 @@
1
- import{defineComponent as x,ref as z,computed as $,watch as O,resolveComponent as Z,openBlock as a,createElementBlock as r,normalizeClass as L,toDisplayString as c,createCommentVNode as u,createVNode as o,unref as l,withCtx as d,createElementVNode as f,Fragment as g,createBlock as b}from"vue";import{ArrowUp as F,ArrowDown as I,ArrowLeft as D,ArrowRight as N,ZoomOut as R,ZoomIn as S,RefreshRight as T,Loading as w,Download as V,Refresh as A,Close as k,FullScreen as M}from"@element-plus/icons-vue";import{ElIcon as i}from"element-plus";import{MAX_PDF_ZOOM as E,MIN_OFFICE_ZOOM as Q}from"../../utils/officePreviewUtil.js";import{_ as H}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";const U=["title"],X={key:1,class:"header-search"},j={key:0,class:"search-count"},p={class:"header-actions"},q=["disabled"],G={class:"page-label"},J=["disabled"],K=["disabled"],W={class:"zoom-label"},Y=["disabled"],_=["disabled"],ee=["disabled"],te=["title"],le=x({__name:"OfficePreviewHeaderBar",props:{title:{default:""},titleOnly:{type:Boolean,default:!1},zoom:{default:1},currentPage:{default:1},totalPages:{default:0},searchQuery:{default:""},searchIndex:{default:-1},searchTotal:{default:0},showSearch:{type:Boolean,default:!0},showPageNav:{type:Boolean,default:!0},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},minZoom:{default:Q},maxZoom:{default:E}},emits:["zoom-in","zoom-out","zoom-reset","download","refresh","toggle-fullscreen","close","page-prev","page-next","search","search-clear","search-prev","search-next"],setup(e,{emit:C}){const h=e,n=C,m=z(h.searchQuery),B=$(()=>Math.round(h.zoom*100));O(()=>h.searchQuery,v=>{m.value=v});const y=()=>{n("search",m.value.trim())};return(v,t)=>{const P=Z("el-search-input");return a(),r("div",{class:L(["office-preview-header",{"is-title-only":e.titleOnly}])},[e.title?(a(),r("div",{key:0,class:"header-title",title:e.title},c(e.title),9,U)):u("v-if",!0),e.showSearch?(a(),r("div",X,[o(P,{modelValue:m.value,"onUpdate:modelValue":t[0]||(t[0]=s=>m.value=s),class:"search-input",clearable:"",placeholder:"搜索文档内容",panel:!1,"action-tip":"查找",onSearch:y,onChange:y,onClear:t[1]||(t[1]=s=>n("search-clear"))},null,8,["modelValue"]),e.searchTotal>0?(a(),r("span",j,c(e.searchIndex+1)+"/"+c(e.searchTotal),1)):u("v-if",!0),e.searchTotal>0?(a(),r("button",{key:1,class:"toolbar-btn",type:"button",title:"上一处",onClick:t[2]||(t[2]=s=>n("search-prev"))},[o(l(i),null,{default:d(()=>[o(l(F))]),_:1})])):u("v-if",!0),e.searchTotal>0?(a(),r("button",{key:2,class:"toolbar-btn",type:"button",title:"下一处",onClick:t[3]||(t[3]=s=>n("search-next"))},[o(l(i),null,{default:d(()=>[o(l(I))]),_:1})])):u("v-if",!0)])):u("v-if",!0),f("div",p,[e.showPageNav&&e.totalPages>0?(a(),r(g,{key:0},[f("button",{class:"toolbar-btn",type:"button",title:"上一页",disabled:e.currentPage<=1,onClick:t[4]||(t[4]=s=>n("page-prev"))},[o(l(i),null,{default:d(()=>[o(l(D))]),_:1})],8,q),f("span",G,c(e.currentPage)+" / "+c(e.totalPages),1),f("button",{class:"toolbar-btn",type:"button",title:"下一页",disabled:e.currentPage>=e.totalPages,onClick:t[5]||(t[5]=s=>n("page-next"))},[o(l(i),null,{default:d(()=>[o(l(N))]),_:1})],8,J),t[13]||(t[13]=f("span",{class:"toolbar-divider"},null,-1))],64)):u("v-if",!0),e.showZoom?(a(),r(g,{key:1},[f("button",{class:"toolbar-btn",type:"button",title:"缩小",disabled:e.zoom<=e.minZoom,onClick:t[6]||(t[6]=s=>n("zoom-out"))},[o(l(i),null,{default:d(()=>[o(l(R))]),_:1})],8,K),f("span",W,c(B.value)+"%",1),f("button",{class:"toolbar-btn",type:"button",title:"放大",disabled:e.zoom>=e.maxZoom,onClick:t[7]||(t[7]=s=>n("zoom-in"))},[o(l(i),null,{default:d(()=>[o(l(S))]),_:1})],8,Y),f("button",{class:"toolbar-btn",type:"button",title:"重置缩放",onClick:t[8]||(t[8]=s=>n("zoom-reset"))},[o(l(i),null,{default:d(()=>[o(l(T))]),_:1})]),t[14]||(t[14]=f("span",{class:"toolbar-divider"},null,-1))],64)):u("v-if",!0),e.showDownload?(a(),r("button",{key:2,class:"toolbar-btn",type:"button",title:"下载",disabled:e.downloadLoading,onClick:t[9]||(t[9]=s=>n("download"))},[e.downloadLoading?(a(),b(l(i),{key:0,class:"is-loading"},{default:d(()=>[o(l(w))]),_:1})):(a(),b(l(i),{key:1},{default:d(()=>[o(l(V))]),_:1}))],8,_)):u("v-if",!0),e.showRefresh?(a(),r("button",{key:3,class:"toolbar-btn",type:"button",title:"刷新附件",disabled:e.refreshLoading,onClick:t[10]||(t[10]=s=>n("refresh"))},[e.refreshLoading?(a(),b(l(i),{key:0,class:"is-loading"},{default:d(()=>[o(l(w))]),_:1})):(a(),b(l(i),{key:1},{default:d(()=>[o(l(A))]),_:1}))],8,ee)):u("v-if",!0),e.showFullscreen?(a(),r("button",{key:4,class:"toolbar-btn",type:"button",title:e.fullscreen?"退出全屏":"全屏",onClick:t[11]||(t[11]=s=>n("toggle-fullscreen"))},[o(l(i),null,{default:d(()=>[e.fullscreen?(a(),b(l(k),{key:0})):(a(),b(l(M),{key:1}))]),_:1})],8,te)):u("v-if",!0),e.showClose?(a(),r("button",{key:5,class:"toolbar-btn toolbar-btn--close",type:"button",title:"关闭",onClick:t[12]||(t[12]=s=>n("close"))},[o(l(i),null,{default:d(()=>[o(l(k))]),_:1})])):u("v-if",!0)])],2)}}}),ie=H(le,[["__scopeId","data-v-8d56e1cf"]]);export{ie as default};
1
+ import{defineComponent as D,ref as F,computed as p,watch as I,resolveComponent as y,openBlock as a,createElementBlock as r,normalizeClass as N,toDisplayString as c,createCommentVNode as u,createVNode as l,unref as o,withCtx as n,createElementVNode as f,Fragment as C,createBlock as b,createTextVNode as B}from"vue";import{ArrowUp as T,ArrowDown as V,ArrowLeft as E,ArrowRight as R,ZoomOut as S,ZoomIn as A,RefreshRight as M,Loading as w,Download as x,Refresh as Q,Close as P,FullScreen as H}from"@element-plus/icons-vue";import{ElIcon as s}from"element-plus";import{MAX_PDF_ZOOM as U,MIN_OFFICE_ZOOM as X}from"../../utils/officePreviewUtil.js";import{_ as j}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";const q=["title"],G={key:1,class:"header-search"},J={key:0,class:"search-count"},K={class:"header-actions"},W=["disabled"],Y={class:"page-label"},_=["disabled"],ee=["disabled"],te={class:"zoom-label"},oe=["disabled"],le=["disabled"],ae=["disabled"],ne=["disabled"],de=["title"],se=D({__name:"OfficePreviewHeaderBar",props:{title:{default:""},titleOnly:{type:Boolean,default:!1},zoom:{default:1},currentPage:{default:1},totalPages:{default:0},searchQuery:{default:""},searchIndex:{default:-1},searchTotal:{default:0},showSearch:{type:Boolean,default:!0},showPageNav:{type:Boolean,default:!0},showZoom:{type:Boolean,default:!0},showDownload:{type:Boolean,default:!1},pdfExport:{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},minZoom:{default:X},maxZoom:{default:U}},emits:["zoom-in","zoom-out","zoom-reset","download","refresh","toggle-fullscreen","close","page-prev","page-next","search","search-clear","search-prev","search-next"],setup(e,{emit:z}){const v=e,i=z,m=F(v.searchQuery),$=p(()=>Math.round(v.zoom*100));I(()=>v.searchQuery,g=>{m.value=g});const h=()=>{i("search",m.value.trim())};return(g,t)=>{const L=y("el-search-input"),k=y("el-dropdown-item"),O=y("el-dropdown-menu"),Z=y("el-dropdown");return a(),r("div",{class:N(["office-preview-header",{"is-title-only":e.titleOnly}])},[e.title?(a(),r("div",{key:0,class:"header-title",title:e.title},c(e.title),9,q)):u("v-if",!0),e.showSearch?(a(),r("div",G,[l(L,{modelValue:m.value,"onUpdate:modelValue":t[0]||(t[0]=d=>m.value=d),class:"search-input",clearable:"",placeholder:"搜索文档内容",panel:!1,"action-tip":"查找",onSearch:h,onChange:h,onClear:t[1]||(t[1]=d=>i("search-clear"))},null,8,["modelValue"]),e.searchTotal>0?(a(),r("span",J,c(e.searchIndex+1)+"/"+c(e.searchTotal),1)):u("v-if",!0),e.searchTotal>0?(a(),r("button",{key:1,class:"toolbar-btn",type:"button",title:"上一处",onClick:t[2]||(t[2]=d=>i("search-prev"))},[l(o(s),null,{default:n(()=>[l(o(T))]),_:1})])):u("v-if",!0),e.searchTotal>0?(a(),r("button",{key:2,class:"toolbar-btn",type:"button",title:"下一处",onClick:t[3]||(t[3]=d=>i("search-next"))},[l(o(s),null,{default:n(()=>[l(o(V))]),_:1})])):u("v-if",!0)])):u("v-if",!0),f("div",K,[e.showPageNav&&e.totalPages>0?(a(),r(C,{key:0},[f("button",{class:"toolbar-btn",type:"button",title:"上一页",disabled:e.currentPage<=1,onClick:t[4]||(t[4]=d=>i("page-prev"))},[l(o(s),null,{default:n(()=>[l(o(E))]),_:1})],8,W),f("span",Y,c(e.currentPage)+" / "+c(e.totalPages),1),f("button",{class:"toolbar-btn",type:"button",title:"下一页",disabled:e.currentPage>=e.totalPages,onClick:t[5]||(t[5]=d=>i("page-next"))},[l(o(s),null,{default:n(()=>[l(o(R))]),_:1})],8,_),t[14]||(t[14]=f("span",{class:"toolbar-divider"},null,-1))],64)):u("v-if",!0),e.showZoom?(a(),r(C,{key:1},[f("button",{class:"toolbar-btn",type:"button",title:"缩小",disabled:e.zoom<=e.minZoom,onClick:t[6]||(t[6]=d=>i("zoom-out"))},[l(o(s),null,{default:n(()=>[l(o(S))]),_:1})],8,ee),f("span",te,c($.value)+"%",1),f("button",{class:"toolbar-btn",type:"button",title:"放大",disabled:e.zoom>=e.maxZoom,onClick:t[7]||(t[7]=d=>i("zoom-in"))},[l(o(s),null,{default:n(()=>[l(o(A))]),_:1})],8,oe),f("button",{class:"toolbar-btn",type:"button",title:"重置缩放",onClick:t[8]||(t[8]=d=>i("zoom-reset"))},[l(o(s),null,{default:n(()=>[l(o(M))]),_:1})]),t[15]||(t[15]=f("span",{class:"toolbar-divider"},null,-1))],64)):u("v-if",!0),e.showDownload&&e.pdfExport?(a(),b(Z,{key:2,trigger:"click",disabled:e.downloadLoading,onCommand:t[9]||(t[9]=d=>i("download",d))},{dropdown:n(()=>[l(O,null,{default:n(()=>[l(k,{command:"original"},{default:n(()=>[...t[16]||(t[16]=[B("下载原始文件",-1)])]),_:1}),l(k,{command:"pdf"},{default:n(()=>[...t[17]||(t[17]=[B("下载 PDF",-1)])]),_:1})]),_:1})]),default:n(()=>[f("button",{class:"toolbar-btn",type:"button",title:"下载",disabled:e.downloadLoading},[e.downloadLoading?(a(),b(o(s),{key:0,class:"is-loading"},{default:n(()=>[l(o(w))]),_:1})):(a(),b(o(s),{key:1},{default:n(()=>[l(o(x))]),_:1}))],8,le)]),_:1},8,["disabled"])):e.showDownload?(a(),r("button",{key:3,class:"toolbar-btn",type:"button",title:"下载",disabled:e.downloadLoading,onClick:t[10]||(t[10]=d=>i("download","original"))},[e.downloadLoading?(a(),b(o(s),{key:0,class:"is-loading"},{default:n(()=>[l(o(w))]),_:1})):(a(),b(o(s),{key:1},{default:n(()=>[l(o(x))]),_:1}))],8,ae)):u("v-if",!0),e.showRefresh?(a(),r("button",{key:4,class:"toolbar-btn",type:"button",title:"刷新附件",disabled:e.refreshLoading,onClick:t[11]||(t[11]=d=>i("refresh"))},[e.refreshLoading?(a(),b(o(s),{key:0,class:"is-loading"},{default:n(()=>[l(o(w))]),_:1})):(a(),b(o(s),{key:1},{default:n(()=>[l(o(Q))]),_:1}))],8,ne)):u("v-if",!0),e.showFullscreen?(a(),r("button",{key:5,class:"toolbar-btn",type:"button",title:e.fullscreen?"退出全屏":"全屏",onClick:t[12]||(t[12]=d=>i("toggle-fullscreen"))},[l(o(s),null,{default:n(()=>[e.fullscreen?(a(),b(o(P),{key:0})):(a(),b(o(H),{key:1}))]),_:1})],8,de)):u("v-if",!0),e.showClose?(a(),r("button",{key:6,class:"toolbar-btn toolbar-btn--close",type:"button",title:"关闭",onClick:t[13]||(t[13]=d=>i("close"))},[l(o(s),null,{default:n(()=>[l(o(P))]),_:1})])):u("v-if",!0)])],2)}}}),ce=j(se,[["__scopeId","data-v-befd4ab6"]]);export{ce as default};
@@ -1 +1 @@
1
- import{defineComponent as Q,ref as g,useModel as X,computed as Y,onMounted as Z,watch as _,resolveComponent as M,openBlock as l,createElementBlock as F,createVNode as ee,withCtx as u,renderSlot as S,createBlock as f,createTextVNode as m,toDisplayString as v,createCommentVNode as d,unref as te,Fragment as ae,mergeModels as $}from"vue";import w from"../../api/workflow/workflowInstApi.js";import oe from"./components/SelectAssigneeDialog.vue.js";import{_ as re}from"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-Buyy5IIG.js";import ne from"./components/CheckDialog.vue.js";import P from"../../utils/FrameworkUtils.js";import{userInfoStore as k}from"../../stores/userInfoStore.js";import{frontendBus as q}from"../../utils/frontendBus.js";import{showTodoDialog as ie}from"../../hooks/workflowTodo.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"element-plus";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"@element-plus/icons-vue";import"../bpmntree/components/UserSelector/UserTag.vue.js";import"../../../chunks/userSelect.vue_vue_type_script_setup_true_lang-DlEso2ua.js";import"@vueuse/core";import"../business/userSelectContent.vue.js";import"../../api/BasicApi.js";import"../../api/SysUserApi.js";import"xlsx-js-style";import"../upload/CustomElUpload.vue.js";import"../../hooks/useFileView.js";import"../../api/DocumentApi.js";import"../../hooks/useDeleteConfirmHooks.js";import"../../hooks/useBehaviorAction.js";import"../../utils/uploadAccept.js";import"../../utils/buildUploadHeaders.js";import"pinia";import"../../utils/userSessionStorage.js";import"../../hooks/usePermissionHooks.js";import"vue-router";import"../../stores/permissionStore.js";import"../../utils/routeMetaParams.js";import"../../hooks/useOpenNewMenu.js";import"../../utils/commonUtils.js";import"../../utils/tree.js";const le=Q({__name:"TaskOperation",props:$({taskId:{type:String,required:!1},showProcessBtn:{type:Boolean,required:!1,default:!1},params:{type:Object,required:!1},taskInfo:{type:Object,required:!1},showOperationsBtn:{type:Boolean,required:!1,default:!0},showCurWorkBth:{type:Boolean,required:!1,default:!0},onProcessDetail:{type:Function,required:!1},renderDialog:{type:Function,required:!1}},{butLoading:{type:Boolean,default:!1},butLoadingModifiers:{}}),emits:$(["success"],["update:butLoading"]),setup(o,{expose:L,emit:h}){const A=k(),B=g(null),n=o,i=X(o,"butLoading"),T=h,e=g({taskId:"",comment:""}),b=n.renderDialog,y=(t,a,r,x,p,J)=>{if(!b){console.warn("[TaskOperation] 未注入 renderDialog,无法打开操作弹窗(请通过 props 传入 useDialogHooks 的 render)");return}b(t,a,r,x,p,J)},E=()=>{typeof n.onProcessDetail=="function"&&n.onProcessDetail(e.value)},I=Y(()=>e.value?.operations==="assignee"),N=g(""),R=g([{source:"edit"}]),U=async()=>{await ie(g(e.value),R)},c=async t=>{if(t&&(N.value=t),!e.value)return;let a=!1;if(t==="complete"&&n.params?.beforeCompleteFunction)try{const r=await n.params?.beforeCompleteFunction({taskId:e.value.taskId,userId:k().getUserInfo.userCode,comment:"同意。",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey});if(r===!1)return;r?.readonly&&(a=!0),e.value={...e.value,...r}}catch{return}if(t==="addMulti"||t==="minusMulti")y(re,{taskId:e.value.taskId,dialogType:t},{title:t==="addMulti"?"加签":"减签",size:"400px"},"dialog");else if(t==="assignee")D(e.value.taskId);else{if(e.value.variables,t==="complete"&&e.value.firstSubmitNode&&n.params?.ignoreConfirm){await V();return}y(ne,{taskVo:e.value,dialogType:t,taskOperate:n?.params,commentReadonly:a,onOpenAssignee:D,onSuccess:z},{title:K(t),size:"480px",closeOnClickModal:!1},"dialog")}},K=t=>{switch(t){case"complete":return"流程审批";case"refuse":return"终止审批";case"back":return"退回审批";case"transfer":return"转办审批";default:return"流程审批"}},V=async()=>{if(!(!e.value||!k().getUserInfo.userCode))try{i.value=!0;const t={taskId:e.value.taskId,userId:k().getUserInfo.userCode,comment:e.value.comment??"",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey,variables:e.value.variables};if(n.params?.completeFunction){const a=await n.params?.completeFunction(t);a&&a?.taskId?e.value=a:e.value=await w.getTaskInst(e.value.taskId)}else e.value=await w.taskComplete(t)}catch(t){P.messageError(t)}finally{i.value=!1}},j=()=>{n.params?.workflowComplete(),T("success")},D=t=>{y(oe,{taskId:t,onSuccess:j},{title:"指定执行人",size:"450px"},"dialog")},z=t=>{e.value=t,n.params?.workflowComplete(t),q.emit("todoRefresh"),q.emit("homePageRefresh"),T("success")},O=(t,a)=>t?t.classList?.contains(a)?t:O(t.parentElement,a):null,W=()=>{const t=O(B.value,"todo-dialog-class");return t?console.log("找到满足条件的元素:",t):console.log("未找到满足条件的元素"),t};Z(()=>{W(),C()});const s=g(!1),H=async()=>{s.value=!0},G=()=>{s.value=!1},C=async()=>{if(n.taskInfo)e.value=n.taskInfo,e.value.finishTime&&console.log("该待办已完成!");else if(n.taskId)try{H(),e.value=await w.getTaskInst(n.taskId),e.value.finishTime&&console.log("该待办已完成!")}catch(t){P.messageError(t)}finally{G()}};return L({reload:()=>{C()}}),_(()=>n.taskId,C),(t,a)=>{const r=M("el-button"),x=M("el-flex");return l(),F("div",{ref_key:"taskFlexRef",ref:B,class:"task-operation"},[ee(x,{align:"center",justify:"flex-end"},{default:u(()=>[S(t.$slots,"left",{},void 0,!0),o.params?.cancelBtnText!==""?(l(),f(r,{key:0,loading:i.value||s.value,onClick:o.params?.cancelFunction},{default:u(()=>[m(v(o.params?.cancelBtnText??"取消"),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),o.showProcessBtn&&e.value?.procInsId?(l(),f(r,{key:1,type:"info",loading:i.value||s.value,onClick:E},{default:u(()=>[...a[7]||(a[7]=[m(" 流程信息 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!I.value&&e.value?.taskId&&o.showCurWorkBth&&!o.showOperationsBtn?(l(),f(r,{key:2,loading:i.value||s.value,type:"warning",disabled:e.value?.taskId&&(!e.value?.operations||te(A).getUserInfo.userCode!==e.value?.assigneeId),onClick:U},{default:u(()=>[m(v(e.value.taskName),1)]),_:1},8,["loading","disabled"])):d("v-if",!0),I.value?(l(),f(r,{key:3,type:"primary",loading:i.value||s.value,onClick:a[0]||(a[0]=p=>c("assignee"))},{default:u(()=>[...a[8]||(a[8]=[m("指定执行人 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!I.value&&e.value?.taskId&&e.value?.operations&&o.showOperationsBtn?(l(),F(ae,{key:4},[o.params?.saveBtnText?(l(),f(r,{key:0,loading:i.value||s.value,type:"primary",onClick:o.params?.saveFunction},{default:u(()=>[m(v(o.params?.saveBtnText),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),e.value?.operations.indexOf("addMulti")>-1?(l(),f(r,{key:1,type:"warning",loading:i.value||s.value,onClick:a[1]||(a[1]=p=>c("addMulti"))},{default:u(()=>[...a[9]||(a[9]=[m("加签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("minusMulti")>-1?(l(),f(r,{key:2,type:"danger",loading:i.value||s.value,onClick:a[2]||(a[2]=p=>c("minusMulti"))},{default:u(()=>[...a[10]||(a[10]=[m("减签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("refuse")>-1&&o.params?.refuseBtnText!==""?(l(),f(r,{key:3,loading:i.value||s.value,type:"danger",onClick:a[3]||(a[3]=p=>c("refuse"))},{default:u(()=>[m(v(o.params?.refuseBtnText??"终止"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("transfer")>-1&&o.params?.transferBtnText!==""?(l(),f(r,{key:4,loading:i.value||s.value,type:"warning",onClick:a[4]||(a[4]=p=>c("transfer"))},{default:u(()=>[m(v(o.params?.transferBtnText??"转办"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("back")>-1&&o.params?.backBtnText!==""?(l(),f(r,{key:5,loading:i.value||s.value,type:"danger",onClick:a[5]||(a[5]=p=>c("back"))},{default:u(()=>[m(v(o.params?.backBtnText??"驳回"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("complete")>-1&&o.params?.completeBtnText!==""?(l(),f(r,{key:6,loading:i.value||s.value,type:"primary",onClick:a[6]||(a[6]=p=>c("complete"))},{default:u(()=>[m(v(o.params?.completeBtnText??"同意"),1)]),_:1},8,["loading"])):d("v-if",!0)],64)):d("v-if",!0),S(t.$slots,"right",{},void 0,!0)]),_:3})],512)}}}),it=se(le,[["__scopeId","data-v-08c0f430"]]);export{it as default};
1
+ import{defineComponent as Q,ref as g,useModel as X,computed as Y,onMounted as Z,watch as _,resolveComponent as M,openBlock as l,createElementBlock as F,createVNode as ee,withCtx as u,renderSlot as S,createBlock as f,createTextVNode as m,toDisplayString as v,createCommentVNode as d,unref as te,Fragment as ae,mergeModels as $}from"vue";import w from"../../api/workflow/workflowInstApi.js";import oe from"./components/SelectAssigneeDialog.vue.js";import{_ as re}from"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-Buyy5IIG.js";import ne from"./components/CheckDialog.vue.js";import P from"../../utils/FrameworkUtils.js";import{userInfoStore as k}from"../../stores/userInfoStore.js";import{frontendBus as q}from"../../utils/frontendBus.js";import{showTodoDialog as ie}from"../../hooks/workflowTodo.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"element-plus";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"@element-plus/icons-vue";import"../bpmntree/components/UserSelector/UserTag.vue.js";import"../../../chunks/userSelect.vue_vue_type_script_setup_true_lang-DlEso2ua.js";import"@vueuse/core";import"../business/userSelectContent.vue.js";import"../../api/BasicApi.js";import"../../api/SysUserApi.js";import"xlsx-js-style";import"../upload/CustomElUpload.vue.js";import"../../hooks/useFileView.js";import"../../api/DocumentApi.js";import"../../hooks/useDeleteConfirmHooks.js";import"../../hooks/useBehaviorAction.js";import"../../utils/uploadAccept.js";import"../../utils/buildUploadHeaders.js";import"pinia";import"../../utils/userSessionStorage.js";import"../../hooks/usePermissionHooks.js";import"vue-router";import"../../stores/permissionStore.js";import"../../utils/operationAuth.js";import"../../utils/routeMetaParams.js";import"../../hooks/useOpenNewMenu.js";import"../../utils/commonUtils.js";import"../../utils/tree.js";const le=Q({__name:"TaskOperation",props:$({taskId:{type:String,required:!1},showProcessBtn:{type:Boolean,required:!1,default:!1},params:{type:Object,required:!1},taskInfo:{type:Object,required:!1},showOperationsBtn:{type:Boolean,required:!1,default:!0},showCurWorkBth:{type:Boolean,required:!1,default:!0},onProcessDetail:{type:Function,required:!1},renderDialog:{type:Function,required:!1}},{butLoading:{type:Boolean,default:!1},butLoadingModifiers:{}}),emits:$(["success"],["update:butLoading"]),setup(o,{expose:L,emit:h}){const A=k(),B=g(null),n=o,i=X(o,"butLoading"),T=h,e=g({taskId:"",comment:""}),b=n.renderDialog,y=(t,a,r,x,p,J)=>{if(!b){console.warn("[TaskOperation] 未注入 renderDialog,无法打开操作弹窗(请通过 props 传入 useDialogHooks 的 render)");return}b(t,a,r,x,p,J)},E=()=>{typeof n.onProcessDetail=="function"&&n.onProcessDetail(e.value)},I=Y(()=>e.value?.operations==="assignee"),N=g(""),R=g([{source:"edit"}]),U=async()=>{await ie(g(e.value),R)},c=async t=>{if(t&&(N.value=t),!e.value)return;let a=!1;if(t==="complete"&&n.params?.beforeCompleteFunction)try{const r=await n.params?.beforeCompleteFunction({taskId:e.value.taskId,userId:k().getUserInfo.userCode,comment:"同意。",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey});if(r===!1)return;r?.readonly&&(a=!0),e.value={...e.value,...r}}catch{return}if(t==="addMulti"||t==="minusMulti")y(re,{taskId:e.value.taskId,dialogType:t},{title:t==="addMulti"?"加签":"减签",size:"400px"},"dialog");else if(t==="assignee")D(e.value.taskId);else{if(e.value.variables,t==="complete"&&e.value.firstSubmitNode&&n.params?.ignoreConfirm){await V();return}y(ne,{taskVo:e.value,dialogType:t,taskOperate:n?.params,commentReadonly:a,onOpenAssignee:D,onSuccess:z},{title:K(t),size:"480px",closeOnClickModal:!1},"dialog")}},K=t=>{switch(t){case"complete":return"流程审批";case"refuse":return"终止审批";case"back":return"退回审批";case"transfer":return"转办审批";default:return"流程审批"}},V=async()=>{if(!(!e.value||!k().getUserInfo.userCode))try{i.value=!0;const t={taskId:e.value.taskId,userId:k().getUserInfo.userCode,comment:e.value.comment??"",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey,variables:e.value.variables};if(n.params?.completeFunction){const a=await n.params?.completeFunction(t);a&&a?.taskId?e.value=a:e.value=await w.getTaskInst(e.value.taskId)}else e.value=await w.taskComplete(t)}catch(t){P.messageError(t)}finally{i.value=!1}},j=()=>{n.params?.workflowComplete(),T("success")},D=t=>{y(oe,{taskId:t,onSuccess:j},{title:"指定执行人",size:"450px"},"dialog")},z=t=>{e.value=t,n.params?.workflowComplete(t),q.emit("todoRefresh"),q.emit("homePageRefresh"),T("success")},O=(t,a)=>t?t.classList?.contains(a)?t:O(t.parentElement,a):null,W=()=>{const t=O(B.value,"todo-dialog-class");return t?console.log("找到满足条件的元素:",t):console.log("未找到满足条件的元素"),t};Z(()=>{W(),C()});const s=g(!1),H=async()=>{s.value=!0},G=()=>{s.value=!1},C=async()=>{if(n.taskInfo)e.value=n.taskInfo,e.value.finishTime&&console.log("该待办已完成!");else if(n.taskId)try{H(),e.value=await w.getTaskInst(n.taskId),e.value.finishTime&&console.log("该待办已完成!")}catch(t){P.messageError(t)}finally{G()}};return L({reload:()=>{C()}}),_(()=>n.taskId,C),(t,a)=>{const r=M("el-button"),x=M("el-flex");return l(),F("div",{ref_key:"taskFlexRef",ref:B,class:"task-operation"},[ee(x,{align:"center",justify:"flex-end"},{default:u(()=>[S(t.$slots,"left",{},void 0,!0),o.params?.cancelBtnText!==""?(l(),f(r,{key:0,loading:i.value||s.value,onClick:o.params?.cancelFunction},{default:u(()=>[m(v(o.params?.cancelBtnText??"取消"),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),o.showProcessBtn&&e.value?.procInsId?(l(),f(r,{key:1,type:"info",loading:i.value||s.value,onClick:E},{default:u(()=>[...a[7]||(a[7]=[m(" 流程信息 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!I.value&&e.value?.taskId&&o.showCurWorkBth&&!o.showOperationsBtn?(l(),f(r,{key:2,loading:i.value||s.value,type:"warning",disabled:e.value?.taskId&&(!e.value?.operations||te(A).getUserInfo.userCode!==e.value?.assigneeId),onClick:U},{default:u(()=>[m(v(e.value.taskName),1)]),_:1},8,["loading","disabled"])):d("v-if",!0),I.value?(l(),f(r,{key:3,type:"primary",loading:i.value||s.value,onClick:a[0]||(a[0]=p=>c("assignee"))},{default:u(()=>[...a[8]||(a[8]=[m("指定执行人 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!I.value&&e.value?.taskId&&e.value?.operations&&o.showOperationsBtn?(l(),F(ae,{key:4},[o.params?.saveBtnText?(l(),f(r,{key:0,loading:i.value||s.value,type:"primary",onClick:o.params?.saveFunction},{default:u(()=>[m(v(o.params?.saveBtnText),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),e.value?.operations.indexOf("addMulti")>-1?(l(),f(r,{key:1,type:"warning",loading:i.value||s.value,onClick:a[1]||(a[1]=p=>c("addMulti"))},{default:u(()=>[...a[9]||(a[9]=[m("加签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("minusMulti")>-1?(l(),f(r,{key:2,type:"danger",loading:i.value||s.value,onClick:a[2]||(a[2]=p=>c("minusMulti"))},{default:u(()=>[...a[10]||(a[10]=[m("减签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("refuse")>-1&&o.params?.refuseBtnText!==""?(l(),f(r,{key:3,loading:i.value||s.value,type:"danger",onClick:a[3]||(a[3]=p=>c("refuse"))},{default:u(()=>[m(v(o.params?.refuseBtnText??"终止"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("transfer")>-1&&o.params?.transferBtnText!==""?(l(),f(r,{key:4,loading:i.value||s.value,type:"warning",onClick:a[4]||(a[4]=p=>c("transfer"))},{default:u(()=>[m(v(o.params?.transferBtnText??"转办"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("back")>-1&&o.params?.backBtnText!==""?(l(),f(r,{key:5,loading:i.value||s.value,type:"danger",onClick:a[5]||(a[5]=p=>c("back"))},{default:u(()=>[m(v(o.params?.backBtnText??"驳回"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("complete")>-1&&o.params?.completeBtnText!==""?(l(),f(r,{key:6,loading:i.value||s.value,type:"primary",onClick:a[6]||(a[6]=p=>c("complete"))},{default:u(()=>[m(v(o.params?.completeBtnText??"同意"),1)]),_:1},8,["loading"])):d("v-if",!0)],64)):d("v-if",!0),S(t.$slots,"right",{},void 0,!0)]),_:3})],512)}}}),st=se(le,[["__scopeId","data-v-08c0f430"]]);export{st as default};