順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

通過白碼低代碼開發(fā)平臺簡單實現(xiàn)根據(jù)用戶表設(shè)置的審核人進行順序?qū)徟膶徟鞴δ堋?/p>

準備工作:

1、在用戶表中添加若干個審批人字段,關(guān)聯(lián)用戶表。(我這里只設(shè)置4級審批)

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

2、根據(jù)需要創(chuàng)建“申請單”數(shù)據(jù)表記錄申請信息。

必須字段:狀態(tài)(字符)、當前審核人(關(guān)聯(lián)-用戶)、審核歷史(集合-審核單)

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

3、根據(jù)需要創(chuàng)建“審核單”數(shù)據(jù)表記錄審核人的審核信息。

必須字段:審核狀態(tài)(字符)、申請單(關(guān)聯(lián)-申請單)

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

實現(xiàn)步驟:

  • 實現(xiàn)創(chuàng)建申請單的功能

1、在快速開發(fā)中創(chuàng)建“數(shù)據(jù)集”類型的“申請單”菜單。

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

2、快速創(chuàng)建“新建”申請單功能

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

3、單擊新建的功能,進入流程設(shè)計頁,點擊“新建申請單”步驟的設(shè)置。

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

將“申請人”設(shè)為當前用戶,

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

將“狀態(tài)”設(shè)為“1級審批”,

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

將“當前審核人”設(shè)為當前用戶的1級審批,其余根據(jù)需求設(shè)置。

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

4、將功能保存發(fā)布。

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

效果:

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

  • 實現(xiàn)當前審批人審批功能

1、步驟1:創(chuàng)建“選擇申請單”的功能,步驟1:選擇“狀態(tài)”不為“通過”且不為“駁回”,“當前審核人”為當前用戶的“申請單”。

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

2、步驟2:新建一條“審核單”,將“審核狀態(tài)”設(shè)為必填下拉選項(通過、駁回),將“申請單”設(shè)為“選擇申請單”。

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

  • 實現(xiàn)流轉(zhuǎn)到下一審批人功能

1、添加“關(guān)聯(lián)獲取”步驟獲取申請人信息,注意將所有字段隱藏。

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

2、添加編程步驟,添加“選擇申請單”、“申請人”、“審核信息”三個參數(shù),同時在代碼區(qū)引用。

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

引用代碼:

 let apply = await $params.apply;//申請單     let createUser = await $params.createUser;//創(chuàng)建人    let approval = await $params.approval;//審核記錄

3、添加狀態(tài)變量,引用申請單中的“狀態(tài)”字段。

  //申請單當前狀態(tài)(本次審核前)    let status = apply["5feaf06febabb14ea012579b"];

字段id獲取方式:

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

4、添加可以根據(jù)當前status來指定查詢用戶表的審批人的map

  //下一審批人查詢id    let nextUserIdByStatusMap = {        "1級審批": "5feaf1f908f77e4ea7fb6e04",//申請人的二級審批        "2級審批": "5feaf20608f77e4ea7fb6e05",//申請人的三級審批        "3級審批": "5feaf2309cff054eaf91ac69",//申請人的四級審批        "4級審批": " "//當前狀態(tài)已經(jīng)是4級審批則無下一級審批    }

5、添加可以根據(jù)當前status指定下一狀態(tài)的map

 //下一狀態(tài)    let nextStatusMap = {        "1級審批": "2級審批",        "2級審批": "3級審批",        "3級審批": "4級審批"    }

6、獲取下一審核人

 //獲取下一審核人    let userEntity = "5ee84e626646265863211238";    let nextUserId = createUser[nextUserIdByStatusMap[status]];    let nextUser = await $plugin.data.getData(userEntity, nextUserId);

數(shù)據(jù)表entity獲取方法:

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

7、下一審核人的判斷邏輯

    //當前審核狀態(tài)let approvalStatus=approval["5feaf1219cff054eaf91ac5c"];    //申請單entity    let applyEntity="5feaefdaebabb14ea0125792";    if(approvalStatus=="通過"&&nextUser._id){        //審核通過,且還有下一審核人    }else{        //審核駁回或無下一審核人    }

8、需要下一審核人審核時,更新申請單的 狀態(tài) 及 當前審核人 字段

        //更新申請單的 狀態(tài) 及 當前審核人        await $plugin.data.updateData(applyEntity, apply._id, {            "5feaf06febabb14ea012579b": nextStatusMap[status],//狀態(tài)            "5feaf0829664af4ea1062b4e": nextUser._id,//當前審核人        });

9、不存在下一審核人或本次審核駁回,更新申請單的 狀態(tài) 及 當前審核人 字段

  //更新申請單的 狀態(tài) 及 當前審核人        await $plugin.data.updateData(applyEntity, apply._id, {            "5feaf06febabb14ea012579b": approvalStatus,//狀態(tài)            "5feaf0829664af4ea1062b4e": "",//清空當前審核人        });

10、至此,功能已實現(xiàn)完畢,此時可保存并發(fā)布功能。

編程完整代碼:

async function runProcess($model = model, $plugin = plugin, $papplyams) {    let apply = await $params.apply;//申請單     let createUser = await $params.createUser;//申請人    let approval = await $params.approval;//審核記錄    //申請單當前狀態(tài)(本次審核前)let status = apply["5feaf06febabb14ea012579b"];    //下一審批人查詢id    let nextUserIdByStatusMap = {        "1級審批": "5feaf1f908f77e4ea7fb6e04",//申請人的二級審批        "2級審批": "5feaf20608f77e4ea7fb6e05",//申請人的三級審批        "3級審批": "5feaf2309cff054eaf91ac69",//申請人的四級審批        "4級審批": " "//當前狀態(tài)已經(jīng)是4級審批則無下一級審批}    //下一狀態(tài)    let nextStatusMap = {        "1級審批": "2級審批",        "2級審批": "3級審批",        "3級審批": "4級審批"}    //獲取下一審核人    let userEntity = "5ee84e626646265863211238";    let nextUserId = createUser[nextUserIdByStatusMap[status]];let nextUser = await $plugin.data.getData(userEntity, nextUserId);    //當前審核狀態(tài)    let approvalStatus = approval["5feaf1219cff054eaf91ac5c"];    //申請單entity    let applyEntity = "5feaefdaebabb14ea0125792";    if (approvalStatus == "通過" && nextUser._id) {        //審核通過,且還有下一審核人        //更新申請單的 狀態(tài) 及 當前審核人        await $plugin.data.updateData(applyEntity, apply._id, {            "5feaf06febabb14ea012579b": nextStatusMap[status],//狀態(tài)            "5feaf0829664af4ea1062b4e": nextUser._id,//當前審核人        });    } else {        //審核駁回或無下一審核人        //更新申請單的 狀態(tài) 及 當前審核人        await $plugin.data.updateData(applyEntity, apply._id, {            "5feaf06febabb14ea012579b": approvalStatus,//狀態(tài)            "5feaf0829664af4ea1062b4e": "",//清空當前審核人        });    }}

最終效果:

為方便測試,這里設(shè)置4級審核人都是我自己。

順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)順序?qū)徟鞯暮唵未a實現(xiàn)(順序表的流程圖)

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部