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.
- package/dist/src/components/SelectInDicators/SelectInDicators.vue.js +1 -1
- package/dist/src/components/dict/DictDisplay.vue.js +1 -1
- package/dist/src/components/upload/CustomElUpload.vue.d.ts +10 -0
- package/dist/src/components/upload/CustomElUpload.vue.js +1 -1
- package/dist/src/hooks/useDictHooks.d.ts +5 -2
- package/dist/src/hooks/useDictHooks.js +1 -1
- package/dist/src/stores/dictStore.d.ts +22 -1
- package/dist/src/stores/dictStore.js +1 -1
- package/dist/styles/element-ui.css +1 -1
- package/package.json +1 -1
- package/dist/src/utils/iconfontRuntime.d.ts +0 -11
- package/dist/src/utils/iconfontRuntime.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as
|
|
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"
|
|
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
|
|
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
|
-
|
|
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<
|
|
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{
|
|
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
|
|
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};
|