1 |
- import{r as re,t as H,E as B,x as I}from"./index.vzye5GYA.js";import{G as ie,A as de,a as pe}from"./api.aXFkycn-.js";import{a as ue,r as X,w as z,_ as G,t as me,aj as r,J as T,o as g,K as o,S as e,b as m,P as v,c as S,a9 as J,R as F,u as D,M as L,Q as ce}from"./vue.YrNK8sx4.js";import{_ as _e}from"./_plugin-vue_export-helper.DlAUqK2U.js";function fe(){return re({url:"/api/system/device/category/",method:"get"})}const ge={class:"workflow-steps"},ye={class:"workflow-step"},ve={class:"step-title"},be={class:"step-roles"},we={class:"addRole",style:{width:"100%",display:"flex","justify-content":"center"}},Ve={style:{"text-align":"center",margin:"16px 0"}},ke={class:"workflow-step"},qe=ue({__name:"index",props:{visible:{type:Boolean},editData:{},mode:{}},emits:["update:visible","success"],setup(Y,{emit:Z}){const c=Y,M=Z,V=X(c.visible);z(()=>c.visible,a=>V.value=a),z(V,a=>M("update:visible",a));const N=G([]);fe().then(a=>{const t=a.data;console.log("获取到的data值:",t),N.splice(0,N.length,...t)}).catch(a=>{console.error("请求失败:",a)});const P=()=>({name:"",passType:""}),x=()=>({roles:[P()]}),l=G({name:"",scene:"",workflow_type:"0",description:"",is_active:!0,condition:{days:1,roles:[],equipment:[],borrow_types:[],team_type:[]},steps:[x()]}),A=G({name:[{required:!0,message:"请输入流程名称",trigger:"blur"}],workflow_type:[{required:!0,message:"请选择流程类型",trigger:"change"}],description:[{required:!0,message:"请输入流程描述",trigger:"blur"}],is_active:[{required:!0,message:"请输选择是否启用",trigger:"blur"}],"condition.days":[{required:!0,message:"请输入借用天数",trigger:"change"}],"condition.roles":[{required:!0,message:"请选择用户角色",trigger:"change"}],"condition.equipment":[{required:!0,message:"请选择设备标签",trigger:"change"}],"condition.borrow_types":[{required:!0,message:"请选择借用类型",trigger:"change"}],"condition.team_type":[{required:!0,message:"请选择借用方式",trigger:"change"}]}),K=X();function ee(){l.steps.forEach((a,t)=>{a.roles.forEach((p,n)=>{A[`steps.${t}.roles.${n}.name`]=[{required:!0,message:"请选择角色",trigger:"change"}],A[`steps.${t}.roles.${n}.passType`]=[{required:!0,message:"请选择通过条件",trigger:"change"}]})})}z(()=>c.editData,async a=>{if(console.error("编辑时获取到的值val:",a),a){const t=JSON.parse(JSON.stringify(a));l.name=t.name||"",l.scene=t.scene||"",l.workflow_type=String(t.workflow_type??"0"),l.description=t.description||"",l.is_active=t.is_active??!0;const p=t.trigger_conditions||{};l.condition={days:1,roles:p.user_types||[],equipment:Array.isArray(p.equipment_categories)?p.equipment_categories[0]:"",borrow_types:p.borrow_types||[],team_type:p.team_type||[]};const n=await ie(t.id);console.log("编辑时res.data.steps:",n.data.steps),l.steps=Array.isArray(n.data.steps)&&n.data.steps.length?n.data.steps.map(i=>({roles:[{name:i.step_name||"",passType:String(i.step_type??"1")}]})):[x()]}else l.name="",l.scene="",l.workflow_type="0",l.description="",l.is_active=!0,l.condition={days:1,roles:[],equipment:[],borrow_types:[],team_type:[]},l.steps=[x()];ee(),await me()},{immediate:!0});function te(){if(l.steps.length>=5){B.warning("最多只能添加 5 个审批步骤");return}l.steps.push(x())}function le(a){l.steps.length>1&&l.steps.splice(a,1)}function oe(a){if(l.steps[a].roles.length>=5){B.warning("每个步骤最多只能添加 5 个角色");return}l.steps[a].roles.push(P())}function se(a,t){l.steps[a].roles.length>1&&l.steps[a].roles.splice(t,1)}function Q(){V.value=!1}const ae={管理员:1,指导老师:2};async function ne(){var n,i,k,u,b,U,R,_,q;try{await((n=K.value)==null?void 0:n.validate())}catch(f){console.warn("表单验证失败:",f);return}const a={name:l.name,workflow_type:l.workflow_type,description:l.description,is_active:typeof l.is_active=="boolean"?l.is_active:!0,trigger_conditions:{equipment_categories:(i=l.condition)!=null&&i.equipment?[l.condition.equipment]:["贵重设备"],borrow_types:(u=(k=l.condition)==null?void 0:k.borrow_types)!=null&&u.length?l.condition.borrow_types:["0","1","2"],team_type:(U=(b=l.condition)==null?void 0:b.team_type)!=null&&U.length?l.condition.team_type:["0","1"],user_types:(_=(R=l.condition)==null?void 0:R.roles)!=null&&_.length?l.condition.roles:["student","teacher"]}},t=await de(a),p=(q=t==null?void 0:t.data)==null?void 0:q.id;if(!p){B.error("未能获取流程 ID");return}for(let f=0;f<l.steps.length;f++){const w=l.steps[f],y=f+1,h=w.roles.map(d=>d.name).filter(Boolean),O=w.roles.map(d=>d.passType).filter(Boolean)[0]||"1",E=h.map(d=>ae[d]).filter(Boolean),s={workflow:String(p),step_name:`${h.join(",")}审批`,step_order:y,step_type:O,description:`由${h.join(",")}进行审批`,approvers:[1],approver_roles:E,approver_depts:[],approval_conditions:{required_fields:[],value_ranges:{}},timeout_hours:24,timeout_action:"auto_reject",is_active:!0};console.log(`步骤 ${y} payload`,s),await pe(s)}B.success("保存成功"),M("success"),V.value=!1}return(a,t)=>{const p=r("el-input"),n=r("el-form-item"),i=r("el-col"),k=r("el-row"),u=r("el-option"),b=r("el-select"),U=r("el-divider"),R=r("el-input-number"),_=r("el-checkbox"),q=r("el-checkbox-group"),f=r("el-card"),w=r("el-icon"),y=r("el-button"),h=r("el-radio"),W=r("el-radio-group"),O=r("el-form"),E=r("el-dialog");return g(),T(E,{title:a.editData?c.mode==="view"?"查看审批流程":"编辑审批流程":"新建审批流程",modelValue:V.value,"onUpdate:modelValue":t[10]||(t[10]=s=>V.value=s),width:"900px",onClose:Q},{footer:o(()=>[e(y,{onClick:Q},{default:o(()=>t[22]||(t[22]=[v("取消")])),_:1}),c.mode!=="view"?(g(),T(y,{key:0,type:"primary",onClick:ne},{default:o(()=>t[23]||(t[23]=[v("保存")])),_:1})):L("",!0)]),default:o(()=>[e(O,{model:l,"label-width":"110px",rules:A,ref_key:"formRef",ref:K,disabled:c.mode==="view"},{default:o(()=>[e(k,{gutter:20},{default:o(()=>[e(i,{span:12},{default:o(()=>[e(n,{label:"流程名称",prop:"name"},{default:o(()=>[e(p,{modelValue:l.name,"onUpdate:modelValue":t[0]||(t[0]=s=>l.name=s),placeholder:"请输入"},null,8,["modelValue"])]),_:1})]),_:1}),e(i,{span:12},{default:o(()=>[e(n,{label:"适用场景",prop:"scene"},{default:o(()=>[e(p,{modelValue:l.scene,"onUpdate:modelValue":t[1]||(t[1]=s=>l.scene=s),placeholder:"请输入"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),e(k,{gutter:20},{default:o(()=>[e(i,{span:12},{default:o(()=>[e(n,{label:"流程类型",prop:"workflow_type"},{default:o(()=>[e(b,{modelValue:l.workflow_type,"onUpdate:modelValue":t[2]||(t[2]=s=>l.workflow_type=s),placeholder:"请选择流程类型",disabled:c.mode==="view"},{default:o(()=>[e(u,{label:"设备借用申请",value:"0"}),e(u,{label:"设备维修申请",value:"1"}),e(u,{label:"设备采购申请",value:"2"}),e(u,{label:"其他申请",value:"3"})]),_:1},8,["modelValue","disabled"])]),_:1})]),_:1}),e(i,{span:12},{default:o(()=>[e(n,{label:"流程描述",prop:"description"},{default:o(()=>[e(p,{modelValue:l.description,"onUpdate:modelValue":t[3]||(t[3]=s=>l.description=s),type:"textarea",rows:2,placeholder:"请输入流程描述",disabled:c.mode==="view"},null,8,["modelValue","disabled"])]),_:1})]),_:1}),e(i,{span:12},{default:o(()=>[e(n,{label:"是否启用",prop:"is_active"},{default:o(()=>[e(b,{modelValue:l.is_active,"onUpdate:modelValue":t[4]||(t[4]=s=>l.is_active=s),placeholder:"请选择启用还是禁用",disabled:c.mode==="view"},{default:o(()=>[e(u,{label:"启用",value:!0}),e(u,{label:"禁用",value:!1})]),_:1},8,["modelValue","disabled"])]),_:1})]),_:1})]),_:1}),e(U,null,{default:o(()=>t[11]||(t[11]=[v("条件选择")])),_:1}),e(k,{gutter:20},{default:o(()=>[e(i,{span:8},{default:o(()=>[e(n,{label:"借用天数大于",prop:"condition.days"},{default:o(()=>[e(R,{modelValue:l.condition.days,"onUpdate:modelValue":t[5]||(t[5]=s=>l.condition.days=s),min:1,"controls-position":"right",style:{width:"100px"}},null,8,["modelValue"]),t[12]||(t[12]=m("span",{style:{"margin-left":"8px"}},"天",-1))]),_:1})]),_:1}),e(i,{span:8},{default:o(()=>[e(n,{label:"用户角色",prop:"condition.roles"},{default:o(()=>[e(q,{modelValue:l.condition.roles,"onUpdate:modelValue":t[6]||(t[6]=s=>l.condition.roles=s)},{default:o(()=>[e(_,{label:"教师",value:"teacher"}),e(_,{label:"学生",value:"student"}),e(_,{label:"非本院师生",value:"external"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),e(i,{span:8},{default:o(()=>[e(n,{label:"设备标签",prop:"condition.equipment"},{default:o(()=>[e(b,{modelValue:l.condition.equipment,"onUpdate:modelValue":t[7]||(t[7]=s=>l.condition.equipment=s),placeholder:"请选择"},{default:o(()=>[(g(!0),S(F,null,J(N,(s,d)=>(g(),T(u,{key:d,label:s.name,value:s.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1}),e(i,{span:8},{default:o(()=>[e(n,{label:"借用类型",prop:"condition.borrow_types"},{default:o(()=>[e(q,{modelValue:l.condition.borrow_types,"onUpdate:modelValue":t[8]||(t[8]=s=>l.condition.borrow_types=s),disabled:c.mode==="view"},{default:o(()=>[e(_,{label:"常规借用",value:"0"}),e(_,{label:"课堂借用",value:"1"}),e(_,{label:"特殊借用",value:"2"})]),_:1},8,["modelValue","disabled"])]),_:1})]),_:1}),e(i,{span:8},{default:o(()=>[e(n,{label:"借用方式",prop:"condition.team_type"},{default:o(()=>[e(q,{modelValue:l.condition.team_type,"onUpdate:modelValue":t[9]||(t[9]=s=>l.condition.team_type=s),disabled:c.mode==="view"},{default:o(()=>[e(_,{label:"个人借用",value:"0"}),e(_,{label:"团队借用",value:"1"})]),_:1},8,["modelValue","disabled"])]),_:1})]),_:1})]),_:1}),e(U,null,{default:o(()=>t[13]||(t[13]=[v("流程配置")])),_:1}),m("div",ge,[m("div",ye,[e(f,{shadow:"never",class:"step-card borrower"},{default:o(()=>t[14]||(t[14]=[m("div",{class:"step-title"},"借用人",-1)])),_:1}),t[15]||(t[15]=m("div",{class:"step-line"},null,-1))]),(g(!0),S(F,null,J(l.steps,(s,d)=>(g(),S("div",{class:"workflow-step",key:d},[e(f,{shadow:"never",class:"step-card"},{default:o(()=>[m("div",ve,[v(" 审批步骤"+ce(d+1)+" ",1),l.steps.length>1&&d!==0?(g(),T(y,{key:0,type:"danger",size:"small",onClick:C=>le(d),style:{"margin-left":"10px"}},{default:o(()=>[e(w,null,{default:o(()=>[e(D(I))]),_:1}),t[16]||(t[16]=v(" 删除步骤 "))]),_:2},1032,["onClick"])):L("",!0)]),m("div",be,[(g(!0),S(F,null,J(s.roles,(C,$)=>(g(),S("div",{key:$,class:"role-row",style:{position:"relative",padding:"0 20px"}},[e(n,{label:"角色","label-position":"left","label-width":"100px",prop:`steps.${d}.roles.${$}.name`,rules:[{required:!0,message:"请选择角色",trigger:"change"}]},{default:o(()=>[e(b,{modelValue:C.name,"onUpdate:modelValue":j=>C.name=j,placeholder:"请选择角色",style:{width:"300px"}},{default:o(()=>[e(u,{label:"指导老师",value:"指导老师"}),e(u,{label:"管理员",value:"管理员"})]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1032,["prop"]),e(n,{label:"通过条件","label-position":"left",prop:`steps.${d}.roles.${$}.passType`,rules:[{required:!0,message:"请选择通过条件",trigger:"change"}]},{default:o(()=>[e(W,{modelValue:C.passType,"onUpdate:modelValue":j=>C.passType=j},{default:o(()=>[e(h,{label:"1名通过即可",value:"1"}),e(h,{label:"所有人员通过",value:"2"})]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1032,["prop"]),s.roles.length>1&&$!==0?(g(),T(y,{key:0,type:"danger",size:"small",onClick:j=>se(d,$),style:{position:"absolute",right:"0",top:"0"}},{default:o(()=>[e(w,null,{default:o(()=>[e(D(I))]),_:1}),t[17]||(t[17]=v(" 删除角色 "))]),_:2},1032,["onClick"])):L("",!0)]))),128)),m("div",we,[e(y,{type:"primary",size:"small",onClick:C=>oe(d),disabled:s.roles.length>=5},{default:o(()=>[e(w,null,{default:o(()=>[e(D(H))]),_:1}),t[18]||(t[18]=v(" 添加角色 "))]),_:2},1032,["onClick","disabled"])])])]),_:2},1024),t[19]||(t[19]=m("div",{class:"step-line"},null,-1))]))),128)),m("div",Ve,[e(y,{type:"primary",onClick:te,disabled:l.steps.length>=5},{default:o(()=>[e(w,null,{default:o(()=>[e(D(H))]),_:1}),t[20]||(t[20]=v(" 添加审批步骤 "))]),_:1},8,["disabled"])]),m("div",ke,[e(f,{shadow:"never",class:"step-card done"},{default:o(()=>t[21]||(t[21]=[m("div",{class:"step-title"},"审批完成",-1)])),_:1})])])]),_:1},8,["model","rules","disabled"])]),_:1},8,["title","modelValue"])}}}),Te=_e(qe,[["__scopeId","data-v-48fe15a5"]]);export{Te as default};
|