adtec-hnyzfc-core-package 1.6.5 → 1.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/chunks/ElDescForm.vue_vue_type_style_index_0_lang-BkJW9BQw.js +3 -0
  2. package/dist/src/api/workflow/workflowInstApi.d.ts +11 -3
  3. package/dist/src/api/workflow/workflowInstApi.js +1 -1
  4. package/dist/src/components/ElCardSection/ElCardSection.vue.js +2 -2
  5. package/dist/src/components/ElDescForm/ElDescForm.vue.d.ts +9 -1
  6. package/dist/src/components/ElDescForm/ElDescForm.vue.js +1 -1
  7. package/dist/src/components/ElIndicatorInput/ElIndicatorInput.vue.js +1 -1
  8. package/dist/src/components/ElIndicatorInput/interface.d.ts +64 -2
  9. package/dist/src/components/ElIndicatorInput/interface.js +1 -1
  10. package/dist/src/components/upload/CustomElUpload.vue.d.ts +2 -2
  11. package/dist/src/components/upload/CustomElUpload.vue.js +1 -1
  12. package/dist/src/components/workflow/TaskOperation.vue.d.ts +2 -2
  13. package/dist/src/components/workflow/TaskOperation.vue.js +1 -1
  14. package/dist/src/components/workflow/WorkflowTodoShell.vue.js +10 -7
  15. package/dist/src/hooks/createDialogHooks.js +8 -6
  16. package/dist/src/hooks/useWorkflowSnapshot.d.ts +3 -2
  17. package/dist/src/hooks/useWorkflowSnapshot.js +1 -1
  18. package/dist/src/hooks/workflowTodo.d.ts +8 -0
  19. package/dist/src/hooks/workflowTodo.js +1 -1
  20. package/dist/src/mixin/globalMixin.js +1 -1
  21. package/dist/src/packages/index.d.ts +9 -3
  22. package/dist/src/packages/index.js +1 -1
  23. package/dist/src/plugins/plugins.js +1 -1
  24. package/dist/src/plugins/renderDialog.js +1 -1
  25. package/dist/src/utils/FrameworkUtils.js +1 -1
  26. package/dist/src/utils/modules.js +1 -1
  27. package/dist/src/utils/uploadAccept.js +1 -1
  28. package/dist/styles/element-ui.css +1 -1
  29. package/package.json +1 -1
  30. package/dist/chunks/ElDescForm.vue_vue_type_style_index_0_lang-DRKuI9Xa.js +0 -1
@@ -0,0 +1,3 @@
1
+ import{defineComponent as pe,ref as de,reactive as ie,onMounted as me,onUpdated as ye,onBeforeUnmount as ve,computed as E,resolveComponent as p,openBlock as c,createBlock as d,withKeys as he,withCtx as i,createCommentVNode as S,createVNode as C,createElementBlock as x,Fragment as F,renderList as T,normalizeClass as Y,createElementVNode as q,toDisplayString as A,mergeProps as y,createTextVNode as D,renderSlot as z,nextTick as I}from"vue";import{DATE_FORMAT as fe,formatDateTime as be}from"../src/utils/dateTime.js";const _e=["onMouseenter"],Ve={key:11,class:"el-desc-form__readonly-slot"},$="—",ke=pe({__name:"ElDescForm",props:{model:{},fields:{},rules:{default:()=>({})},column:{default:4},border:{type:Boolean,default:!0},readonly:{type:Boolean,default:!1},title:{},titleLevel:{default:"1"},scrollToError:{type:Boolean,default:!0},scrollIntoViewOptions:{type:Boolean,default:()=>({behavior:"smooth",block:"center"})}},setup(a,{expose:K}){const h=a,V=de(),g=new Map,k=new Map,U=ie({}),w=e=>{const o=g.get(e),l=!!o&&o.scrollWidth>o.clientWidth;U[e]!==l&&(U[e]=l)},L=()=>{I(()=>{g.forEach((e,o)=>w(o))})},P=(e,o)=>{const l=o;if(g.get(e)===l){l&&w(e);return}if(k.get(e)?.disconnect(),k.delete(e),delete U[e],!l){g.delete(e);return}if(g.set(e,l),typeof ResizeObserver<"u"){const n=new ResizeObserver(()=>w(e));n.observe(l),k.set(e,n)}I(()=>w(e))};me(L),ye(L),ve(()=>{k.forEach(e=>e.disconnect()),k.clear(),g.clear()});const f=E(()=>Math.min(4,Math.max(1,h.column||4))),H=e=>{const o=V.value?.$el;if(!o)return;const l=Array.from(o.querySelectorAll("input, textarea")).filter(m=>!m.disabled&&m.type!=="checkbox"&&m.type!=="radio"&&m.type!=="hidden"&&(m.offsetParent!==null||m.getClientRects().length>0));if(!l.length)return;const s=document.activeElement;if(!s||!l.includes(s))return;const n=l.indexOf(s),u=e.shiftKey?-1:1,b=(n+u+l.length)%l.length;e.preventDefault();const _=l[b];_.focus();try{const m=_.value.length;_.setSelectionRange(m,m)}catch{}},N=E(()=>{const e={...h.rules};for(const o of h.fields)o.rules?.length&&(e[o.prop]=[...e[o.prop]||[],...o.rules]);return e}),W=E(()=>{const e=[];let o=0,l=0;const s=n=>{for(let u=0;u<n;u+=1)e.push({prop:`__descFormFiller${l++}`,label:"",type:"slot",span:1})};for(const n of h.fields){if(!(typeof n.show=="function"?n.show(h.model):n.show!==!1))continue;const b=Q(n),_=Math.min(Math.max(1,b.span??1),f.value);_>f.value-o&&(s(f.value-o),o=0),e.push(b),o+=_,o>=f.value&&(o=0)}return o>0&&s(f.value-o),e}),M=e=>{const o=e.props||{};return h.readonly===!0||e.readonly===!0||o.readonly===!0},B=(e,o)=>e===o||String(e)===String(o),R=(e,o)=>{if(!e?.length)return;const l=e.find(s=>B(s.value,o));return l===void 0?void 0:String(l.label)},O=(e,o)=>{if(e?.length)for(const l of e){if(B(l.value,o))return String(l.label??l.name??"");if(l.children?.length){const s=O(l.children,o);if(s)return s}}},G=(e,o)=>{let l=e||[];const s=[];for(const n of o){const u=l.find(b=>B(b.value,n));if(!u)break;s.push(String(u.label??u.name??"")),l=u.children||[]}return s.join(" / ")},v=e=>e.trim()||$,j=e=>{const o=h.model?.[e.prop];if(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0)return $;const l=e.props||{},s=e.options;if(e.type==="select")return Array.isArray(o)?v(o.map(n=>R(s,n)??String(n)).filter(Boolean).join("、")):v(R(s,o)??String(o));if(e.type==="radio")return v(R(s,o)??String(o));if(e.type==="checkbox"){const n=Array.isArray(o)?o:[o];return v(n.map(u=>R(s,u)??String(u)).filter(Boolean).join("、"))}if(e.type==="tree-select"){const n=s||l.data;return Array.isArray(o)?v(o.map(u=>O(n,u)??String(u)).filter(Boolean).join("、")):v(O(n,o)??String(o))}if(e.type==="cascader"){const n=G(s,Array.isArray(o)?o:[o]);return v(n||(Array.isArray(o)?o.join(" / "):String(o)))}if(e.type==="switch")return o===!0||o===1||o==="1"?l["active-text"]||"是":l["inactive-text"]||"否";if(e.type==="date"){const n=String(l.type||"date"),u=String(l.valueFormat||l.format||"")||(n==="year"?"YYYY":n==="month"?"YYYY-MM":n==="time"?"HH:mm:ss":fe);return v(be(String(o),{format:u})||String(o))}return v(String(o))},J=e=>!!N.value[e.prop]?.some(l=>l.required),Q=e=>{const o=l=>typeof l=="function"?l(h.model):l;return{...e,span:e.type==="textarea"?f.value:Math.min(Math.max(1,e.span??1),f.value),label:o(e.label),tip:e.tip?o(e.tip):void 0,options:e.options?o(e.options):void 0,placeholder:e.placeholder?o(e.placeholder):void 0,props:e.props?o(e.props):void 0}};return K({validate:e=>V.value?.validate(e),validateField:(e,o)=>V.value?.validateField(e,o),scrollToField:e=>V.value?.scrollToField(e),resetFields:()=>V.value?.resetFields(),clearValidate:()=>V.value?.clearValidate()}),(e,o)=>{const l=p("el-title"),s=p("el-icons"),n=p("el-tooltip"),u=p("el-input"),b=p("el-numeric-input"),_=p("el-option"),m=p("el-select"),X=p("el-date-picker"),Z=p("el-switch"),ee=p("el-radio"),oe=p("el-radio-group"),te=p("el-checkbox"),le=p("el-checkbox-group"),re=p("el-tree-select"),ne=p("el-cascader"),ae=p("el-form-item"),se=p("el-descriptions-item"),ce=p("el-descriptions"),ue=p("el-form");return c(),d(ue,{ref_key:"formRef",ref:V,class:"el-desc-form",model:a.model,rules:N.value,"validate-on-rule-change":!1,"scroll-to-error":a.scrollToError,"scroll-into-view-options":a.scrollIntoViewOptions,onKeydown:he(H,["tab"])},{default:i(()=>[S(` 内容块标题:弹窗/抽屉内表单区块用默认的二级标题(level 1);
2
+ 页面内的区块标题传 title-level="0" 用一级标题(16px)。
3
+ 两种场景都统一用 el-desc-form title 声明式渲染,避免各页面手写标题 `),a.title?(c(),d(l,{key:0,level:a.titleLevel,title:a.title,style:{"border-bottom":"var(--border)","margin-bottom":"8px"}},null,8,["level","title"])):S("v-if",!0),C(ce,{direction:"vertical",column:f.value,border:a.border},{default:i(()=>[(c(!0),x(F,null,T(W.value,t=>(c(),d(se,{key:t.prop,label:t.label||void 0,span:t.span},{label:i(()=>[t.label?(c(),x("span",{key:0,class:Y(["el-desc-form__label",{"el-desc-form__label--required":J(t)}])},[D(A(t.label)+" ",1),t.tip?(c(),d(n,{key:0,content:t.tip,placement:"top","popper-class":"el-desc-form-tip-popper"},{default:i(()=>[C(s,{"model-value":"adtec-info",class:"el-desc-form__label-tip"})]),_:1},8,["content"])):S("v-if",!0)],2)):S("v-if",!0)]),default:i(()=>[C(ae,{prop:M(t)?void 0:t.prop,class:Y({"el-desc-form__form-item--multiline":t.type==="textarea"}),style:{"margin-bottom":"0"},"hide-required-asterisk":""},{default:i(()=>[S(" 只读模式:统一处理文本溢出,只有内容超出单元格宽度时才打开 tooltip "),M(t)&&t.type&&t.type!=="slot"?(c(),d(n,{key:0,content:j(t),disabled:!U[t.prop],effect:"light",placement:"top","popper-class":"el-desc-form-readonly-tip-popper"},{default:i(()=>[q("span",{class:Y(["el-desc-form__readonly-text",{"el-desc-form__readonly-text--multiline":t.type==="textarea"}]),onMouseenter:r=>w(t.prop)},[q("span",{ref_for:!0,ref:r=>P(t.prop,r),class:"el-desc-form__readonly-text-content"},A(j(t)),513)],42,_e)]),_:2},1032,["content","disabled"])):t.type==="input"?(c(),d(u,y({key:1,modelValue:a.model[t.prop],"onUpdate:modelValue":r=>a.model[t.prop]=r},{ref_for:!0},t.props,{placeholder:t.placeholder}),null,16,["modelValue","onUpdate:modelValue","placeholder"])):t.type==="textarea"?(c(),d(u,y({key:2,modelValue:a.model[t.prop],"onUpdate:modelValue":r=>a.model[t.prop]=r,type:"textarea",autosize:{minRows:2,maxRows:4}},{ref_for:!0},t.props,{placeholder:t.placeholder}),null,16,["modelValue","onUpdate:modelValue","placeholder"])):t.type==="number"?(c(),d(b,y({key:3,modelValue:a.model[t.prop],"onUpdate:modelValue":r=>a.model[t.prop]=r},{ref_for:!0},t.props),null,16,["modelValue","onUpdate:modelValue"])):t.type==="select"?(c(),d(m,y({key:4,modelValue:a.model[t.prop],"onUpdate:modelValue":r=>a.model[t.prop]=r},{ref_for:!0},t.props,{placeholder:t.placeholder,clearable:""}),{default:i(()=>[(c(!0),x(F,null,T(t.options,r=>(c(),d(_,{key:r.value,label:r.label,value:r.value,disabled:r.disabled},null,8,["label","value","disabled"]))),128))]),_:2},1040,["modelValue","onUpdate:modelValue","placeholder"])):t.type==="date"?(c(),d(X,y({key:5,modelValue:a.model[t.prop],"onUpdate:modelValue":r=>a.model[t.prop]=r},{ref_for:!0},t.props,{type:t.props?.type||"date",placeholder:t.placeholder,style:{width:"100%"}}),null,16,["modelValue","onUpdate:modelValue","type","placeholder"])):t.type==="switch"?(c(),d(Z,y({key:6,modelValue:a.model[t.prop],"onUpdate:modelValue":r=>a.model[t.prop]=r},{ref_for:!0},t.props),null,16,["modelValue","onUpdate:modelValue"])):t.type==="radio"?(c(),d(oe,y({key:7,modelValue:a.model[t.prop],"onUpdate:modelValue":r=>a.model[t.prop]=r},{ref_for:!0},t.props),{default:i(()=>[(c(!0),x(F,null,T(t.options,r=>(c(),d(ee,{key:r.value,value:r.value},{default:i(()=>[D(A(r.label),1)]),_:2},1032,["value"]))),128))]),_:2},1040,["modelValue","onUpdate:modelValue"])):t.type==="checkbox"?(c(),d(le,y({key:8,modelValue:a.model[t.prop],"onUpdate:modelValue":r=>a.model[t.prop]=r},{ref_for:!0},t.props),{default:i(()=>[(c(!0),x(F,null,T(t.options,r=>(c(),d(te,{key:r.value,value:r.value},{default:i(()=>[D(A(r.label),1)]),_:2},1032,["value"]))),128))]),_:2},1040,["modelValue","onUpdate:modelValue"])):t.type==="tree-select"?(c(),d(re,y({key:9,modelValue:a.model[t.prop],"onUpdate:modelValue":r=>a.model[t.prop]=r},{ref_for:!0},t.props,{placeholder:t.placeholder,style:{width:"100%"}}),null,16,["modelValue","onUpdate:modelValue","placeholder"])):t.type==="cascader"?(c(),d(ne,y({key:10,modelValue:a.model[t.prop],"onUpdate:modelValue":r=>a.model[t.prop]=r,options:t.options},{ref_for:!0},t.props,{style:{width:"100%"}}),null,16,["modelValue","onUpdate:modelValue","options"])):M(t)?(c(),x("div",Ve,[z(e.$slots,t.slot||t.prop,{field:t,model:a.model})])):z(e.$slots,t.slot||t.prop,{field:t,model:a.model},void 0,void 0,12)]),_:2},1032,["prop","class"])]),_:2},1032,["label","span"]))),128))]),_:3},8,["column","border"])]),_:3},8,["model","rules","scroll-to-error","scroll-into-view-options"])}}});export{ke as _};
@@ -1,9 +1,11 @@
1
1
  import type { IWfProcessDefVo } from '../../interface/workflow/IWfProcessDefVo';
