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