adtec-hnyzfc-core-package 1.2.8 → 1.3.0

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.
@@ -1 +1 @@
1
- import{defineComponent as W,useModel as q,ref as p,reactive as H,resolveComponent as r,resolveDirective as j,withDirectives as G,openBlock as _,createBlock as b,withCtx as n,createVNode as s,unref as k,createTextVNode as h,toDisplayString as y,mergeProps as J,createElementBlock as K,Fragment as X,renderList as Y,mergeModels as z,nextTick as Z}from"vue";import{ElMessage as $}from"element-plus";import ee from"../../hooks/useDictHooks.js";import te from"./api/DataIndicatorsApi.js";import f from"../../utils/FrameworkUtils.js";import{checkboxColumn as oe}from"../../config/vxeSelectColumn.js";import{_ as le}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../api/SysDictCacheApi.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";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/frontendBus.js";import"../../stores/dictStore.js";import"pinia";import"../../stores/userInfoStore.js";import"../../utils/userSessionStorage.js";import"xlsx-js-style";const ae=W({__name:"SelectInDicators",props:z({confirmCallback:{type:Function}},{loading:{type:Boolean,default:!1},loadingModifiers:{}}),emits:z(["success"],["update:loading"]),setup(x,{expose:D,emit:I}){const u=q(x,"loading"),S=x,V=I,{getDictTypeData:L,getDictName:P}=ee(["ComIndexType"]),m=p(),d=p(),a=p([]),t=p({types:[],name:"",isValid:1,isDetails:1,size:f.getPageSize(),current:1}),E=H({border:!0,height:"100%",columnConfig:{resizable:!1},checkboxConfig:{highlight:!0,range:!1},columns:[oe,{field:"code",title:"指标编码",width:140,showOverflow:!0},{field:"name",title:"指标名称",minWidth:160,showOverflow:!0},{field:"attriList",title:"指标名称(特性)",minWidth:220,showOverflow:!0,slots:{default:"attriList"}},{field:"type",title:"类型标签",width:120,showOverflow:!0,slots:{default:"type"}}]}),g=async()=>{u.value=!0;try{d.value=await te.getPageComIndex(t.value),await Z(),a.value.forEach(i=>{const e=d.value?.records.find(o=>o.id===i.id);e&&m.value?.setCheckboxRow(e,!0)})}catch(i){f.messageError(i)}finally{u.value=!1}},R=async()=>{t.value.current=1,await g()},w=async()=>{t.value={types:[],name:"",isValid:1,isDetails:1,size:f.getPageSize(),current:1},await g()},C=()=>{const i=m.value?.getCheckboxRecords()??[],e=new Set(d.value?.records.map(o=>o.id)??[]);a.value=a.value.filter(o=>!e.has(o.id)||i.some(c=>c.id===o.id)),i.forEach(o=>{a.value.some(c=>c.id===o.id)||a.value.push(o)})};return D({confirm:async(i=!0)=>{if(!a.value.length)return $.warning("请选择指标"),!1;u.value=!0;try{return await S.confirmCallback(a.value)?(V("success"),i||(a.value=[],m.value?.clearCheckboxRow()),!0):!1}catch(e){return f.messageError(e),!1}finally{u.value=!1}},resetQuery:async()=>{a.value=[],await w()}}),(i,e)=>{const o=r("el-tree-select"),c=r("el-form-item"),T=r("el-input"),O=r("el-form"),U=r("el-search"),B=r("el-text"),M=r("el-title"),N=r("el-tag-display"),Q=r("el-grid"),A=r("el-flex"),F=j("loading");return G((_(),b(A,{vertical:!0,class:"dialog-content-fill indicator-selector"},{default:n(()=>[s(U,{onSearch:R,onReset:w},{default:n(()=>[s(O,{inline:!0,model:t.value,"label-position":"top",size:"default"},{default:n(()=>[s(c,{label:"指标类型"},{default:n(()=>[s(o,{modelValue:t.value.types,"onUpdate:modelValue":e[0]||(e[0]=l=>t.value.types=l),data:k(L)("ComIndexType"),"default-expand-all":!0,props:{label:"label",children:"children"},"render-after-expand":!1,"check-strictly":"",clearable:"","collapse-tags":"","collapse-tags-tooltip":"",multiple:"","node-key":"value",placeholder:"请选择指标类型"},null,8,["modelValue","data"])]),_:1}),s(c,{label:"关键字"},{default:n(()=>[s(T,{modelValue:t.value.name,"onUpdate:modelValue":e[1]||(e[1]=l=>t.value.name=l),clearable:"",placeholder:"请输入指标编码或名称"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1}),s(M,{title:"指标列表",level:"1",style:{"border-bottom":"var(--border)"}},{default:n(()=>[s(B,null,{default:n(()=>[h("已选 "+y(a.value.length)+" 项",1)]),_:1})]),_:1}),s(Q,J({ref_key:"gridRef",ref:m},E,{data:d.value?.records??[],total:d.value?.total??0,pagination:"","current-page":t.value.current,"onUpdate:currentPage":e[2]||(e[2]=l=>t.value.current=l),"page-size":t.value.size,"onUpdate:pageSize":e[3]||(e[3]=l=>t.value.size=l),onCheckboxAll:C,onCheckboxChange:C,onCurrentChange:g}),{attriList:n(({row:l})=>[(_(!0),K(X,null,Y(l.attriList,v=>(_(),b(N,{key:v.id||v.attriCd},{default:n(()=>[h(y(v.attriName),1)]),_:2},1024))),128))]),type:n(({row:l})=>[h(y(k(P)(l.type,"ComIndexType")||"—"),1)]),_:1},16,["data","total","current-page","page-size"])]),_:1})),[[F,u.value]])}}}),Pe=le(ae,[["__scopeId","data-v-5a06f351"]]);export{Pe as default};
1
+ import{defineComponent as J,useModel as K,ref as _,reactive as X,resolveComponent as i,resolveDirective as Y,withDirectives as Z,openBlock as u,createBlock as w,withCtx as a,createVNode as s,unref as D,createTextVNode as p,toDisplayString as g,createElementBlock as x,createElementVNode as ee,Fragment as I,renderList as S,createCommentVNode as te,mergeProps as oe,mergeModels as R,nextTick as le}from"vue";import{ElMessage as ae}from"element-plus";import re from"../../hooks/useDictHooks.js";import ne from"./api/DataIndicatorsApi.js";import h from"../../utils/FrameworkUtils.js";import{checkboxColumn as ie}from"../../config/vxeSelectColumn.js";import{_ as se}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../api/SysDictCacheApi.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";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/frontendBus.js";import"../../stores/dictStore.js";import"pinia";import"../../stores/userInfoStore.js";import"../../utils/userSessionStorage.js";import"xlsx-js-style";const ce={key:0,class:"selection-preview"},de={class:"selection-preview__content"},ue=J({__name:"SelectInDicators",props:R({confirmCallback:{type:Function}},{loading:{type:Boolean,default:!1},loadingModifiers:{}}),emits:R(["success"],["update:loading"]),setup(C,{expose:E,emit:L}){const m=K(C,"loading"),P=C,T=L,{getDictTypeData:N,getDictName:O}=re(["ComIndexType"]),f=_(),d=_(),o=_([]),n=_({types:[],name:"",isValid:1,isDetails:1,size:h.getPageSize(),current:1}),U=X({border:!0,height:"100%",columnConfig:{resizable:!1},checkboxConfig:{highlight:!1,range:!1},columns:[ie,{field:"code",title:"指标编码",width:140,showOverflow:!0},{field:"name",title:"指标名称",minWidth:160,showOverflow:!0},{field:"attriList",title:"指标名称(特性)",minWidth:220,showOverflow:!0,slots:{default:"attriList"}},{field:"type",title:"类型标签",width:120,showOverflow:!0,slots:{default:"type"}}]}),y=async()=>{m.value=!0;try{d.value=await ne.getPageComIndex(n.value),await le(),o.value.forEach(r=>{const e=d.value?.records.find(l=>l.id===r.id);e&&f.value?.setCheckboxRow(e,!0)})}catch(r){h.messageError(r)}finally{m.value=!1}},B=async()=>{n.value.current=1,await y()},b=async()=>{n.value={types:[],name:"",isValid:1,isDetails:1,size:h.getPageSize(),current:1},await y()},k=()=>{const r=f.value?.getCheckboxRecords()??[],e=new Set(d.value?.records.map(l=>l.id)??[]);o.value=o.value.filter(l=>!e.has(l.id)||r.some(c=>c.id===l.id)),r.forEach(l=>{o.value.some(c=>c.id===l.id)||o.value.push(l)})},M=r=>{const e=c=>r.id?c.id===r.id:c.code===r.code;o.value=o.value.filter(c=>!e(c));const l=d.value?.records.find(e);l&&f.value?.setCheckboxRow(l,!1)};return E({confirm:async(r=!0)=>{if(!o.value.length)return ae.warning("请选择指标"),!1;m.value=!0;try{return await P.confirmCallback(o.value)?(T("success"),r||(o.value=[],f.value?.clearCheckboxRow()),!0):!1}catch(e){return h.messageError(e),!1}finally{m.value=!1}},resetQuery:async()=>{o.value=[],await b()}}),(r,e)=>{const l=i("el-tree-select"),c=i("el-form-item"),Q=i("el-input"),$=i("el-form"),A=i("el-search"),V=i("el-text"),F=i("el-title"),W=i("el-tooltip"),z=i("el-tag-display"),q=i("el-scrollbar"),H=i("el-grid"),j=i("el-content-panel"),G=Y("loading");return Z((u(),w(j,{padding:!1,class:"dialog-content-fill"},{default:a(()=>[s(A,{onSearch:B,onReset:b},{default:a(()=>[s($,{inline:!0,model:n.value,style:{width:"100%"},"label-position":"top",size:"default"},{default:a(()=>[s(c,{style:{width:"220px"},label:"指标类型"},{default:a(()=>[s(l,{modelValue:n.value.types,"onUpdate:modelValue":e[0]||(e[0]=t=>n.value.types=t),data:D(N)("ComIndexType"),"default-expand-all":!0,props:{label:"label",children:"children"},"render-after-expand":!1,"check-strictly":"",clearable:"","collapse-tags":"","collapse-tags-tooltip":"",multiple:"","node-key":"value",placeholder:"请选择指标类型"},null,8,["modelValue","data"])]),_:1}),s(c,{style:{width:"220px"},label:"关键字"},{default:a(()=>[s(Q,{modelValue:n.value.name,"onUpdate:modelValue":e[1]||(e[1]=t=>n.value.name=t),clearable:"",placeholder:"请输入指标编码或名称"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1}),s(F,{title:"指标列表",level:"1",style:{"border-bottom":"var(--border)"}},{default:a(()=>[s(V,{class:"selection-count"},{default:a(()=>[e[4]||(e[4]=p(" 已选 ",-1)),s(V,{type:"primary"},{default:a(()=>[p(g(o.value.length),1)]),_:1}),e[5]||(e[5]=p(" 项 ",-1))]),_:1})]),_:1}),o.value.length?(u(),x("div",ce,[s(q,{"max-height":"60px"},{default:a(()=>[ee("div",de,[(u(!0),x(I,null,S(o.value,t=>(u(),w(z,{key:t.id||t.code,closable:"",onClose:v=>M(t)},{default:a(()=>[s(W,{content:`${t.code} ${t.name}`,placement:"top"},{default:a(()=>[p(g(t.name),1)]),_:2},1032,["content"])]),_:2},1032,["onClose"]))),128))])]),_:1})])):te("v-if",!0),s(H,oe({ref_key:"gridRef",ref:f},U,{data:d.value?.records??[],total:d.value?.total??0,pagination:"","current-page":n.value.current,"onUpdate:currentPage":e[2]||(e[2]=t=>n.value.current=t),"page-size":n.value.size,"onUpdate:pageSize":e[3]||(e[3]=t=>n.value.size=t),onCheckboxAll:k,onCheckboxChange:k,onCurrentChange:y}),{attriList:a(({row:t})=>[(u(!0),x(I,null,S(t.attriList,v=>(u(),w(z,{key:v.id||v.attriCd},{default:a(()=>[p(g(v.attriName),1)]),_:2},1024))),128))]),type:a(({row:t})=>[p(g(D(O)(t.type,"ComIndexType")||"—"),1)]),_:1},16,["data","total","current-page","page-size"])]),_:1})),[[G,m.value]])}}}),Be=se(ue,[["__scopeId","data-v-b3c18182"]]);export{Be as default};
@@ -1 +1 @@
1
- import{_ as o}from"../../../chunks/DictDisplay.vue_vue_type_script_setup_true_lang-DiFlFWi1.js";import"vue";import"../../hooks/useDictHooks.js";import"element-plus";import"../../api/SysDictCacheApi.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";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/frontendBus.js";import"../../stores/dictStore.js";import"pinia";import"../../stores/userInfoStore.js";import"../../utils/userSessionStorage.js";import"../../utils/FrameworkUtils.js";import"xlsx-js-style";import"../../../chunks/ElTagDisplay.vue_vue_type_script_setup_true_lang-DQXuYsW_.js";export{o as default};
1
+ import{_ as o}from"../../../chunks/DictDisplay.vue_vue_type_script_setup_true_lang-DiFlFWi1.js";import"vue";import"../../hooks/useDictHooks.js";import"../../api/SysDictCacheApi.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";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"element-plus";import"../../utils/frontendBus.js";import"../../stores/dictStore.js";import"pinia";import"../../stores/userInfoStore.js";import"../../utils/userSessionStorage.js";import"../../utils/FrameworkUtils.js";import"xlsx-js-style";import"../../../chunks/ElTagDisplay.vue_vue_type_script_setup_true_lang-DQXuYsW_.js";export{o as default};
@@ -84,6 +84,10 @@ declare const _default: import("vue").DefineComponent<globalThis.ExtractPropType
84
84
  type: BooleanConstructor;
85
85
  default: boolean;
86
86
  };
87
+ showLoading: {
88
+ type: BooleanConstructor;
89
+ default: boolean;
90
+ };
87
91
  watermarkCode: {
88
92
  type: StringConstructor;
89
93
  default: () => undefined;
@@ -110,6 +114,7 @@ declare const _default: import("vue").DefineComponent<globalThis.ExtractPropType
110
114
  }>, {
111
115
  remove: (file: UploadFile, isConfirm?: boolean) => Promise<void>;
112
116
  confirm: (autoDelete?: boolean) => Promise<void>;
117
+ hasFiles: () => boolean;
113
118
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
114
119
  success: (...args: any[]) => void;
115
120
  "update:loading": (value: boolean | undefined) => void;
@@ -198,6 +203,10 @@ declare const _default: import("vue").DefineComponent<globalThis.ExtractPropType
198
203
  type: BooleanConstructor;
199
204
  default: boolean;
200
205
  };
206
+ showLoading: {
207
+ type: BooleanConstructor;
208
+ default: boolean;
209
+ };
201
210
  watermarkCode: {
202
211
  type: StringConstructor;
203
212
  default: () => undefined;
@@ -239,6 +248,7 @@ declare const _default: import("vue").DefineComponent<globalThis.ExtractPropType
239
248
  overwrite: boolean;
240
249
  autoUpload: boolean;
241
250
  showOptMessage: boolean;
251
+ showLoading: boolean;
242
252
  watermarkCode: string;
243
253
  readonlyFileIds: string[];
244
254
  fileOwnerAccounts: string[];
@@ -1 +1 @@
1
- import{defineComponent as ce,ref as _,computed as k,useModel as R,resolveComponent as y,resolveDirective as de,openBlock as u,createElementBlock as h,createBlock as S,withCtx as i,createElementVNode as x,Fragment as j,renderList as G,createVNode as f,unref as T,toDisplayString as C,withDirectives as pe,createTextVNode as D,createCommentVNode as H,normalizeStyle as me,withModifiers as fe,mergeModels as J}from"vue";import{UploadFilled as ve}from"@element-plus/icons-vue";import{ElMessage as r,ElMessageBox as ge}from"element-plus";import ye from"../../hooks/useFileView.js";import U from"../../api/DocumentApi.js";import F from"../../utils/FrameworkUtils.js";import{confirmDelete as he}from"../../hooks/useDeleteConfirmHooks.js";import{userInfoStore as xe}from"../../stores/userInfoStore.js";import{getAcceptString as we}from"../../utils/uploadAccept.js";import{buildUploadHeaders as _e}from"../../utils/buildUploadHeaders.js";import{_ as Ce}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/frontendBus.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";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"xlsx-js-style";import"pinia";import"../../utils/userSessionStorage.js";const Fe={key:0},Be={style:{display:"flex","flex-direction":"column"}},ke={style:{display:"flex","flex-direction":"column"}},Se=["onClick"],Ue={key:1,style:{"text-align":"center",color:"var(--el-disabled-text-color)"}},be={class:"el-upload__tip"},Me=ce({__name:"CustomElUpload",props:J({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},watermarkCode:{type:String,default:()=>{}},readonlyFileIds:{type:Array,default:()=>[]},fileOwnerAccounts:{type:Array,default:()=>[]},uploadCreateBy:{type:String,default:""}},{uploadFilesList:{default:[]},uploadFilesListModifiers:{},loading:{type:Boolean},loadingModifiers:{}}),emits:J(["success"],["update:uploadFilesList","update:loading"]),setup(v,{expose:W,emit:q}){const{fileView:L}=ye(),A=q,K=xe(),c=_(),g=_([]),w=_(""),z=_([]),o=v,N=k(()=>"/api/doc/uploadFile/"+o.business+"/"+o.businessId+"/"+o.association+(o.watermarkCode?"?watermarkCode="+o.watermarkCode:"")),Q=k(()=>_e(N.value)),n=R(v,"uploadFilesList"),X=e=>{w.value=e},Y=()=>{w.value=""},b=k(()=>we(o.accept)),P=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"},Z=async e=>{const t=o.uploadCreateBy?.trim(),l=e.id!=null?String(e.id):"";if(!t||!l)return e;try{await U.updateFilesCreateBy([l],t),e.createBy=t}catch(a){F.messageError(a)}return e},ee=async(e,t,l)=>{if(e.code==="0"){const a=await Z(e.data);n.value.push(a)}else r.error(e.msg),c.value?.handleRemove(t);for(let a=p.value.length-1;a>=0;a--)p.value[a]===t.name&&p.value.splice(a,1);e.code==="0"&&(o.showOptMessage&&r.success("上传成功"),A("success",{files:n.value,deleteFiles:g.value})),p.value.length===0&&(d.value=!1)},d=R(v,"loading"),p=_([]),te=k(()=>z.value.some(e=>e.status!=="success"&&e.status!=="fail")),$=async e=>{if(n.value.find(m=>m.name===e.name))return r.warning(e.name+",文件已存在"),!1;if(e.size>o.size*1024*1024)return r.warning("文件大小不能超过"+o.size+"MB"),!1;const l=b.value?.split(",").map(m=>m.slice(1).toLowerCase()),a=e.name.split(".").pop()?.toLowerCase();return l&&!l.includes(a??"")?(r.error(`文件 ${e.name} 格式不支持,仅允许 ${b.value}!`),setTimeout(()=>{c.value?.clearFiles(["ready"])},1),!1):(p.value.push(e.name),!0)},B=e=>{const t=e?.id!=null?String(e.id):"";return!!t&&o.readonlyFileIds.includes(t)},le=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()):K.getUserInfo.userCode===e.createBy},ae=async e=>{if(B(e)){r.warning("该附件非您上传,无法预览或删除");return}if(e.name===w.value){if(e.createBy&&!le(e)){r.warning("您没有权限删除此文件!");return}if(o.isConfirmDelete)c.value?.handleRemove(e);else if(!await he({message:"删除不可恢复!您确定删除此附件?",title:"提示",request:()=>c.value?.handleRemove(e),successMessage:!1}))return}else M(e)},oe=(e,t)=>{z.value=t},se=async(e,t)=>{if(o.limit===1&&o.overwrite&&n.value.length>=1){const l=n.value[0];if(!o.isConfirmDelete){if(!await ge.confirm("只允许上传一个附件,是否点击确定覆盖原有附件?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}))return;try{d.value=!0,await U.delSysUploadFile(l.id).catch(m=>{F.messageError(m)})}catch(m){F.messageError(m);return}finally{d.value=!1}}n.value=[],c.value?.clearFiles(),e.length>0?await $(e[0])?(c.value?.handleStart(e[0]),o.autoUpload&&c.value?.submit()):n.value.push(l):g.value.push(l)}else r.warning(`最多上传${o.limit}个文件,上传文件数量已达到限制`)},ne=(e,t,l)=>{r.error("上传失败");for(let a=p.value.length-1;a>=0;a--)p.value[a]===t.name&&p.value.splice(a,1);p.value.length===0&&(d.value=!1)},M=async e=>{const t=n.value.find(l=>l.name===e.name);if(t){if(B(t)){r.warning("该附件非您上传,无法预览或删除");return}L(t.id)}},O=async(e,t=!0)=>{const l=n.value.find(a=>a.name===e.name);if(!(!l||B(l)))try{o.isConfirmDelete?g.value.push(l):await U.delSysUploadFile(l.id),n.value.splice(n.value.indexOf(l),1)}catch(a){F.messageError(a)}},ie=(e,t)=>{d.value=!0};return W({remove:O,confirm:async(e=!0)=>{try{if(d.value=!0,o.isConfirmDelete&&g.value.length>0&&e&&(await U.delSysUploadFiles(g.value.map(t=>t.id)),g.value=[]),!o.autoUpload)if(te.value){c.value?.submit();return}else o.showOptMessage&&r.success("操作成功"),A("success",{files:n.value,deleteFiles:g.value});d.value=!1}catch(t){F.messageError(t),d.value=!1}}}),(e,t)=>{const l=y("el-icons"),a=y("el-tooltip"),m=y("el-icon"),V=y("el-text"),E=y("el-flex"),re=y("el-upload"),ue=de("loading");return v.isEdit?pe((u(),S(re,{key:1,ref_key:"ref_upload",ref:c,"file-list":n.value,onSuccess:ee,onRemove:O,onPreview:M,"auto-upload":v.autoUpload,onChange:oe,onError:ne,onExceed:se,onProgress:ie,"before-upload":$,drag:"",accept:b.value,action:N.value,multiple:"",limit:v.limit,headers:Q.value},{file:i(({file:s})=>[f(E,{class:"file-class",onMousemove:I=>X(s.name),onMouseout:Y,onClick:I=>M(s),height:"20px",width:v.itemWidth},{default:i(()=>[f(E,{align:"center",justify:"flex-start",style:{overflow:"hidden"}},{default:i(()=>[f(a,{class:"box-item",content:s.name,placement:"top"},{default:i(()=>[f(V,{truncated:"",style:{cursor:"pointer"}},{default:i(()=>[f(l,{"model-value":P(s.name),style:{"margin-right":"5px"}},null,8,["model-value"]),D(" "+C(s.name),1)]),_:2},1024)]),_:2},1032,["content"])]),_:2},1024),f(E,{align:"center",justify:"flex-end",width:"50px"},{default:i(()=>[!s?.businessId&&s.percentage!==100?(u(),S(V,{key:0},{default:i(()=>[D(C(s.percentage)+"% ",1)]),_:2},1024)):H("v-if",!0),s?.businessId||s.percentage===100?(u(),S(l,{key:1,onClick:fe(I=>ae(s),["prevent","stop"]),"model-value":s.name===w.value?"adtec-close":"adtec-success",style:me([{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"])):H("v-if",!0)]),_:2},1024)]),_:2},1032,["onMousemove","onClick","width"])]),default:i(()=>[f(m,{class:"el-icon--upload"},{default:i(()=>[f(T(ve))]),_:1}),t[0]||(t[0]=x("div",{class:"el-upload__text"},[D("拖动文件或"),x("em",null,"点击上传")],-1)),x("div",be,"最大上传文件大小"+C(v.size)+"MB",1)]),_:1},8,["file-list","auto-upload","accept","action","limit","headers"])),[[ue,d.value]]):(u(),h("div",Fe,[n.value?.length?(u(),S(a,{key:0,placement:"top"},{content:i(()=>[x("div",Be,[(u(!0),h(j,null,G(n.value,s=>(u(),h("span",{key:s.id,style:{margin:"0 2px"}},C(s.name),1))),128))])]),default:i(()=>[x("div",ke,[(u(!0),h(j,null,G(n.value,s=>(u(),h("div",{key:s.id,class:"file-item",style:{display:"flex","align-items":"center",overflow:"hidden"}},[f(l,{"model-value":P(s.name),style:{"margin-right":"5px"}},null,8,["model-value"]),x("span",{class:"link-name",onClick:I=>T(L)(s.id)},C(s.name),9,Se)]))),128))])]),_:1})):(u(),h("div",Ue,"暂无附件"))]))}}}),lt=Ce(Me,[["__scopeId","data-v-accacf70"]]);export{lt as default};
1
+ import{defineComponent as fe,ref as F,computed as E,useModel as H,resolveComponent as h,resolveDirective as ve,openBlock as m,createElementBlock as w,createBlock as S,withCtx as c,createElementVNode as x,Fragment as J,renderList as W,createVNode as y,unref as q,toDisplayString as B,withDirectives as ge,createTextVNode as N,createCommentVNode as K,normalizeStyle as ye,withModifiers as he,mergeModels as Q}from"vue";import{UploadFilled as we}from"@element-plus/icons-vue";import{ElMessage as d,ElMessageBox as xe}from"element-plus";import _e from"../../hooks/useFileView.js";import M from"../../api/DocumentApi.js";import k from"../../utils/FrameworkUtils.js";import{confirmDelete as Ce}from"../../hooks/useDeleteConfirmHooks.js";import{userInfoStore as Fe}from"../../stores/userInfoStore.js";import{getAcceptString as Be}from"../../utils/uploadAccept.js";import{buildUploadHeaders as ke}from"../../utils/buildUploadHeaders.js";import{_ as Ue}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/frontendBus.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";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"xlsx-js-style";import"pinia";import"../../utils/userSessionStorage.js";const Ee={key:0},Se={style:{display:"flex","flex-direction":"column"}},Me={style:{display:"flex","flex-direction":"column"}},be=["onClick"],Ie={key:1,style:{"text-align":"center",color:"var(--el-disabled-text-color)"}},De={class:"el-upload__tip"},Le=fe({__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(f,{expose:X,emit:Y}){const{fileView:R}=_e(),$=Y,Z=Fe(),v=F(),p=F([]),_=F(""),b=F([]),o=f,O=E(()=>"/api/doc/uploadFile/"+o.business+"/"+o.businessId+"/"+o.association+(o.watermarkCode?"?watermarkCode="+o.watermarkCode:"")),ee=E(()=>ke(O.value)),n=H(f,"uploadFilesList"),te=e=>{_.value=e},le=()=>{_.value=""},I=E(()=>Be(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"},ae=async e=>{const t=o.uploadCreateBy?.trim(),a=e.id!=null?String(e.id):"";if(!t||!a)return e;try{await M.updateFilesCreateBy([a],t),e.createBy=t}catch(l){k.messageError(l)}return e},oe=async(e,t,a)=>{if(e.code==="0"){const l=await ae(e.data);n.value.push(l)}else d.error(e.msg),v.value?.handleRemove(t);for(let l=r.value.length-1;l>=0;l--)r.value[l]===t.name&&r.value.splice(l,1);e.code==="0"&&(o.showOptMessage&&d.success("上传成功"),$("success",{files:n.value,deleteFiles:p.value})),r.value.length===0&&(g.value=!1,G(e.code==="0"?void 0:new Error(e.msg||"上传失败")))},g=H(f,"loading"),r=F([]);let D,L;const j=E(()=>b.value.some(e=>e.status!=="success"&&e.status!=="fail")),se=()=>n.value.length>0||j.value,G=e=>{r.value.length>0||(e?L?.(e):D?.(),D=void 0,L=void 0)},P=async e=>{if(n.value.find(i=>i.name===e.name))return d.warning(e.name+",文件已存在"),!1;if(e.size>o.size*1024*1024)return d.warning("文件大小不能超过"+o.size+"MB"),!1;const a=I.value?.split(",").map(i=>i.slice(1).toLowerCase()),l=e.name.split(".").pop()?.toLowerCase();return a&&!a.includes(l??"")?(d.error(`文件 ${e.name} 格式不支持,仅允许 ${I.value}!`),setTimeout(()=>{v.value?.clearFiles(["ready"])},1),!1):(r.value.includes(e.name)||r.value.push(e.name),!0)},U=e=>{const t=e?.id!=null?String(e.id):"";return!!t&&o.readonlyFileIds.includes(t)},ne=e=>{if(U(e))return!1;if(!e?.createBy?.trim())return!0;const t=o.fileOwnerAccounts?.map(a=>a.trim()).filter(Boolean)??[];return t.length>0?t.includes(e.createBy.trim()):Z.getUserInfo.userCode===e.createBy},ie=async e=>{if(U(e)){d.warning("该附件非您上传,无法预览或删除");return}if(e.name===_.value){if(e.createBy&&!ne(e)){d.warning("您没有权限删除此文件!");return}if(o.isConfirmDelete)v.value?.handleRemove(e);else if(!await Ce({message:"删除不可恢复!您确定删除此附件?",title:"提示",request:()=>v.value?.handleRemove(e),successMessage:!1}))return}else A(e)},re=(e,t)=>{b.value=t},ue=async(e,t)=>{if(o.limit===1&&o.overwrite&&n.value.length>=1){const a=[...n.value],l=a[0];if(!o.isConfirmDelete){if(!await xe.confirm("只允许上传一个附件,是否点击确定覆盖原有附件?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}))return;try{g.value=!0,await M.delSysUploadFile(l.id).catch(u=>{k.messageError(u)})}catch(u){k.messageError(u);return}finally{g.value=!1}}n.value=[],v.value?.clearFiles(),e.length>0?await P(e[0])?(o.isConfirmDelete&&a.forEach(u=>{p.value.some(C=>C.id===u.id)||p.value.push(u)}),v.value?.handleStart(e[0]),o.autoUpload&&v.value?.submit()):n.value.push(...a):a.forEach(i=>{p.value.some(u=>u.id===i.id)||p.value.push(i)})}else d.warning(`最多上传${o.limit}个文件,上传文件数量已达到限制`)},ce=(e,t,a)=>{d.error("上传失败");for(let l=r.value.length-1;l>=0;l--)r.value[l]===t.name&&r.value.splice(l,1);r.value.length===0&&(g.value=!1,G(e))},A=async e=>{const t=n.value.find(a=>a.name===e.name);if(t){if(U(t)){d.warning("该附件非您上传,无法预览或删除");return}R(t.id)}},T=async(e,t=!0)=>{const a=n.value.find(l=>l.name===e.name);if(!(!a||U(a)))try{o.isConfirmDelete?p.value.push(a):await M.delSysUploadFile(a.id),n.value.splice(n.value.indexOf(a),1)}catch(l){k.messageError(l)}},de=(e,t)=>{g.value=!0};return X({remove:T,confirm:async(e=!0)=>{try{if(g.value=!0,o.isConfirmDelete&&p.value.length>0&&e&&(await M.delSysUploadFiles(p.value.map(t=>t.id)),p.value=[]),!o.autoUpload)if(j.value){const t=b.value.filter(l=>l.status!=="success"&&l.status!=="fail");for(const l of t)if(!l.raw||!await P(l.raw))throw new Error("待上传文件校验失败");const a=new Promise((l,i)=>{D=l,L=i});v.value?.submit(),await a}else o.showOptMessage&&d.success("操作成功"),$("success",{files:n.value,deleteFiles:p.value});g.value=!1}catch(t){throw k.messageError(t),g.value=!1,t}},hasFiles:se}),(e,t)=>{const a=h("el-icons"),l=h("el-tooltip"),i=h("el-icon"),u=h("el-text"),C=h("el-flex"),pe=h("el-upload"),me=ve("loading");return f.isEdit?ge((m(),S(pe,{key:1,ref_key:"ref_upload",ref:v,"file-list":n.value,onSuccess:oe,onRemove:T,onPreview:A,"auto-upload":f.autoUpload,onChange:re,onError:ce,onExceed:ue,onProgress:de,"before-upload":P,drag:"",accept:I.value,action:O.value,multiple:"",limit:f.limit,headers:ee.value},{file:c(({file:s})=>[y(C,{class:"file-class",onMousemove:z=>te(s.name),onMouseout:le,onClick:z=>A(s),height:"20px",width:f.itemWidth},{default:c(()=>[y(C,{align:"center",justify:"flex-start",style:{overflow:"hidden"}},{default:c(()=>[y(l,{class:"box-item",content:s.name,placement:"top"},{default:c(()=>[y(u,{truncated:"",style:{cursor:"pointer"}},{default:c(()=>[y(a,{"model-value":V(s.name),style:{"margin-right":"5px"}},null,8,["model-value"]),N(" "+B(s.name),1)]),_:2},1024)]),_:2},1032,["content"])]),_:2},1024),y(C,{align:"center",justify:"flex-end",width:"50px"},{default:c(()=>[!s?.businessId&&s.percentage!==100?(m(),S(u,{key:0},{default:c(()=>[N(B(s.percentage)+"% ",1)]),_:2},1024)):K("v-if",!0),s?.businessId||s.percentage===100?(m(),S(a,{key:1,onClick:he(z=>ie(s),["prevent","stop"]),"model-value":s.name===_.value?"adtec-close":"adtec-success",style:ye([{color:"var(--el-color-success)","font-size":"14px"},{color:s.name===_.value?"var(--el-color-danger)":"var(--el-color-success)"}])},null,8,["onClick","model-value","style"])):K("v-if",!0)]),_:2},1024)]),_:2},1032,["onMousemove","onClick","width"])]),default:c(()=>[y(i,{class:"el-icon--upload"},{default:c(()=>[y(q(we))]),_:1}),t[0]||(t[0]=x("div",{class:"el-upload__text"},[N("拖动文件或"),x("em",null,"点击上传")],-1)),x("div",De,"最大上传文件大小"+B(f.size)+"MB",1)]),_:1},8,["file-list","auto-upload","accept","action","limit","headers"])),[[me,f.showLoading&&g.value]]):(m(),w("div",Ee,[n.value?.length?(m(),S(l,{key:0,placement:"top"},{content:c(()=>[x("div",Se,[(m(!0),w(J,null,W(n.value,s=>(m(),w("span",{key:s.id,style:{margin:"0 2px"}},B(s.name),1))),128))])]),default:c(()=>[x("div",Me,[(m(!0),w(J,null,W(n.value,s=>(m(),w("div",{key:s.id,class:"file-item",style:{display:"flex","align-items":"center",overflow:"hidden"}},[y(a,{"model-value":V(s.name),style:{"margin-right":"5px"}},null,8,["model-value"]),x("span",{class:"link-name",onClick:z=>q(R)(s.id)},B(s.name),9,be)]))),128))])]),_:1})):(m(),w("div",Ie,"暂无附件"))]))}}}),nt=Ue(Le,[["__scopeId","data-v-3d4290f1"]]);export{nt as default};
@@ -1,11 +1,14 @@
1
1
  import type { ISysDictDataCacheVo } from '../interface/ISysDictDataCacheVo';
2
+ import { type dictMapType } from '../stores/dictStore';
2
3
  export default function useDictHooks(dictTypes?: string[], orgId?: string): {
3
4
  getDict: (dictTypes?: string[], orgId?: string) => Promise<void>;
4
5
  userReady: globalThis.Ref<boolean, boolean>;
5
6
  dictReady: globalThis.Ref<boolean, boolean>;
6
- dictMap: globalThis.Ref<import("../stores/dictStore").dictMapType, import("../stores/dictStore").dictMapType>;
7
+ dictLoading: globalThis.Ref<boolean, boolean>;
8
+ dictError: globalThis.ShallowRef<unknown>;
9
+ dictMap: globalThis.Ref<dictMapType, dictMapType>;
7
10
  dictDataMap: globalThis.Ref<import("../stores/dictStore").dictDataMapType, import("../stores/dictStore").dictDataMapType>;
8
- dictDefaultValueMap: globalThis.Ref<import("../stores/dictStore").dictMapType, import("../stores/dictStore").dictMapType>;
11
+ dictDefaultValueMap: globalThis.Ref<dictMapType, dictMapType>;
9
12
  getDictName: (value?: string, dictType?: string, orgId?: string) => string | undefined;
10
13
  getDictData: (value: string, dictType: string, orgId?: string) => ISysDictDataCacheVo | {};
11
14
  getDictTypeData: (dictType: string, orgId?: string) => ISysDictDataCacheVo[];
@@ -1 +1 @@
1
- import{ElMessage as L}from"element-plus";import{ref as C}from"vue";import P from"../api/SysDictCacheApi.js";import{dictStore as F}from"../stores/dictStore.js";import{storeToRefs as G}from"pinia";import{userInfoStore as N}from"../stores/userInfoStore.js";import q from"../utils/FrameworkUtils.js";import"../utils/request.js";import"../utils/AxiosConfig.js";import"axios";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/frontendBus.js";import"../utils/userSessionStorage.js";import"xlsx-js-style";const k=i=>{if(!i?.length)return i??[];if(i.some(u=>Array.isArray(u.children)&&u.children.length>0))return i;const p=new Map;if(i.forEach(u=>{u?.id&&p.set(u.id,{...u,children:void 0})}),!p.size)return i;const g=[];let m=0;return p.forEach(u=>{const a=u.parentId;if(a&&a!=="0"&&p.has(a)){const h=p.get(a);h.children||(h.children=[]),h.children.push(u),m+=1}else g.push(u)}),m?g:i};function de(i,p){const g=N(),m=F(),{clearDictCache:u}=m,{dictMap:a,dictDefaultValueMap:h,dictDataMap:l}=G(m),b=e=>e||(g.hydrateFromRootSession(),g.user?.orgId),D=e=>Array.isArray(e)&&e.length>0,E=(e,s)=>s&&D(a.value[`${s}:${e}`])||D(a.value[e])?!0:Object.keys(a.value).some(t=>t.endsWith(`:${e}`)&&D(a.value[t])),x=(e,s)=>{const t=b(),r=s??t;return r&&D(a.value[`${r}:${e}`])?`${r}:${e}`:D(a.value[e])?e:Object.keys(a.value).find(d=>d.endsWith(`:${e}`)&&D(a.value[d]))},M=(e,s)=>{const t=b(),r=s??t;if(r){const n=`${r}:${e}`;if(l.value[n]&&Object.keys(l.value[n]).length)return n}return l.value[e]&&Object.keys(l.value[e]).length?e:Object.keys(l.value).find(n=>n.endsWith(`:${e}`)&&Object.keys(l.value[n]).length>0)},R=()=>{let e=!1;for(const s of Object.keys(a.value)){const t=a.value[s];if(!D(t))continue;const r=k(t);r!==t&&r.some(n=>n.children?.length)&&(a.value[s]=r,e=!0)}return e},j=async(e,s)=>{try{if(!e||!e.length)return;await g.ensureUserHydrated();const t=b(s);let r=!1;if(t){const o=s??t;for(const c of Object.keys(a.value))(c.startsWith(`${o}:`)||!c.includes(":"))&&Array.isArray(a.value[c])&&a.value[c].length===0&&(delete a.value[c],delete l.value[c],delete h.value[c],r=!0)}R()&&(r=!0),r&&m.publishToSharedCache();const n=e.filter(o=>!E(o,s??t));if(!n.length)return;const d=await P.batchGetSysDictDataCacheVo(n,s??t),f={};Object.entries(d).forEach(([o,c])=>{if(!c?.length)return;const v=k(c);f[o]=v;const y=o.indexOf(":");if(y>0){const O=o.slice(y+1);f[O]?.length||(f[O]=v)}else if(t){const O=`${t}:${o}`;f[O]?.length||(f[O]=v)}}),a.value={...a.value,...f};const $={...l.value},A={...h.value},z=Object.keys(f).map(async o=>{const c={},v=[];return await w(c,v,f[o]),{item:o,dataMap:c,defaultList:v}});(await Promise.allSettled(z)).forEach((o,c)=>{if(o.status==="fulfilled"){const{item:v,dataMap:y,defaultList:O}=o.value;$[v]=y,A[v]=O}else L.error(`处理键 ${Object.keys(f)[c]} 时出错:`,o.reason)}),l.value=$,h.value=A,m.publishToSharedCache()}catch(t){q.messageError(t)}},w=async(e,s,t)=>{if(t&&t.length){const r=t.map(async n=>{e[n.value]={...n,children:void 0},n.isDefault==="1"&&s.push({...n,children:void 0}),n.children&&n.children.length>0&&await w(e,s,n.children)});await Promise.all(r)}},W=(e,s,t)=>{const r=M(s,t);return r&&l.value[r]&&l.value[r][e]?.label||e},H=(e,s,t)=>{const r=M(s,t);return r&&l.value[r]?.[e]?l.value[r][e]:{}},K=(e,s)=>{const t=b(),r=s??t;if(r){const n=h.value[`${r}:${e}`];if(n?.length)return n}return h.value[e]??[]},U=(e,s)=>{const t=x(e,s);if(!t)return[];const r=a.value[t],n=k(r);if(n!==r&&n.some(d=>d.children?.length)){a.value[t]=n;const d=t.includes(":")?t.slice(t.indexOf(":")+1):t,f=b(s);f&&!t.includes(":")?a.value[`${f}:${d}`]=n:t.includes(":")&&!a.value[d]?.some($=>$.children?.length)&&(a.value[d]=n)}return n},V=(e,s,t)=>{u(e,b(),s,t)},I=C(!i?.length),S=C(!i?.length);return i?.length&&(async()=>(await g.ensureUserHydrated(),I.value=!0,await j(i,p),S.value=!0))(),{getDict:j,userReady:I,dictReady:S,dictMap:a,dictDataMap:l,dictDefaultValueMap:h,getDictName:W,getDictData:H,getDictTypeData:U,getDictDefaultValue:K,clearDict:V}}export{de as default};
1
+ import{ref as w,shallowRef as $}from"vue";import j from"../api/SysDictCacheApi.js";import{dictStore as z}from"../stores/dictStore.js";import{storeToRefs as B}from"pinia";import{userInfoStore as G}from"../stores/userInfoStore.js";import N from"../utils/FrameworkUtils.js";import"../utils/request.js";import"../utils/AxiosConfig.js";import"axios";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"element-plus";import"../utils/frontendBus.js";import"../utils/userSessionStorage.js";import"xlsx-js-style";const P=o=>{if(!o?.length)return o??[];if(o.some(c=>Array.isArray(c.children)&&c.children.length>0))return o;const u=new Map;if(o.forEach(c=>{c?.id&&u.set(c.id,{...c,children:void 0})}),!u.size)return o;const l=[];let n=0;return u.forEach(c=>{const h=c.parentId;if(h&&h!=="0"&&u.has(h)){const d=u.get(h);d.children||(d.children=[]),d.children.push(c),n+=1}else l.push(c)}),n?l:o};function he(o,u){const l=G(),n=z(),{clearDictCache:c}=n,{dictMap:h,dictDefaultValueMap:d,dictDataMap:D}=B(n),p=e=>e||(l.user?.orgId||l.hydrateFromRootSession(),l.user?.orgId),g=(e,r)=>r?`${r}:${e}`:e,F=(e,r)=>n.isDictCacheLoaded(g(e,r)),L=(e,r)=>{const t=g(e,r??p());return n.isDictCacheLoaded(t)?t:void 0},q=(e,r)=>{const t=g(e,r??p());return n.isDictCacheLoaded(t)?t:void 0},E=w(!o?.length),I=w(!o?.length),k=w(!1),C=$();let R=0;const M=async(e,r)=>{R+=1,k.value=!0,C.value=void 0;try{if(!e||!e.length)return;await l.ensureUserHydrated(),E.value=!0;const t=p(r),i=[...new Set(e.filter(Boolean))];n.syncFromSharedCache();const a=new Set,f=[],y=[];if(i.forEach(s=>{if(F(s,t))return;const v=g(s,t),m=n.getPendingDictRequest(v);m?a.add(m):(f.push(s),y.push(v))}),f.length){let s;s=(async()=>{const v=await j.batchGetSysDictDataCacheVo(f,t),m={};f.forEach((O,U)=>{const S=y[U];n.isPendingDictRequest(S,s)&&(m[S]=P(v[S]??v[O]??[]))}),Object.keys(m).length&&n.setDictCacheEntries(m)})(),n.registerPendingDictRequest(y,s),s.then(()=>n.clearPendingDictRequest(y,s),()=>n.clearPendingDictRequest(y,s)),a.add(s)}await Promise.all(a),n.syncFromSharedCache()}catch(t){C.value=t,N.messageError(t)}finally{R-=1,k.value=R>0}},b=(e,r,t)=>{const i=q(r,t);return i&&D.value[i]&&D.value[i][e]?.label||e},A=(e,r,t)=>{const i=q(r,t);return i&&D.value[i]?.[e]?D.value[i][e]:{}},K=(e,r)=>{const t=g(e,r??p());return d.value[t]??[]},V=(e,r)=>{const t=L(e,r);if(!t)return[];const i=h.value[t],a=P(i);return a!==i&&a.some(f=>f.children?.length)&&n.setDictCacheEntries({[t]:a}),a},H=(e,r,t)=>{c(e,p(),r,t)};return o?.length&&(async()=>{try{await M(o,u)}finally{I.value=!0}})(),{getDict:M,userReady:E,dictReady:I,dictLoading:k,dictError:C,dictMap:h,dictDataMap:D,dictDefaultValueMap:d,getDictName:b,getDictData:A,getDictTypeData:V,getDictDefaultValue:K,clearDict:H}}export{he as default};
@@ -13,9 +13,12 @@ export interface dictDataMapType {
13
13
  }
14
14
  /** 跨应用共享的 plain 缓存(非 Vue ref,避免 wujie 子应用与宿主 ref 响应式隔离) */
15
15
  export interface SharedDictCache {
16
+ version: number;
16
17
  dictMap: dictMapType;
17
18
  dictDataMap: dictDataMapType;
18
19
  dictDefaultValueMap: dictMapType;
20
+ loadedKeys: Record<string, true>;
21
+ pendingRequests: Map<string, Promise<void>>;
19
22
  }
20
23
  declare global {
21
24
  interface Window {
@@ -44,6 +47,12 @@ export declare const dictStore: import("pinia").StoreDefinition<"dictStore", Pic
44
47
  dictDefaultValueMap: Ref<dictMapType, dictMapType>;
45
48
  clearDictCache: (dictType?: string[], userOrgId?: string, orgId?: string, all?: Boolean) => void;
46
49
  syncFromSharedCache: () => void;
50
+ setDictCacheEntries: (entries: dictMapType) => void;
51
+ isDictCacheLoaded: (key: string) => boolean;
52
+ getPendingDictRequest: (key: string) => Promise<void> | undefined;
53
+ registerPendingDictRequest: (keys: string[], request: Promise<void>) => void;
54
+ isPendingDictRequest: (key: string, request: Promise<void>) => boolean;
55
+ clearPendingDictRequest: (keys: string[], request: Promise<void>) => void;
47
56
  publishToSharedCache: () => void;
48
57
  }, "dictMap" | "dictDataMap" | "dictDefaultValueMap">, Pick<{
49
58
  dictMap: Ref<dictMapType, dictMapType>;
@@ -51,6 +60,12 @@ export declare const dictStore: import("pinia").StoreDefinition<"dictStore", Pic
51
60
  dictDefaultValueMap: Ref<dictMapType, dictMapType>;
52
61
  clearDictCache: (dictType?: string[], userOrgId?: string, orgId?: string, all?: Boolean) => void;
53
62
  syncFromSharedCache: () => void;
63
+ setDictCacheEntries: (entries: dictMapType) => void;
64
+ isDictCacheLoaded: (key: string) => boolean;
65
+ getPendingDictRequest: (key: string) => Promise<void> | undefined;
66
+ registerPendingDictRequest: (keys: string[], request: Promise<void>) => void;
67
+ isPendingDictRequest: (key: string, request: Promise<void>) => boolean;
68
+ clearPendingDictRequest: (keys: string[], request: Promise<void>) => void;
54
69
  publishToSharedCache: () => void;
55
70
  }, never>, Pick<{
56
71
  dictMap: Ref<dictMapType, dictMapType>;
@@ -58,5 +73,11 @@ export declare const dictStore: import("pinia").StoreDefinition<"dictStore", Pic
58
73
  dictDefaultValueMap: Ref<dictMapType, dictMapType>;
59
74
  clearDictCache: (dictType?: string[], userOrgId?: string, orgId?: string, all?: Boolean) => void;
60
75
  syncFromSharedCache: () => void;
76
+ setDictCacheEntries: (entries: dictMapType) => void;
77
+ isDictCacheLoaded: (key: string) => boolean;
78
+ getPendingDictRequest: (key: string) => Promise<void> | undefined;
79
+ registerPendingDictRequest: (keys: string[], request: Promise<void>) => void;
80
+ isPendingDictRequest: (key: string, request: Promise<void>) => boolean;
81
+ clearPendingDictRequest: (keys: string[], request: Promise<void>) => void;
61
82
  publishToSharedCache: () => void;
62
- }, "clearDictCache" | "syncFromSharedCache" | "publishToSharedCache">>;
83
+ }, "clearDictCache" | "syncFromSharedCache" | "setDictCacheEntries" | "isDictCacheLoaded" | "getPendingDictRequest" | "registerPendingDictRequest" | "isPendingDictRequest" | "clearPendingDictRequest" | "publishToSharedCache">>;
@@ -1 +1 @@
1
- import{defineStore as S}from"pinia";import{ref as f}from"vue";import _ from"crypto-js/enc-base64";import C from"crypto-js/enc-utf8";const w="dictStore",p="adtec-dict-cache-update";function l(){return typeof window>"u"?window:window.__POWERED_BY_WUJIE__?window.parent:window}function E(t){const e=l().sessionStorage.getItem(w);if(e)try{const a=JSON.parse(_.parse(e).toString(C));a.dictMap&&Object.assign(t.dictMap,a.dictMap),a.dictDataMap&&s(t.dictDataMap,a.dictDataMap),a.dictDefaultValueMap&&Object.assign(t.dictDefaultValueMap,a.dictDefaultValueMap)}catch{}}function h(t){if(typeof window>"u")return;const e=l().sessionStorage;try{const a=JSON.stringify({dictMap:t.dictMap,dictDataMap:t.dictDataMap,dictDefaultValueMap:t.dictDefaultValueMap});e.setItem(w,_.stringify(C.parse(a)))}catch{}}function s(t,e){Object.keys(e).forEach(a=>{t[a]={...t[a],...e[a]}})}function A(t){const e={};return s(e,t),e}function D(){const t=l();return t.__ADTEC_SHARED_DICT_CACHE__||(t.__ADTEC_SHARED_DICT_CACHE__={dictMap:{},dictDataMap:{},dictDefaultValueMap:{}},E(t.__ADTEC_SHARED_DICT_CACHE__)),t.__ADTEC_SHARED_DICT_CACHE__}function V(){if(typeof window>"u")return;const t=new CustomEvent(p);window.dispatchEvent(t);const e=l();if(e!==window)try{e.dispatchEvent(new CustomEvent(p))}catch{}}function R(){return D()}function b(t){E(D())}const j=S("dictStore",()=>{const t=D(),e=f({...t.dictMap}),a=f(A(t.dictDataMap)),i=f({...t.dictDefaultValueMap}),u=()=>{e.value={...e.value,...t.dictMap},s(a.value,t.dictDataMap),i.value={...i.value,...t.dictDefaultValueMap}},r=()=>{Object.assign(t.dictMap,e.value),s(t.dictDataMap,a.value),Object.assign(t.dictDefaultValueMap,i.value),h(t),V()};if(typeof window<"u"){window.addEventListener(p,u);const n=l();if(n!==window)try{n.addEventListener(p,u)}catch{}}return u(),{dictMap:e,dictDataMap:a,dictDefaultValueMap:i,clearDictCache:(n,d,M,v)=>{n&&n.length>0?(n.forEach(c=>{if(M){const o=`${M}:${c}`;delete e.value[o],delete a.value[o],delete i.value[o],delete t.dictMap[o],delete t.dictDataMap[o],delete t.dictDefaultValueMap[o]}else delete e.value[c],delete a.value[c],delete i.value[c],delete e.value[`${d}:${c}`],delete a.value[`${d}:${c}`],delete i.value[`${d}:${c}`],delete t.dictMap[c],delete t.dictDataMap[c],delete t.dictDefaultValueMap[c],delete t.dictMap[`${d}:${c}`],delete t.dictDataMap[`${d}:${c}`],delete t.dictDefaultValueMap[`${d}:${c}`]}),r()):v&&(e.value={},a.value={},i.value={},t.dictMap={},t.dictDataMap={},t.dictDefaultValueMap={},r())},syncFromSharedCache:u,publishToSharedCache:r}});export{j as dictStore,D as getSharedDictCache,R as getSharedDictRefs,b as syncDictFromSessionStorage};
1
+ import{defineStore as K}from"pinia";import{ref as E}from"vue";import M from"crypto-js/enc-base64";import w from"crypto-js/enc-utf8";const D=2,v="dictStore:v2",h="adtec-dict-cache-update";function p(){return typeof window>"u"?window:window.__POWERED_BY_WUJIE__?window.parent:window}function S(e){const t=p().sessionStorage.getItem(v);if(t)try{const n=JSON.parse(M.parse(t).toString(w));if(n.version!==D||!n.dictMap)return;Object.entries(n.dictMap).forEach(([c,i])=>{e.dictMap[c]=i;const{dataMap:r,defaultList:f}=R(i);e.dictDataMap[c]=r,e.dictDefaultValueMap[c]=f}),n.loadedKeys?.forEach(c=>{e.loadedKeys[c]=!0})}catch{}}function V(e){if(typeof window>"u")return;const t=p().sessionStorage;try{const n=JSON.stringify({version:D,dictMap:e.dictMap,loadedKeys:Object.keys(e.loadedKeys)});t.setItem(v,M.stringify(w.parse(n)))}catch{}}function I(e,t){Object.keys(t).forEach(n=>{e[n]={...e[n],...t[n]}})}function g(e){const t={};return I(t,e),t}function R(e){const t={},n=[],c=[...e].reverse();for(;c.length;){const i=c.pop();t[i.value]={...i,children:void 0},i.isDefault==="1"&&n.push({...i,children:void 0}),i.children?.length&&c.push(...[...i.children].reverse())}return{dataMap:t,defaultList:n}}function l(e){Object.keys(e).forEach(t=>delete e[t])}function C(){const e=p();e.__ADTEC_SHARED_DICT_CACHE__?.version!==D&&(e.__ADTEC_SHARED_DICT_CACHE__={version:D,dictMap:{},dictDataMap:{},dictDefaultValueMap:{},loadedKeys:{},pendingRequests:new Map},S(e.__ADTEC_SHARED_DICT_CACHE__));const t=e.__ADTEC_SHARED_DICT_CACHE__;return(!t.pendingRequests||typeof t.pendingRequests.get!="function")&&(t.pendingRequests=new Map),t}function O(){if(typeof window>"u")return;const e=new CustomEvent(h);window.dispatchEvent(e);const t=p();if(t!==window)try{t.dispatchEvent(new CustomEvent(h))}catch{}}function $(){return C()}function F(e){S(C())}const J=K("dictStore",()=>{const e=C(),t=E({...e.dictMap}),n=E(g(e.dictDataMap)),c=E({...e.dictDefaultValueMap}),i=()=>{t.value={...e.dictMap},n.value=g(e.dictDataMap),c.value={...e.dictDefaultValueMap}},r=()=>{V(e),O(),i()},f=a=>{Object.entries(a).forEach(([o,s])=>{e.dictMap[o]=s;const{dataMap:_,defaultList:u}=R(s);e.dictDataMap[o]=_,e.dictDefaultValueMap[o]=u,e.loadedKeys[o]=!0}),r()},A=a=>e.loadedKeys[a]===!0,m=a=>e.pendingRequests.get(a),q=(a,o)=>{a.forEach(s=>e.pendingRequests.set(s,o))},T=(a,o)=>e.pendingRequests.get(a)===o,y=(a,o)=>{a.forEach(s=>{e.pendingRequests.get(s)===o&&e.pendingRequests.delete(s)})},H=()=>{f(t.value)};if(typeof window<"u"){window.addEventListener(h,i);const a=p();if(a!==window)try{a.addEventListener(h,i)}catch{}}return i(),{dictMap:t,dictDataMap:n,dictDefaultValueMap:c,clearDictCache:(a,o,s,_)=>{a&&a.length>0?(a.forEach(u=>{(s?[`${s}:${u}`]:[u,...o?[`${o}:${u}`]:[]]).forEach(d=>{delete t.value[d],delete n.value[d],delete c.value[d],delete e.dictMap[d],delete e.dictDataMap[d],delete e.dictDefaultValueMap[d],delete e.loadedKeys[d],e.pendingRequests.delete(d)})}),r()):_&&(t.value={},n.value={},c.value={},l(e.dictMap),l(e.dictDataMap),l(e.dictDefaultValueMap),l(e.loadedKeys),e.pendingRequests.clear(),r())},syncFromSharedCache:i,setDictCacheEntries:f,isDictCacheLoaded:A,getPendingDictRequest:m,registerPendingDictRequest:q,isPendingDictRequest:T,clearPendingDictRequest:y,publishToSharedCache:H}});export{J as dictStore,C as getSharedDictCache,$ as getSharedDictRefs,F as syncDictFromSessionStorage};