如何完成一個(gè)有權(quán)限的個(gè)性化(定制化)報(bào)告?這一篇就夠了
在日常工作或生活中,我們時(shí)常會(huì)遇到一些個(gè)性化的需求。像針對(duì)個(gè)人、部門(mén)分組、或是不同角色的人可以做一些個(gè)性化的展示,讓他們看到他們能看到的、或是他們常使用的內(nèi)容等。比如針對(duì)銷(xiāo)售部門(mén)與采購(gòu)部門(mén),我們可以做不同的可視化報(bào)告讓不同部門(mén)的人直接查看不同的報(bào)告即可,而對(duì)于同個(gè)部門(mén)不同區(qū)域或是不同層級(jí)的人,我們可以通過(guò)數(shù)據(jù)的行權(quán)限來(lái)管控每個(gè)人可看的數(shù)據(jù)。
除了以上的場(chǎng)景,我們時(shí)常還會(huì)遇到一些較之更小的或是更加個(gè)性化的場(chǎng)景,例如,對(duì)于同一個(gè)可視化報(bào)告,不同的人或是角色進(jìn)來(lái)能看到的大部分內(nèi)容都相同,但會(huì)有一兩個(gè)圖表不同,即不同人看不同的圖表;或是同一個(gè)圖表,對(duì)與進(jìn)來(lái)的不同人展示不一樣的默認(rèn)值。面對(duì)這樣的場(chǎng)景,單單是使用我們?cè)瓉?lái)的授權(quán)方式可能就無(wú)法滿足了,那該如何處理呢?
今天這里就帶大家使用永洪BI的“角色”加腳本的方式實(shí)現(xiàn)以上兩個(gè)比較常見(jiàn)的個(gè)性化(定制化)場(chǎng)景:
1)同一個(gè)報(bào)告,不同角色可見(jiàn)不同組件;
2)同一個(gè)組件,不同角色顯示不同默認(rèn)值。
角色是永洪BI權(quán)限管理模塊的一個(gè)重要組成部分,通過(guò)角色可以簡(jiǎn)單的做到不同分組的人批量授權(quán)或是其他更復(fù)雜的權(quán)限管控。我們可以在管理系統(tǒng)-認(rèn)證授權(quán)模塊新建各種角色,然后這些角色可以賦給不同的人或是不同分組,此時(shí)我們?cè)诮巧献龈鞣N授權(quán),有相應(yīng)角色的分組或個(gè)人就有了相應(yīng)的權(quán)限。

編輯切換為居中
報(bào)告內(nèi)容個(gè)性化(定制化)展示實(shí)現(xiàn)效果
了解了組件與角色,接下來(lái),進(jìn)入本次主題。以下先看一下實(shí)現(xiàn)效果。 1當(dāng)用戶usr1登錄時(shí),能看到各市場(chǎng)銷(xiāo)售額占比環(huán)圖,各產(chǎn)品銷(xiāo)量柱圖,以及銷(xiāo)售數(shù)據(jù)明細(xì)表且默認(rèn)能看到市場(chǎng)級(jí)別與銷(xiāo)量?jī)蓚€(gè)字段數(shù)據(jù)。

編輯切換為居中
當(dāng)用戶usr2登錄時(shí),能看到的則是年度銷(xiāo)售額達(dá)成情況儀表,各產(chǎn)品銷(xiāo)量柱圖,以及銷(xiāo)售數(shù)據(jù)明細(xì)表且默認(rèn)能看到市場(chǎng)分布與銷(xiāo)售額兩個(gè)字段數(shù)據(jù)。

編輯切換為居中
報(bào)告內(nèi)容個(gè)性化(定制化)展示實(shí)現(xiàn)步驟
1) 圖表制作環(huán)圖:圖表組件區(qū)拖拽環(huán)圖組件到畫(huà)布區(qū)域,拖拽數(shù)據(jù)字段綁定出圖,如下。其他幾個(gè)圖表類(lèi)似。

編輯切換為居中

