一、需求內容
目前審核人員角色有:學術、法務、售后,串行執行審核流程。
審核流程:發起/修改審核-》審核節點
審核節點規則:學術-》法務-》售后,每個節點均可以審核或修改。
審核狀態:發起、修改、待審核、已審核。
因此前端根據節點規則來展示審核步驟給用戶。
二、開發思路
1.根據節點規則,自定義一個字段存儲審核節點類型:nodeType:1-8
2.區分審核節點是一組還是多組,
例如:一組審核時['發起審核','學術待審核','法務待審核','售后待審核'] ;
而多組審核則是8個狀態都會出現,例如:['發起審核','學術已審核','法務已審核','售后已審核','修改審核','學術已審核','法務待審核','售后待審核',...]等此循環出現;
3.多組審核數據需要按照'審核節點規則'重新排序,用sort()重新生產結果數組。
4. 根據生成結果數組result,設置當前步驟值current。
三、項目運用代碼(部分)
function auditCheckClick(result){ if(result && result.length){ let len = result.length result.map((item,index)=>{ if(item.auditType==1){ item.nodeType=6} else if(item.auditType==2){ item.nodeType=7} else if(item.auditType==3){ item.nodeType=8} else if(item.auditType==4){ item.nodeType=2} else if(item.auditType==5){ item.nodeType=3} else if(item.auditType==6){ item.nodeType=4} else if(item.auditType==7||item.auditType==8){ item.nodeType=1} if(item.auditType==8){item.nodeIndex=index} return item }) console.log(1,result) if(len<=4){ // 一組審核 result.sort((r1,r2)=>{ return r1.nodeType - r2.nodeType }) }else{ // 多組審核 let lastArr = result.filter(el=>el.nodeIndex) let lastIndex= lastArr&&lastArr.length?lastArr[lastArr.length-1].nodeIndex:0 let hisSort = result.slice(0,lastIndex) let sortArr = result.slice(lastIndex) sortArr.sort((r1,r2)=>{return r1.nodeType - r2.nodeType}) result = hisSort.concat(sortArr) console.log(2, lastArr,lastIndex) console.log(3, hisSort,sortArr) console.log(4, result) } }
// result 結果數組
let step = result.findIndex(item=>item.auditType==1||item.auditType==2||item.auditType==3) // 學術、法務、售后的待審核狀態
let current = step&&step!=-1?step:result.length-1
// current 為步驟條索引值
浙公網安備 33010602011771號