• 2017.6.8


    上一篇随笔中已经提到如何新建流程,那么现在我们就来看一下如何发起一个流程和审核流程~~~

    先说一下思路

    (1)登录用session获取到用户的id

     (2) 用户发起一个流程

             注意:需要写申请事由

    (3)处于节点的审核人去依次审核

              注意:每审核通过一个,对应towhere字段要加1; 审核到最后时,对应的isok字段要变为1(此处1表示结束,0表示未结束)

    共用到三张表:

    第一步:先做一个简单的登录页面,用session获取用户名:

    denglu.php页面

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <form method="post" action="denglu-cl.php">
                用户名:<input type="text" name="uid" /><br />
                密码:<input type="password" name="pwd" /><br />
                <input type="submit" value="登录" />
            </form>
        </body>
    </html>

      denglu-cl.php页面

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    session_start();
    require "../DB.class.php";
    $db new DB();
     
    $uid $_POST["uid"];
    $pwd $_POST["pwd"];
     
    $sql "select pwd from users where uid='{$uid}'";
    $mm $db->strquery($sql);
     
    if($pwd==$mm && !empty($pwd))
    {
        $_SESSION["uid"]=$uid;
        header("location:liucheng.php");
    }
    else
    {
        echo "密码或登录名输入错误";
    }
    ?>

      效果图:

    第二步:做个简单的注页面:liucheng.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>
                    #body{
                    height: 200px;
                     300px;
                    
                    margin: 200px auto;
                    text-align: center;
                    vertical-align: middle;
                    line-height: 30px;
                }
            </style>
        </head>
        <body>
            <div id="body">
            <h2>主页面</h2>
            <div>
                <a href="faqi.php">发起流程</a><br />
                <a href='shenhe.php'>审核流程</a>
            </div>
            </div>
        </body>
    </html>

      

     效果图:

    第三步:发起流程页面faqi.php

    (1)先将所有流程用下拉列表显示

    (2)发起流程事由需要由登录用户填写

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
                <style>
                #body{
                    height: 250px;
                     300px;
                    
                    margin: 200px auto;
                    text-align: left;
                    vertical-align: middle;
                    line-height: 30px;
                    padding-left: 30px;
                }
            </style>
        </head>
        <body>
            <div id="body">
                <form method="post" action="faqi-cl.php">
                <h2>发起流程页面</h2>
                <select id="lc">
                    <?php
                        require "../DB.class.php";
                        $db new DB();
                        $sql "select * from liucheng";
                        $arr $db->query($sql);
                        foreach($arr as $v)
                        {
                            echo "<option value='{$v[0]}'>{$v[1]}</option>";   
                        }                  
                    ?>
                </select><br />
                发起流程事由:
                <textarea class="nr"> </textarea><br />
                <input type="button" value="确定发起" /> 
                </form>
            </div>
        </body>
    </html>

    第四步:写发起流程的处理页面fq-cl.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    session_start();
    require "../DB.class.php";
    $db new DB();
     
    $code $_POST["lc"];
    $nr =$_POST["nr"];
     
    $uid $_SESSION["uid"];
    $time date("Y-m-d H:i:s",time());
     
    $sql "insert into liuchengpath values ('','{$code}','{$uid}','{$nr}',0,'{$time}',0)";
    $db->query($sql,0);
    header("location:liucheng.php");
    ?>

      点击“确认发起”,数据库中就会添加此条数据

    第五步:流程审核页面shenhe.php

    用到知识点:子查询:无关子查询(子查询和父查询可以独立执行); 相关子查询(子查询里的条件使用到了父查询的某个东西   )

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
                <style>
                #body{
                    height: 450px;
                     800px;
                    
                    margin: 200px auto;
                    text-align: left;
                    vertical-align: middle;
                    line-height: 30px;
                    padding-left: 30px;
                     }
            </style>
        </head>
        <body>
            <div id="body">
                <h2>流程审核页面</h2>
                <?php
                    session_start();
                    $uid $_SESSION["uid"];
                     
                    require "../DB.class.php";
                    $db new DB();
                    //先取该用户参与的所有流程
                    //并且取流程步骤到达该用户或已经被改用户审核通过的记录
                    $sql="select * from liuchengpath a where code in(select code from liuchengjiedian where uids='{$uid}') and towhere >=(select orders from liuchengjiedian b where b.code = a.code and b.uids = '{$uid}')";
     
                    $arr $db->query($sql);
                    //var_dump($arr);
                    echo "<table border='1' width='100%' cellpadding='0' cellspacing='0'>
                                <tr>
                                    <td>流程代号</td>
                                    <td>发起者</td>
                                    <td>发起内容</td>
                                    <td>发起时间</td>
                                    <td>是否结束</td>
                                    <td>操作</td>
                                </tr>";
                    foreach($arr as $v){
                        //操作最后一列
                        //设置默认项
                        $zt "<a href='tongguo-cl.php?code={$v[0]}'>审核未通过</a>";
                        $sql "select orders from liuchengjiedian where code ='{$v[1]}' and uids ='{$uid}'";
                        $wz $db->strquery($sql);
                        if($v[6]>$wz)
                        {
                            $zt "<span style='color:green'>审核已通过</span>";
                        }
                             
                        echo "<tr>
                                    <td>{$v[1]}</td>
                                    <td>{$v[2]}</td>
                                    <td>{$v[3]}</td>
                                    <td>{$v[4]}</td>
                                    <td>{$v[5]}</td>
                                    <td>{$zt}</td>
                            </tr>";                  
                    }
                    echo "</table>";             
                    ?>
            </div>
        </body>
    </html>

      第六步:写tongguo-cl.php页面(重要)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php
    $ids $_GET["code"];
    require "../DB.class.php";
    $db new DB();
     
    //点击审核后,towhere列加1,目的是使流程向下走
    $sql "update liuchengpath set  towhere = towhere+1 where ids ='{$ids}' ";
    $db->query($sql,0);
     
    //当流程走到最后一个审核的人时,流程要结束
    //获取该流程最大的orders
    $sql =" select max(orders) from liuchengjiedian where code = (select code from liuchengpath where ids ='{$ids}')";
    $maxorders $db->strquery($sql);
     
    //获取该用户处于哪个位置,也就是towhere等于多少
    $sql ="select towhere from liuchengpath where ids ='{$ids}'";
    $towhere $db->strquery($sql);
     
    //判断是否已到达最后一个审核的人
    if($towhere>$maxorders)
    {
        $sql "update liuchengpath set isok=1 where ids='{$ids}'";
    //  var_dump($sql);
        $db->query($sql,0);
    }
    header("location:shenhe.php");
    ?>

      当写好这一步时,点击“审核未通过”则会变成“审核已通过”;

    我们从头来验证一下效果:

    首先:发起一个新的请假流程:

           

    其次:zhangsan是第一个要审核人

    点击“审核未通过后“,

    最后:zhaoliu是最后一个审核人

     

    点击“审核未通过”后,是否结束变为  1 ;操作变为绿色的  “审核已通过”~~~

     这样简单的发起流程和流程审核就已经实现了~~~

  • 相关阅读:
    分享一个本人打造的公众号吸粉、推广方案。
    iOS开发简记(8):数据持久化
    iOS开发简记(7):网络请求模块
    iOS开发简记(6):storyboard的使用
    iOS开发简记(5):设备唯一标识与全局变量
    iOS开发简记(4):录音AVAudioRecorder
    iOS开发简记(3):tips提示
    iOS开发简记(2):自定义tabbar
    spring+mybatis+springMVC框架配置多数据源
    Docker常用操作
  • 原文地址:https://www.cnblogs.com/nzhcww/p/6963151.html
Copyright © 2020-2023  润新知