2
- import type { IWfProcessInstVo, IWfTaskVo } from '../../interface/workflow/IWfTaskVo';
2
+ import type { IWfTaskVo } from '../../interface/workflow/IWfTaskVo';
3
3
  import type { IWfTaskAskVo } from '../../interface/workflow/IWfTaskAskVo';
4
4
  import type { IWfTaskUsersVo } from '../../interface/workflow/IWfTaskUsersVo';
5
5
  import type { IWfReturnNodeVo } from '../../interface/workflow/IWfReturnNodeVo';
6
6
  import type { IWfNodeLastApprovalBatchVo } from '../../interface/workflow/IWfNodeLastApprovalVo';
7
+ /** 手动失效:撤回/审批完成、需要拿最新流程详情时调用 */
8
+ export declare const invalidateProcessTaskList: (processInstId?: string) => void;
7
9
  declare const _default: {
8
10
  addProcessInst(WfProcessDefVo: IWfProcessDefVo): Promise<IWfProcessDefVo>;
9
11
  /**
@@ -18,8 +20,14 @@ declare const _default: {
18
20
  /**
19
21
  * 审核当时快照(通用):按业务单号 + 工作流任务取该节点保存的快照内容。
20
22
  * 业务单号全局唯一,bizType 可省略;用于历史查看时判定数据来源、还原当时那一版。
23
+ *
24
+ * wfTaskId 取该任务那一条;取不到(如流程启动时保存的“提交”快照没有任务ID)时按 taskDefKey
25
+ * 取该节点最后一次保存的快照——驳回后重新提交会产生多轮同节点快照,必须取最后一轮。
21
26
  */
22
- snapshot(bizId: string, wfTaskId?: string): Promise<Record<string, any>>;
27
+ snapshot(bizId: string, params?: string | {
28
+ wfTaskId?: string;
29
+ taskDefKey?: string;
30
+ }): Promise<Record<string, any>>;
23
31
  taskComplete(task: IWfTaskAskVo): Promise<IWfTaskVo>;
24
32
  taskTransfer(task: IWfTaskAskVo): Promise<IWfTaskVo>;
25
33
  taskReject(task: IWfTaskAskVo): Promise<IWfTaskVo>;
@@ -32,7 +40,7 @@ declare const _default: {
32
40
  addOrMinusAssignee(data: IWfTaskUsersVo): Promise<string>;
33
41
  getTaskInst(taskId: string): Promise<IWfTaskVo>;
34
42
  getWfTaskByBusinessId(businessId: string): Promise<IWfTaskVo>;
35
- getProcessTaskList(processInstId: string): Promise<IWfProcessInstVo>;
43
+ getProcessTaskList(processInstId: string): Promise<any>;
36
44
  getWfProcessInstByBusinessId(businessId: string): Promise<IWfTaskVo>;
37
45
  getReviewDetail(taskId: string): Promise<IWfTaskVo>;
38
46
  /** 获取指定节点最后一轮审批人及审批意见(支持多节点,不限制流程是否结束) */
@@ -1 +1 @@
1
- import s from"../../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"vue";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";const r="/api/workflow/task",o="/api/workflow/workbench/",L={addProcessInst(t){return s.post("/api/workflow/procinstance/start",t)},processWithdrawalVerification(t){return s.post(o+"processWithdrawalVerification",t)},processWithdrawalPreview(t){return s.post(o+"processWithdrawalPreview",t)},processWithdrawal(t){return s.post(o+"processWithdrawal",t)},snapshot(t,e){return s.get("/api/business/workflow/compensation/snapshot",{bizId:t,wfTaskId:e})},taskComplete(t){return s.post(r+"/taskComplete",t)},taskTransfer(t){return s.post(r+"/taskTransfer",t)},taskReject(t){return s.post(r+"/taskReject",t)},findReturnTaskList(t,e=!1){return s.post(r+"/findReturnTaskList",{taskId:t,ignoreBackNodes:e})},taskReturn(t){return s.post(r+"/taskReturn",t)},getTaskCandidate(t){return s.post(r+"/getTaskCandidate",{taskId:t})},getTaskCandidateList(t){return s.post(r+"/getTaskCandidateList",{taskId:t})},setAssignee(t){return s.post(r+"/setAssignee",t)},setAssigneeList(t){return s.post(r+"/setAssigneeList",t)},addOrMinusAssignee(t){return s.post(r+"/addOrMinusAssignee",t)},getTaskInst(t){return s.post(r+"/getTaskInst",{taskId:t})},getWfTaskByBusinessId(t){return s.post(r+"/getWfTaskByBusinessId",{businessId:t})},getProcessTaskList(t){return s.get("/api/workflow/workbench/process/"+t)},getWfProcessInstByBusinessId(t){return s.get(r+"/getUserTaskInfo",{businessId:t})},getReviewDetail(t){return s.get(r+"/reviewDetail",{taskId:t})},getLastNodeApprovalByBusinessId(t,e){const a={businessId:t,nodeCodes:Array.isArray(e)?e:[e]};return s.post(r+"/lastNodeApproval",a)}};export{L as default};
1
+ import e from"../../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"vue";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";const s="/api/workflow/task",i="/api/workflow/workbench/",p=5e3,a=new Map,C=t=>{t?a.delete(t):a.clear()},P={addProcessInst(t){return e.post("/api/workflow/procinstance/start",t)},processWithdrawalVerification(t){return e.post(i+"processWithdrawalVerification",t)},processWithdrawalPreview(t){return e.post(i+"processWithdrawalPreview",t)},processWithdrawal(t){return e.post(i+"processWithdrawal",t)},snapshot(t,r){const o=typeof r=="string"?{wfTaskId:r}:r||{};return e.get("/api/business/workflow/compensation/snapshot",{bizId:t,wfTaskId:o.wfTaskId,taskDefKey:o.taskDefKey})},taskComplete(t){return e.post(s+"/taskComplete",t)},taskTransfer(t){return e.post(s+"/taskTransfer",t)},taskReject(t){return e.post(s+"/taskReject",t)},findReturnTaskList(t,r=!1){return e.post(s+"/findReturnTaskList",{taskId:t,ignoreBackNodes:r})},taskReturn(t){return e.post(s+"/taskReturn",t)},getTaskCandidate(t){return e.post(s+"/getTaskCandidate",{taskId:t})},getTaskCandidateList(t){return e.post(s+"/getTaskCandidateList",{taskId:t})},setAssignee(t){return e.post(s+"/setAssignee",t)},setAssigneeList(t){return e.post(s+"/setAssigneeList",t)},addOrMinusAssignee(t){return e.post(s+"/addOrMinusAssignee",t)},getTaskInst(t){return e.post(s+"/getTaskInst",{taskId:t})},getWfTaskByBusinessId(t){return e.post(s+"/getWfTaskByBusinessId",{businessId:t})},getProcessTaskList(t){const r=a.get(t);if(r&&Date.now()-r.time<p)return r.promise;const o=e.get("/api/workflow/workbench/process/"+t).catch(n=>{throw a.delete(t),n});return a.set(t,{time:Date.now(),promise:o}),o},getWfProcessInstByBusinessId(t){return e.get(s+"/getUserTaskInfo",{businessId:t})},getReviewDetail(t){return e.get(s+"/reviewDetail",{taskId:t})},getLastNodeApprovalByBusinessId(t,r){const o={businessId:t,nodeCodes:Array.isArray(r)?r:[r]};return e.post(s+"/lastNodeApproval",o)}};export{P as default,C as invalidateProcessTaskList};
@@ -1,4 +1,4 @@
1
- import{defineComponent as c,openBlock as t,createElementBlock as n,Fragment as r,createCommentVNode as o,createElementVNode as a,normalizeClass as d,toDisplayString as i,renderSlot as s}from"vue";import{_ as p}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";const _={class:"el-card-section"},m=c({__name:"ElCardSection",props:{title:{},border:{type:Boolean,default:!0},padding:{type:Boolean,default:!0}},setup(e){return(l,f)=>(t(),n(r,null,[o(`
1
+ import{defineComponent as r,openBlock as t,createElementBlock as n,Fragment as c,createCommentVNode as o,createElementVNode as a,normalizeClass as d,toDisplayString as i,renderSlot as s}from"vue";import{_ as p}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";const _={class:"el-card-section"},f=r({__name:"ElCardSection",props:{title:{},border:{type:Boolean,default:!0},padding:{type:Boolean,default:!0}},setup(e){return(l,m)=>(t(),n(c,null,[o(`
2
2
  详情/配置区块:标题栏(可选) + 内容体,标题贴顶横跨满宽、内容体统一 8px 内边距。
3
3
  用于页面内的区块(默认自带 8px 内容体内边距);
4
4
  作为弹窗/抽屉内容区块时传 :padding="false",左右间距交由弹窗/抽屉 body 统一提供,
@@ -6,4 +6,4 @@ import{defineComponent as c,openBlock as t,createElementBlock as n,Fragment as r
6
6
  用法:
7
7
  <el-card-section title="基本信息">…内容…</el-card-section>
8
8
  <el-card-section title="基本信息" :padding="false">…内容…</el-card-section>
9
- `),a("section",_,[e.title?(t(),n("header",{key:0,class:d(["el-card-section__title",{"el-card-section__title--border":e.border}])},i(e.title),3)):o("v-if",!0),a("div",{class:d(["el-card-section__body",{"el-card-section__body--no-padding":!e.padding}])},[s(l.$slots,"default",{},void 0,!0)],2)])],2112))}}),y=p(m,[["__scopeId","data-v-51cc5ed3"]]);export{y as default};
9
+ `),a("section",_,[e.title?(t(),n("header",{key:0,class:d(["el-card-section__title",{"el-card-section__title--border":e.border}])},i(e.title),3)):o("v-if",!0),a("div",{class:d(["el-card-section__body",{"el-card-section__body--no-padding":!e.padding}])},[s(l.$slots,"default",{},void 0,!0)],2)])],2112))}}),g=p(f,[["__scopeId","data-v-aaf1b73e"]]);export{g as default};
@@ -17,8 +17,15 @@ type __VLS_Props = {
17
17
  border?: boolean;
18
18
  /** 只读模式:所有字段不渲染编辑框,改为文本展示 */
19
19
  readonly?: boolean;
20
- /** 内容块二级标题(弹窗/抽屉内表单区块统一使用) */
20
+ /**
21
+ * 内容块标题文案(弹窗/抽屉内表单区块统一使用)
22
+ */
21
23
  title?: string;
24
+ /**
25
+ * 内容块标题级别:默认 '1'(二级标题,14px,弹窗/抽屉内的表单区块);
26
+ * 页面内的区块标题传 '0'(一级标题,16px)。
27
+ */
28
+ titleLevel?: string;
22
29
  /**
23
30
  * 校验失败时自动滚动到第一个报错字段(默认开启)。
24
31
  * 与安徽中烟申报一致的交互:提交校验不通过时把用户带到出错位置。
@@ -54,6 +61,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
54
61
  rules: Record<string, FormItemRule[]>;
55
62
  readonly: boolean;
56
63
  column: number;
64
+ titleLevel: string;
57
65
  scrollToError: boolean;
58
66
  scrollIntoViewOptions: boolean | ScrollIntoViewOptions;
59
67
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1 +1 @@
1
- import{_ as o}from"../../../chunks/ElDescForm.vue_vue_type_style_index_0_lang-DRKuI9Xa.js";import"vue";import"../../utils/dateTime.js";export{o as default};
1
+ import{_ as o}from"../../../chunks/ElDescForm.vue_vue_type_style_index_0_lang-BkJW9BQw.js";import"vue";import"../../utils/dateTime.js";export{o as default};
@@ -1 +1 @@
1
- import{defineComponent as ve,useModel as _,computed as u,ref as fe,watch as be,resolveComponent as p,openBlock as n,createElementBlock as g,toDisplayString as E,createBlock as m,mergeProps as h,unref as pe,withCtx as U,Fragment as O,renderList as H,createElementVNode as B,normalizeClass as ge,createVNode as C,createCommentVNode as he,createTextVNode as ee,mergeModels as Ve}from"vue";import ye from"../RichTextEditor/RichTextEditor.vue.js";import{isIndicatorReadonly as xe,isComputedIndicator as Pe,INDICATOR_RANGE_TYPE as d,parseIndicatorRangeValue as Ne,validateIndicatorValue as ke,formatIndicatorRangeValue as Ee}from"./interface.js";import{_ as Oe}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../../chunks/preload-helper-BlTxHScW.js";import"element-plus";import"../../utils/uuid.js";import"uuid";import"../RichTextEditor/richTextHtmlUtils.js";import"../RichTextEditor/installUmoEditorApp.js";import"tdesign-vue-next";import"../RichTextEditor/richTextImageUpload.js";import"../../api/DocumentApi.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";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/buildUploadHeaders.js";const Ie={class:"el-indicator-input"},Se={key:0,class:"el-indicator-input__readonly-value"},Me={key:8,class:"indicator-range-field"},Ue={class:"indicator-range-operator"},Be={class:"indicator-range-operator"},we={class:"indicator-range-prefix"},Ce={key:0,class:"indicator-range-error"},Re=ve({__name:"ElIndicatorInput",props:Ve({config:{default:()=>({})},options:{default:()=>[]},label:{default:""},placeholder:{default:""},businessId:{default:void 0},clearable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},maxlength:{default:1e3},showWordLimit:{type:Boolean,default:!0},controlProps:{default:()=>({})}},{modelValue:{default:""},modelModifiers:{},text:{default:""},textModifiers:{}}),emits:["update:modelValue","update:text"],setup(a,{expose:le}){const r=a,s=_(a,"modelValue"),b=_(a,"text"),j=u(()=>r.options.some(e=>Array.isArray(e.children)&&e.children.length>0)),D=u(()=>r.readonly||xe(r.config)),ae=u(()=>Pe(r.config)),c=u(()=>D.value),te=u(()=>b.value||s.value||"—"),o=u(()=>{const e=r.config.rangeYpe;return e===d.MULTI_LINE_TEXT?"textarea":e===d.RICH_TEXT?"rich-text":e===d.YEAR?"year":e===d.MONTH?"month":e===d.DATE?"date":e===d.TIME?"time":e===d.NUMBER||e===d.SCALE_NUMBER||e===d.RANGE_NUMBER?e===d.SCALE_NUMBER&&Q.value.length>0?"scale-select":e===d.RANGE_NUMBER?"range-number":"number":e===d.RADIO?"radio":e===d.CHECKBOX?"checkbox":e===d.SINGLE_SELECT||e===d.MULTIPLE_SELECT?j.value?"tree-select":"select":r.config.indexAttriValue==="02"?"date":r.config.indexAttriValue==="03"?"number":r.config.indexAttriValue==="04"?j.value?"tree-select":"select":"input"}),I=u(()=>r.config.rangeYpe===d.MULTIPLE_SELECT||r.config.rangeYpe===d.CHECKBOX),R=u(()=>{const e=[],l=i=>{i.forEach(y=>{e.push(y),y.children?.length&&l(y.children)})};return l(r.options),e}),T=e=>e.disabled===!0||e.isValid==="0",re=e=>R.value.find(l=>String(l.value)===e)?.label,v=u(()=>{const e=r.config.rangeOfValue||"";return e==="x>a"?{double:!1,operator:">",leftOperator:"",rightOperator:"",firstPlaceholder:"请输入最小值",secondPlaceholder:""}:e==="x≥a"?{double:!1,operator:"≥",leftOperator:"",rightOperator:"",firstPlaceholder:"请输入最小值",secondPlaceholder:""}:e==="x<a"?{double:!1,operator:"<",leftOperator:"",rightOperator:"",firstPlaceholder:"请输入最大值",secondPlaceholder:""}:e==="x≤a"?{double:!1,operator:"≤",leftOperator:"",rightOperator:"",firstPlaceholder:"请输入最大值",secondPlaceholder:""}:e==="x=a"?{double:!1,operator:"=",leftOperator:"",rightOperator:"",firstPlaceholder:"请输入固定值",secondPlaceholder:""}:e==="x±a"?{double:!0,operator:"±",leftOperator:"±",rightOperator:"",firstPlaceholder:"请输入固定值",secondPlaceholder:"请输入允差值"}:{double:!0,operator:"",leftOperator:e.startsWith("a≤")?"≤":"<",rightOperator:e.endsWith("≤b")?"≤":"<",firstPlaceholder:"请输入最小值",secondPlaceholder:"请输入最大值"}}),L=u(()=>Ne(r.config,s.value)),W=u(()=>L.value.first),z=u(()=>L.value.second),x=fe(!1),A=u(()=>ke(r.config,s.value)),K=(e,l)=>{const i={...L.value};e===0?i.first=l:i.second=l,s.value=Ee(r.config,i),k()},G=e=>K(0,e),q=e=>K(1,e),oe=()=>(x.value=!0,!A.value),k=()=>{if(o.value!=="rich-text"){if(o.value==="range-number"){const e=L.value,l=r.config.rangeOfValue||"";if(e.first==null&&e.second==null){b.value="";return}l==="x±a"?b.value=`${e.first??"x"} ± ${e.second??"a"}`:v.value.double?b.value=`${e.first??"a"} ${v.value.leftOperator} x ${v.value.rightOperator} ${e.second??"b"}`:b.value=`x ${v.value.operator} ${e.first}`;return}if(o.value==="select"||o.value==="scale-select"||o.value==="tree-select"||o.value==="radio"||o.value==="checkbox"){const e=s.value.split(",").filter(Boolean);if(!e.length){b.value="";return}if(!r.options.length&&b.value)return;b.value=e.map(l=>String(re(l)??l)).join("、");return}b.value=s.value}},f=u({get:()=>s.value,set:e=>{s.value=e==null?"":String(e),k()}}),X=u({get:()=>s.value.split(",").filter(Boolean),set:e=>{s.value=e.join(","),k()}}),S=u({get:()=>I.value?X.value:s.value,set:e=>{s.value=Array.isArray(e)?e.join(","):String(e??""),k()}}),ne=u(()=>{if(!s.value.trim())return;const e=Number(s.value);return Number.isFinite(e)?e:void 0}),P=u(()=>{const e=Number(r.config.dataScale);if(Number.isFinite(e)&&e>0)return e;const l=Number(r.config.decimalPlaces);return Number.isInteger(l)&&l>=0?10**-Math.min(l,100):void 0}),J=e=>{const l=Number(r.config.decimalPlaces);return Number.isInteger(l)&&l>=0?Number(e.toFixed(Math.min(l,100))):e},Y=u(()=>{let e=r.config.minValue,l=r.config.maxValue;r.config.rangeOfValue==="x=a"&&r.config.fixedValue!=null?(e=r.config.fixedValue,l=r.config.fixedValue):r.config.rangeOfValue==="x±a"&&r.config.fixedValue!=null&&r.config.tolerance!=null&&(e??(e=Number(r.config.fixedValue)-Number(r.config.tolerance)),l??(l=Number(r.config.fixedValue)+Number(r.config.tolerance)));const i=P.value;return e!=null&&r.config.isContainMin==="0"&&i&&(e=J(Number(e)+i)),l!=null&&r.config.isContainMax==="0"&&i&&(l=J(Number(l)-i)),{min:e,max:l}}),Q=u(()=>{if(r.config.rangeYpe!==d.SCALE_NUMBER)return[];const e=Y.value.min,l=Y.value.max,i=P.value;if(e==null||l==null||i==null||!Number.isFinite(e)||!Number.isFinite(l)||!Number.isFinite(i)||i<=0||l<e)return[];const y=Math.floor((l-e)/i+1e-9)+1;if(y<=0||y>1e3)return[];const w=Number(r.config.decimalPlaces),N=M=>Number.isInteger(w)&&w>=0?Number(M.toFixed(Math.min(w,100))):M;return Array.from({length:y},(M,$)=>{const F=N(e+$*i);return{label:F,value:F}})}),Z=u(()=>o.value==="year"?"YYYY":o.value==="month"?"YYYY-MM":"YYYY-MM-DD"),V=u(()=>r.placeholder||r.config.tip?r.placeholder||r.config.tip:`${["input","textarea","rich-text","number"].includes(o.value)?"请输入":"请选择"}${r.label||"指标值"}`),ue={label:"label",children:"children",disabled:e=>T(e)},ie=e=>{s.value=e==null?"":String(e),k()};return be([s,()=>r.options,o],k,{immediate:!0,deep:!0}),le({controlType:o,syncText:k,validate:oe,isReadonlyIndicator:D,isComputedIndicator:ae}),(e,l)=>{const i=p("el-input"),y=p("el-date-picker"),w=p("el-time-picker"),N=p("el-numeric-input"),M=p("el-option"),$=p("el-select"),F=p("el-tree-select"),de=p("el-radio"),se=p("el-radio-group"),ce=p("el-checkbox"),me=p("el-checkbox-group");return n(),g("div",Ie,[D.value?(n(),g("span",Se,E(te.value),1)):o.value==="rich-text"?(n(),m(ye,{key:1,modelValue:f.value,"onUpdate:modelValue":l[0]||(l[0]=t=>f.value=t),text:b.value,"onUpdate:text":l[1]||(l[1]=t=>b.value=t),"is-edit":!a.disabled&&!c.value,"editor-config":{businessId:a.businessId,placeholder:V.value}},null,8,["modelValue","text","is-edit","editor-config"])):o.value==="textarea"?(n(),m(i,h({key:2,modelValue:f.value,"onUpdate:modelValue":l[2]||(l[2]=t=>f.value=t)},a.controlProps,{type:"textarea",rows:3,maxlength:a.maxlength,"show-word-limit":a.showWordLimit,disabled:a.disabled,readonly:c.value,placeholder:V.value}),null,16,["modelValue","maxlength","show-word-limit","disabled","readonly","placeholder"])):o.value==="input"?(n(),m(i,h({key:3,modelValue:f.value,"onUpdate:modelValue":l[3]||(l[3]=t=>f.value=t)},a.controlProps,{maxlength:a.maxlength,"show-word-limit":a.showWordLimit,disabled:a.disabled,readonly:c.value,placeholder:V.value}),null,16,["modelValue","maxlength","show-word-limit","disabled","readonly","placeholder"])):o.value==="year"||o.value==="month"||o.value==="date"?(n(),m(y,h({key:4,modelValue:f.value,"onUpdate:modelValue":l[4]||(l[4]=t=>f.value=t)},a.controlProps,{type:o.value,format:Z.value,"value-format":Z.value,disabled:a.disabled||c.value,clearable:a.clearable,placeholder:V.value,style:{width:"100%"}}),null,16,["modelValue","type","format","value-format","disabled","clearable","placeholder"])):o.value==="time"?(n(),m(w,h({key:5,modelValue:f.value,"onUpdate:modelValue":l[5]||(l[5]=t=>f.value=t)},a.controlProps,{format:"HH:mm:ss","value-format":"HH:mm:ss",disabled:a.disabled||c.value,clearable:a.clearable,placeholder:V.value,style:{width:"100%"}}),null,16,["modelValue","disabled","clearable","placeholder"])):o.value==="number"?(n(),m(N,h({key:6,"model-value":ne.value},a.controlProps,{min:Y.value.min,max:Y.value.max,precision:a.config.decimalPlaces,step:P.value,"step-strictly":a.config.rangeYpe===pe(d).SCALE_NUMBER,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:V.value,"onUpdate:modelValue":ie}),null,16,["model-value","min","max","precision","step","step-strictly","disabled","readonly","clearable","placeholder"])):o.value==="scale-select"?(n(),m($,h({key:7,modelValue:S.value,"onUpdate:modelValue":l[6]||(l[6]=t=>S.value=t)},a.controlProps,{filterable:"",disabled:a.disabled||c.value,clearable:a.clearable,placeholder:V.value,style:{width:"100%"}}),{default:U(()=>[(n(!0),g(O,null,H(Q.value,t=>(n(),m(M,{key:String(t.value),label:String(t.label),value:String(t.value)},null,8,["label","value"]))),128))]),_:1},16,["modelValue","disabled","clearable","placeholder"])):o.value==="range-number"?(n(),g("div",Me,[B("div",{class:ge(["indicator-range-input",{"is-error":x.value&&A.value}])},[v.value.operator==="±"?(n(),g(O,{key:0},[C(N,{"model-value":W.value,precision:a.config.decimalPlaces,step:P.value,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:v.value.firstPlaceholder,"onUpdate:modelValue":G,onBlur:l[7]||(l[7]=t=>x.value=!0)},null,8,["model-value","precision","step","disabled","readonly","clearable","placeholder"]),l[16]||(l[16]=B("span",{class:"indicator-range-operator"},"±",-1)),C(N,{"model-value":z.value,precision:a.config.decimalPlaces,step:P.value,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:v.value.secondPlaceholder,"onUpdate:modelValue":q,onBlur:l[8]||(l[8]=t=>x.value=!0)},null,8,["model-value","precision","step","disabled","readonly","clearable","placeholder"])],64)):v.value.double?(n(),g(O,{key:1},[C(N,{"model-value":W.value,precision:a.config.decimalPlaces,step:P.value,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:v.value.firstPlaceholder,"onUpdate:modelValue":G,onBlur:l[9]||(l[9]=t=>x.value=!0)},null,8,["model-value","precision","step","disabled","readonly","clearable","placeholder"]),B("span",Ue,E(v.value.leftOperator),1),l[17]||(l[17]=B("span",{class:"indicator-range-variable"},"x",-1)),B("span",Be,E(v.value.rightOperator),1),C(N,{"model-value":z.value,precision:a.config.decimalPlaces,step:P.value,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:v.value.secondPlaceholder,"onUpdate:modelValue":q,onBlur:l[10]||(l[10]=t=>x.value=!0)},null,8,["model-value","precision","step","disabled","readonly","clearable","placeholder"])],64)):(n(),g(O,{key:2},[B("span",we,E(v.value.operator),1),C(N,{"model-value":W.value,precision:a.config.decimalPlaces,step:P.value,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:v.value.firstPlaceholder,"onUpdate:modelValue":G,onBlur:l[11]||(l[11]=t=>x.value=!0)},null,8,["model-value","precision","step","disabled","readonly","clearable","placeholder"])],64))],2),x.value&&A.value?(n(),g("div",Ce,E(A.value),1)):he("v-if",!0)])):o.value==="tree-select"?(n(),m(F,h({key:9,modelValue:S.value,"onUpdate:modelValue":l[12]||(l[12]=t=>S.value=t)},a.controlProps,{data:a.options,props:ue,"value-key":"value","node-key":"value","check-strictly":"",filterable:"","show-checkbox":I.value,multiple:I.value,"collapse-tags":I.value,"collapse-tags-tooltip":"",disabled:a.disabled||c.value,clearable:a.clearable,placeholder:V.value,style:{width:"100%"}}),null,16,["modelValue","data","show-checkbox","multiple","collapse-tags","disabled","clearable","placeholder"])):o.value==="select"?(n(),m($,h({key:10,modelValue:S.value,"onUpdate:modelValue":l[13]||(l[13]=t=>S.value=t)},a.controlProps,{filterable:"","collapse-tags":I.value,"collapse-tags-tooltip":"",multiple:I.value,disabled:a.disabled||c.value,clearable:a.clearable,placeholder:V.value,style:{width:"100%"}}),{default:U(()=>[(n(!0),g(O,null,H(R.value,t=>(n(),m(M,{key:String(t.value),label:String(t.label),value:String(t.value),disabled:T(t)},null,8,["label","value","disabled"]))),128))]),_:1},16,["modelValue","collapse-tags","multiple","disabled","clearable","placeholder"])):o.value==="radio"?(n(),m(se,h({key:11,modelValue:f.value,"onUpdate:modelValue":l[14]||(l[14]=t=>f.value=t)},a.controlProps,{disabled:a.disabled||c.value}),{default:U(()=>[(n(!0),g(O,null,H(R.value,t=>(n(),m(de,{key:String(t.value),value:String(t.value),disabled:T(t)},{default:U(()=>[ee(E(t.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},16,["modelValue","disabled"])):(n(),m(me,h({key:12,modelValue:X.value,"onUpdate:modelValue":l[15]||(l[15]=t=>X.value=t)},a.controlProps,{disabled:a.disabled||c.value}),{default:U(()=>[(n(!0),g(O,null,H(R.value,t=>(n(),m(ce,{key:String(t.value),value:String(t.value),disabled:T(t)},{default:U(()=>[ee(E(t.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},16,["modelValue","disabled"]))])}}}),dl=Oe(Re,[["__scopeId","data-v-ff9cff09"]]);export{dl as default};
1
+ import{defineComponent as ve,useModel as _,computed as u,ref as fe,watch as be,resolveComponent as p,openBlock as n,createElementBlock as g,toDisplayString as E,createBlock as m,mergeProps as h,unref as pe,withCtx as U,Fragment as O,renderList as D,createElementVNode as B,normalizeClass as ge,createVNode as C,createCommentVNode as he,createTextVNode as ee,mergeModels as Ve}from"vue";import ye from"../RichTextEditor/RichTextEditor.vue.js";import{isIndicatorReadonly as xe,isComputedIndicator as Pe,formatIndicatorDisplayValue as Ne,INDICATOR_RANGE_TYPE as d,parseIndicatorRangeValue as ke,validateIndicatorValue as Ee,formatIndicatorRangeValue as Oe}from"./interface.js";import{_ as Ie}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../../chunks/preload-helper-BlTxHScW.js";import"element-plus";import"../../utils/uuid.js";import"uuid";import"../RichTextEditor/richTextHtmlUtils.js";import"../RichTextEditor/installUmoEditorApp.js";import"tdesign-vue-next";import"../RichTextEditor/richTextImageUpload.js";import"../../api/DocumentApi.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";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/buildUploadHeaders.js";const Se={class:"el-indicator-input"},Me={key:0,class:"el-indicator-input__readonly-value"},Ue={key:8,class:"indicator-range-field"},Be={class:"indicator-range-operator"},we={class:"indicator-range-operator"},Ce={class:"indicator-range-prefix"},Re={key:0,class:"indicator-range-error"},Te=ve({__name:"ElIndicatorInput",props:Ve({config:{default:()=>({})},options:{default:()=>[]},label:{default:""},placeholder:{default:""},businessId:{default:void 0},clearable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},maxlength:{default:1e3},showWordLimit:{type:Boolean,default:!0},controlProps:{default:()=>({})}},{modelValue:{default:""},modelModifiers:{},text:{default:""},textModifiers:{}}),emits:["update:modelValue","update:text"],setup(a,{expose:le}){const r=a,s=_(a,"modelValue"),b=_(a,"text"),j=u(()=>r.options.some(e=>Array.isArray(e.children)&&e.children.length>0)),H=u(()=>r.readonly||xe(r.config)),ae=u(()=>Pe(r.config)),c=u(()=>H.value),te=u(()=>Ne(r.config,b.value||s.value)||"—"),o=u(()=>{const e=r.config.rangeYpe;return e===d.MULTI_LINE_TEXT?"textarea":e===d.RICH_TEXT?"rich-text":e===d.YEAR?"year":e===d.MONTH?"month":e===d.DATE?"date":e===d.TIME?"time":e===d.NUMBER||e===d.SCALE_NUMBER||e===d.RANGE_NUMBER?e===d.SCALE_NUMBER&&Q.value.length>0?"scale-select":e===d.RANGE_NUMBER?"range-number":"number":e===d.RADIO?"radio":e===d.CHECKBOX?"checkbox":e===d.SINGLE_SELECT||e===d.MULTIPLE_SELECT?j.value?"tree-select":"select":r.config.indexAttriValue==="02"?"date":r.config.indexAttriValue==="03"?"number":r.config.indexAttriValue==="04"?j.value?"tree-select":"select":"input"}),I=u(()=>r.config.rangeYpe===d.MULTIPLE_SELECT||r.config.rangeYpe===d.CHECKBOX),R=u(()=>{const e=[],l=i=>{i.forEach(y=>{e.push(y),y.children?.length&&l(y.children)})};return l(r.options),e}),T=e=>e.disabled===!0||e.isValid==="0",re=e=>R.value.find(l=>String(l.value)===e)?.label,v=u(()=>{const e=r.config.rangeOfValue||"";return e==="x>a"?{double:!1,operator:">",leftOperator:"",rightOperator:"",firstPlaceholder:"请输入最小值",secondPlaceholder:""}:e==="x≥a"?{double:!1,operator:"≥",leftOperator:"",rightOperator:"",firstPlaceholder:"请输入最小值",secondPlaceholder:""}:e==="x<a"?{double:!1,operator:"<",leftOperator:"",rightOperator:"",firstPlaceholder:"请输入最大值",secondPlaceholder:""}:e==="x≤a"?{double:!1,operator:"≤",leftOperator:"",rightOperator:"",firstPlaceholder:"请输入最大值",secondPlaceholder:""}:e==="x=a"?{double:!1,operator:"=",leftOperator:"",rightOperator:"",firstPlaceholder:"请输入固定值",secondPlaceholder:""}:e==="x±a"?{double:!0,operator:"±",leftOperator:"±",rightOperator:"",firstPlaceholder:"请输入固定值",secondPlaceholder:"请输入允差值"}:{double:!0,operator:"",leftOperator:e.startsWith("a≤")?"≤":"<",rightOperator:e.endsWith("≤b")?"≤":"<",firstPlaceholder:"请输入最小值",secondPlaceholder:"请输入最大值"}}),L=u(()=>ke(r.config,s.value)),W=u(()=>L.value.first),z=u(()=>L.value.second),x=fe(!1),A=u(()=>Ee(r.config,s.value)),K=(e,l)=>{const i={...L.value};e===0?i.first=l:i.second=l,s.value=Oe(r.config,i),k()},G=e=>K(0,e),q=e=>K(1,e),oe=()=>(x.value=!0,!A.value),k=()=>{if(o.value!=="rich-text"){if(o.value==="range-number"){const e=L.value,l=r.config.rangeOfValue||"";if(e.first==null&&e.second==null){b.value="";return}l==="x±a"?b.value=`${e.first??"x"} ± ${e.second??"a"}`:v.value.double?b.value=`${e.first??"a"} ${v.value.leftOperator} x ${v.value.rightOperator} ${e.second??"b"}`:b.value=`x ${v.value.operator} ${e.first}`;return}if(o.value==="select"||o.value==="scale-select"||o.value==="tree-select"||o.value==="radio"||o.value==="checkbox"){const e=s.value.split(",").filter(Boolean);if(!e.length){b.value="";return}if(!r.options.length&&b.value)return;b.value=e.map(l=>String(re(l)??l)).join("、");return}b.value=s.value}},f=u({get:()=>s.value,set:e=>{s.value=e==null?"":String(e),k()}}),X=u({get:()=>s.value.split(",").filter(Boolean),set:e=>{s.value=e.join(","),k()}}),S=u({get:()=>I.value?X.value:s.value,set:e=>{s.value=Array.isArray(e)?e.join(","):String(e??""),k()}}),ne=u(()=>{if(!s.value.trim())return;const e=Number(s.value);return Number.isFinite(e)?e:void 0}),P=u(()=>{const e=Number(r.config.dataScale);if(Number.isFinite(e)&&e>0)return e;const l=Number(r.config.decimalPlaces);return Number.isInteger(l)&&l>=0?10**-Math.min(l,100):void 0}),J=e=>{const l=Number(r.config.decimalPlaces);return Number.isInteger(l)&&l>=0?Number(e.toFixed(Math.min(l,100))):e},Y=u(()=>{let e=r.config.minValue,l=r.config.maxValue;r.config.rangeOfValue==="x=a"&&r.config.fixedValue!=null?(e=r.config.fixedValue,l=r.config.fixedValue):r.config.rangeOfValue==="x±a"&&r.config.fixedValue!=null&&r.config.tolerance!=null&&(e??(e=Number(r.config.fixedValue)-Number(r.config.tolerance)),l??(l=Number(r.config.fixedValue)+Number(r.config.tolerance)));const i=P.value;return e!=null&&r.config.isContainMin==="0"&&i&&(e=J(Number(e)+i)),l!=null&&r.config.isContainMax==="0"&&i&&(l=J(Number(l)-i)),{min:e,max:l}}),Q=u(()=>{if(r.config.rangeYpe!==d.SCALE_NUMBER)return[];const e=Y.value.min,l=Y.value.max,i=P.value;if(e==null||l==null||i==null||!Number.isFinite(e)||!Number.isFinite(l)||!Number.isFinite(i)||i<=0||l<e)return[];const y=Math.floor((l-e)/i+1e-9)+1;if(y<=0||y>1e3)return[];const w=Number(r.config.decimalPlaces),N=M=>Number.isInteger(w)&&w>=0?Number(M.toFixed(Math.min(w,100))):M;return Array.from({length:y},(M,$)=>{const F=N(e+$*i);return{label:F,value:F}})}),Z=u(()=>o.value==="year"?"YYYY":o.value==="month"?"YYYY-MM":"YYYY-MM-DD"),V=u(()=>r.placeholder||r.config.tip?r.placeholder||r.config.tip:`${["input","textarea","rich-text","number"].includes(o.value)?"请输入":"请选择"}${r.label||"指标值"}`),ue={label:"label",children:"children",disabled:e=>T(e)},ie=e=>{s.value=e==null?"":String(e),k()};return be([s,()=>r.options,o],k,{immediate:!0,deep:!0}),le({controlType:o,syncText:k,validate:oe,isReadonlyIndicator:H,isComputedIndicator:ae}),(e,l)=>{const i=p("el-input"),y=p("el-date-picker"),w=p("el-time-picker"),N=p("el-numeric-input"),M=p("el-option"),$=p("el-select"),F=p("el-tree-select"),de=p("el-radio"),se=p("el-radio-group"),ce=p("el-checkbox"),me=p("el-checkbox-group");return n(),g("div",Se,[H.value?(n(),g("span",Me,E(te.value),1)):o.value==="rich-text"?(n(),m(ye,{key:1,modelValue:f.value,"onUpdate:modelValue":l[0]||(l[0]=t=>f.value=t),text:b.value,"onUpdate:text":l[1]||(l[1]=t=>b.value=t),"is-edit":!a.disabled&&!c.value,"editor-config":{businessId:a.businessId,placeholder:V.value}},null,8,["modelValue","text","is-edit","editor-config"])):o.value==="textarea"?(n(),m(i,h({key:2,modelValue:f.value,"onUpdate:modelValue":l[2]||(l[2]=t=>f.value=t)},a.controlProps,{type:"textarea",rows:3,maxlength:a.maxlength,"show-word-limit":a.showWordLimit,disabled:a.disabled,readonly:c.value,placeholder:V.value}),null,16,["modelValue","maxlength","show-word-limit","disabled","readonly","placeholder"])):o.value==="input"?(n(),m(i,h({key:3,modelValue:f.value,"onUpdate:modelValue":l[3]||(l[3]=t=>f.value=t)},a.controlProps,{maxlength:a.maxlength,"show-word-limit":a.showWordLimit,disabled:a.disabled,readonly:c.value,placeholder:V.value}),null,16,["modelValue","maxlength","show-word-limit","disabled","readonly","placeholder"])):o.value==="year"||o.value==="month"||o.value==="date"?(n(),m(y,h({key:4,modelValue:f.value,"onUpdate:modelValue":l[4]||(l[4]=t=>f.value=t)},a.controlProps,{type:o.value,format:Z.value,"value-format":Z.value,disabled:a.disabled||c.value,clearable:a.clearable,placeholder:V.value,style:{width:"100%"}}),null,16,["modelValue","type","format","value-format","disabled","clearable","placeholder"])):o.value==="time"?(n(),m(w,h({key:5,modelValue:f.value,"onUpdate:modelValue":l[5]||(l[5]=t=>f.value=t)},a.controlProps,{format:"HH:mm:ss","value-format":"HH:mm:ss",disabled:a.disabled||c.value,clearable:a.clearable,placeholder:V.value,style:{width:"100%"}}),null,16,["modelValue","disabled","clearable","placeholder"])):o.value==="number"?(n(),m(N,h({key:6,"model-value":ne.value},a.controlProps,{min:Y.value.min,max:Y.value.max,precision:a.config.decimalPlaces,step:P.value,"step-strictly":a.config.rangeYpe===pe(d).SCALE_NUMBER,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:V.value,"onUpdate:modelValue":ie}),null,16,["model-value","min","max","precision","step","step-strictly","disabled","readonly","clearable","placeholder"])):o.value==="scale-select"?(n(),m($,h({key:7,modelValue:S.value,"onUpdate:modelValue":l[6]||(l[6]=t=>S.value=t)},a.controlProps,{filterable:"",disabled:a.disabled||c.value,clearable:a.clearable,placeholder:V.value,style:{width:"100%"}}),{default:U(()=>[(n(!0),g(O,null,D(Q.value,t=>(n(),m(M,{key:String(t.value),label:String(t.label),value:String(t.value)},null,8,["label","value"]))),128))]),_:1},16,["modelValue","disabled","clearable","placeholder"])):o.value==="range-number"?(n(),g("div",Ue,[B("div",{class:ge(["indicator-range-input",{"is-error":x.value&&A.value}])},[v.value.operator==="±"?(n(),g(O,{key:0},[C(N,{"model-value":W.value,precision:a.config.decimalPlaces,step:P.value,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:v.value.firstPlaceholder,"onUpdate:modelValue":G,onBlur:l[7]||(l[7]=t=>x.value=!0)},null,8,["model-value","precision","step","disabled","readonly","clearable","placeholder"]),l[16]||(l[16]=B("span",{class:"indicator-range-operator"},"±",-1)),C(N,{"model-value":z.value,precision:a.config.decimalPlaces,step:P.value,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:v.value.secondPlaceholder,"onUpdate:modelValue":q,onBlur:l[8]||(l[8]=t=>x.value=!0)},null,8,["model-value","precision","step","disabled","readonly","clearable","placeholder"])],64)):v.value.double?(n(),g(O,{key:1},[C(N,{"model-value":W.value,precision:a.config.decimalPlaces,step:P.value,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:v.value.firstPlaceholder,"onUpdate:modelValue":G,onBlur:l[9]||(l[9]=t=>x.value=!0)},null,8,["model-value","precision","step","disabled","readonly","clearable","placeholder"]),B("span",Be,E(v.value.leftOperator),1),l[17]||(l[17]=B("span",{class:"indicator-range-variable"},"x",-1)),B("span",we,E(v.value.rightOperator),1),C(N,{"model-value":z.value,precision:a.config.decimalPlaces,step:P.value,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:v.value.secondPlaceholder,"onUpdate:modelValue":q,onBlur:l[10]||(l[10]=t=>x.value=!0)},null,8,["model-value","precision","step","disabled","readonly","clearable","placeholder"])],64)):(n(),g(O,{key:2},[B("span",Ce,E(v.value.operator),1),C(N,{"model-value":W.value,precision:a.config.decimalPlaces,step:P.value,disabled:a.disabled,readonly:c.value,clearable:a.clearable,placeholder:v.value.firstPlaceholder,"onUpdate:modelValue":G,onBlur:l[11]||(l[11]=t=>x.value=!0)},null,8,["model-value","precision","step","disabled","readonly","clearable","placeholder"])],64))],2),x.value&&A.value?(n(),g("div",Re,E(A.value),1)):he("v-if",!0)])):o.value==="tree-select"?(n(),m(F,h({key:9,modelValue:S.value,"onUpdate:modelValue":l[12]||(l[12]=t=>S.value=t)},a.controlProps,{data:a.options,props:ue,"value-key":"value","node-key":"value","check-strictly":"",filterable:"","show-checkbox":I.value,multiple:I.value,"collapse-tags":I.value,"collapse-tags-tooltip":"",disabled:a.disabled||c.value,clearable:a.clearable,placeholder:V.value,style:{width:"100%"}}),null,16,["modelValue","data","show-checkbox","multiple","collapse-tags","disabled","clearable","placeholder"])):o.value==="select"?(n(),m($,h({key:10,modelValue:S.value,"onUpdate:modelValue":l[13]||(l[13]=t=>S.value=t)},a.controlProps,{filterable:"","collapse-tags":I.value,"collapse-tags-tooltip":"",multiple:I.value,disabled:a.disabled||c.value,clearable:a.clearable,placeholder:V.value,style:{width:"100%"}}),{default:U(()=>[(n(!0),g(O,null,D(R.value,t=>(n(),m(M,{key:String(t.value),label:String(t.label),value:String(t.value),disabled:T(t)},null,8,["label","value","disabled"]))),128))]),_:1},16,["modelValue","collapse-tags","multiple","disabled","clearable","placeholder"])):o.value==="radio"?(n(),m(se,h({key:11,modelValue:f.value,"onUpdate:modelValue":l[14]||(l[14]=t=>f.value=t)},a.controlProps,{disabled:a.disabled||c.value}),{default:U(()=>[(n(!0),g(O,null,D(R.value,t=>(n(),m(de,{key:String(t.value),value:String(t.value),disabled:T(t)},{default:U(()=>[ee(E(t.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},16,["modelValue","disabled"])):(n(),m(me,h({key:12,modelValue:X.value,"onUpdate:modelValue":l[15]||(l[15]=t=>X.value=t)},a.controlProps,{disabled:a.disabled||c.value}),{default:U(()=>[(n(!0),g(O,null,D(R.value,t=>(n(),m(ce,{key:String(t.value),value:String(t.value),disabled:T(t)},{default:U(()=>[ee(E(t.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},16,["modelValue","disabled"]))])}}}),sl=Ie(Te,[["__scopeId","data-v-aec6f3ab"]]);export{sl as default};
@@ -35,17 +35,40 @@ type FormulaValue = number | string;
35
35
  * 任一侧是文本(字符串字面量或非数字的指标值)时,“+”按字符串拼接,返回字符串。
36
36
  */
37
37
  export declare const evaluateIndicatorFormula: (formula?: string, values?: Record<string, string | number | undefined>) => FormulaValue | undefined;
38
+ /**
39
+ * 指标配置类型(字典 ComIndexConfigType):
40
+ * 10 常规指标(人工录入)、20 联动指标、30 只读指标(只展示)、40 隐藏指标。
41
+ */
42
+ export declare const INDICATOR_CONFIG_TYPE: {
43
+ /** 常规指标:值由用户录入,不参与公式计算。 */
44
+ readonly NORMAL: "10";
45
+ /** 联动指标:取值受联动目标/联动条件约束,只读与否回落到计算规则判定。 */
46
+ readonly LINKAGE: "20";
47
+ /** 只读指标:只展示,不允许录入。 */
48
+ readonly READONLY: "30";
49
+ /** 隐藏指标:不参与录入展示,按只读处理。 */
50
+ readonly HIDDEN: "40";
51
+ };
38
52
  /** 指标标签解析:逗号分隔、去空格、转小写、去掉 -/_/空格。 */
39
53
  export declare const parseIndicatorTags: (indexTag?: string) => string[];
40
- /** 是否为计算指标:配置了计算规则,或打上了计算标签。 */
54
+ /**
55
+ * 是否为计算指标:配置了计算规则,或打上了计算标签。
56
+ * 计算与否只看公式/计算标签,与配置类型无关——常规指标配了公式同样按公式计算结果。
57
+ */
41
58
  export declare const isComputedIndicator: (config?: {
42
59
  formula?: string;
43
60
  indexTag?: string;
44
61
  } | null) => boolean;
45
- /** 是否只读指标:计算指标,或打上了只读标签。 */
62
+ /**
63
+ * 是否只读指标:以配置类型为准(配置类型决定录入形态,公式只决定值怎么来)。
64
+ * - 只读指标(30)/隐藏指标(40):只读展示;
65
+ * - 常规指标(10):可录入(即使配了公式,值仍按公式计算,手工录入会被计算结果覆盖);
66
+ * - 配置类型缺失或为联动指标(20):回落到计算指标/只读标签的历史判定。
67
+ */
46
68
  export declare const isIndicatorReadonly: (config?: {
47
69
  formula?: string;
48
70
  indexTag?: string;
71
+ configType?: string;
49
72
  } | null) => boolean;
50
73
  /** 计算指标结果格式化:数字按配置精度,文本(字符串拼接结果)原样返回。 */
51
74
  export declare const formatIndicatorFormulaResult: (result: number | string | undefined, decimalPlaces?: number) => string | undefined;
@@ -61,6 +84,40 @@ export interface ComputedIndicatorConfig {
61
84
  * 后面的规则可以直接引用前面的计算结果。返回 code 到计算值的映射(仅含算得出结果的项)。
62
85
  */
63
86
  export declare const evaluateComputedIndicators: (configs?: ComputedIndicatorConfig[] | null, values?: Record<string, string | number | undefined> | null) => Record<string, string>;
87
+ /** 公式里引用的指标编码:按 [CODE] 约定提取,用于判断计算来源是否变化。 */
88
+ export declare const parseIndicatorFormulaCodes: (formula?: string) => string[];
89
+ /**
90
+ * 计算来源快照:公式引用的指标编码 + 当前取值。
91
+ * 快照没变说明计算来源没动,可录入指标就保留人工录入的值。
92
+ */
93
+ export declare const indicatorSourceSignature: (config?: {
94
+ formula?: string;
95
+ } | null, values?: Record<string, string | number | undefined> | null) => string;
96
+ /** 计算指标的上一次计算状态:结果 + 计算来源快照。 */
97
+ export interface ComputedIndicatorState {
98
+ value?: string;
99
+ signature?: string;
100
+ }
101
+ /** 计算指标回填结果:apply=false 表示保留页面现值(人工录入优先)。 */
102
+ export interface ComputedIndicatorResolution {
103
+ value: string;
104
+ apply: boolean;
105
+ /** 下一次判定使用的状态,由调用方缓存。 */
106
+ state: ComputedIndicatorState;
107
+ }
108
+ /**
109
+ * 计算指标回填判定(人工录入优先):
110
+ * - 只读指标/隐藏指标等由公式主导的指标:计算结果始终覆盖;
111
+ * - 可录入指标(常规指标)配了公式:空值时由公式带出;打开后首次计算保留已有值(历史值/人工录入);
112
+ * - 计算来源(公式引用的指标取值)或计算结果变化时,重新计算并覆盖人工录入;
113
+ * 来源与结果都没变时保留人工录入的值;
114
+ * - 公式没算出结果(缺少依赖、除零等)时不动现有值。
115
+ */
116
+ export declare const resolveComputedIndicatorValue: (config?: {
117
+ formula?: string;
118
+ indexTag?: string;
119
+ configType?: string;
120
+ } | null, currentValue?: string, computedValue?: string, values?: Record<string, string | number | undefined> | null, previous?: ComputedIndicatorState) => ComputedIndicatorResolution;
64
121
  export type IndicatorControlType = 'input' | 'textarea' | 'rich-text' | 'year' | 'month' | 'date' | 'time' | 'number' | 'scale-select' | 'range-number' | 'select' | 'tree-select' | 'radio' | 'checkbox';
65
122
  export declare const INDICATOR_RANGE_TYPE: {
66
123
  readonly SINGLE_LINE_TEXT: "0101";
@@ -78,6 +135,11 @@ export declare const INDICATOR_RANGE_TYPE: {
78
135
  readonly RADIO: "0403";
79
136
  readonly CHECKBOX: "0404";
80
137
  };
138
+ /**
139
+ * 指标展示值格式化:数字类指标按配置精度补齐小数位(576.2 → 576.20),
140
+ * 使展示位数与指标配置的小数点位数一致;非数字指标与非纯数字文本(如区间值)原样返回。
141
+ */
142
+ export declare const formatIndicatorDisplayValue: (config: IndicatorInputConfig | undefined, value?: string) => string;
81
143
  export interface IndicatorRangeParts {
82
144
  first?: number;
83
145
  second?: number;
@@ -1 +1 @@
1
- const p=/\s*(?:"([^"]*)"|'([^']*)'|(\d+(?:\.\d*)?|\.\d+)|([A-Za-z_][A-Za-z0-9_]*)|([()+\-*/%]))/y,I=(r,s={})=>{const i=String(r??"").replace(/\[([A-Za-z_][A-Za-z0-9_]*)\]/g,"$1").replace(/[×✕]/g,"*").replace(/÷/g,"/").trim();if(!i)return;const t=[];let o=0;for(;o<i.length;){p.lastIndex=o;const e=p.exec(i);if(!e)return;o=p.lastIndex,e[1]!==void 0||e[2]!==void 0?t.push({type:"string",value:e[1]??e[2]}):e[3]?t.push({type:"number",value:e[3]}):e[4]?t.push({type:"identifier",value:e[4]}):t.push({type:"operator",value:e[5]})}let n=0;const u=e=>{if(e===void 0)return;if(typeof e=="number")return Number.isFinite(e)?e:void 0;const a=Number(e);return Number.isFinite(a)?a:void 0},d=()=>{const e=t[n];if(e){if(e.type==="operator"&&e.value==="("){n+=1;const a=E();return t[n]?.value!==")"?void 0:(n+=1,a)}if(e.type==="string")return n+=1,e.value;if(e.type==="number"){n+=1;const a=Number(e.value);return Number.isFinite(a)?a:void 0}if(e.type==="identifier"){n+=1;const a=s[e.value];if(a==null)return;const c=Number(a);return Number.isFinite(c)?c:String(a)}}},v=()=>{const e=t[n]?.value;if(e==="+"||e==="-"){n+=1;const a=u(v());return a===void 0?void 0:e==="-"?-a:a}return d()},N=()=>{let e=v();for(;e!=null&&["*","/","%"].includes(t[n]?.value||"");){const a=t[n++].value,c=u(e),l=u(v());if(c===void 0||l===void 0)return;if(a==="*")e=c*l;else if(a==="/"){if(l===0)return;e=c/l}else e=c%l;if(typeof e=="number"&&!Number.isFinite(e))return}return e};function E(){let e=N();for(;e!=null&&["+","-"].includes(t[n]?.value||"");){const a=t[n++].value,c=N();if(c==null)return;if(a==="+")e=typeof e=="string"||typeof c=="string"?`${e}${c}`:e+c;else{const l=u(e),g=u(c);if(l===void 0||g===void 0)return;e=l-g}if(typeof e=="number"&&!Number.isFinite(e))return}return e}const m=E();if(!(n!==t.length||m==null))return typeof m=="number"?Number.isFinite(m)?m:void 0:m},x=["compute","computed","calculate","calculated","formula"],R=["readonly","view","display"],b=r=>String(r??"").split(",").map(s=>s.trim().toLowerCase().replace(/[-_\s]/g,"")).filter(Boolean),T=r=>!!r?.formula?.trim()||b(r?.indexTag).some(s=>x.includes(s)),$=r=>T(r)||b(r?.indexTag).some(s=>R.includes(s)),_=(r,s)=>{if(r==null)return;if(typeof r=="string")return r;const i=Number(s);return Number.isInteger(i)&&i>=0?r.toFixed(Math.min(i,100)):String(r)},F=(r,s)=>{const i={...s||{}},t={};for(const o of r||[]){if(!o?.code||!T(o)||!o.formula?.trim())continue;const n=_(I(o.formula,i),o.decimalPlaces);n===void 0||n===""||(t[o.code]=n,i[o.code]=n)}return t},h={SINGLE_LINE_TEXT:"0101",MULTI_LINE_TEXT:"0102",RICH_TEXT:"0103",YEAR:"0201",MONTH:"0202",DATE:"0203",TIME:"0204",NUMBER:"0301",SCALE_NUMBER:"0302",RANGE_NUMBER:"0303",SINGLE_SELECT:"0401",MULTIPLE_SELECT:"0402",RADIO:"0403",CHECKBOX:"0404"},y="[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)",f=r=>{if(r==null||!r.trim())return;const s=Number(r);return Number.isFinite(s)?s:void 0},A=(r,s)=>{const i=String(s??"").trim();if(!i)return{};const t=r.rangeOfValue||"",o=y;if(t==="x±a"){const u=i.match(new RegExp(`^(${o})?±(${o})?$`));if(u)return{first:f(u[1]),second:f(u[2])}}else if(t.includes("a")&&t.includes("b")){const u=i.match(new RegExp(`^(${o})?[<≤]x[<≤](${o})?$`));if(u)return{first:f(u[1]),second:f(u[2])}}else{const u=i.match(new RegExp(`^x(?:>|≥|<|≤|=)(${o})$`));if(u)return{first:f(u[1])}}const n=i.split(",").map(u=>u.trim());return{first:f(n[0]),second:f(n[1])}},S=(r,s)=>{const i=r.rangeOfValue||"",t=s.first==null?"":String(s.first),o=s.second==null?"":String(s.second);if(!t&&!o)return"";if(i==="x±a")return`${t}±${o}`;if(i.includes("a")&&i.includes("b")){const u=i.startsWith("a≤")?"≤":"<",d=i.endsWith("≤b")?"≤":"<";return`${t}${u}x${d}${o}`}const n=i.match(/^x(>|≥|<|≤|=)a$/)?.[1]||"";return t?`x${n}${t}`:""},C=(r,s)=>{if(r.rangeYpe!==h.RANGE_NUMBER)return;const i=String(s??"");if(!i.trim())return;const t=r.rangeOfValue||"",o=t==="x±a"||t.includes("a")&&t.includes("b"),n=A(r,i);if(n.first==null)return t==="x=a"||t==="x±a"?"请输入固定值":t==="x<a"||t==="x≤a"?"请输入最大值":"请输入最小值";if(o&&n.second==null)return t==="x±a"?"请输入允差值":"请输入最大值";const u=n.first,d=n.second;if(!Number.isFinite(u)||o&&!Number.isFinite(d))return"必须填写数字";if(t==="x±a"&&d<0)return"允差值不能小于0";if(o&&t!=="x±a"&&u>=d)return"最小值必须小于最大值"};export{h as INDICATOR_RANGE_TYPE,F as evaluateComputedIndicators,I as evaluateIndicatorFormula,_ as formatIndicatorFormulaResult,S as formatIndicatorRangeValue,T as isComputedIndicator,$ as isIndicatorReadonly,A as parseIndicatorRangeValue,b as parseIndicatorTags,C as validateIndicatorValue};
1
+ const N=/\s*(?:"([^"]*)"|'([^']*)'|(\d+(?:\.\d*)?|\.\d+)|([A-Za-z_][A-Za-z0-9_]*)|([()+\-*/%]))/y,A=(r,o={})=>{const t=String(r??"").replace(/\[([A-Za-z_][A-Za-z0-9_]*)\]/g,"$1").replace(/[×✕]/g,"*").replace(/÷/g,"/").trim();if(!t)return;const n=[];let i=0;for(;i<t.length;){N.lastIndex=i;const e=N.exec(t);if(!e)return;i=N.lastIndex,e[1]!==void 0||e[2]!==void 0?n.push({type:"string",value:e[1]??e[2]}):e[3]?n.push({type:"number",value:e[3]}):e[4]?n.push({type:"identifier",value:e[4]}):n.push({type:"operator",value:e[5]})}let s=0;const u=e=>{if(e===void 0)return;if(typeof e=="number")return Number.isFinite(e)?e:void 0;const a=Number(e);return Number.isFinite(a)?a:void 0},d=()=>{const e=n[s];if(e){if(e.type==="operator"&&e.value==="("){s+=1;const a=I();return n[s]?.value!==")"?void 0:(s+=1,a)}if(e.type==="string")return s+=1,e.value;if(e.type==="number"){s+=1;const a=Number(e.value);return Number.isFinite(a)?a:void 0}if(e.type==="identifier"){s+=1;const a=o[e.value];if(a==null)return;const c=Number(a);return Number.isFinite(c)?c:String(a)}}},p=()=>{const e=n[s]?.value;if(e==="+"||e==="-"){s+=1;const a=u(p());return a===void 0?void 0:e==="-"?-a:a}return d()},g=()=>{let e=p();for(;e!=null&&["*","/","%"].includes(n[s]?.value||"");){const a=n[s++].value,c=u(e),l=u(p());if(c===void 0||l===void 0)return;if(a==="*")e=c*l;else if(a==="/"){if(l===0)return;e=c/l}else e=c%l;if(typeof e=="number"&&!Number.isFinite(e))return}return e};function I(){let e=g();for(;e!=null&&["+","-"].includes(n[s]?.value||"");){const a=n[s++].value,c=g();if(c==null)return;if(a==="+")e=typeof e=="string"||typeof c=="string"?`${e}${c}`:e+c;else{const l=u(e),R=u(c);if(l===void 0||R===void 0)return;e=l-R}if(typeof e=="number"&&!Number.isFinite(e))return}return e}const m=I();if(!(s!==n.length||m==null))return typeof m=="number"?Number.isFinite(m)?m:void 0:m},E={NORMAL:"10",LINKAGE:"20",READONLY:"30",HIDDEN:"40"},_=r=>String(r??"").trim(),x=["compute","computed","calculate","calculated","formula"],y=["readonly","view","display"],b=r=>String(r??"").split(",").map(o=>o.trim().toLowerCase().replace(/[-_\s]/g,"")).filter(Boolean),T=r=>!!r?.formula?.trim()||b(r?.indexTag).some(o=>x.includes(o)),h=r=>{const o=_(r?.configType);return o===E.READONLY||o===E.HIDDEN?!0:o===E.NORMAL?!1:T(r)||b(r?.indexTag).some(t=>y.includes(t))},S=(r,o)=>{if(r==null)return;if(typeof r=="string")return r;const t=Number(o);return Number.isInteger(t)&&t>=0?r.toFixed(Math.min(t,100)):String(r)},D=(r,o)=>{const t={...o||{}},n={};for(const i of r||[]){if(!i?.code||!T(i)||!i.formula?.trim())continue;const s=S(A(i.formula,t),i.decimalPlaces);s===void 0||s===""||(n[i.code]=s,t[i.code]=s)}return n},$=r=>{const o=new Set,t=String(r??""),n=/\[([A-Za-z_][A-Za-z0-9_]*)\]/g;let i=n.exec(t);for(;i;)o.add(i[1]),i=n.exec(t);return[...o]},C=(r,o)=>$(r?.formula).map(t=>`${t}=${o?.[t]??""}`).join("|"),w=(r,o,t,n,i)=>{const s=C(r,n);if(t===void 0)return{value:"",apply:!1,state:{value:i?.value,signature:s}};const u={value:t,signature:s};return h(r)?{value:t,apply:!0,state:u}:String(o??"").trim()?i?i.signature!==s||i.value!==t?{value:t,apply:!0,state:u}:{value:t,apply:!1,state:u}:{value:t,apply:!1,state:u}:{value:t,apply:!0,state:u}},v={SINGLE_LINE_TEXT:"0101",MULTI_LINE_TEXT:"0102",RICH_TEXT:"0103",YEAR:"0201",MONTH:"0202",DATE:"0203",TIME:"0204",NUMBER:"0301",SCALE_NUMBER:"0302",RANGE_NUMBER:"0303",SINGLE_SELECT:"0401",MULTIPLE_SELECT:"0402",RADIO:"0403",CHECKBOX:"0404"},O=[v.NUMBER,v.SCALE_NUMBER,v.RANGE_NUMBER],F=r=>O.includes(String(r?.rangeYpe??""))||!r?.rangeYpe&&r?.indexAttriValue==="03",U=(r,o)=>{const t=String(o??"");if(!t.trim()||!F(r))return t;const n=Number(t),i=Number(r?.decimalPlaces);return!Number.isFinite(n)||!Number.isInteger(i)||i<0?t:n.toFixed(Math.min(i,100))},L="[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)",f=r=>{if(r==null||!r.trim())return;const o=Number(r);return Number.isFinite(o)?o:void 0},M=(r,o)=>{const t=String(o??"").trim();if(!t)return{};const n=r.rangeOfValue||"",i=L;if(n==="x±a"){const u=t.match(new RegExp(`^(${i})?±(${i})?$`));if(u)return{first:f(u[1]),second:f(u[2])}}else if(n.includes("a")&&n.includes("b")){const u=t.match(new RegExp(`^(${i})?[<≤]x[<≤](${i})?$`));if(u)return{first:f(u[1]),second:f(u[2])}}else{const u=t.match(new RegExp(`^x(?:>|≥|<|≤|=)(${i})$`));if(u)return{first:f(u[1])}}const s=t.split(",").map(u=>u.trim());return{first:f(s[0]),second:f(s[1])}},G=(r,o)=>{const t=r.rangeOfValue||"",n=o.first==null?"":String(o.first),i=o.second==null?"":String(o.second);if(!n&&!i)return"";if(t==="x±a")return`${n}±${i}`;if(t.includes("a")&&t.includes("b")){const u=t.startsWith("a≤")?"≤":"<",d=t.endsWith("≤b")?"≤":"<";return`${n}${u}x${d}${i}`}const s=t.match(/^x(>|≥|<|≤|=)a$/)?.[1]||"";return n?`x${s}${n}`:""},B=(r,o)=>{if(r.rangeYpe!==v.RANGE_NUMBER)return;const t=String(o??"");if(!t.trim())return;const n=r.rangeOfValue||"",i=n==="x±a"||n.includes("a")&&n.includes("b"),s=M(r,t);if(s.first==null)return n==="x=a"||n==="x±a"?"请输入固定值":n==="x<a"||n==="x≤a"?"请输入最大值":"请输入最小值";if(i&&s.second==null)return n==="x±a"?"请输入允差值":"请输入最大值";const u=s.first,d=s.second;if(!Number.isFinite(u)||i&&!Number.isFinite(d))return"必须填写数字";if(n==="x±a"&&d<0)return"允差值不能小于0";if(i&&n!=="x±a"&&u>=d)return"最小值必须小于最大值"};export{E as INDICATOR_CONFIG_TYPE,v as INDICATOR_RANGE_TYPE,D as evaluateComputedIndicators,A as evaluateIndicatorFormula,U as formatIndicatorDisplayValue,S as formatIndicatorFormulaResult,G as formatIndicatorRangeValue,C as indicatorSourceSignature,T as isComputedIndicator,h as isIndicatorReadonly,$ as parseIndicatorFormulaCodes,M as parseIndicatorRangeValue,b as parseIndicatorTags,w as resolveComputedIndicatorValue,B as validateIndicatorValue};
@@ -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'|'xml'}
23
+ * @type {'images'|'document'|'txt'|'pdf'|'word'|'excel'|'ppt'|'xml'|'ocr'}
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'|'xml'}
142
+ * @type {'images'|'document'|'txt'|'pdf'|'word'|'excel'|'ppt'|'xml'|'ocr'}
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},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};
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 b 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 be={key:0},Se=["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=_(""),S=_([]),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 b.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(()=>S.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)=>{S.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 b.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 b.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 b.delSysUploadFiles(m.value.map(t=>t.id)),m.value=[]),!o.autoUpload)if(j.value){const t=S.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",be,[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,Se)]),_:2},1032,["content"])]))),128))],2)):(y(),C("div",Me,"暂无附件"))]))}}}),dt=Ee(De,[["__scopeId","data-v-dcbcaba7"]]);export{dt as default};
@@ -37,7 +37,7 @@ declare const __VLS_component: import("vue").DefineComponent<globalThis.ExtractP
37
37
  };
