2 lines
16 KiB
JavaScript
2 lines
16 KiB
JavaScript
import{_ as e,r as s,u as a,z as t,v as l,a as o,c as n,w as d,d as r,Z as c,C as i,F as u,D as p,e as f,H as m,b as h,L as k,i as v,f as g,ay as b,p as y,V as w,ar as _,az as E,G as C,aa as N,O,aA as I,aB as D,aC as R,q as S,aD as U,aE as T,ai as L,aj as P,B as x,E as F,$ as V,s as $,N as A,S as j,j as q}from"./index-CyL2BJM2.js";import{_ as B}from"./uni-segmented-control.Bmib4D7V.js";import{F as M}from"./FormRender.C7_E5hLN.js";import{f as z}from"./ProcessUtil.Cpq6blAo.js";import{c as G,d as J}from"./model.Boi7PEsu.js";const K=e({__name:"ProcessNodeRender2",props:{task:{type:Object,required:!0,default:()=>({})},error:{type:Boolean,default:!1}},emits:["addOrg","delOrg"],setup(e,{expose:b,emit:y}){b({errorShark:function(e){_.value=!0,setTimeout((()=>_.value=!1),1200)}});const w=y,_=s();function E(e){w("addOrg",e)}function C(e,s){console.log("删除用户"),w("delOrg",e,s)}return(s,b)=>{const y=a(l("uni-icons"),t),w=v,N=g;return o(),n(w,{style:{padding:"32rpx 0"}},{default:d((()=>[r(w,{class:c({"w-process-render-node":!0,"shake-tip":_.value})},{default:d((()=>[r(y,{type:e.task.icon,size:25,color:"#888887",class:"w-node-icon"},null,8,["type"]),(o(),n(w,{class:"w-p-node",key:e.task.active},{default:d((()=>[(e.task.options||[]).length>0?(o(),n(w,{key:0,class:"w-p-node-branchs"},{default:d((()=>[(o(!0),i(u,null,p(e.task.options,(s=>(o(),n(w,{class:c({"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:d((()=>[f(m(s.title),1)])),_:2},1032,["class","onClick"])))),128))])),_:1})):(o(),n(w,{key:1},{default:d((()=>[e.task.enableEdit?(o(),n(N,{key:0,style:{color:"red"}},{default:d((()=>[f(" * ")])),_:1})):h("",!0),f(" "+m("END"===e.task.name?"流程结束":e.task.title),1)])),_:1})),r(N,null,{default:d((()=>[f(m(e.task.desc),1)])),_:1})])),_:1})),r(w,{class:"w-p-n-user"},{default:d((()=>[(o(!0),i(u,null,p(e.task.users,((s,a)=>(o(),n(k,{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)?(o(),n(w,{key:0,class:"w-p-n-uadd",onClick:b[0]||(b[0]=s=>E(e.task))},{default:d((()=>[r(y,{type:"plusempty",size:"30",color:"#888887"})])),_:1})):h("",!0)])),_:1})])),_:1},8,["class"]),(o(),n(w,{key:e.task.active+"_",class:"w-sub-node"},{default:d((()=>[(o(!0),i(u,null,p(e.task.branchs?e.task.branchs[e.task.active]:[],(e=>(o(),n(H,{key:e.id+"_",class:"w-node-render",onAddOrg:E,onDelOrg:C,task:e},null,8,["task"])))),128))])),_:1}))])),_:1})}}},[["__scopeId","data-v-9bc1a355"]]),H=e({__name:"ProcessNodeRender",props:{task:{type:Object,required:!0,default:()=>({})},error:{type:Boolean,default:!1}},emits:["addOrg","delOrg"],setup(e,{expose:b,emit:y}){b({errorShark:function(e){_.value=!0,setTimeout((()=>_.value=!1),1200)}});const w=y,_=s();function E(e){w("addOrg",e)}function C(e,s){console.log("删除用户"),w("delOrg",e,s)}return(s,b)=>{const y=a(l("uni-icons"),t),w=v,N=g;return o(),n(w,{style:{padding:"32rpx 0"}},{default:d((()=>[r(w,{class:c({"w-process-render-node":!0,"shake-tip":_.value})},{default:d((()=>[r(y,{type:e.task.icon,size:25,color:"#888887",class:"w-node-icon"},null,8,["type"]),(o(),n(w,{class:"w-p-node",key:e.task.active},{default:d((()=>[(e.task.options||[]).length>0?(o(),n(w,{key:0,class:"w-p-node-branchs"},{default:d((()=>[(o(!0),i(u,null,p(e.task.options,(s=>(o(),n(w,{class:c({"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:d((()=>[f(m(s.title),1)])),_:2},1032,["class","onClick"])))),128))])),_:1})):(o(),n(w,{key:1},{default:d((()=>[e.task.enableEdit?(o(),n(N,{key:0,style:{color:"red"}},{default:d((()=>[f(" * ")])),_:1})):h("",!0),f(" "+m("END"===e.task.name?"流程结束":e.task.title),1)])),_:1})),r(N,null,{default:d((()=>[f(m(e.task.desc),1)])),_:1})])),_:1})),r(w,{class:"w-p-n-user"},{default:d((()=>[(o(!0),i(u,null,p(e.task.users,((s,a)=>(o(),n(k,{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)?(o(),n(w,{key:0,class:"w-p-n-uadd",onClick:b[0]||(b[0]=s=>E(e.task))},{default:d((()=>[r(y,{type:"plusempty",size:"30",color:"#888887"})])),_:1})):h("",!0)])),_:1})])),_:1},8,["class"]),(o(),n(w,{key:e.task.active+"_",class:"w-sub-node"},{default:d((()=>[(o(!0),i(u,null,p(e.task.branchs?e.task.branchs[e.task.active]:[],(e=>(o(),n(K,{key:e.id+"_",class:"w-node-render",onAddOrg:E,onDelOrg:C,task:e},null,8,["task"])))),128))])),_:1}))])),_:1})}}},[["__scopeId","data-v-a4128b97"]]);const Y={getUserLeader:function(e,s,a){return b({url:"wflow/process/step/leader/level",method:"get",data:{level:e,deptId:s,skipEmpty:a}},!1)},getUserLeaders:function(e,s,a){return b({url:"wflow/process/step/leader/to/level",method:"get",data:{maxLevel:e,deptId:s,skipEmpty:a}},!1)},getUsersByRoles:function(e){return b({url:"wflow/process/step/userByRoles",method:"post",data:e},!1)},validateEl:function(e){return b({url:"/wflow/process/step/el/validate",method:"get",data:{el:e}})},deployProcess:function(e,s=!1){return b({url:`wflow/process/model${s?"/sub":""}/deploy/${e}`,method:"post"})},saveProcess:function(e,s=!1){return b({url:`wflow/process/model${s?"/sub":""}/save/`,method:"post",data:e})},getNewVerProcess:function(e,s=!1){return b({url:`wflow/process/model${s?"/sub":""}/${e}`,method:"get"})},getCustomPrintConfig:function(e){return b({url:`wflow/process/model/customPrint/${e}`,method:"get"})},getLeaderByDepts:function(e){return b({url:"wflow/process/step/deptLeader",method:"post",data:e},!1)},delProcessInst:function(e){return b({url:`wflow/process/instance/${e}`,method:"delete"})},getTrueConditions:function(e){return b({url:"/wflow/process/step/conditions/resolve",method:"post",data:e},!1)}},Z=e({__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(e,{expose:a,emit:t}){const l=I(),c=e,f=y({get:()=>c.modelValue,set(e){m("update:modelValue",e)}});a({validate:function(e){let s=!0;console.log(s,"我的OK");for(let a of b.selectUserNodes)if(0===(f.value[a]||[]).length){s=!1;let e=b.branchNodeMap.get(a);for(;e&&e.id;)e.node.active=e.id,e=b.branchNodeMap.get(e.id);C((()=>{l.refs[a]&&l.refs[a][0].errorShark()}));break}console.log(s,"我的OK"),e&&e(s)}});const m=t,k=JSON.parse(w("loginUser"));k.value={id:k.userId,name:k.realName,avatar:k.avatar,sn:k.sn};const g=s(),b=_({selectUserNodes:new Set,loading:!1,selectedNode:{},reverse:!1,userCatch:{},oldFormData:{},models:null,processTasks:[],conditionFormItem:new Set,branchNodeMap:new Map,loadingReqs:[],calls:[]});E((()=>U()));const S=D((()=>U()),500);async function U(){console.log("渲染流程"),b.loading=!0,b.processTasks.length=0,b.selectUserNodes.clear(),b.loadingReqs.length=0,T(c.process,b.processTasks),b.processTasks.push({title:"结束",name:"END",icon:"checkbox-filled",enableEdit:!1}),b.loadingReqs.length>0?Promise.all(b.loadingReqs).then((()=>{b.loading=!1,m("render-ok")})).catch((()=>b.loading=!1)):(m("render-ok"),b.loading=!1)}function T(e,s,a,t){z(e,(e=>{switch(a&&b.branchNodeMap.set(e.id,{node:a,id:t}),e.type){case"ROOT":s.push({id:e.id,title:e.name,name:"发起人",desc:`${k.value.name} 将发起本流程`,icon:"contact-filled",enableEdit:!1,users:[k.value]});break;case"APPROVAL":s.push(L(e));break;case"TASK":s.push(L(e,!1));break;case"SUBPROC":s.push(function(e){let s={};switch(e.props.staterUser.type){case"ROOT":s=k.value;break;case"FORM":const a=c.formData[e.props.staterUser.value];s=Array.isArray(a)&&a.length>0?a[0]:{name:"请选人"};break;case"SELECT":s=e.props.staterUser.value||{}}const a={id:e.id,title:`${e.name} [由${s.id?s.name:"?"}发起]`,name:"子流程",desc:"",icon:"more-filled",enableEdit:!1,users:[s]};return function(e){b.models?e():(b.calls.push(e),1===b.calls.length&&G({},!0).then((e=>{b.models={},e.data.forEach((e=>{e.items.forEach((e=>b.models[e.procCode]=e.procName))})),b.calls.forEach((e=>e())),b.calls.length=0})))}((()=>{a.desc=`调用子流程 [${b.models[e.props.subProcCode]}]`})),a}(e));break;case"CC":s.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:R(e.props.assignedUser)};b.userCatch[e.id]&&b.userCatch[e.id].length>0&&(s.users=b.userCatch[e.id]);return b.userCatch[e.id]=s.users,s}(e));break;case"CONDITIONS":return s.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=Y.getTrueConditions({processDfId:c.processDefId,conditionNodeId:e.id,multiple:!1,context:{...c.formData,deptId:c.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]=[],b.branchNodeMap.set(e.id,{node:s,id:a}),T(e.children,t.branchs[e.id],t,e.id)}))})).catch((e=>{t.desc='<span style="color:#CE5266;">条件解析异常,渲染失败😢<span>'}));return b.loadingReqs.push(l),t}(e,a,t)),T(e.children,s),!0;case"INCLUSIVES":return s.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=Y.getTrueConditions({processDfId:c.processDefId,conditionNodeId:e.id,multiple:!0,context:{...c.formData,deptId:c.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]=[],b.branchNodeMap.set(e.id,{node:s,id:a}),T(e.children,t.branchs[e.id],t,e.id)}))})).catch((e=>{t.desc='<span style="color:#CE5266;">条件解析异常,渲染失败😢<span>'}));return b.loadingReqs.push(l),t}(e,a,t)),T(e.children,s),!0;case"CONCURRENTS":return s.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]=[],b.branchNodeMap.set(e.id,{node:s,id:a}),T(e.children,t.branchs[e.id],t,e.id)})),t}(e,a,t)),T(e.children,s),!0}}))}function L(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=R(e.props.assignedUser),a.desc=s?"指定审批人":"指定办理人";break;case"ASSIGN_LEADER":b.loadingReqs.push(Y.getLeaderByDepts((e.props.assignedDept||[]).map((e=>e.id))).then((e=>{a.users=e.data}))),a.desc="指定部门的领导";break;case"SELF":a.users=[k.value],a.desc="发起人自己"+(s?"审批":"办理");break;case"SELF_SELECT":a.enableEdit=!0,b.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;b.loadingReqs.push(Y.getUserLeaders("TOP"===l.endCondition?0:l.endLevel,c.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?"审批":"办理"}`,b.loadingReqs.push(Y.getUserLeader(e.props.leader.level,c.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?"审批":"办理"}`,b.loadingReqs.push(Y.getUsersByRoles({projectSn:k.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?"审批":"办理"),b.conditionFormItem.add(e.props.formUser),a.users=c.formData[e.props.formUser]||[];break;case"FORM_DEPT":t=!1,a.desc="由表单部门内主管"+(s?"审批":"办理"),b.conditionFormItem.add(e.props.formDept),b.loadingReqs.push(Y.getLeaderByDepts((c.formData[e.props.formDept]||[]).map((e=>e.id))).then((e=>{a.users=e.data})));break;case"REFUSE":a.desc="流程此处将被自动驳回"}return b.userCatch[e.id]&&b.userCatch[e.id].length>0&&(a.users=b.userCatch[e.id]),t&&(b.userCatch[e.id]=a.users),a}function P(e){console.log(e,"node"),b.selectedNode=e,g.value.show()}function x(e){var s;s=e,f.value[b.selectedNode.id]=[],s.forEach((e=>{-1===b.selectedNode.users.findIndex((s=>s.id===e.id))&&(e.enableEdit=!0,b.selectedNode.users.push(e),f.value[b.selectedNode.id]=b.selectedNode.users)}))}function F(e,s){s.users.splice(e,1)}return N(c.formData,(async()=>{S()})),(e,s)=>{const a=v;return!b.loading&&b.processTasks.length>0?(o(),n(a,{key:0,class:"w-process"},{default:d((()=>[r(a,{class:"w-process-line"}),(o(!0),i(u,null,p(b.processTasks,(e=>(o(),n(a,{class:"w-process-render",key:e.id},{default:d((()=>[r(H,{ref_for:!0,ref:e.id,class:"w-node-render",task:e,onAddOrg:P,onDelOrg:F},null,8,["task"])])),_:2},1024)))),128)),r(O,{ref_key:"orgPicker",ref:g,type:b.selectedNode.type||"user",multiple:b.selectedNode.multiple||!1,selected:b.selectedNode.users,onOk:x},null,8,["type","multiple","selected"])])),_:1})):h("",!0)}}},[["__scopeId","data-v-9bd45961"]]),Q=e({__name:"InitiateProcess",setup(e){const t=s(),c=s(),i=s({}),u=s({}),p=s([]),m=s(null),k=s({}),g=s(!1),_=s(!1),E=s(0),C=y((()=>F().windowHeight-70-36));S((e=>{var s;s=e.code||"",_.value=!0,J(s).then((e=>{console.log(JSON.stringify(e),777888999),u.value=e.data,_.value=!1})),U(N.userId).then((e=>{p.value=(e.data||[]).map((e=>({text:e.name,value:e.id}))),p.value.length>0&&(m.value=p.value[0].value)}))}));const N=JSON.parse(w("loginUser")),O=D((()=>V("showFp")),500);function I(e){E.value=e.currentIndex,V(0===E.value?"showFp":"hideFp")}function R(e){O()}function z(){t.value.validate((e=>{e?c.value.validate((e=>{e?function(){let e={deptId:m.value,formData:i.value,processUsers:k.value};(s=u.value.processDefId,a=e,b({url:`wflow/process/start/${s}`,method:"post",data:a})).then((e=>{$({icon:"success",title:"发起成功"}),A({delta:1})})).catch((e=>{$({icon:"none",title:"发起失败: "+e.msg})}));var s,a}():(E.value=1,$({icon:"none",title:"请按提示完成流程选项"}))})):(E.value=0,$({icon:"none",title:"请按提示完成表单"}))}))}return(e,s)=>{const b=a(l("uni-segmented-control"),B),y=v,w=a(l("uni-data-checkbox"),T),N=j,O=q;return o(),n(y,null,{default:d((()=>[r(y,{class:"nav-type"},{default:d((()=>[r(b,{current:E.value,values:["流程表单","流程步骤"],onClickItem:I,styleType:"text",activeColor:"#4C87F3"},null,8,["current"])])),_:1}),r(N,{class:"w-submit-form","scroll-y":"","show-scrollbar":"",style:x({height:C.value+"px"}),onScroll:R},{default:d((()=>[L(r(y,null,{default:d((()=>[p.value.length>1?(o(),n(y,{key:0,class:"w-start-dept"},{default:d((()=>[r(y,null,{default:d((()=>[f("发起人部门")])),_:1}),r(w,{modelValue:m.value,"onUpdate:modelValue":s[0]||(s[0]=e=>m.value=e),localdata:p.value},null,8,["modelValue","localdata"])])),_:1})):h("",!0),r(M,{ref_key:"wform",ref:t,config:u.value.formConfig,jsonConf:u.value.formItems,modelValue:i.value,"onUpdate:modelValue":s[1]||(s[1]=e=>i.value=e)},null,8,["config","jsonConf","modelValue"])])),_:1},512),[[P,0===E.value]]),L(r(y,{class:"w-process-render"},{default:d((()=>[!_.value&&m.value?(o(),n(Z,{key:0,onRenderOk:s[2]||(s[2]=e=>g.value=!1),ref_key:"process",ref:c,"process-def-id":u.value.processDefId,"dept-id":m.value,modelValue:k.value,"onUpdate:modelValue":s[3]||(s[3]=e=>k.value=e),formData:i.value,process:u.value.process},null,8,["process-def-id","dept-id","modelValue","formData","process"])):h("",!0)])),_:1},512),[[P,1===E.value]])])),_:1},8,["style"]),r(y,{class:"w-submit-opration"},{default:d((()=>[r(O,{class:"w-button",type:"primary",onClick:z},{default:d((()=>[f("提交流程")])),_:1})])),_:1})])),_:1})}}},[["__scopeId","data-v-22e7eb44"]]);export{Q as default};
|