在開發(fā)查看流程表單明細(xì)的時(shí)候晴叨,在Web界面中兼蕊,我們往往通過使用@RenderPage實(shí)現(xiàn)頁面內(nèi)容模塊化的隔離,減少復(fù)雜度产禾,因此把一些常用的如審批牵啦、撤銷哈雏、會(huì)簽拌夏、閱辦等等的流程步驟都放到了通用處理的頁面ViewDetail.cshtml里面實(shí)現(xiàn)了履因。那么如果在一些特殊的表單處理過程中栅迄,我們?cè)趯徟瓿珊笮枰|發(fā)一個(gè)事件來修改一些業(yè)務(wù)表的數(shù)據(jù)的處理的話皆怕,就會(huì)變得麻煩起來愈腾,通用的處理就代表要損失一部分靈活性,特殊性悦即。那是否可以通過一些處理橱乱,能夠?qū)崿F(xiàn)這些特殊更新的操作呢泳叠?本篇隨筆介紹的就是這個(gè)方面,實(shí)現(xiàn)流程完成后更新資料狀態(tài)處理宗挥。
1种蝶、頁面的模塊關(guān)系
之前我在隨筆《在Bootstrap開發(fā)框架的前端視圖中使用@RenderPage實(shí)現(xiàn)頁面內(nèi)容模塊化的隔離蛤吓,減少復(fù)雜度》里面已經(jīng)介紹過,對(duì)于這種有著共同內(nèi)容的頁面锅棕,我們可以把它提取出來淌山,然后在主頁面里面使用@RenderPage的方式進(jìn)行包含進(jìn)來泼疑,這樣有助于我們模塊化的處理。
上面通用的處理內(nèi)容移稳,全部在Apply/ViewDetail.cshtml頁面里面个粱。
它的頁面內(nèi)容,主要是封裝一些常規(guī)的界面和處理腳本稻薇。
也就是對(duì)于一些如資產(chǎn)領(lǐng)用或者資產(chǎn)處置的界面塞椎,它都是包含這些基礎(chǔ)流程顯示的界面和處理邏輯的睛低。
查看具體流程表單明細(xì)的界面如下所示暇昂。
或者資產(chǎn)領(lǐng)用表單的查看界面如下所示急波。
2澄暮、腳本的模板化處理,實(shí)現(xiàn)子類函數(shù)的差異性
在查看信息的頂部有對(duì)應(yīng)的流程處理按鈕伸辟,如果用戶是流程參與人馍刮,那么可以執(zhí)行相關(guān)的處理卡啰。
審批是一個(gè)通用的常規(guī)處理操作匈辱,彈出界面需要錄入處理意見,以及下一步流程的處理人員押搪,如下界面所示。
既然我們需要在一些業(yè)務(wù)表單結(jié)束后续语,觸發(fā)一些后處理的事件來實(shí)現(xiàn)我們所需要數(shù)據(jù)的更新操作绵载,那么我們可以通過使用Javascript的模板化方法的設(shè)計(jì)模式來實(shí)現(xiàn)我們需要的處理苛白。
首先我們?cè)谕ㄓ锰幚淼哪K頁面里面焚虱,定義好我們需要的函數(shù)鹃栽,可以保留它不做任何事情,僅僅定義一個(gè)空殼函數(shù)就可以薇芝,不過需要在調(diào)用它的地方加上這個(gè)函數(shù)即可丰嘉,而差異處理的不同饮亏,則讓子類頁面重載它的函數(shù)就可以實(shí)現(xiàn)差異性的模板方法模式。
例如我們?cè)贏pply/ViewDetail.cshtml頁面荐开,這個(gè)通用頁面是相當(dāng)于基類界面了晃听,定義它的函數(shù)處理如下所示砰识。
//審批處理后的執(zhí)行操作
//該操作一般發(fā)生在申請(qǐng)單完成后仍翰,需要修改業(yè)務(wù)表單數(shù)據(jù)的情況
//該函數(shù)默認(rèn)為空,具體邏輯給子視圖頁面ViewDetail.cs里面實(shí)現(xiàn)
function ToCompletedForm() {
console.log("ToCompletedForm");//留待子類重寫函數(shù)
}
而在可能需要進(jìn)行后續(xù)處理的地方越平,調(diào)用這個(gè)方法,以完成它的調(diào)用邏輯晦溪。
以上就是處理流程的時(shí)候三圆,增加上這個(gè)函數(shù)處理方法的調(diào)用舟肉,其他地方如果是類似的場景查库,則類似處理即可。
然后整慎,我們不同的子類頁面围苫,重寫好自己的處理函數(shù)就可以覆蓋基類的函數(shù)ToCompletedForm的處理邏輯了剂府。
以上是資產(chǎn)領(lǐng)用流程的一個(gè)處理步驟周循,其中主要就是在流程結(jié)束的時(shí)候,完成一些數(shù)據(jù)更新和狀態(tài)的處理操作饮怯。
以上就是對(duì)于表單完成后的一些特殊處理的實(shí)現(xiàn)方法蓖墅,在流程結(jié)束的時(shí)刻论矾,我們可以做更多的相關(guān)后臺(tái)處理邏輯杆勇,都可以這樣統(tǒng)一在一個(gè)后臺(tái)方法中處理。
這樣通過這種方式實(shí)現(xiàn)的邏輯闰靴,不影響頁面的關(guān)系和處理過程彪笼,僅僅是我們?cè)谧禹撁胬锩嬷貙懸幌绿幚硪?guī)則即可,如果不需要蚂且,也可以不重寫配猫,不影響整個(gè)處理過程。