zoukankan      html  css  js  c++  java
  • 流程增加,发起事件,流程显示,处理。

    增加流程

     html

            请输入流程名称:<input type="text" id="lc_name" /><button onclick="lc_save()">保存</button>
            <!--选择流程审批人员-->
            <div id="sel_person"></div>
            <!--审批人员顺序显示-->
            <div id="sel_jd"></div>

     js

        //定义字符串作为tj()函数的流程人员字符串拼接
        var lc_personArr = [];
        $(function(){
            sel_person();//加载人员下拉
        })
        //后台查找所有的人员uid 和name 执行处理数据chuliSel_person()
        function sel_person(){
            $.ajax({
                type:"post",
                url:"chuli.php",
                async:true,
                data:{type:'sel_person'},
                dataType:'json',
                success:function(data){
                    chuliSel_person(data);
                }
            });
        }
        //循环添加单选按钮value为人员uid 显示为人员姓名,最后添加按钮 执行addJD()
        function chuliSel_person(data){
            var str = "";
            for(var i = 0; i < data.length; i++){
                str += "<label><input type='radio' name='sel_person' value='"+data[i][0]+"'/>"+data[i][1]+"</label>";
            }
            str += "<button onclick='addJD()'>添加</button>"
            $('#sel_person').html(str);
        }
        //添加选中的人员依次排序放入字符串
        function addJD(){
            //遍历单选,若被选中,
            $('input[type=radio]').each(function(){
                if($(this).prop('checked')){
    //                判断数组lc_personArr是否存在这一项,如果不存在则加入,若存在则提示改用户已存在
                    if($.inArray($(this).val(),lc_personArr) == -1){
                        lc_personArr.push($(this).val());
                    }else{
                        alert('该用户已存在');
                    }
                }
            })
            //执行打印到网页函数。
            print_jd();
        }
        //数组打印到网页
        function print_jd(){
            var str ="";
            //遍历节点数组,循环拼接 下标:值   删除按钮,删除按钮传参此行下标
            $(lc_personArr).each(function(key,value){
                str += key+":"+value+"<button onclick='delete_jd("+key+")'>删除</button><br>";
            })
            $('#sel_jd').html(str);
        }
        //删除按钮函数
        function delete_jd(key){
            //删除传参下标的键值对
            lc_personArr.splice(key,1);
            //重新执行打印到网页函数
            print_jd();
        }
        //保存按钮函数,保存此流程节点到数据库
        function lc_save(){
            //获取流程名称
            var lc_name = $('#lc_name').val();
            //传入后台流程名称和节点数组,成功则数组清空,打印页面清空,input清空。
            $.ajax({
                type:"post",
                url:"chuli.php",
                async:true,
                data:{
                    type:'lc_save',
                    lc_name:lc_name,
                    persenArr:lc_personArr
                },
                dataType:'text',
                success:function(data){
                    if(data == 'ok'){
                        alert('添加成功');
                        lc_personArr = [];
                        print_jd();
                        $('#lc_name').val('');
                    }
                }
            });
        }

     php case语句

            //查找所有的人员uid 和name
            case 'sel_person':
                $sql = "select zh,name from lc_user";
                $res = $db->query($sql);
                $attr = $res->fetch_all();
                echo json_encode($attr);
            break;
            //保存流程
            case 'lc_save':
                //获取时间戳,流程名称,节点数组
                $time = time();
                $lc_name = $_POST['lc_name'];
                $persenArr = $_POST['persenArr'];
                //liucheng表用时间戳做流程代号,放入数据库
                $sql1 = "insert into liucheng values('$time','$lc_name')";
                $res1 = $db->query($sql1);
                //遍历节点数组,添加节点数据库
                foreach($persenArr as $k=>$v){
                    $sql2 = "insert into lc_jiedian(code,uids,orders) values('$time','{$v}','{$k}')";
    //                $sql2 = "insert into lc_jiedian values('','$time','{$v}','{$k}')";
                    $res2 = $db->query($sql2);
                }
                if($res1 && $res2){
                    echo 'ok';
                }
            break;

    发起事件

    html

            发起流程:<select id="sel_lc"></select>
            内容:<textarea id="lc_nr"></textarea>
            <button onclick="lc_tj()">提交</button><br>

    js

        $(function(){
            sel_lc();//查找显示流程名称
        })
        //查找显示流程名称,代号 成功执行chuliSel_lc()
        function sel_lc(){
            $.ajax({
                type:"post",
                url:"chuli.php",
                async:true,
                data:{type:'sel_lc'},
                dataType:'json',
                success:function(data){
                    chuliSel_lc(data);
                }
            });
        }
        //流程代号,名称,循环放入下拉
        function chuliSel_lc(data){
            var str = "";
            for(var i = 0; i < data.length; i++){
                str += "<option value='"+data[i][0]+"'>"+data[i][1]+"</option>";
            }
            $('#sel_lc').html(str);
        }
        //提交按钮提交流程函数
        function lc_tj(){
            //获取内容,流程代号传入后台
            var nr = $('#lc_nr').val();
            var code = $('#sel_lc').val();
            $.ajax({
                type:"post",
                url:"chuli.php",
                async:true,
                data:{
                    type:'lc_tj',
                    code:code,
                    nr:nr
                },
                dataType:'text',
                success:function(data){
                    if(data=='ok')alert('提交成功');
                }
            });
        }

    php

            //查找所有流程名称,代号
            case 'sel_lc':
                $sql = "select * from liucheng";
                $res = $db->query($sql);
                $attr = $res->fetch_all();
                echo json_encode($attr);
            break;
            //添加事件
            case 'lc_tj':
                //获取时间戳作为提交日期,获取流程代号,提交人,提交内容,添加入表,并设置towhere=0,isok=0
                $time = time();
                $code = $_POST['code'];
                $uid = $_SESSION['uid'];
                $nr = $_POST['nr'];
                $sql = "insert into lc_user_liucheng (code,uid,content,isok,riqi,towhere) values('$code','$uid','$nr','0','$time','0')";
                $res = $db->query($sql);
                if($res) echo 'ok';
            break;

    流程显示与处理

    html仅为id为lc_detail的表格

    js

        //流程显示,后台连表查登录用户的处理数据
        function sel_detail(){
            $.ajax({
                type:"post",
                url:"chuli.php",
                async:true,
                data:{
                    type:'sel_detail'
                },
                dataType:'json',
                success:function(data){
                    //console.log(data);
                    chuliLc_detail(data)
                }
            });
        }
        //获取数据后拼接显示,当此用户的节点顺序<towhere顺序(即已审核完),则操作显示已处理,当此用户节点顺序=towhere顺序(即该此人审核),则显示按钮审核。
        function chuliLc_detail(data){
            var str ="";
            str +=`<tr><th>流程代号</th>
                    <th>发起人</th>
                    <th>内容</th>
                    <th>发起时间</th>
                    <th>操作</th></tr>`
            //审核事件,传参为流程细节表的主键
            for(var i = 0; i <data.length; i++){
                str += "<tr>"
                if(data[i][3] < data[i][10]){
                    str += "<td>"+data[i][1]+"</td><td>"+data[i][6]+"</td><td>"+data[i][7]+"</td><td>"+data[i][9]+"</td><td>已处理</td>";
                }else if(data[i][3] == data[i][10]){
                    str += "<td>"+data[i][1]+"</td><td>"+data[i][6]+"</td><td>"+data[i][7]+"</td><td>"+data[i][9]+"</td><td><button onclick='review("+data[i][4]+")'>通过</button></td>";
                }
                str += "</tr>"
            }
            $('#lc_detail').html(str);
        }
        //审核,传参此条流程的主键,后台修改towhere+1,再执行sel_detail(),重新加载页面。
        function review(ids){
            $.ajax({
                type:"post",
                url:"chuli.php",
                async:true,
                data:{
                    type:'review',
                    ids:ids
                },
                dataType:'json',
                success:function(data){
                    sel_detail();
                }
            });
        }

    php

            //显示流程
            case 'sel_detail':
                //获取此用户的uid
                $uid = $_SESSION['uid'];
                //连表查节点表和流程细节表,查与此用户有关的并且流程代号相同的
                $sql = "select * from lc_jiedian as a join lc_user_liucheng as b where a.uids = '$uid' and a.code = b.code";
                $res = $db->query($sql);
                $attr = $res->fetch_all();
                echo json_encode($attr);
            break;
            //审核
            case 'review':
                //towhere加1
                $ids = $_POST['ids'];
                $sql1 = "update lc_user_liucheng set towhere = towhere + 1 where ids = '$ids'";
                $res1 = $db->query($sql1);
                //查找现在事件的towhere 和 事件代码
                $sql2 = "select code,towhere from lc_user_liucheng where ids = '$ids'";
                $res2 = $db->query($sql2);
                $attr = $res2->fetch_row();
                //查找此流程一共有多少条语句,来确定towhere的最大值
                $sql3 = "select count(*) from lc_jiedian where code = '{$attr[0]}'";
                $res3 = $db->query($sql3);
                $attr2 = $res3->fetch_row();
                //当towhere 和 共有多少条语句相等时,isok设为1(因为最后一个人审核后towhere也会加1,查找语句数为最大orders加1)
                if($attr[1] == $attr2[0]){
                    $sql4 = "update lc_user_liucheng set isok = 1 where ids = '$ids'";
                    $res4 = $db->query($sql4);
                }
                echo 'ok';
            break;

    补充:

      inArray()  判断数组中是否存在某一个数

        eg:$.inArray(‘abc’,array)        判断array中是否存在字符串abc ,若存在则返回下标,不存在返回-1

      splice()  删除数组中某一项,会改变原数组,其他项会自动重新排列

        eg:$.splice(key,1)   key为开始下标,1为一项。

  • 相关阅读:
    2019-2020-1 20199325《Linux内核原理与分析》第十二周作业
    2019-2020-1 20199325《Linux内核原理与分析》第十一周作业
    2019-2020-1 20199325《Linux内核原理与分析》第九周作业
    2019-2020-1 20199325《Linux内核原理与分析》第八周作业
    20199328 2019-2020-2 《网络攻防实践》第3周作业
    20199328 2019-2020-2 《网络攻防实践》第2周作业
    20199328 2019-2020-2 《网络攻防实践》第1周作业
    20199328《网络攻防实践》假期作业
    2019-2020-1 20199328《Linux内核原理与分析》第十二周作业
    2019-2020-1 20199328《Linux内核原理与分析》第十一周作业
  • 原文地址:https://www.cnblogs.com/SSs1995/p/9236749.html
Copyright © 2011-2022 走看看