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