順序?qū)徟鞯暮?jiǎn)單代碼實(shí)現(xiàn)(順序表的流程圖)
通過(guò)白碼低代碼開(kāi)發(fā)平臺(tái)簡(jiǎn)單實(shí)現(xiàn)根據(jù)用戶表設(shè)置的審核人進(jìn)行順序?qū)徟膶徟鞴δ堋?/p>
準(zhǔn)備工作:
1、在用戶表中添加若干個(gè)審批人字段,關(guān)聯(lián)用戶表。(我這里只設(shè)置4級(jí)審批)
2、根據(jù)需要?jiǎng)?chuàng)建“申請(qǐng)單”數(shù)據(jù)表記錄申請(qǐng)信息。
必須字段:狀態(tài)(字符)、當(dāng)前審核人(關(guān)聯(lián)-用戶)、審核歷史(集合-審核單)
3、根據(jù)需要?jiǎng)?chuàng)建“審核單”數(shù)據(jù)表記錄審核人的審核信息。
必須字段:審核狀態(tài)(字符)、申請(qǐng)單(關(guān)聯(lián)-申請(qǐng)單)
實(shí)現(xiàn)步驟:
- 實(shí)現(xiàn)創(chuàng)建申請(qǐng)單的功能
1、在快速開(kāi)發(fā)中創(chuàng)建“數(shù)據(jù)集”類型的“申請(qǐng)單”菜單。
2、快速創(chuàng)建“新建”申請(qǐng)單功能
3、單擊新建的功能,進(jìn)入流程設(shè)計(jì)頁(yè),點(diǎn)擊“新建申請(qǐng)單”步驟的設(shè)置。
將“申請(qǐng)人”設(shè)為當(dāng)前用戶,
將“狀態(tài)”設(shè)為“1級(jí)審批”,
將“當(dāng)前審核人”設(shè)為當(dāng)前用戶的1級(jí)審批,其余根據(jù)需求設(shè)置。
4、將功能保存發(fā)布。
效果:
- 實(shí)現(xiàn)當(dāng)前審批人審批功能
1、步驟1:創(chuàng)建“選擇申請(qǐng)單”的功能,步驟1:選擇“狀態(tài)”不為“通過(guò)”且不為“駁回”,“當(dāng)前審核人”為當(dāng)前用戶的“申請(qǐng)單”。
2、步驟2:新建一條“審核單”,將“審核狀態(tài)”設(shè)為必填下拉選項(xiàng)(通過(guò)、駁回),將“申請(qǐng)單”設(shè)為“選擇申請(qǐng)單”。
- 實(shí)現(xiàn)流轉(zhuǎn)到下一審批人功能
1、添加“關(guān)聯(lián)獲取”步驟獲取申請(qǐng)人信息,注意將所有字段隱藏。
2、添加編程步驟,添加“選擇申請(qǐng)單”、“申請(qǐng)人”、“審核信息”三個(gè)參數(shù),同時(shí)在代碼區(qū)引用。
引用代碼:
let apply = await $params.apply;//申請(qǐng)單 let createUser = await $params.createUser;//創(chuàng)建人 let approval = await $params.approval;//審核記錄
3、添加狀態(tài)變量,引用申請(qǐng)單中的“狀態(tài)”字段。
//申請(qǐng)單當(dāng)前狀態(tài)(本次審核前) let status = apply["5feaf06febabb14ea012579b"];
字段id獲取方式:
4、添加可以根據(jù)當(dāng)前status來(lái)指定查詢用戶表的審批人的map
//下一審批人查詢id let nextUserIdByStatusMap = { "1級(jí)審批": "5feaf1f908f77e4ea7fb6e04",//申請(qǐng)人的二級(jí)審批 "2級(jí)審批": "5feaf20608f77e4ea7fb6e05",//申請(qǐng)人的三級(jí)審批 "3級(jí)審批": "5feaf2309cff054eaf91ac69",//申請(qǐng)人的四級(jí)審批 "4級(jí)審批": " "//當(dāng)前狀態(tài)已經(jīng)是4級(jí)審批則無(wú)下一級(jí)審批 }
5、添加可以根據(jù)當(dāng)前status指定下一狀態(tài)的map
//下一狀態(tài) let nextStatusMap = { "1級(jí)審批": "2級(jí)審批", "2級(jí)審批": "3級(jí)審批", "3級(jí)審批": "4級(jí)審批" }
6、獲取下一審核人
//獲取下一審核人 let userEntity = "5ee84e626646265863211238"; let nextUserId = createUser[nextUserIdByStatusMap[status]]; let nextUser = await $plugin.data.getData(userEntity, nextUserId);
數(shù)據(jù)表entity獲取方法:
7、下一審核人的判斷邏輯
//當(dāng)前審核狀態(tài)let approvalStatus=approval["5feaf1219cff054eaf91ac5c"]; //申請(qǐng)單entity let applyEntity="5feaefdaebabb14ea0125792"; if(approvalStatus=="通過(guò)"&&nextUser._id){ //審核通過(guò),且還有下一審核人 }else{ //審核駁回或無(wú)下一審核人 }
8、需要下一審核人審核時(shí),更新申請(qǐng)單的 狀態(tài) 及 當(dāng)前審核人 字段
//更新申請(qǐng)單的 狀態(tài) 及 當(dāng)前審核人 await $plugin.data.updateData(applyEntity, apply._id, { "5feaf06febabb14ea012579b": nextStatusMap[status],//狀態(tài) "5feaf0829664af4ea1062b4e": nextUser._id,//當(dāng)前審核人 });
9、不存在下一審核人或本次審核駁回,更新申請(qǐng)單的 狀態(tài) 及 當(dāng)前審核人 字段
//更新申請(qǐng)單的 狀態(tài) 及 當(dāng)前審核人 await $plugin.data.updateData(applyEntity, apply._id, { "5feaf06febabb14ea012579b": approvalStatus,//狀態(tài) "5feaf0829664af4ea1062b4e": "",//清空當(dāng)前審核人 });
10、至此,功能已實(shí)現(xiàn)完畢,此時(shí)可保存并發(fā)布功能。
編程完整代碼:
async function runProcess($model = model, $plugin = plugin, $papplyams) { let apply = await $params.apply;//申請(qǐng)單 let createUser = await $params.createUser;//申請(qǐng)人 let approval = await $params.approval;//審核記錄 //申請(qǐng)單當(dāng)前狀態(tài)(本次審核前)let status = apply["5feaf06febabb14ea012579b"]; //下一審批人查詢id let nextUserIdByStatusMap = { "1級(jí)審批": "5feaf1f908f77e4ea7fb6e04",//申請(qǐng)人的二級(jí)審批 "2級(jí)審批": "5feaf20608f77e4ea7fb6e05",//申請(qǐng)人的三級(jí)審批 "3級(jí)審批": "5feaf2309cff054eaf91ac69",//申請(qǐng)人的四級(jí)審批 "4級(jí)審批": " "//當(dāng)前狀態(tài)已經(jīng)是4級(jí)審批則無(wú)下一級(jí)審批} //下一狀態(tài) let nextStatusMap = { "1級(jí)審批": "2級(jí)審批", "2級(jí)審批": "3級(jí)審批", "3級(jí)審批": "4級(jí)審批"} //獲取下一審核人 let userEntity = "5ee84e626646265863211238"; let nextUserId = createUser[nextUserIdByStatusMap[status]];let nextUser = await $plugin.data.getData(userEntity, nextUserId); //當(dāng)前審核狀態(tài) let approvalStatus = approval["5feaf1219cff054eaf91ac5c"]; //申請(qǐng)單entity let applyEntity = "5feaefdaebabb14ea0125792"; if (approvalStatus == "通過(guò)" && nextUser._id) { //審核通過(guò),且還有下一審核人 //更新申請(qǐng)單的 狀態(tài) 及 當(dāng)前審核人 await $plugin.data.updateData(applyEntity, apply._id, { "5feaf06febabb14ea012579b": nextStatusMap[status],//狀態(tài) "5feaf0829664af4ea1062b4e": nextUser._id,//當(dāng)前審核人 }); } else { //審核駁回或無(wú)下一審核人 //更新申請(qǐng)單的 狀態(tài) 及 當(dāng)前審核人 await $plugin.data.updateData(applyEntity, apply._id, { "5feaf06febabb14ea012579b": approvalStatus,//狀態(tài) "5feaf0829664af4ea1062b4e": "",//清空當(dāng)前審核人 }); }}
最終效果:
為方便測(cè)試,這里設(shè)置4級(jí)審核人都是我自己。