編輯切換為居中
需要注意的是,除了表面能看到的占比環(huán)圖,其實(shí)在環(huán)圖下方我們還有銷(xiāo)售額達(dá)成的儀表,在制作時(shí),我們需先分別做好兩個(gè)圖表,然后疊放到一起;除此之外,下方的銷(xiāo)售明細(xì)表我們綁定字段為參數(shù)列字段(參數(shù)列用法參見(jiàn)鏈接:https://www.yonghongtech.com/help/Z-Suite/9.4/ch/dataprocess_dynamicbind.html?zoom_highlightsub=%E5%8F%82%E6%95%B0%E5%88%97),這里使用的下拉列表參數(shù)實(shí)現(xiàn)方式,當(dāng)然,如果覺(jué)得參數(shù)組件多余,我們可以給它以遮蓋或不顯示的方式隱藏掉。
2) 角色設(shè)置進(jìn)入認(rèn)證授權(quán)界面,新建角色“銷(xiāo)售經(jīng)理”,將角色分配給用戶usr2,并且給這個(gè)角色授權(quán)步驟1完成報(bào)告的讀權(quán)限【這里選擇‘角色’是方便后續(xù)用戶有變化時(shí),不需要針對(duì)每個(gè)用戶去授權(quán),將變更用戶加入或移除當(dāng)前角色即可】。新建銷(xiāo)售員同理,分配給用戶usr1。

編輯切換為居中
完成這一步后,我們登錄兩個(gè)用戶,都可以看到步驟1完成的報(bào)告且兩者能看到內(nèi)容是一樣的,那么下一步我們就需要對(duì)他們分別能看的內(nèi)容做一個(gè)控制,下面將通過(guò)腳本來(lái)完成。
3) 腳本編寫(xiě)回到制作報(bào)告界面,選擇報(bào)告-腳本-裝載時(shí)運(yùn)行進(jìn)行腳本編寫(xiě)。

編輯切換為居中
//1.通過(guò)查字符串索引的方式判斷當(dāng)前登錄用戶是否有相關(guān)角色 var arr=new Array() for(var i=0 ; i<param['_roles_'].length; i++){="" ? ? ? ="" param['_roles_']為系統(tǒng)內(nèi)置角色參數(shù) ? ?arr.push(param['_ROLES_'][i]); } data=arr.toString() ?//轉(zhuǎn)換為字符串 //debug(data.indexOf('CEO')) ?//indexOf()查找對(duì)象是否在字符串中存在 返回-1為不存在,其他整數(shù)為角色存在 a=data.indexOf('銷(xiāo)售員') b=data.indexOf("銷(xiāo)售經(jīng)理"); //通過(guò)角色存在與否控制組件的顯示隱藏 if(a!=-1 && b==-1){ ?組1.visible=false ?//組1為儀表與相關(guān)輔助組件的組合 ?組2.visible=true ? //組2為環(huán)圖與相關(guān)輔助組件的組合 } if(a==-1 && b!=-1){ ?組1.visible=true ?組2.visible=false } //2.通過(guò)循環(huán)遍歷登錄用戶角色是否滿足,滿足則設(shè)置參數(shù)組件默認(rèn)勾選值,以此來(lái)影響圖表展示默認(rèn)值 var arr1=param["_ROLES_"] for(var i=0 ; i<arr1.length; i++){<="" span=""> ? if(arr1[i]=='銷(xiāo)售員'){ ? 下拉列表參數(shù)1.setSelectedObjects(['市場(chǎng)級(jí)別','銷(xiāo)量'],STRING); ? } ? if(arr1[i]=='銷(xiāo)售經(jīng)理'){ ? 下拉列表參數(shù)1.setSelectedObjects(['市場(chǎng)分布','銷(xiāo)售額'],STRING) ? } }上面的腳本代碼可直接復(fù)制使用,注意根據(jù)實(shí)際情況做相應(yīng)的調(diào)整。 若以上腳本字符串查索引的方式不便于理解,可都用循環(huán)遍歷的方式,上面腳本代碼可整合到第二小段代碼,融合后如下: var arr1=param["_ROLES_"] for(var i=0 ; i<arr1.length; i++){<="" span=""> ? if(arr1[i]=='銷(xiāo)售員'){ ? 下拉列表參數(shù)1.setSelectedObjects(['市場(chǎng)級(jí)別','銷(xiāo)量'],STRING); ? 組1.visible=false ? 組2.visible=true ? } ? if(arr1[i]=='銷(xiāo)售經(jīng)理'){ ? 下拉列表參數(shù)1.setSelectedObjects(['市場(chǎng)分布','銷(xiāo)售額'],STRING) ? 組1.visible=true ? 組2.visible=false } }