• 流程管理


    1.建立一个添加页面,在这个页面上可以选择增加节点。

    add.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="../jquery-1.11.2.min.js"></script>
    <title>无标题文档</title>
    </head>
    
    <body>
    <div>请选择流程节点:<br /><br />
    <?php
    session_start();
    include("../DBDA.class.php");
    $db = new DBDA();
    
    $suser = "select * from users";
    $auser = $db->Query($suser);
    
    foreach($auser as $v)
    {
        echo "<input class='rd' type='radio' value='{$v[0]}' name='user' />{$v[2]}&nbsp;";//把所有可以添加节点的人的名字列出来
    }
    ?>
    </div><br />
    <div><input type="button" value="添加节点" id="jiedian" /></div>
    <br />
    <div>
    <?php
    
    //把添加的节点显示在添加节点按钮下面
    $attr = array();//把节点存在session里面,先定义一个空的数组。
    if(!empty($_SESSION["user"]))//如果session不是空的
    {
        $attr = $_SESSION["user"];//就把session存的用户名放到数组attr里面
    }
    
    foreach($attr as $k=>$v)//遍历出用户名
    {
        $sname = "select name from users where uid='{$v}'";//找出attr里面存的用户的姓名
        $name = $db->StrQuery($sname);
        
        echo "<div>{$k}--{$name}--<input type='button' value='删除' bs='{$k}' class='shanchu' /></div>";//输出索引--用户名--删除。当添加错误时方便直接删除
    }
    
    ?>
    </div>
    <br />
    <div>
    请输入流程名称:
    <input type="text" id="name" />
    </div>
    <br />
    <input type="button" value="保存" id="xinjian" />
    
    </body>
    <script type="text/javascript">
    $("#jiedian").click(function(){
        
        //取选中的应户名
        var uid="";
        var rd = $(".rd");//找到class为rd的
        for(var i=0;i<rd.length;i++)//把class为rd的全部遍历出来
        {
            if(rd.eq(i).prop("checked"))//如果是选中状态
            {
                uid = rd.eq(i).val();//取出选中的属性值,也就是取出bs值。
            }
        }
        $.ajax({
                url:"chuli.php",
                data:{uid:uid,type:0},//传的type是为了一个页面处理多个ajax时区分处理的哪一个ajax的。
                type:"POST",
                dataType:"TEXT",
                success: function(data){
                    window.location.href="add.php";
                    
                    }
            })
        })
        
    $(".shanchu").click(function(){//给class为shanchu的添加删除事件
            var sy = $(this).attr("bs");
            $.ajax({
                url:"chuli.php",
                data:{sy:sy,type:1},//传的type是为了一个页面处理多个ajax时区分处理的哪一个ajax的。
                type:"POST",
                dataType:"TEXT",
                success: function(data){
                    window.location.href="add.php";
                    
                    }
            })
        })
        
    $("#xinjian").click(function(){
            var name = $("#name").val()
            $.ajax({
                url:"chuli.php",
                data:{name:name,type:2},//传的type是为了一个页面处理多个ajax时区分处理的哪一个ajax的。
                type:"POST",
                dataType:"TEXT",
                success: function(data){
                    window.location.href="add.php";
                    
                    }
            })
        })
    </script>
    </html>

    2.处理页面。所有的处理页面全部在这个页面处理,用switch写。

    chuli.php

    <?php
    //所有的ajax都调用同一个处理页面,要知道是谁调的,在传值时除了需要传必要的值,还要调另一个值type
    session_start();
    
    include("../DBDA.class.php");
    $db = new DBDA();
    
    $type = $_POST["type"];//取出ajax里面的type值
    $uid = $_POST["uid"];
    
    switch($type)
    {
        case 0://如果type是0,执行下面代码。注意这里是冒号
            $uid = $_POST["uid"];
            if(empty($_SESSION["user"]))//如果是第一次点击,session里面是空的。
            {
                $_SESSION["user"] = array($uid);//把取到的uid存到session里面。
            }
            else//如果session里面已经有内容
            {
                $attr = $_SESSION["user"];//先把session里面的内容取出来
                $attr[] = $uid;//把新取到的uid存到attr里面
                $_SESSION["user"] = $attr;//再把新的数组存到session里面
            }
            break;
            
        case 1://当type=1时,执行的是删除事件
            $sy = $_POST["sy"];//取出class为shanchu的项的索引值。
            $attr = $_SESSION["user"];//取出session里面存储的数据。
            unset($attr[$sy]);//删除目标索引的项
            $attr = array_values($attr);//重新索引一遍attr
            $_SESSION["user"] = $attr;
            break;
            
        case 2://当type=2时,执行的是删除事件
            $name = $_POST["name"];//取出neme值。
            $code = time();//取时间戳
            $slc = "insert into liucheng values('{$code}','{$name}')";//往liucheng表格里添加数据
            $db->Query($slc,0);
            
            $attr = array();
            if(!empty($_SESSION["user"]))
            {
                $attr = $_SESSION["user"];
            }
            
            foreach($attr as $k=>$v)
            {
                $sfp = "insert into flowpath values('','{$code}','{$v}','{$k}')";//往flowpath表里面添加数据
                $db->Query($sfp,0);
            }
            break;
            
        case 3://填充userflow表
            $code = $_POST["code"];
            $nr = $_POST["nr"];
            $uid = $_SESSION["uid"];
            $rq = time();
            $sql = "insert into userflow values('','{$code}','{$uid}','{$nr}',0,'{$rq}',0)";
            $db->Query($sql,0);
            break;
    }

    3.登录页面

    login.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    <form action="loginchuli.php" method="post">
        <div><input type="text" name="uid" /></div>
        <div><input type="text" name="pwd" /></div>
        <div><input type="submit" value="登录" /></div>
    </form>
    </body>
    </html>

    4.登录处理页面

    loginchuli.php

    <?php
    session_start();
    include("../DBDA.class.php");
    $db = new DBDA();
    $uid = $_POST["uid"];
    $pwd = $_POST["pwd"];
    $sql = "select pwd from users where uid='{$uid}'";
    
    $mm = $db->StrQuery($sql);
    if($mm == $pwd && $pwd!="")
    {
        $_SESSION["uid"] = $uid;
        header("location:main.php");
    }
    else
    {
        echo "登录失败";
    }

    5.主页面

    main.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    <a href="faqi.php">发起流程</a>
    
    <table width="100%" border="1" cellpadding="0" cellspacing="0">
        <tr>
            <td>发起者</td>
            <td>发起时间</td>
            <td>流程名称</td>
            <td>流程内容</td>
            <td>是否结束</td>
            <td>操作</td>
        </tr>
    <?php
        session_start();
        include("../DBDA.class.php");
        $db = new DBDA();
        
        $uid = $_SESSION["uid"];
        $sql = "select * from userflow";
        $attr = $db->Query($sql);
        
        foreach($attr as $v)
        {
            $v[1];//流程代号
            $v[6];//流程走到哪了
            
            //根据流程代号和当前登陆者用户名查orders
            $szai = "select count(*) from flowpath where code='{$v[1]}' and uids='{$uid}'";
            
            $n = $db->StrQuery($szai);
            //该人员在该流程下
            if($n>0)
            {
                $sorder = "select orders from flowpath where code='{$v[1]}' and uids='{$uid}'";
                $order = $db->StrQuery($sorder);
                
                if($v[6]>=$order)//判断该人员的流程和已经走到的流程
                {
                    
                    $str = "";
                    if($v[6]==$order)//如果流程走到登陆者的流程
                    {
                        $str = "<a href='tongguo.php?ids={$v[0]}'>通过</a>";//做一个通过按钮,点击通过表示该登陆者已经同意。
                    }
                    else//如果流程已经大于登录者的流程,就显示已通过。
                    {
                        $str =  "<span style='color:green'>已通过</span>";
                    }
                    echo "<tr><td>{$v[2]}</td>
                              <td>{$v[5]}</td>
                                 <td>{$v[1]}</td>
                                 <td>{$v[3]}</td>
                                 <td>{$v[4]}</td>
                              <td>{$str}</td>
                              </tr>";
                }
            }
        }
        
        ?>
    </table>
    
    </body>
    </html>

    6.发起流程页面

    faqi.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="../jquery-1.11.2.min.js"></script>
    <title>无标题文档</title>
    </head>
    
    <body>
    
    <h1>发起流程</h1>
    <div>
    请选择要发起的流程:
    <select id="sel">
    <?php
        include("../DBDA.class.php");
        $db = new DBDA();
        $sql = "select * from liucheng";
        $attr = $db->Query($sql);
        foreach($attr as $v)
        {
            echo "<option value='{$v[0]}'>{$v[1]}</option>";
        }
        ?>
    </select>
    </div>
    <br />
    
    <div>
    请输入流程的详情:
    <textarea id="xq"></textarea>
    
    </div>
    <br />
    <input type="button" value="发起" id="btn" />
    
    </body>
    <script type="text/javascript">
    
    $("#btn").click(function(){
            var code = $("#sel").val();
            var nr = $("#xq").val();
                $.ajax({
                url:"chuli.php",
                data:{code:code,nr:nr,type:3},//传的type是为了一个页面处理多个ajax时区分处理的哪一个ajax的。
                type:"POST",
                dataType:"TEXT",
                success: function(data){
                    window.location.href="main.php";
                    
                    }
            })
        
        })
    
    </script>
    </html>

    7.通过页面,点击通过按钮表示批改人同意申请。

    shenqing.php

    <?php
    session_start();
    include("../DBDA.class.php");
    $db = new DBDA();
    $ids = $_GET["ids"];
    $sql = "update userflow set towhere = towhere+1 where ids='{$ids}'";//点击通过以后就让流程+1
    $db->Query($sql,0);
    
    $stw = "select code,towhere from userflow where ids = '{$ids}'";
    
    $tw = $db->Query($stw);
    
    $lcdaihao = $atw[0][0];
    $towhere = $atw[0][1];
    
    $jiedian = "select count(*) from flowpath where code='{$lcdaihao}'";//求出节点的总数量
    $shuliang = $db->StrQuery($jiedian);
    
    if($towhere>=$shuliang)//流程走到哪>=流程总数量说明流程已经走完
    {
        $su = "update userflow set isok = 1 where ids='{$ids}'";
        $db->Query($su,0);
    }
    
    header("location:main.php");
  • 相关阅读:
    工厂方法和抽象工厂
    waterMarkTextBox
    button hot key 热键
    wpf 双击行。。获得行信息
    update comboBox
    WPF标准控件模板查看程序(文件里面)
    Sp EF输出 临时表
    tree view
    Ubuntu 常用命令
    ESP8266 开发记录
  • 原文地址:https://www.cnblogs.com/Strive-count/p/6083466.html
Copyright © 2020-2023  润新知