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)這個及時發起流程的頁面了
這個挺簡單的了,后面再更新吧~~~
至此,這個流程管理就結束了~~