mobile-workflow/unpackage/dist/build/web/assets/pages-submit-InitiateProcess.b420d5a9.js
2024-04-30 00:30:46 +08:00

2 lines
16 KiB
JavaScript

import{au as e,_ as s,r as a,B as t,E as l,C as o,a as n,c as d,w as r,d as c,U as i,x as u,F as p,y as f,e as m,H as h,b as k,L as v,i as g,f as b,p as y,a4 as w,an as _,av as E,A as C,a6 as I,O as N,aw as O,ax as D,ay as R,q as S,az as U,ae as T,af as L,v as P,z as $,$ as x,s as F,N as A,S as q,j}from"./index-31a25876.js";import{_ as V}from"./uni-segmented-control.1faa24b6.js";import{F as M}from"./FormRender.beb734f4.js";import{f as B}from"./ProcessUtil.a1410eb2.js";const z=s({__name:"ProcessNodeRender2",props:{task:{type:Object,required:!0,default:()=>({})},error:{type:Boolean,default:!1}},emits:["addOrg","delOrg"],setup(e,{expose:s,emit:y}){s({errorShark:function(e){_.value=!0,setTimeout((()=>_.value=!1),1200)}});const w=y,_=a();function E(e){w("addOrg",e)}function C(e,s){console.log("删除用户"),w("delOrg",e,s)}return(s,a)=>{const y=t(o("uni-icons"),l),w=g,I=b;return n(),d(w,{style:{padding:"32rpx 0"}},{default:r((()=>[c(w,{class:i({"w-process-render-node":!0,"shake-tip":_.value})},{default:r((()=>[c(y,{type:e.task.icon,size:25,color:"#888887",class:"w-node-icon"},null,8,["type"]),(n(),d(w,{class:"w-p-node",key:e.task.active},{default:r((()=>[(e.task.options||[]).length>0?(n(),d(w,{key:0,class:"w-p-node-branchs"},{default:r((()=>[(n(!0),u(p,null,f(e.task.options,(s=>(n(),d(w,{class:i({"w-p-node-branch":!0,"no-active":s.skip,"is-active":s.id===e.task.active}),key:s.id,onClick:a=>e.task.active=s.id},{default:r((()=>[m(h(s.title),1)])),_:2},1032,["class","onClick"])))),128))])),_:1})):(n(),d(w,{key:1},{default:r((()=>[e.task.enableEdit?(n(),d(I,{key:0,style:{color:"red"}},{default:r((()=>[m(" * ")])),_:1})):k("",!0),m(" "+h("END"===e.task.name?"流程结束":e.task.title),1)])),_:1})),c(I,null,{default:r((()=>[m(h(e.task.desc),1)])),_:1})])),_:1})),c(w,{class:"w-p-n-user"},{default:r((()=>[(n(!0),u(p,null,f(e.task.users,((s,a)=>(n(),d(v,{name:s.name,closeable:e.task.enableEdit,type:s.type,key:s.id,src:s.avatar,size:30,showY:"",onClose:s=>C(a,e.task)},null,8,["name","closeable","type","src","onClose"])))),128)),e.task.enableEdit&&(e.task.multiple||0===e.task.users.length)?(n(),d(w,{key:0,class:"w-p-n-uadd",onClick:a[0]||(a[0]=s=>E(e.task))},{default:r((()=>[c(y,{type:"plusempty",size:"30",color:"#888887"})])),_:1})):k("",!0)])),_:1})])),_:1},8,["class"]),(n(),d(w,{key:e.task.active+"_",class:"w-sub-node"},{default:r((()=>[(n(!0),u(p,null,f(e.task.branchs?e.task.branchs[e.task.active]:[],(e=>(n(),d(G,{key:e.id+"_",class:"w-node-render",onAddOrg:E,onDelOrg:C,task:e},null,8,["task"])))),128))])),_:1}))])),_:1})}}},[["__scopeId","data-v-9bc1a355"]]),G=s({__name:"ProcessNodeRender",props:{task:{type:Object,required:!0,default:()=>({})},error:{type:Boolean,default:!1}},emits:["addOrg","delOrg"],setup(e,{expose:s,emit:y}){s({errorShark:function(e){_.value=!0,setTimeout((()=>_.value=!1),1200)}});const w=y,_=a();function E(e){w("addOrg",e)}function C(e,s){console.log("删除用户"),w("delOrg",e,s)}return(s,a)=>{const y=t(o("uni-icons"),l),w=g,I=b;return n(),d(w,{style:{padding:"32rpx 0"}},{default:r((()=>[c(w,{class:i({"w-process-render-node":!0,"shake-tip":_.value})},{default:r((()=>[c(y,{type:e.task.icon,size:25,color:"#888887",class:"w-node-icon"},null,8,["type"]),(n(),d(w,{class:"w-p-node",key:e.task.active},{default:r((()=>[(e.task.options||[]).length>0?(n(),d(w,{key:0,class:"w-p-node-branchs"},{default:r((()=>[(n(!0),u(p,null,f(e.task.options,(s=>(n(),d(w,{class:i({"w-p-node-branch":!0,"no-active":s.skip,"is-active":s.id===e.task.active}),key:s.id,onClick:a=>e.task.active=s.id},{default:r((()=>[m(h(s.title),1)])),_:2},1032,["class","onClick"])))),128))])),_:1})):(n(),d(w,{key:1},{default:r((()=>[e.task.enableEdit?(n(),d(I,{key:0,style:{color:"red"}},{default:r((()=>[m(" * ")])),_:1})):k("",!0),m(" "+h("END"===e.task.name?"流程结束":e.task.title),1)])),_:1})),c(I,null,{default:r((()=>[m(h(e.task.desc),1)])),_:1})])),_:1})),c(w,{class:"w-p-n-user"},{default:r((()=>[(n(!0),u(p,null,f(e.task.users,((s,a)=>(n(),d(v,{name:s.name,closeable:e.task.enableEdit,type:s.type,key:s.id,src:s.avatar,size:30,showY:"",onClose:s=>C(a,e.task)},null,8,["name","closeable","type","src","onClose"])))),128)),e.task.enableEdit&&(e.task.multiple||0===e.task.users.length)?(n(),d(w,{key:0,class:"w-p-n-uadd",onClick:a[0]||(a[0]=s=>E(e.task))},{default:r((()=>[c(y,{type:"plusempty",size:"30",color:"#888887"})])),_:1})):k("",!0)])),_:1})])),_:1},8,["class"]),(n(),d(w,{key:e.task.active+"_",class:"w-sub-node"},{default:r((()=>[(n(!0),u(p,null,f(e.task.branchs?e.task.branchs[e.task.active]:[],(e=>(n(),d(z,{key:e.id+"_",class:"w-node-render",onAddOrg:E,onDelOrg:C,task:e},null,8,["task"])))),128))])),_:1}))])),_:1})}}},[["__scopeId","data-v-a4128b97"]]);const H={getUserLeader:function(s,a,t){return e({url:"wflow/process/step/leader/level",method:"get",data:{level:s,deptId:a,skipEmpty:t}},!1)},getUserLeaders:function(s,a,t){return e({url:"wflow/process/step/leader/to/level",method:"get",data:{maxLevel:s,deptId:a,skipEmpty:t}},!1)},getUsersByRoles:function(s){return e({url:"wflow/process/step/userByRoles",method:"post",data:s},!1)},validateEl:function(s){return e({url:"/wflow/process/step/el/validate",method:"get",data:{el:s}})},deployProcess:function(s,a=!1){return e({url:`wflow/process/model${a?"/sub":""}/deploy/${s}`,method:"post"})},saveProcess:function(s,a=!1){return e({url:`wflow/process/model${a?"/sub":""}/save/`,method:"post",data:s})},getNewVerProcess:function(s,a=!1){return e({url:`wflow/process/model${a?"/sub":""}/${s}`,method:"get"})},getCustomPrintConfig:function(s){return e({url:`wflow/process/model/customPrint/${s}`,method:"get"})},getLeaderByDepts:function(s){return e({url:"wflow/process/step/deptLeader",method:"post",data:s},!1)},delProcessInst:function(s){return e({url:`wflow/process/instance/${s}`,method:"delete"})},getTrueConditions:function(s){return e({url:"/wflow/process/step/conditions/resolve",method:"post",data:s},!1)}},Y=s({__name:"ProcessRender",props:{processDefId:String,process:{type:Object,default:()=>({})},formData:{type:Object,default:()=>({})},modelValue:{type:Object,default:()=>({})},deptId:{type:String,default:null}},emits:["update:modelValue","render-ok"],setup(s,{expose:t,emit:l}){const o=R(),i=s,m=y({get:()=>i.modelValue,set(e){h("update:modelValue",e)}});t({validate:function(e){let s=!0;for(let a of S.selectUserNodes)if(0===(m.value[a]||[]).length){s=!1;let e=S.branchNodeMap.get(a);for(;e&&e.id;)e.node.active=e.id,e=S.branchNodeMap.get(e.id);C((()=>{o.refs[a]&&o.refs[a][0].errorShark()}));break}e&&e(s)}});const h=l,v=w("loginUser");v.value={id:v.userId,name:v.realName,avatar:v.avatar,sn:v.sn};const b=a(),S=_({selectUserNodes:new Set,loading:!1,selectedNode:{},reverse:!1,userCatch:{},oldFormData:{},models:null,processTasks:[],conditionFormItem:new Set,branchNodeMap:new Map,loadingReqs:[],calls:[]});E((()=>T()));const U=O((()=>T()),500);async function T(){console.log("渲染流程"),S.loading=!0,S.processTasks.length=0,S.selectUserNodes.clear(),S.loadingReqs.length=0,L(i.process,S.processTasks),S.processTasks.push({title:"结束",name:"END",icon:"checkbox-filled",enableEdit:!1}),S.loadingReqs.length>0?Promise.all(S.loadingReqs).then((()=>{S.loading=!1,h("render-ok")})).catch((()=>S.loading=!1)):(h("render-ok"),S.loading=!1)}function L(s,a,t,l){B(s,(s=>{switch(t&&S.branchNodeMap.set(s.id,{node:t,id:l}),s.type){case"ROOT":a.push({id:s.id,title:s.name,name:"发起人",desc:`${v.value.name} 将发起本流程`,icon:"contact-filled",enableEdit:!1,users:[v.value]});break;case"APPROVAL":a.push(P(s));break;case"TASK":a.push(P(s,!1));break;case"SUBPROC":a.push(function(s){let a={};switch(s.props.staterUser.type){case"ROOT":a=v.value;break;case"FORM":const e=i.formData[s.props.staterUser.value];a=Array.isArray(e)&&e.length>0?e[0]:{name:"请选人"};break;case"SELECT":a=s.props.staterUser.value||{}}const t={id:s.id,title:`${s.name} [由${a.id?a.name:"?"}发起]`,name:"子流程",desc:"",icon:"more-filled",enableEdit:!1,users:[a]};return function(s){S.models?s():(S.calls.push(s),1===S.calls.length&&function(s,a=!1){return e({url:`wflow/model/${a?"sub/":""}group/list`,data:s})}({},!0).then((e=>{S.models={},e.data.forEach((e=>{e.items.forEach((e=>S.models[e.procCode]=e.procName))})),S.calls.forEach((e=>e())),S.calls.length=0})))}((()=>{t.desc=`调用子流程 [${S.models[s.props.subProcCode]}]`})),t}(s));break;case"CC":a.push(function(e){let s={id:e.id,title:e.name,icon:"paperplane-filled",name:"抄送人",enableEdit:e.props.shouldAdd,type:"org",multiple:!0,desc:e.props.shouldAdd?"可添加抄送人":"流程将会抄送到他们",users:D(e.props.assignedUser)};S.userCatch[e.id]&&S.userCatch[e.id].length>0&&(s.users=S.userCatch[e.id]);return S.userCatch[e.id]=s.users,s}(s));break;case"CONDITIONS":return a.push(function(e,s,a){let t={id:e.id,title:e.name,name:"条件分支",icon:"tune",enableEdit:!1,active:e.branchs[0].id,options:[],desc:"只执行第一个满足条件的分支",branchs:{}};const l=H.getTrueConditions({processDfId:i.processDefId,conditionNodeId:e.id,multiple:!1,context:{...i.formData,deptId:i.deptId}}).then((l=>{const o=new Set(l.data||[]);for(let s=0;s<e.branchs.length;s++){const a=e.branchs[s];a.skip=!o.has(a.id),a.skip||(t.active=a.id)}e.branchs.forEach((e=>{t.options.push({id:e.id,title:e.name,skip:e.skip}),t.branchs[e.id]=[],S.branchNodeMap.set(e.id,{node:s,id:a}),L(e.children,t.branchs[e.id],t,e.id)}))})).catch((e=>{t.desc='<span style="color:#CE5266;">条件解析异常,渲染失败😢<span>'}));return S.loadingReqs.push(l),t}(s,t,l)),L(s.children,a),!0;case"INCLUSIVES":return a.push(function(e,s,a){let t={id:e.id,title:e.name,name:"包容分支",icon:"tune-filled",enableEdit:!1,active:e.branchs[0].id,options:[],desc:"满足条件的分支均会执行",branchs:{}};const l=H.getTrueConditions({processDfId:i.processDefId,conditionNodeId:e.id,multiple:!0,context:{...i.formData,deptId:i.deptId}}).then((l=>{const o=new Set(l.data||[]);for(let s=0;s<e.branchs.length;s++){const a=e.branchs[s];a.skip=!o.has(a.id),a.skip||(t.active=a.id)}e.branchs.forEach((e=>{t.options.push({id:e.id,title:e.name,skip:e.skip}),t.branchs[e.id]=[],S.branchNodeMap.set(e.id,{node:s,id:a}),L(e.children,t.branchs[e.id],t,e.id)}))})).catch((e=>{t.desc='<span style="color:#CE5266;">条件解析异常,渲染失败😢<span>'}));return S.loadingReqs.push(l),t}(s,t,l)),L(s.children,a),!0;case"CONCURRENTS":return a.push(function(e,s,a){let t={id:e.id,title:e.name,name:"并行分支",icon:"settings-filled",enableEdit:!1,active:e.branchs[0].id,options:[],desc:"所有分支都将同时执行",branchs:{}};return e.branchs.forEach((e=>{t.options.push({id:e.id,title:e.name,skip:!1}),t.branchs[e.id]=[],S.branchNodeMap.set(e.id,{node:s,id:a}),L(e.children,t.branchs[e.id],t,e.id)})),t}(s,t,l)),L(s.children,a),!0}}))}function P(e,s=!0){let a={id:e.id,title:e.name,name:s?"审批人":"办理人",icon:s?"person-filled":"calendar-filled",enableEdit:!1,multiple:!1,mode:e.props.mode,users:[],desc:""},t=!0;switch(e.props.assignedType){case"ASSIGN_USER":a.users=D(e.props.assignedUser),a.desc=s?"指定审批人":"指定办理人";break;case"ASSIGN_LEADER":S.loadingReqs.push(H.getLeaderByDepts((e.props.assignedDept||[]).map((e=>e.id))).then((e=>{a.users=e.data}))),a.desc="指定部门的领导";break;case"SELF":a.users=[v.value],a.desc="发起人自己"+(s?"审批":"办理");break;case"SELF_SELECT":a.enableEdit=!0,S.selectUserNodes.add(e.id),a.multiple=e.props.selfSelect.multiple||!1,a.desc=s?"自选审批人":"自选办理人";break;case"LEADER_TOP":a.desc="连续多级主管"+(s?"审批":"办理");const l=e.props.leaderTop;S.loadingReqs.push(H.getUserLeaders("TOP"===l.endCondition?0:l.endLevel,i.deptId,l.skipEmpty).then((e=>{a.users=e.data})));break;case"LEADER":a.desc=1===e.props.leader.level?"直接主管"+(s?"审批":"办理"):`${e.props.leader.level}级主管${s?"审批":"办理"}`,S.loadingReqs.push(H.getUserLeader(e.props.leader.level,i.deptId,e.props.leader.skipEmpty).then((e=>{a.users=e.data?[e.data]:[]})));break;case"ROLE":a.desc=`由角色[${(e.props.role||[]).map((e=>e.name))}]${s?"审批":"办理"}`,S.loadingReqs.push(H.getUsersByRoles({projectSn:v.value.sn,roleIds:(e.props.role||[]).map((e=>e.id))}).then((e=>{a.users=e.data})));break;case"FORM_USER":t=!1,a.desc="由表单字段内人员"+(s?"审批":"办理"),S.conditionFormItem.add(e.props.formUser),a.users=i.formData[e.props.formUser]||[];break;case"FORM_DEPT":t=!1,a.desc="由表单部门内主管"+(s?"审批":"办理"),S.conditionFormItem.add(e.props.formDept),S.loadingReqs.push(H.getLeaderByDepts((i.formData[e.props.formDept]||[]).map((e=>e.id))).then((e=>{a.users=e.data})));break;case"REFUSE":a.desc="流程此处将被自动驳回"}return S.userCatch[e.id]&&S.userCatch[e.id].length>0&&(a.users=S.userCatch[e.id]),t&&(S.userCatch[e.id]=a.users),a}function $(e){console.log(e,"node"),S.selectedNode=e,b.value.show()}function x(e){var s;s=e,m.value[S.selectedNode.id]=[],s.forEach((e=>{-1===S.selectedNode.users.findIndex((s=>s.id===e.id))&&(e.enableEdit=!0,S.selectedNode.users.push(e),m.value[S.selectedNode.id]=S.selectedNode.users)}))}function F(e,s){s.users.splice(e,1)}return I(i.formData,(async()=>{U()})),(e,s)=>{const a=g;return!S.loading&&S.processTasks.length>0?(n(),d(a,{key:0,class:"w-process"},{default:r((()=>[c(a,{class:"w-process-line"}),(n(!0),u(p,null,f(S.processTasks,(e=>(n(),d(a,{class:"w-process-render",key:e.id},{default:r((()=>[c(G,{ref_for:!0,ref:e.id,class:"w-node-render",task:e,onAddOrg:$,onDelOrg:F},null,8,["task"])])),_:2},1024)))),128)),c(N,{ref_key:"orgPicker",ref:b,type:S.selectedNode.type||"user",multiple:S.selectedNode.multiple||!1,selected:S.selectedNode.users,onOk:x},null,8,["type","multiple","selected"])])),_:1})):k("",!0)}}},[["__scopeId","data-v-47fd0723"]]),K=s({__name:"InitiateProcess",setup(s){const l=a(),i=a(),u=a({}),p=a({}),f=a([]),h=a(null),v=a({}),b=a(!1),_=a(!1),E=a(0),C=y((()=>$().windowHeight-70-36));S((s=>{var a,t;a=s.code||"",_.value=!0,(t=a,e({url:`wflow/model/detail/${t}`,data:"GET"})).then((e=>{p.value=e.data,_.value=!1})),U(I.userId).then((e=>{f.value=e.data,f.value.length>0&&(h.value=f.value[0].id)}))}));const I=w("loginUser"),N=O((()=>x("showFp")),500);function D(e){E.value=e.currentIndex,x(0===E.value?"showFp":"hideFp")}function R(e){N()}function B(){l.value.validate((s=>{s?i.value.validate((s=>{s?function(){let s={deptId:h.value,formData:u.value,processUsers:v.value};(a=p.value.processDefId,t=s,e({url:`wflow/process/start/${a}`,method:"post",data:t})).then((e=>{F({icon:"success",title:"发起成功"}),A({delta:1})})).catch((e=>{F({icon:"none",title:"发起失败: "+e.msg})}));var a,t}():(E.value=1,F({icon:"none",title:"请按提示完成流程选项"}))})):(E.value=0,F({icon:"none",title:"请按提示完成表单"}))}))}return(e,s)=>{const a=t(o("uni-segmented-control"),V),f=g,y=q,w=j;return n(),d(f,null,{default:r((()=>[c(f,{class:"nav-type"},{default:r((()=>[c(a,{current:E.value,values:["流程表单","流程步骤"],onClickItem:D,styleType:"text",activeColor:"#4C87F3"},null,8,["current"])])),_:1}),c(y,{class:"w-submit-form","scroll-y":"","show-scrollbar":"",style:P({height:C.value+"px"}),onScroll:R},{default:r((()=>[T(c(f,null,{default:r((()=>[c(M,{ref_key:"wform",ref:l,config:{},jsonConf:p.value.formItems,modelValue:u.value,"onUpdate:modelValue":s[0]||(s[0]=e=>u.value=e)},null,8,["jsonConf","modelValue"])])),_:1},512),[[L,0===E.value]]),T(c(f,{class:"w-process-render"},{default:r((()=>[!_.value&&h.value?(n(),d(Y,{key:0,onRenderOk:s[1]||(s[1]=e=>b.value=!1),ref_key:"process",ref:i,"process-def-id":p.value.processDefId,"dept-id":h.value,modelValue:v.value,"onUpdate:modelValue":s[2]||(s[2]=e=>v.value=e),formData:u.value,process:p.value.process},null,8,["process-def-id","dept-id","modelValue","formData","process"])):k("",!0)])),_:1},512),[[L,1===E.value]])])),_:1},8,["style"]),c(f,{class:"w-submit-opration"},{default:r((()=>[c(w,{class:"w-button",type:"primary",onClick:B},{default:r((()=>[m("提交流程")])),_:1})])),_:1})])),_:1})}}},[["__scopeId","data-v-d9c3a1f3"]]);export{K as default};