zoukankan      html  css  js  c++  java
  • 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一些,有需要的可以在此基础上进行更改,有问题的地方欢迎指正,有问题的欢迎留言。

  • 相关阅读:
    Apache部署Django项目
    Docker
    常用算法
    Go之基本数据类型
    Go之流程控制
    Go基本使用
    Go安装与Goland破解永久版
    Linux
    详解java中的byte类型
    Linux统计文本中某个字符串出现的次数
  • 原文地址:https://www.cnblogs.com/zero-zyq/p/5906088.html
Copyright © 2011-2022 走看看