salesforce 零基础学习(四十六)动态美观显示列表中记录的审批状态
项目中,申请者申请某些事项以后,常常需要在申请列表中查看当前申请的记录所在的审批状态,动态美观的显示状态可以使UI更符合客户要求,比如下面这样。
以Goods__c表为例,申请者申请的一些采购以前需要得到批准,申请者列表需要显示所有的申请记录,状态(Status__c)有以下情况:
直线经理审批;
部门经理审批;
总经理审批;
审批通过。
实现上述方式主要实现思路:首先通过css画出来审批的步骤图,没有到达的灰色显示,经过或者正在步骤绿色显示,比如当前步骤为部门经理审批,则直线经理审批和部门经理审批节点为绿色,总经理审批和审批通过节点为灰色。然后通过jquery对'查看'设置onmouseenter以及onmouseleave事件,当onmouseenter时,显示状态的div,当onmouseleave时,移出状态的div。
代码如下:
1.Controller代码:初始化数据
1 public without sharing class GoodsShowStatusController { 2 3 public List<Goods__c> goodsList{get;set;} 4 5 public GoodsShowStatusController() { 6 initData(); 7 } 8 9 public void initData() { 10 goodsList = [select Id,GoodsName__c,GoodsPrice__c,Status__c from Goods__c limit 10]; 11 } 12 }
2.VF代码:显示数据并且通过jquery和css实现效果
1 <apex:page controller="GoodsShowStatusController"> 2 3 <style type="text/css"> 4 .steps { 5 position: relative; 6 margin-bottom: 30px; 7 counter-reset: step; 8 } 9 10 .steps li { 11 list-style-type: none; 12 font-size: 12px; 13 text-align: center; 14 width: 15%; 15 position: relative; 16 float: left; 17 } 18 19 20 .steps li:before { 21 display: block; 22 content: counter(step); 23 counter-increment: step; 24 width: 32px; 25 height: 32px; 26 background-color: #019875; 27 line-height: 32px; 28 border-radius: 32px; 29 font-size: 16px; 30 color: #fff; 31 text-align: center; 32 font-weight: 700; 33 margin: 0 auto 8px auto; 34 } 35 36 37 .steps li ~ li:after { 38 content: ''; 39 width: 100%; 40 height: 2px; 41 background-color: #019875; 42 position: absolute; 43 left: -50%; 44 top: 15px; 45 z-index: -1; 46 } 47 48 49 .steps li.active:after { 50 background-color: green; 51 } 52 53 54 .steps li.active ~ li:before,.steps li.active ~ li:after { 55 background-color: gray; 56 } 57 58 .goodsStatusShow { 59 line-height: 18px; 60 position: relative; 61 } 62 63 .goodsStatusShow div { 64 display: none; 65 position: absolute; 66 left: 0px; 67 top: 0px; 68 z-index: 1000; 69 } 70 71 .goodsStatusShowDetail { 72 width: 800px; 73 border: 1px #C3A459 solid; 74 background-color: #FFFEED; 75 padding: 5px 76 } 77 </style> 78 79 <apex:includeScript value="{!$Resource.JQuery2}" /> 80 <script type="text/javascript"> 81 $(function(){ 82 $('.goodsStatusShow').mouseenter(function(){ 83 $(this).find('div').slideDown("fast"); 84 }); 85 $('.goodsStatusShow').mouseleave(function(){ 86 $(this).find('div').slideUp("fast"); 87 }); 88 }); 89 </script> 90 <apex:pageBlock > 91 <apex:pageBlockTable value="{!goodsList}" var="goods"> 92 <apex:column headervalue="流程图查看"> 93 <apex:facet name="header">当前步骤测试样例</apex:facet> 94 <div class="goodsStatusShow"> 95 查看 96 <div class="goodsStatusShowDetail"> 97 <ul class="steps"> 98 <li class="{!IF(goods.Status__c == '直线经理审批','active','')}">直线经理审批</li> 99 <li class="{!IF(goods.Status__c == '部门经理审批','active','')}">部门经理审批</li> 100 <li class="{!IF(goods.Status__c == '总经理审批','active','')}">总经理审批</li> 101 <li class="{!IF(goods.Status__c == '审批通过','active','')}">审批通过</li> 102 </ul> 103 </div> 104 </div> 105 </apex:column> 106 <apex:column headervalue="商品名称"> 107 <apex:outputField value="{!goods.GoodsName__c}" /> 108 </apex:column> 109 <apex:column headervalue="商品价格"> 110 <apex:outputField value="{!goods.GoodsPrice__c}" /> 111 </apex:column> 112 <apex:column headervalue="商品所处审批流程"> 113 <apex:outputField value="{!goods.Status__c}" /> 114 </apex:column> 115 </apex:pageBlockTable> 116 </apex:pageBlock> 117 </apex:page>
效果展示:
1.流程为部门经理审批的效果图显示
2.流程为总经理审批的效果图显示
总结:此篇主要在业务上描述如何实现更好的UI效果,主要用到的技术其实是css和jquery的居多,篇中显示样式在baidu上copy一些,有需要的可以在此基础上进行更改,有问题的地方欢迎指正,有问题的欢迎留言。
作者:zero
博客地址:http://www.cnblogs.com/zero-zyq/
本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接
如果文章的内容对你有帮助,欢迎点赞~
为方便手机端查看博客,现正在将博客迁移至微信公众号:Salesforce零基础学习,欢迎各位关注。