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.
- package/dist/chunks/operationAuth.vue_vue_type_script_lang-BgqMGXbQ.js +1 -0
- package/dist/src/api/DocumentApi.d.ts +5 -2
- package/dist/src/api/DocumentApi.js +1 -1
- package/dist/src/components/AsideCardList/AsideCardList.vue.js +1 -1
- package/dist/src/components/ElGrid/ElGridColumnSetting.vue.js +1 -1
- package/dist/src/components/OperationAuth/operationAuth.vue.js +1 -1
- package/dist/src/components/upload/AttachmentPreview.vue.d.ts +78 -0
- package/dist/src/components/upload/AttachmentPreview.vue.js +1 -0
- package/dist/src/components/upload/CustomElUpload.vue.d.ts +2 -2
- package/dist/src/components/upload/CustomElUpload.vue.js +1 -1
- package/dist/src/components/upload/FileView.vue.d.ts +2 -2
- package/dist/src/components/upload/FileView.vue.js +1 -1
- package/dist/src/components/upload/FileViewComponents.vue.js +1 -1
- package/dist/src/components/upload/OfficePreview.vue.d.ts +6 -2
- package/dist/src/components/upload/OfficePreview.vue.js +2 -2
- package/dist/src/components/upload/OfficePreviewHeaderBar.vue.d.ts +5 -2
- package/dist/src/components/upload/OfficePreviewHeaderBar.vue.js +1 -1
- package/dist/src/components/workflow/TaskOperation.vue.js +1 -1
- package/dist/src/components/workflow/WorkflowTodoShell.vue.js +2 -2
- package/dist/src/hooks/createDialogHooks.js +18 -3
- package/dist/src/hooks/useFileOpen.d.ts +14 -0
- package/dist/src/hooks/useFileOpen.js +1 -0
- package/dist/src/hooks/useOpenNewMenu.js +1 -1
- package/dist/src/hooks/useOperationAuth.d.ts +15 -0
- package/dist/src/hooks/useOperationAuth.js +1 -0
- package/dist/src/hooks/usePermissionHooks.js +1 -1
- package/dist/src/hooks/usePermissionToolHooks.d.ts +1 -1
- package/dist/src/hooks/usePermissionToolHooks.js +1 -1
- package/dist/src/hooks/usePreviewFullscreen.d.ts +25 -0
- package/dist/src/hooks/usePreviewFullscreen.js +1 -0
- package/dist/src/hooks/workflowTodo.js +1 -1
- package/dist/src/mixin/globalMixin.js +1 -1
- package/dist/src/packages/index.d.ts +5 -0
- package/dist/src/packages/index.js +1 -1
- package/dist/src/plugins/plugins.js +1 -1
- package/dist/src/plugins/renderDialog.js +1 -1
- package/dist/src/stores/permissionStore.d.ts +9 -2
- package/dist/src/stores/permissionStore.js +1 -1
- package/dist/src/utils/fileDownload.d.ts +9 -0
- package/dist/src/utils/fileDownload.js +1 -0
- package/dist/src/utils/modules.js +2 -2
- package/dist/src/utils/officePreviewUtil.d.ts +7 -0
- package/dist/src/utils/officePreviewUtil.js +1 -1
- package/dist/src/utils/operationAuth.d.ts +43 -0
- package/dist/src/utils/operationAuth.js +1 -0
- package/dist/src/utils/uploadAccept.js +1 -1
- package/dist/styles/element-ui.css +1 -1
- package/package.json +1 -1
- 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
|
-
|
|
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(
|
|
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-
|
|
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-
|
|
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-
|
|
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},
|
|
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
|
|
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
|
|
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
|
|
2
|
-
切换时淡出过渡,避免 spinner 相位/进度条状态差异造成的跳动 `),
|
|
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
|
|
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)}}}),
|
|
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};
|