38
38
  /**
39
39
  * 流程信息回调:由业务侧注入(如通过总线打开工作流子应用的流程详情抽屉);
40
- * 不注入时按钮不展示。
40
+ * 不注入时走核心包统一入口 showProcessView(组件型节点由目标子应用只读渲染业务组件 + 当时快照)。
41
41
  */
42
42
  onProcessDetail: {
43
43
  type: FunctionConstructor;
@@ -89,7 +89,7 @@ declare const __VLS_component: import("vue").DefineComponent<globalThis.ExtractP
89
89
  };
90
90
  /**
91
91
  * 流程信息回调:由业务侧注入(如通过总线打开工作流子应用的流程详情抽屉);
92
- * 不注入时按钮不展示。
92
+ * 不注入时走核心包统一入口 showProcessView(组件型节点由目标子应用只读渲染业务组件 + 当时快照)。
93
93
  */
94
94
  onProcessDetail: {
95
95
  type: FunctionConstructor;
@@ -1 +1 @@
1
- import{defineComponent as Y,ref as v,useModel as Z,computed as _,onMounted as ee,watch as te,resolveComponent as h,openBlock as l,createElementBlock as P,createVNode as ae,withCtx as u,renderSlot as W,createBlock as f,createTextVNode as m,toDisplayString as k,createCommentVNode as d,unref as oe,Fragment as re,mergeModels as q}from"vue";import D from"../../api/workflow/workflowInstApi.js";import ne from"./components/SelectAssigneeDialog.vue.js";import{_ as ie}from"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-BWVDdb4B.js";import se from"./components/CheckDialog.vue.js";import{runWorkflowComplete as le}from"../../hooks/workflowCompleteRunner.js";import V from"../../utils/FrameworkUtils.js";import{userInfoStore as T}from"../../stores/userInfoStore.js";import{frontendBus as L}from"../../utils/frontendBus.js";import{showTodoDialog as ue}from"../../hooks/workflowTodo.js";import{_ as de}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"../business/comp.userForm.vue.js";import"@vueuse/core";import"../../api/DeptInfoApi.js";import"../../api/EmployeeInfoApi.js";import"../../hooks/useResetRefHooks.js";import"../../config/vxeSelectColumn.js";import"../../../chunks/ElTagDisplay.vue_vue_type_script_setup_true_lang-DQXuYsW_.js";/* empty css */import"xlsx-js-style";import"../../api/SysUserApi.js";import"../bpmntree/components/UserSelector/UserTag.vue.js";import"../upload/CustomElUpload.vue.js";import"@element-plus/icons-vue";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 fe=Y({__name:"TaskOperation",props:q({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:q(["success"],["update:butLoading"]),setup(o,{expose:E,emit:A}){const N=T(),b=v(null),n=o,i=Z(o,"butLoading"),R=A,e=v({taskId:"",comment:""}),O=n.renderDialog,g=(t,a,r,x,c,X)=>{if(!O){console.warn("[TaskOperation] 未注入 renderDialog,无法打开操作弹窗(请通过 props 传入 useDialogHooks 的 render)");return}O(t,a,r,x,c,X)},U=()=>{typeof n.onProcessDetail=="function"&&n.onProcessDetail(e.value)},w=_(()=>e.value?.operations==="assignee"),S=v(""),y=v(),K=v([{source:"edit"}]),j=async()=>{await ue(v(e.value),K)},p=async t=>{if(t&&(S.value=t),!e.value)return;y.value={...e.value};let a=!1;if(t==="complete"&&n.params?.beforeCompleteFunction)try{const r=await n.params?.beforeCompleteFunction({taskId:e.value.taskId,userId:T().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")g(ie,{taskId:e.value.taskId,dialogType:t,renderDialog:g,onSuccess:I,onWorkflowSuccess:C},{title:t==="addMulti"?"加签":"减签",size:"400px"},"dialog");else if(t==="assignee")M(e.value.taskId);else{if(e.value.variables,t==="complete"&&e.value.firstSubmitNode&&n.params?.ignoreConfirm){await H();return}g(se,{taskVo:e.value,dialogType:t,taskOperate:n?.params,commentReadonly:a,renderDialog:g,onOpenAssignee:M,onSuccess:I,onWorkflowSuccess:C},{title:z(t),size:"480px",closeOnClickModal:!1},"dialog")}},z=t=>{switch(t){case"complete":return"流程审批";case"refuse":return"终止审批";case"back":return"驳回审批";case"transfer":return"转办审批";default:return"流程审批"}},H=async()=>{if(!e.value||!T().getUserInfo.userCode)return;y.value={...e.value};const t={taskId:e.value.taskId,userId:T().getUserInfo.userCode,comment:e.value.comment??"",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey,variables:e.value.variables};try{if(i.value=!0,n.params?.completeFunction){const a=await n.params?.completeFunction(t);a&&a?.taskId?e.value=a:e.value=await D.getTaskInst(e.value.taskId)}else e.value=await D.taskComplete(t)}catch(a){V.messageError(a);return}finally{i.value=!1}try{await F({actionType:"complete",taskVo:e.value,askVo:t})}catch{}},M=t=>{y.value={...e.value},g(ne,{taskId:t,onSuccess:I,onWorkflowSuccess:C},{title:"指定执行人",size:"450px"},"dialog")},I=t=>{t&&(e.value=t),L.emit("todoRefresh"),L.emit("homePageRefresh"),R("success")},F=async(t,a)=>{const r={...t,actionType:t.actionType||S.value,originTask:t.originTask??y.value,taskVo:t.taskVo??e.value};await le(n.params,r),a?.refresh!==!1&&I(t.taskVo)},C=t=>F({...t,originTask:t.originTask??y.value},{refresh:!1}),$=(t,a)=>t?t.classList?.contains(a)?t:$(t.parentElement,a):null,G=()=>{const t=$(b.value,"todo-dialog-class");return t?console.log("找到满足条件的元素:",t):console.log("未找到满足条件的元素"),t};ee(()=>{G(),B()});const s=v(!1),J=async()=>{s.value=!0},Q=()=>{s.value=!1},B=async()=>{if(n.taskInfo)e.value=n.taskInfo,e.value.finishTime&&console.log("该待办已完成!");else if(n.taskId)try{J(),e.value=await D.getTaskInst(n.taskId),e.value.finishTime&&console.log("该待办已完成!")}catch(t){V.messageError(t)}finally{Q()}};return E({reload:()=>{B()}}),te(()=>n.taskId,B),(t,a)=>{const r=h("el-button"),x=h("el-flex");return l(),P("div",{ref_key:"taskFlexRef",ref:b,class:"task-operation"},[ae(x,{align:"center",justify:"flex-end"},{default:u(()=>[W(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(k(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:U},{default:u(()=>[...a[7]||(a[7]=[m(" 流程信息 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!w.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||oe(N).getUserInfo.userCode!==e.value?.assigneeId),onClick:j},{default:u(()=>[m(k(e.value.taskName),1)]),_:1},8,["loading","disabled"])):d("v-if",!0),w.value?(l(),f(r,{key:3,type:"primary",loading:i.value||s.value,onClick:a[0]||(a[0]=c=>p("assignee"))},{default:u(()=>[...a[8]||(a[8]=[m("指定执行人 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!w.value&&e.value?.taskId&&e.value?.operations&&o.showOperationsBtn?(l(),P(re,{key:4},[o.params?.saveBtnText?(l(),f(r,{key:0,loading:i.value||s.value,type:"primary",onClick:o.params?.saveFunction},{default:u(()=>[m(k(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]=c=>p("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]=c=>p("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]=c=>p("refuse"))},{default:u(()=>[m(k(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]=c=>p("transfer"))},{default:u(()=>[m(k(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]=c=>p("back"))},{default:u(()=>[m(k(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]=c=>p("complete"))},{default:u(()=>[m(k(o.params?.completeBtnText??"同意"),1)]),_:1},8,["loading"])):d("v-if",!0)],64)):d("v-if",!0),W(t.$slots,"right",{},void 0,!0)]),_:3})],512)}}}),vt=de(fe,[["__scopeId","data-v-50169462"]]);export{vt as default};
1
+ import{defineComponent as Y,ref as v,useModel as Z,computed as _,onMounted as ee,watch as te,resolveComponent as $,openBlock as l,createElementBlock as P,createVNode as ae,withCtx as u,renderSlot as V,createBlock as f,createTextVNode as m,toDisplayString as k,createCommentVNode as d,unref as oe,Fragment as re,mergeModels as W}from"vue";import D from"../../api/workflow/workflowInstApi.js";import ne from"./components/SelectAssigneeDialog.vue.js";import{_ as ie}from"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-BWVDdb4B.js";import se from"./components/CheckDialog.vue.js";import{runWorkflowComplete as le}from"../../hooks/workflowCompleteRunner.js";import q from"../../utils/FrameworkUtils.js";import{userInfoStore as w}from"../../stores/userInfoStore.js";import{frontendBus as L}from"../../utils/frontendBus.js";import{showProcessView as ue,showTodoDialog as de}from"../../hooks/workflowTodo.js";import{_ as fe}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"../business/comp.userForm.vue.js";import"@vueuse/core";import"../../api/DeptInfoApi.js";import"../../api/EmployeeInfoApi.js";import"../../hooks/useResetRefHooks.js";import"../../config/vxeSelectColumn.js";import"../../../chunks/ElTagDisplay.vue_vue_type_script_setup_true_lang-DQXuYsW_.js";/* empty css */import"xlsx-js-style";import"../../api/SysUserApi.js";import"../bpmntree/components/UserSelector/UserTag.vue.js";import"../upload/CustomElUpload.vue.js";import"@element-plus/icons-vue";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 me=Y({__name:"TaskOperation",props:W({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:W(["success"],["update:butLoading"]),setup(o,{expose:E,emit:A}){const N=w(),b=v(null),n=o,i=Z(o,"butLoading"),R=A,e=v({taskId:"",comment:""}),O=n.renderDialog,g=(t,a,r,x,c,X)=>{if(!O){console.warn("[TaskOperation] 未注入 renderDialog,无法打开操作弹窗(请通过 props 传入 useDialogHooks 的 render)");return}O(t,a,r,x,c,X)},U=async()=>{if(typeof n.onProcessDetail=="function"){n.onProcessDetail(e.value);return}await ue(e.value)},T=_(()=>e.value?.operations==="assignee"),S=v(""),y=v(),K=v([{source:"edit"}]),j=async()=>{await de(v(e.value),K)},p=async t=>{if(t&&(S.value=t),!e.value)return;y.value={...e.value};let a=!1;if(t==="complete"&&n.params?.beforeCompleteFunction)try{const r=await n.params?.beforeCompleteFunction({taskId:e.value.taskId,userId:w().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")g(ie,{taskId:e.value.taskId,dialogType:t,renderDialog:g,onSuccess:I,onWorkflowSuccess:C},{title:t==="addMulti"?"加签":"减签",size:"400px"},"dialog");else if(t==="assignee")M(e.value.taskId);else{if(e.value.variables,t==="complete"&&e.value.firstSubmitNode&&n.params?.ignoreConfirm){await H();return}g(se,{taskVo:e.value,dialogType:t,taskOperate:n?.params,commentReadonly:a,renderDialog:g,onOpenAssignee:M,onSuccess:I,onWorkflowSuccess:C},{title:z(t),size:"480px",closeOnClickModal:!1},"dialog")}},z=t=>{switch(t){case"complete":return"流程审批";case"refuse":return"终止审批";case"back":return"驳回审批";case"transfer":return"转办审批";default:return"流程审批"}},H=async()=>{if(!e.value||!w().getUserInfo.userCode)return;y.value={...e.value};const t={taskId:e.value.taskId,userId:w().getUserInfo.userCode,comment:e.value.comment??"",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey,variables:e.value.variables};try{if(i.value=!0,n.params?.completeFunction){const a=await n.params?.completeFunction(t);a&&a?.taskId?e.value=a:e.value=await D.getTaskInst(e.value.taskId)}else e.value=await D.taskComplete(t)}catch(a){q.messageError(a);return}finally{i.value=!1}try{await h({actionType:"complete",taskVo:e.value,askVo:t})}catch{}},M=t=>{y.value={...e.value},g(ne,{taskId:t,onSuccess:I,onWorkflowSuccess:C},{title:"指定执行人",size:"450px"},"dialog")},I=t=>{t&&(e.value=t),L.emit("todoRefresh"),L.emit("homePageRefresh"),R("success")},h=async(t,a)=>{const r={...t,actionType:t.actionType||S.value,originTask:t.originTask??y.value,taskVo:t.taskVo??e.value};await le(n.params,r),a?.refresh!==!1&&I(t.taskVo)},C=t=>h({...t,originTask:t.originTask??y.value},{refresh:!1}),F=(t,a)=>t?t.classList?.contains(a)?t:F(t.parentElement,a):null,G=()=>{const t=F(b.value,"todo-dialog-class");return t?console.log("找到满足条件的元素:",t):console.log("未找到满足条件的元素"),t};ee(()=>{G(),B()});const s=v(!1),J=async()=>{s.value=!0},Q=()=>{s.value=!1},B=async()=>{if(n.taskInfo)e.value=n.taskInfo,e.value.finishTime&&console.log("该待办已完成!");else if(n.taskId)try{J(),e.value=await D.getTaskInst(n.taskId),e.value.finishTime&&console.log("该待办已完成!")}catch(t){q.messageError(t)}finally{Q()}};return E({reload:()=>{B()}}),te(()=>n.taskId,B),(t,a)=>{const r=$("el-button"),x=$("el-flex");return l(),P("div",{ref_key:"taskFlexRef",ref:b,class:"task-operation"},[ae(x,{align:"center",justify:"flex-end"},{default:u(()=>[V(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(k(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:U},{default:u(()=>[...a[7]||(a[7]=[m(" 流程信息 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!T.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||oe(N).getUserInfo.userCode!==e.value?.assigneeId),onClick:j},{default:u(()=>[m(k(e.value.taskName),1)]),_:1},8,["loading","disabled"])):d("v-if",!0),T.value?(l(),f(r,{key:3,type:"primary",loading:i.value||s.value,onClick:a[0]||(a[0]=c=>p("assignee"))},{default:u(()=>[...a[8]||(a[8]=[m("指定执行人 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!T.value&&e.value?.taskId&&e.value?.operations&&o.showOperationsBtn?(l(),P(re,{key:4},[o.params?.saveBtnText?(l(),f(r,{key:0,loading:i.value||s.value,type:"primary",onClick:o.params?.saveFunction},{default:u(()=>[m(k(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]=c=>p("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]=c=>p("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]=c=>p("refuse"))},{default:u(()=>[m(k(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]=c=>p("transfer"))},{default:u(()=>[m(k(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]=c=>p("back"))},{default:u(()=>[m(k(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]=c=>p("complete"))},{default:u(()=>[m(k(o.params?.completeBtnText??"同意"),1)]),_:1},8,["loading"])):d("v-if",!0)],64)):d("v-if",!0),V(t.$slots,"right",{},void 0,!0)]),_:3})],512)}}}),kt=fe(me,[["__scopeId","data-v-a84c5805"]]);export{kt as default};