zoukankan      html  css  js  c++  java
  • php之 常用的 流程管理

    1.流程管理的用法是什么样的?

    2.怎么发起想要的流程?

    3.审批的人要是怎么审批通过?

    4.流程审核是不是要挨个走过?

    一、要有数据库的内容的

    肯定会有表的,首先就是用户表了,然后就是流程表,用户编写的流程表,还有审核人员的表

             

    二、数据库结束后,就是新建流程的页面,这页面会有审核人员,还有流程的名字还有提交的按钮

    (1)添加节点的人员,这个是要遍历数据库来查看都什么管理人员

    <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>
    

    查看一下显示结果:

    (2)既然后选择审核人员,那么就是有添加的按钮

    <input type="button" value="添加节点" id="insert" />  //起个名字,便于给它添加单击按钮
    

    (3)对这个按钮添加点击事件

    $("#insert").click(function(){
    	var ck = $(".ck");  //找到项
    	var uid = "";
    	for(var i=0;i<ck.length;i++)
    	{
    		if(ck.eq(i).prop("checked"))  //单选按钮的选中状态
    		{
    		  uid = ck.eq(i).val();  //单选按钮的值
    		}
    	}
    		
    	$.ajax({
    		url:"addjd.php",  //添加节点的处理页面
    		data:{uid:uid},  //将单选按钮的值传过去
    		type:"POST",  //传值方式
    		dataType:"TEXT",  //值的返回状态
    		success: function(data){
    			window.location.href="liucheng_gaunli.php";  //执行处理页面成功后会刷新页面
    		  }
    		});	
    })
    

    (4)添加节点的处理页面

    <?php
    session_start();  //开启session
    $uid = $_POST["uid"];  //接收传过来的值
    
    if(empty($_SESSION["jiedian"]))
    {
    	$attr = array($uid);  //定义一个数组放用户
    	$_SESSION["jiedian"] = $attr; //将第一个用户放入数组中
    }
    else
    {
    	$attr = $_SESSION["jiedian"]; //数组中有值
    	$attr[] = $uid;  //放入数组中值
    	$_SESSION["jiedian"] = $attr;   //将值再交给session
    }
    

    (5)在主页面中显示添加的这些节点

    <?php
    if(empty($_SESSION["jiedian"]))   //如果没有节点值
    {
    	echo "<div>还没有添加节点</div>";  //输出这句话
    }
    else
    {
    	$attr = $_SESSION["jiedian"];  //数组中有了值
    	foreach($attr as $k=>$v)  //循环遍历,$v只是名字,还有有所以所以用$k
    	{
    		$sname = "select name from users where uid='{$v}'";  //编写查询语句
    		$name = $db->StrQuery($sname);  //执行查询语句
              //输出索引号还有名字,加一个删除按钮吧,可以吧这个节点删除 echo "<div>{$k}--{$name}--<input type='button' value='删除' sy='{$k}' class='sc' /></div>"; } } ?>

    添加节点看下效果:

    1.还没有添加节点的效果图:  

    2.随便添加几个审核人员:人员已经显示出来了

    (6)这样之后就是对其的删除按钮添加单击事件了

    $(".sc").click(function(){
    	var sy = $(this).attr("sy");  //点击这个按钮,选中这个的索引号
    	$.ajax({
    		url:"shanchu.php",   //删除按钮的处理页面
    		data:{sy:sy},  //把索引号传到处理页面
    		type:"POST",  //传值方式
    		dataType:"TEXT",
    		success:function(data){
    			window.location.href="liucheng_gaunli.php";  //执行处理页面成功后会刷新页面
    		}
    	});
    })
    

    (7)删除按钮的处理页面

    <?php
    session_start();  //开启session
    $attr = $_SESSION["jiedian"];  //节点的数组
    $sy = $_POST["sy"];  //接收穿过来的索引号
    
    unset($attr[$sy]); //删除数据
    $attr = array_values($attr); //重新索引
    $_SESSION["jiedian"] = $attr;
    

    查看下删除节点的效果

    1.没有删除之前

    2.删除一个节点之后

    (8)节点的操作已经结束之后,那么就是流程的名称了,这个简单,写名称的文本框:重要的就是对这个流程的保存了,那么也要有保存按钮

    <div>请输入流程名称:<input type="text" id="name" /></div>    //起个名字,下面保存的写个单击事件有用
    <div><input type="button" value="保存" id="save" /></div>  //保存按钮要有单击事件的

    这样整体的效果图就出来了:  

    (9)最后就是保存按钮的单击事件了

    $("#save").click(function(){
      var name = $("#name").val();  //取到文本框的值
      $.ajax({
    	url:"baocun.php",  //保存的处理页面
    	data:{name:name},  //将文本框的值传到处理页面
    	type:"POST",  //传值方式
    	dataType:"TEXT",
    	success: function(data){
    		alert("添加成功!");  //执行处理页面成功后会弹出提示框
    	  }
      });
    })

    (10)保存流程的处理页面

    <?php
    session_start();  //开启session
    include("DBDA.class.php");  //调用封装的数据库类
    $db = new DBDA();  //造新对象
    
    $name = $_POST["name"];  //接收传过来的值
    $code = time();  //代号是时间
    
    $sflow = "insert into flow values('{$code}','{$name}')"; //修改流程表中的值:代号和名字
    $db->Query($sflow,0);  //执行语句
    
    $attr = $_SESSION["jiedian"];  
    foreach($attr as $k=>$v)
    {
    	$spath = "insert into flowpath values('','{$code}','{$v}','{$k}')";  //修改流程节点的数值
    	$db->Query($spath,0);  //执行语句
    }
    

    看下保存效果:

    看下数据库,内容也保存数据库了

    三、新建流程页面已经结束了,那么就是用户登录页面了,这个页面写了很多遍了,不多说了,直接上代码

    (1)登录的基本显示:都是些基本语句

    <h1>用户登录</h1>
    <div>账号:<input type="text" id="uid" /></div> 
    <div>密码:<input type="password" id="pwd" /></div>
    <div><input type="button" value="登录" id="btn" /></div>
    

    (2)这里登录,我们也用ajax进行登录吧

    $("#btn").click(function(){  //对登录按钮添加单击事件
      var uid=$("#uid").val();  //获取用户的值
      var pwd=$("#pwd").val();  //获取密码的值
      $.ajax({
        url:"logincl.php",  //编写登录的处理页面
        data:{uid:uid,pwd:pwd},  //将用户和密码传到处理页面
        type:"POST",
        dataType:"text",
        success: function(data)
        {
          if(data.trim()=="OK")
          {
            window.location.href="main.php";    //处理页面执行成功后,跳转到主页面
          }
          else
          {
            alert("用户名密码输入错误");  //否则就提示错误
          }
        }
      })       
    })
    

    (3)看下处理页面的编写

    <?php
    session_start();  //开启session
    include("DBDA.class.php");  //调用封装的类
    $db = new DBDA();  //造新对象
    //传过来的值
    $uid = $_POST["uid"];
    $pwd = $_POST["pwd"];<br>//查询语句
    $sql = " select pwd from users where uid='{$uid}' and pwd='{$pwd}' ";
    //执行语句
    $attr = $db->Query($sql);
    if(!empty($pwd) && !empty($attr) && $attr[0][0]==$pwd)
    {
        $_SESSION["uid"] = $uid; //session接收用户值
        echo "OK"; 
    }
    else
    {
        echo "ON"; 
    }
    ?>
    

    最后,我们看下最后结果,登录成功就会进入主页,登录失败会提示错误

       

    四、节点用户的审核处理界面了(对于这个审核界面有很多需要注意的地方)

    (1)登录成功界面的显示部分:并不是每个人登录成功界面是一样的,还有就是如果这个人员不参与审核的话,也应该是没有信息的才对

    想要显示的表头,也就是一行:我们可以用表来显示

    <tr>
       <td>流程代号</td>
       <td>发起者</td>
       <td>发起内容</td>
       <td>是否结束</td>
       <td>发起时间</td>
       <td>操作</td>
    </tr>
    

    先看下表头的显示:

    (2)开启一下session这样登录者的信息就会保存下来

    session_start();
    include("DBDA.class.php");  //会用到数据库,所以可以调用一下数据库的类
    $db = new DBDA();  //造新对象
    $uid = "";
    if(empty($_SESSION["uid"]))  //判断保存的session值是不是为空
    {
      header("location:login.php");  //为空就返回登录页面
    }
    else
    {
      $uid = $_SESSION["uid"];  //不为空就输保存一下用户
    }
    

    (3)接下来就是用户这是不是和流程有关系?流程走到哪了(分情况)?还有就是有没有通过

    //查询登录者参与的所有流程
    $su_flow = "select * from userflow where code in(select code from flowpath where uids='{$uid}')";
    $au_flow = $db->Query($su_flow);  //执行查询语句
    				
    foreach($au_flow as $vu_flow)
    {
      $towhere = $vu_flow[6]; //流程走到哪里了
    					
      //找到登录者在该流程中的位置
      $s_weizhi = "select orders from flowpath where code='{$vu_flow[1]}' and uids='{$uid}'";
      $wezhi = $db->StrQuery($s_weizhi); //该人员在流程中的位置
    					
      if($towhere>=$wezhi)
      {
        $caozuo = "";
        if($towhere==$wezhi)
        {
    	  //流程正好走到登录者位置
    	  $caozuo="<a href='tongguo.php?ids={$vu_flow[0]}'>通过</a>"; //get方式传过处理页面
        }
        else
        {
    	  //流程走过登录者
    	  $caozuo = "<span style='background-color:green; color:white'>已通过</span>";
        }
        echo "<tr><td>{$vu_flow[1]}</td><td>{$vu_flow[2]}</td><td>{$vu_flow[3]}</td><td>{$vu_flow[4]}</td><td>{$vu_flow[5]}</td><td>{$caozuo}</td></tr>";
      }
      else
      {     //流程未走到登录者   } }

    (4)通过的处理页面

    <?php
    include("DBDA.class.php");  //调用封装好的数据库类
    $db = new DBDA();  //造新对象
    $ids = $_GET["ids"]; //将代号传过来 $sql = "update userflow set towhere=towhere+1 where ids='{$ids}'"; //修改towhere的值看已经执行到哪了 $db->Query($sql,0); //执行修改语句 $swhere = "select * from userflow where ids='{$ids}'"; $attr = $db->Query($swhere); $towhere = $attr[0][6]; //走到哪了 $code = $attr[0][1]; //流程代号 $ssl = "select count(*) from flowpath where code='{$code}'"; //查询总数 $pcount = $db->StrQuery($ssl); //该流程节点人员数量 if($towhere>=$pcount) {
      $sql = "update userflow set isok=true where ids='{$ids}'"; //修改是不是已经通过了   $db->Query($sql,0); } header("location:main.php");

    因为还没有写发起流程界面,那么先从数据库中添加几条数据看看:

    (1)我们先要新建个流程,这是第一个页面,我们就用新建流程

    看下结点还有流程名称   来看下数据库中结点的表     

    根据这些我们在流程表中自己先添加信息吧,等后来再通过发起流程添加,现在只看下效果

    登录审核人员的账号看下:

    第一个人是李四:

    我们点击通过,继续往下走

    第二个人是马七,我们不点通过,看下下一个人员(王五)有没有这个通过的操作:是没有这个操作的

    我们让马七通过审核,再看下王五的界面

      王五的界面就是:就发现有了这个操作,继续下去,我们看下最后这个通过会不会变成1

    最后审核人员张三    

    看下结果是否会结束:

    再看下数据库中towhere中的数值是不是已经结束了:

    这个就剩下发起流程的步骤了,可以先看下效果:

    (1)发起流程有个链接页面,单击这个,可以链接到发起流程页面

      

    (2)这个及时发起流程的页面了

     这个挺简单的了,后面再更新吧~~~

    至此,这个流程管理就结束了~~

  • 相关阅读:
    129 01 Android 零基础入门 02 Java面向对象 06 Java单例模式 03 饿汉模式 VS 懒汉模式 02 懒汉式的代码实现
    128 01 Android 零基础入门 02 Java面向对象 06 Java单例模式 03 饿汉模式 VS 懒汉模式 01 饿汉式的代码实现
    127 01 Android 零基础入门 02 Java面向对象 06 Java单例模式 02 单例模式概述 01 单例模式的定义和作用
    126 01 Android 零基础入门 02 Java面向对象 06 Java单例模式 01 设计模式概述 01 设计模式简介
    125 01 Android 零基础入门 02 Java面向对象 05 Java继承(下)05 Java继承(下)总结 01 Java继承(下)知识点总结
    leetcode-----121. 买卖股票的最佳时机
    leetcode-----104. 二叉树的最大深度
    Json串的字段如果和类中字段不一致,如何映射、转换?
    Mybatis-Plus的Service方法使用 之 泛型方法default <V> List<V> listObjs(Function<? super Object, V> mapper)
    模糊查询
  • 原文地址:https://www.cnblogs.com/nuanai/p/6296540.html
Copyright © 2011-2022 走看看