zoukankan      html  css  js  c++  java
  • php写流程管理

    流程控制即某个人发起一个流程,通过一层一层审核,通过后,完成整个流程,若有一层审核未通过,中断整个流程。即结束!

    比如请假流程:

    某一员工发起一个请假流程,那么这个流程的节点人员即他的上级,上上级,上上上级......若上级领导未通过,即结束整个流程

    1.数据库中的内容:

     

    用户员工表,流程表,用户编写的流程表,还有审核人员

    2.新建流程页面,即发起流程页面:

     

    <div>
      请选择节点人员:
     <?php
        session_start();   //开启session
        include("DBDA.class.php");   //调用封装好的数据库
        $db = new DBDA();  //造新对象
         
        $suser = "select * from users";  //查询用户表中的所有值
        $auser = $db->Query($suser);  //执行查询语句
        foreach($auser as $v)
        {
            echo "<input class='ck' type='radio' value='{$v[0]}' name='ck' />{$v[2]} ";  //输出单选按钮,数组中的索引2,也就是用户名,但是它的值是代号
        }
        ?>
    
    
    
    </div>

     

     

    复制代码

    在把添加节点的按钮加上:

    <input type="button" value="添加节点" id="jd" /> 

    图:

    按钮点击事件:

      $("#jd").click(function(){
            var uid = $("#user").val();   //点击添加节点,是要把select里面的value值添加过来,那么我们就要先取出它的value值
            $.ajax({
                url:"chuli.php",
                data:{uid:uid},
                type:"POST",
                dataType:"TEXT",
                success: function(data){
                    window.location.href="main.php"; //刷新页面即可
                }
            });
        })

     

    来处理:

     <?php
      session_start(); //首先要开启session
      
      $uid = $_POST["uid"];
      if(empty($_SESSION["user"]))//如果节点里面没有内容 需要先建一个数组,然后把uid放到里面 存一下
      {
          $arr = array($uid);
          $_SESSION["user"] = $arr;
      }
     else            //如果里面已经有内容了,那么就把数组里面的内容存一下
     {
         $arr = $_SESSION["user"];
         array_push($arr,$uid);
         $_SESSION["user"] = $arr;
     }

    图:

    删除按钮的事件

        $(".del").click(function(){
              var key=$(this).attr("key"); //删除里面取key值写起来是非常方便的
              $.ajax({
                  url:"shanchu.php",
                  data:{key:key},
                  type:"POST",
                  dataType:"TEXT",
                  success:function(aa)
                 {
                     window.location.href="main.php";
                }
             })
         })

    来处理:

    <?php
    session_start();
    $arr=$_SESSION["user"];  //把之前的节点内容存一下 给$arr
    $key=$_POST["key"];  //取出索引值
    
    unset($arr[$key]);  //把选中的删除
    
    $arr = array_values($arr); //把现有的节点的顺序重新排
    
    $_SESSION["user"]=$arr;

    输入流程名称:

    <div>请输入流程名称:<input type="text" id="name" /></div><di>input type="button" value="保存" id="save" /></div> 

    保存按钮的事件:

     $("#btn").click(function(){
    var nr=$("#nr").val();  
    $.ajax({
    url:"baocun.php",
    data:{nr:nr},
    type:"POST",
    dataType:"TEXT",
    success:function(bc){
    alert("保存成功");
    } })
    })

    保存流程处理:

    <?php
    session_start();
    include("DADB.class.php");
    $db=new DADB();
    $nr=$_POST["nr"];
    $code=time();
    $sql="insert into liucheng VALUES ('{$code}','{$nr}')"; //在liucheng表中添加内容
    $db->Query($sql,0);
    
    //在liucheng表中添加完之后还要保存节点  节点是在flowpath表中的
    
    $arr = $_SESSION["user"];
    foreach($arr as $k=>$v)
    {
        $sqn="insert into flowpath VALUES ('','{$code}','{$v}','{$k}')";
        $db->Query($sqn,0);
    }

    图:

     保存成功!

    3.登入写过很多,不再一点点敲了:

    4.节点人员界面:

    <h1>审核页面</h1>
    <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();
    
        $uid=$_SESSION["uid"];
        echo $uid;
        include("DADB.class.php");
        $db=new DADB();
        //查找登录者参与的所有流程
        $sql = "select * from userflow where code in(select code from flowpath where uids='{$uid}')";
        $arr = $db->Query($sql);
        //显示在页面
        foreach($arr as $v)
        {
             $dh=$v[1];//查出代号
            $where=$v[6]; //查出流程到哪里了
    
            $sqn="select orders from flowpath where code='{$dh}' and uids='{$uid}'";
            $orders=$db->StrQuery($sqn);//查出在流程中的次序
    
            if($where>=$orders)
            {
                $caozuo = "";
                if($where==$orders)
                {
                    $caozuo="<a href='tongguo.php?code={$v[0]}'>通过</a>";
                }
                else
                {
                    $caozuo="<span style='color:white'>已通过</span>";
                }
                echo "<tr>
            <td>{$v[1]}</td>
            <td>{$v[2]}</td>
            <td>{$v[3]}</td>
            <td>{$v[4]}</td>
            <td>{$v[5]}</td>
            <td>{$caozuo}</td>
        </tr>";
            }
    
        }
        ?>
    
    </table>

    看一下最后点击后的处理页面:

    <?php
    session_start();
    include("../fengzhuang/DBDA.class.php");
    $db = new DBDA();
    
    //流程往下走
    $code = $_GET["code"];
    $sql = "update userflow set towhere=towhere+1 where ids='{$code}'";
    $db->Query($sql,0);
    
    //判断流程是否结束
    $sql = "select * from userflow where ids='{$code}'";
    $arr = $db->Query($sql);
    
    $lcdh = $arr[0][1]; //流程代号
    $tw = $arr[0][6]; //流程走到哪
    
    $sql = "select count(*) from flowpath where code='{$lcdh}'";
    $count = $db->StrQuery($sql); //该流程节点人数
    if($tw>=$count)
    {
        $sql = "update userflow set isok=1 where ids='{$code}'";
        $db->Query($sql,0);
    }
    
    
    header("location:shenhe.php");

    这个主要是逻辑麻烦,没错!

     

     
     
     
  • 相关阅读:
    kafka搭建
    kafaka学习笔记
    metastore 简单说明
    二 python并发编程之多进程-理论
    文件指针偏移量
    FTP
    1 并发编程
    操作系统简介
    1 网络编程
    网络编程-osi七层
  • 原文地址:https://www.cnblogs.com/xuan584521/p/6736853.html
Copyright © 2011-2022 走看看