| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642 |
- var property={
- width:3000,
- height:3000,
- toolBtns:["task","node"],
- haveHead:false,
- headBtns:["new","save"],//如果haveHead=true,则定义HEAD区的按钮
- haveTool:false,//是否可编辑??????????????????????????????????
- useOperStack:true,
- initNum:1
- };
- var remark={
- cursor:"指针",
- direct:"连线",
- start:"start",
- end:"end",
- task:"task",
- node:"decision"
- };
- var tempData;
- var demo;
- var selectId;
- var selectType;
- //bpmComponent解析后的数据容器
- var startList=new Array();
- var endList=new Array();
- var taskList=new Array();
- var decisionList=new Array();
- //选中的start,end,task,decision的容器
- var selectTask=null;
- var selectStart=null;
- var selectEnd=null;
- var selectDecision=null;
- var haveDrag=false;
- $(document).ready(function(){
- property.initLabelText= $("#fileName").val();
- // 初始化
- demo=$.createGooFlow($("#demo"),property);
- var version=document.getElementById("version").value;
-
- //加载数据
- var datas=$("#jsonData").html();
- if(datas!=''){
- var json=eval('('+datas+')');
- var bpmdata;
-
- if(version!=""){
- var haveFind=false;
- for(var i=0;i<json.objectKey.length;i++){
- if(json.objectKey[i].version==version){
- // demo.loadData(json.objectKey[i])
- bpmdata=json.objectKey[i];
- haveFind=true;
- break;
- }
- }
- if(!haveFind){
- alert("找不到json版本: "+version)
- }
- }else{
- // demo.loadData(json);
- bpmdata=json;
- }
-
-
- if(bpmdata){
-
-
- //console.log(bpmdata);
-
- var allNode={};
- for(var key in bpmdata.lines){
- var thisline=bpmdata.lines[key];
- allNode[thisline.from]=1;
- allNode[thisline.to]=1;
- }
-
- for(var key in bpmdata.nodes){
- var node=bpmdata.nodes[key]
- if(!allNode[node.id]){
- delete bpmdata.nodes[node.id];
-
- }
-
- }
-
-
-
-
-
- demo.loadData(bpmdata);
-
-
-
- }
- }
- // 解析已走流程数据
- var shList=eval("("+$("#shListData").html()+")")
- //console.log(shList);
- var jdList=[];
-
- //标记节点,生成线数据
- for (var i=0;i<shList.length;i++) {
- var jdid=shList[i].jdid;
- // $("#"+jdid).css("border-color","red");
- focusNode(jdid);
-
- jdList.push(jdid);
- }
-
- // 记录jdList.length
- var jdList_length=jdList.length;
- // 添加开始结束的ID
-
- var trans=new translate();
- trans.obj=demo.exportData();
- var startNode,endNodes;
-
-
-
-
- //// 放入开始节点
- // startNode=translate.getStartNode();
- // if(startNode!=null){
- // jdList.push(startNode.id)
- // }
- //// 放入结束节点
- // endNodes=translate.getEndNode();
- // //只有两个节点,审核节点数据有数据加入
- // if(translate.getNodeSize()==2||jdList_length!=0){
- // for(var i=0;i<endNodes.length;i++){
- // jdList.push(endNodes[i].id)
- // };
- // }
- //
- //
- //
- // jdList_length=null;
- //// 标记连线
- // for(var i=0;i<jdList.length;i++){
- // var fromid=jdList[i];
- // for(var j=0;j<jdList.length;j++){
- // var toid=jdList[j];
- // var line= translate.getLine(fromid,toid)
- // if(line!=null){
- // demo.focusItem(line.id)
- // }
- // }
- // }
-
- startNode=trans.getStartNode();
- endNodes=trans.getEndNode();
- var alllines=trans.getNoRepeatNameObj()["lines"];
- var allnodes=trans.getNoRepeatNameObj()["nodes"];
- //补充连线
-
- function findNextLines(node){
- var result=new Array();
- for(var key in alllines){
- if(alllines[key].from==node.id){
- result.push(alllines[key])
- }
- }
- return result;
- }
-
- function inShList(node){
-
- // console.log(node.id)
- for(var i=0;i<shList.length;i++){
- if(shList[i].jdid==node.id){
- return true;
- }
- }
- return false;
- }
-
- function isAgreeTask(node){
- for(var i=0;i<shList.length;i++){
- if(shList[i].jdid==node.id){
- if(shList[i].shyjm=="55"){
- return false;//不同意
- }else{
- return true;//同意,越过
- }
- }
-
- }
-
-
- //console.log("probem")
- return null;
- }
- function hasTask(node,type){
- var typeValue;
-
- // 1 审核中
- // 51 同意
- // 53 越过
- // 55 退回
- // 57 手动收回
- // 58 逾期收回
- if(type=="agree"){
- typeValue=51
- }else if(type=="reject"){
- typeValue=55
- }else if(type=="pending"){
- typeValue=1
- }else if(type=="over"){
- typeValue=53
- }else if(type=="manualreject"){
- typeValue=57
- }else if(type=="timeoutreject"){
- typeValue=58
- }
-
- for(var i=0;i<shList.length;i++){
- if(shList[i].jdid==node.id){
- if(shList[i].shyjm==typeValue){
- return true;//存在
- }else{
- // return false;
- }
- }
-
- }
- // console.log("probem")
- return false;
- }
-
- function isAllFromShList(node){
- var fromLines=new Array();
-
-
- for(var key in alllines){
-
- if(alllines[key].to==node.id){
- fromLines.push(alllines[key])
- }
- }
-
-
- for(var i=0;i<fromLines.length;i++){
- var inIt=false;
- for(var j=0;j<shList.length;j++){
- if(fromLines[i].to==shList[j].jdid){
- inIt=true;
- }
- }
-
- if(inIt==false){
- return false
- }
-
- }
-
-
- return true;
-
- }
-
-
- var z=0;
- function moreDue(node){
- z++;
- if(z>500){return}
-
-
- var thisNode=arguments[0];
- if(typeof thisNode=="string"){
- thisNode=allnodes[node];
- }
- // console.log(thisNode.id)
-
- var nodeType=thisNode.realtype;
- var lines=findNextLines(thisNode);
- //console.log(nodeType)
-
- if(thisNode.realtype=="start"){
- for(var i=0; i<lines.length;i++){
- demo.focusItem(lines[i].id,false,true);
- moreDue(lines[i].to);
- }
- }
-
- if(nodeType=="task"){
- //console.log(lines)
- if(inShList(thisNode)){
- if(hasTask(thisNode,"agree")){//同意
- for(var i=0; i<lines.length;i++){
- if(lines[i].status=="agree"){
- // if(allnodes[lines[i].to].realtype!="end"){
- demo.focusItem(lines[i].id,false,true)
- moreDue(lines[i].to)
- // }
- }
- }
- }
- if(hasTask(thisNode,"over")){//越过
- for(var i=0; i<lines.length;i++){
- if(lines[i].status=="agree"){
- demo.focusItem(lines[i].id,false,true)
- moreDue(lines[i].to)
- }
- }
- }
-
- if(hasTask(thisNode,"reject")){//退回
-
- for(var i=0; i<lines.length;i++){
- if(lines[i].status=="reject"){
- demo.focusItem(lines[i].id,false,true)
- moreDue(lines[i].to)
- }
- }
-
- }
-
- if(hasTask(thisNode,"manualreject")){//手动退回
- for(var i=0; i<lines.length;i++){
- if(lines[i].status=="reject"){
- demo.focusItem(lines[i].id,false,true)
- moreDue(lines[i].to)
- }
- }
-
- }
- if(hasTask(thisNode,"timeoutreject")){//定时退回
- for(var i=0; i<lines.length;i++){
- if(lines[i].status=="reject"){
- demo.focusItem(lines[i].id,false,true)
- moreDue(lines[i].to)
- }
- }
-
- }
-
- if(hasTask(thisNode,"pending")){//审核中
- for(var i=0; i<lines.length;i++){
- // if(lines[i].status=="reject"){
- if(allnodes[lines[i].to].realtype!="end"){
- // demo.focusItem(lines[i].id)
- lines[i].deal=true;
- moreDue(lines[i].to)
- }
- // }
- }
- }
-
- for(var i=0; i<lines.length;i++){
- if(allnodes[lines[i].to].realtype!="task"&&allnodes[lines[i].to].realtype!="join"&&allnodes[lines[i].to].realtype!="end"&&lines[i].deal!=true){
- demo.focusItem(lines[i].id,false,true)
- lines[i].deal=true;
- moreDue(lines[i].to)
- }
- }
-
-
-
-
-
-
- }
- }
-
- if(nodeType=="subprocess"){
- focusNode(thisNode.id);
-
- for(var i=0; i<lines.length;i++){
- if(inShList({id:lines[i].to}) ){
- demo.focusItem(lines[i].id,false,true)
- moreDue(lines[i].to)
- }
- }
- }
- if(nodeType=="transmit"){
- focusNode(thisNode.id);
- for(var i=0; i<lines.length;i++){
- if(inShList({id:lines[i].to}) ){
- demo.focusItem(lines[i].id,false,true)
- moreDue(lines[i].to)
- }
- }
- }
-
- if(nodeType=="fork"||nodeType=="foreach"){
- for(var i=0;i<lines.length;i++){
- demo.focusItem(lines[i].id,false,true);
- moreDue(lines[i].to);
- }
- for(var i=0; i<lines.length;i++){
- if(allnodes[lines[i].to].realtype!="task"&&allnodes[lines[i].to].realtype!="end"&&lines[i].deal!=true){
- demo.focusItem(lines[i].id,false,true)
- // lines[i].deal=true;
- // moreDue(lines[i].to)
- }
- }
-
- }
- if(nodeType=="decision"){
- focusNode(thisNode.id);
- for(var i=0; i<lines.length;i++){
- if(inShList({id:lines[i].to}) ){
- demo.focusItem(lines[i].id,false,true)
- moreDue(lines[i].to)
- }
- }
-
- for(var i=0; i<lines.length;i++){
- if(allnodes[lines[i].to].realtype=="foreach"&&allnodes[lines[i].to].realtype!="end"&&lines[i].deal!=true){
- demo.focusItem(lines[i].id,false,true)
- lines[i].deal=true;
- moreDue(lines[i].to)
- }
- }
-
-
- }
-
-
-
- if(nodeType=="join"){
-
- if(isAllFromShList(thisNode)){
- for(var i=0;i<lines.length;i++){
- demo.focusItem(lines[i].id,false,true);
- moreDue(lines[i].to);
- }
- }
-
- }
-
- if(nodeType=="end"){
-
- }
-
-
- }
-
- moreDue(startNode);
- var floatDiv='<div id="floatDiv" style="position:absolute;border:1px black solid;display:block;width:800px;background-color:white;"></div>';
- $(document.body).append(floatDiv);
- $("#floatDiv").hide()
-
- $("#demo").delegate(".GooFlow_item","mouseenter",function(){
- var e=window.event;
- $("#floatDiv").show()
- var thisId=this.id;
- var haveSelect=false;
-
- var generalHTML=generalDiv(thisId);
- if(generalHTML==""){
- $("#floatDiv").hide();
- return
- }
- $("#floatDiv").html(generalHTML);
-
- function generalDiv(id){
-
- // if(allnodes[id].readtype=="task"||allnodes[id].readtype=="transmit"){
- //
- // }else{
- // return ""
- // }
-
- var result=""
- if(allnodes[id].assignee){
- result="<h4>办理人:"
- +allnodes[id].assignee.replace(/@env./,"").replace(/@/,"")
- +((allnodes[id].taskChain&&allnodes[id].taskChain==1)?"(部门内审核)":"")
- +"</h4>";
- }
-
-
-
-
- //console.log(shList)
- for(var i=0;i<shList.length;i++){
- if(shList[i].jdid==id){
- //申请人转换
- if(shList[i].translate){
- // continue;
- result+=""
- +"<div class='aa' style='float:left'>"
- +"<table>"
- +"<tr><th>转换时间:</th><td>"+shList[i].shsj
- +"</td><tr>"
- +"<tr><th>转换人员:</th><td>"+shList[i].shryid
- +(shList[i].shbm?("("+shList[i].shbm+")"):"")
- +"</td><tr>"
- +"</table>"
- +"</div>"
-
- }else{
- result+=""
- +"<div class='aa' style='float:left'>"
- +"<table>"
- // +(shList[i].shbm?("<tr><th>部门:</th><td>"+shList[i].shbm+"</td><tr>"):"")
- +(shList[i].shyjm==1?"":("<tr><th>审核时间:</th><td>"+shList[i].shsj+"</td><tr>"))
- +"<tr><th>审核人员:</th><td>"+shList[i].shryid+(shList[i].shbm?("("+shList[i].shbm+")"):"")+"</td><tr>"
- +(shList[i].dlryid?("<tr><th>代理人:</th><td>"+shList[i].dlryid+"</td><tr>"):"")
-
- +"<tr><th>审核意见:</th><td>"+(function(shyjm){
- if(shyjm==1){
- return "审核中"
- }else if(shyjm==51){
- return "同意"
- }else if(shyjm==55){
- return "退回"
- }else if(shyjm==57){
- return "手动退回"
- }else if(shyjm==58){
- return "逾期退回"
- }else if(shyjm==53){
- return "越过"
- }else if(shyjm==54){
- return "逾期越过"
- }else{
- return "未知"
- }
- }(shList[i].shyjm))
- +"</td><tr>"
- +(shList[i].sm? ("<tr><th>说明:</th><td>"+shList[i].sm+"</td><tr>"):"")
-
-
- +"</table>"
- +"</div>"
-
-
- }
- }
- }
-
-
-
- // result+=result
- return result
- }
-
-
-
-
-
- $("#floatDiv").css("left",parseInt(this.style.left)+parseInt(this.clientWidth)).css("top",parseInt(this.style.top)+parseInt(this.clientHeight))
- }).delegate(".GooFlow_item","mouseleave",function(){
- // $("#floatDiv").hide()
- })
-
- });
- //***********************************************************************
- function focusNode(id){
-
- demo.focusItem(id,false,true);
- }
- //复制对象
- function clone(myObj){
- if(typeof(myObj) != 'object') return myObj;
- if(myObj == null) return myObj;
- var myNewObj = new Object();
- for(var i in myObj)
- myNewObj[i] = clone(myObj[i]);
- return myNewObj;
- }
- function findPosX(obj) {
- var curleft = 0;
- if (obj && obj.offsetParent) {
- while (obj.offsetParent) {
- curleft += obj.offsetLeft;
- obj = obj.offsetParent;
- }
- } else if (obj && obj.x) curleft += obj.x;
- return curleft;
- }
- function findPosY(obj) {
- var curtop = 0;
- if (obj && obj.offsetParent) {
- while (obj.offsetParent) {
- curtop += obj.offsetTop;
- obj = obj.offsetParent;
- }
- } else if (obj && obj.y) curtop += obj.y;
- return curtop;
- }
- //从URL获取参数
- function getURLParam(name) {
- var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
- var r = window.location.search.substr(1).match(reg);
- if (r != null) return unescape(r[2]); return null;
- }
|