| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369 |
- <?php if(!defined('HOST'))die('not access');?>
- <script >
- $(document).ready(function(){
- {params};
- var num = params.num,setid,optlx=0,maxpid = 0,courseobj={};
- var at = $('#optionview_{rand}').bootstable({
- tablename:'flow_set',defaultorder:'`sort`',where:'and isflow>0 and status=1',
- modedir:'{mode}:{dir}',storeafteraction:'setcourselistafter',storebeforeaction:'setcourselistbefore',
- columns:[{
- text:'名称',dataIndex:'name'
- },{
- text:'编号',dataIndex:'num'
- },{
- text:'步骤数',dataIndex:'shu'
- },{
- text:'ID',dataIndex:'id'
- }],
- itemdblclick:function(ad,oi,e){
- $('#downshow_{rand}').html('设置<b>['+ad.id+'.'+ad.name+']</b>的流程管理');
- setid=ad.id;
- get('addp_{rand}').disabled=false;
- get('relad_{rand}').disabled=false;
- c.loaddata();
- }
- });
-
-
- var a = $('#view_{rand}').bootstable({
- tablename:'flow_course',celleditor:true,
- autoLoad:false,where:'and setid=-1',tree:true,modedir:'{mode}:{dir}',storeafteraction:'flowcourselistafter',storebeforeaction:'flowcourselistbefore',
- columns:[{
- text:'名称',dataIndex:'name',align:'left'
- },{
- text:'适用于',dataIndex:'recename'
- },{
- text:'分支条件',dataIndex:'whereid'
- },{
- text:'编号',dataIndex:'num',editor:true
- },{
- text:'审核人类型',dataIndex:'checktype'
- },{
- text:'审核人',dataIndex:'checktypename'
- },{
- text:'排序号',dataIndex:'sort',editor:true
- },{
- text:'状态',dataIndex:'status',type:'checkbox',editor:true
- },{
- text:'下级步骤',dataIndex:'nid',renderer:function(v){
- if(v=='0')v=' ';
- return v;
- }
- },{
- text:'ID',dataIndex:'id'
- },{
- text:'',dataIndex:'opts',align:'left',renderer:function(v,d,i){
- var s=' ';
- if(d.id>0){
- s='<a onclick="optess{rand}('+i+',0)" href="javascript:;">改</a>';
- if(d.stotal==0)s+=' <a onclick="optess{rand}('+i+',1)" href="javascript:;">删</a>';
- }
- return s;
- }
- }],
- itemclick:function(){
- get('down_{rand}').disabled=false;
- }
- });
- optess{rand}=function(oi,lx){
- c.optss(oi,lx);
- }
- var c = {
- reload:function(){
- this.loaddata();
- },
- optss:function(oi,lx){
- var d = a.getData(oi);
- if(lx==0){
- this.addflow(d.mid, d.id, d.name);
- }
- if(lx==1){
- this.delflow(d.id);
- }
- },
- adddowns:function(){
- var d = a.changedata;
- this.addflow(d.id, 0, d.name);
- },
- addflow:function(mid, id,tex){
-
- var icon='plus',name='新增['+tex+']下的步骤';
- if(id>0){
- icon='edit';
- name='编辑['+tex+']步骤';
- }
- guanflowcourselist = c;
- addtabs({num:'flowcourse'+id+'',url:'main,flow,courseedit,id='+id+',setid='+setid+',mid='+mid+'',icons:icon,name:name});
- },
- pipei:function(){
- js.ajax(js.getajaxurl('reloadpipei','{mode}','{dir}'),{mid:setid},function(s){
- js.msg('success', s);
- },'get',false,'匹配中...,匹配完成');
- },
- loaddata:function(){
- get('down_{rand}').disabled=true;
- this.inpub = $('#mainv{rand}');
- this.inpub.html('');
- js.ajax(js.getajaxurl('courseflowinit','{mode}','{dir}'),{setid:setid}, function(ret){
- c.loaddatashow(ret);
- },'get,json');
- if(!this.robj)this.robj = $.rockmenu({
- data:[],
- itemsclick:function(d){
- c.rightclick(d);
- }
- });
- },
- loaddatashow:function(ret){
- this.heie = 50;
- this.jianarr=[];
- this.showflow(ret.rows,0, -1, 0,0);
- a.loadData({rows:ret.treedata,totalCount:0});
- this.showflows();
- var ads = courseobj[0],lds,o,ow,o1;
- if(ads.childshu>1){
- lds = ads.children[ads.childshu-1].id;
- o = $('#courseflow'+setid+'_'+lds+'');
- o1= $('#courseflow'+setid+'_0');
- ow= o.width()+ parseInt(o.css('left'));
- ol= ow*0.5 - o1.width()*0.5;
- o1.css('left',''+ol+'px');
- }
- //显示箭头
- var i,len=this.jianarr.length,d;
- for(i=0;i<len;i++){
- d = this.jianarr[i];
- this.jian(d[0], d[1]);
- }
- },
-
- showflows:function(){
- this.inpub.css('height',''+(this.heie+90)+'px');
- },
-
- //lef起始位置 lev级别
- showflow:function(ret, lef,mid,lev){
- $('#mainvss{rand}').show();
- var i=0,len=ret.length,s,d={},l,t,dw,rfys='',sty,sid,o1;
- var jg = 100,oi=0;
- ks = lef;
- for(i=0;i<len;i++){
- d=ret[i];
- sty = '';
- oi++;
- l = ks;
- if(d.childshu>1)jg=150; //有下级间隔大点
- if(i>0){
- l+=jg;
- }
- t = 120*d.level;
- if(t>this.heie)this.heie=t;
- rfys='rf_ract';
- if(d.childshu>1)rfys='rf_yuan';
-
- if(d.id==0||d.status=='0')sty=';background:#eeeeee;border-color:#cccccc;color:#888888';
- sid='courseflow'+setid+'_'+d.id+'';
- s='<div id="'+sid+'" dataid="'+d.id+'" oncontextmenu="right{rand}(this,event)" level="'+d.level+'" style="left:'+l+'px;top:'+t+'px'+sty+'" class="rf '+rfys+'"><div class="rf_nei">';
- if(!isempt(d.fzsm))s+='<div class="rf-texts">'+d.fzsm+'</div>';
- s+='<div class="rf-text">'+d.id+'.'+d.name+'</div>';
- if(!isempt(d.checktypename))s+='<div class="rf-texts">'+d.checktype+'.'+d.checktypename+'</div>';
- s+='</div></div>';
- this.inpub.append(s);
- if(mid>=0){
- this.jianarr.push([mid, d.id]);
- }
- if(d.childshu==0 && d.nid>0)this.jianarr.push([d.id, d.nid]);
-
- if(d.children){
- this.showflow(d.children, l ,d.id,d.level,0);
- }
-
- d.left = l;
- d.top = t;
- courseobj[d.id]=d;
- ks = l+$('#'+sid+'').width();
- }
-
- },
- jian:function(fid,tid){
- var fo,to,jl,l,t,jw,wh,dw;
- fo = $('#courseflow'+setid+'_'+fid+'');
- to = $('#courseflow'+setid+'_'+tid+'');
-
- var tleft = parseInt(to.css('left')),
- fleft = parseInt(fo.css('left')),
- ttop = parseInt(to.css('top')),
- ftop = parseInt(fo.css('top'));
-
- //如果同一条线上
- if(ttop==ftop){
- //→这个方向
- if(tleft>fleft){
- l = fleft + fo.width() + 4;
- t = ftop + fo.height()*0.5+4;
- dw= tleft - l;
- this.getjstr(dw,l,t, -90);
- }else{//←这个方向
- l = fleft-4;
- t = ftop + fo.height()*0.5-4;
- dw= fleft - tleft-to.width()-6;
- this.getjstr(dw,l,t, 90);
- }
-
- return;
- }
-
- jl = parseInt(to.css('top'))- parseInt(fo.css('top'))-fo.height()-10;
- l = fleft+fo.width()*0.5-8; //箭头开始位置
- t = parseInt(fo.css('top'))+fo.height()+5; //箭头结束位置
-
-
-
- jw = tleft - fleft - fo.width() + to.width()*0.5;//两个的位置宽
- //console.log(''+fid+'→'+tid+':'+jw+'');
- var jgs = tleft-fleft;
-
- //判断f中心点 是否在t的区间内
- var fzxd = fleft+fo.width()*0.5;
- var tzxd = tleft+to.width();
- //在中心点就用直线↓
- if(fzxd>=tleft && fzxd<=tzxd){
- jw=0;
- }else if(fleft>tleft){
- jw = fleft - tleft - to.width()+ fo.width()*0.5;
- jw = 0-jw;
- l = fleft;
- t = t-5;
- }
-
-
- jh = jl;//两个的位置高
-
- dw = Math.sqrt(jw*jw+jh*jh); //对角线长度(勾股定理)
-
-
- var jds = Math.atan(jw/jh)*180/Math.PI; //旋转角度
- if(jds>0)l = l+fo.width()*0.5+10;
- var jdss= 0-jds;
- this.getjstr(dw,l,t, jdss);
- },
- getjstr:function(h,l,t,jds){
- var s = '<div style="left:'+l+'px;top:'+t+'px;transform:rotate('+jds+'deg);height:'+h+'px" class="rf_shu"><div class="rf_shu1" style="height:'+(h-8)+'px"></div><div class="rf_shu2"></div></div>';
- this.inpub.append(s);
- },
- righmenu:function(o1,e){
- var d = [],o=$(o1);
- var id = parseFloat(o.attr('dataid'));
- var ba = courseobj[id];
- d.push({'name':'新增下级步骤',text:ba.name,mid:0,'id':id,lx:0});
- if(id>0){
- d.push({'name':'编辑',text:ba.name,'id':id,lx:1,mid:ba.mid});
- if(ba.childshu==0)d.push({'name':'<font color=red>删除</font>','id':id,lx:2});
- }
- this.robj.setData(d);
- this.robj.showAt(e.clientX,e.clientY,130);
- },
- rightclick:function(d){
- var lx = d.lx;
- if(lx==0)this.addflow(d.id, 0,d.text);
- if(lx==1)this.addflow(d.mid, d.id,d.text); //编辑
- if(lx==2)this.delflow(d.id);
- },
- delflow:function(id){
- js.confirm('确定要删除此步骤吗?',function(jg){
- if(jg=='yes')c.delflows(id);
- });
- },
- delflows:function(id){
- js.ajax(js.getajaxurl('courseflowdel','{mode}','{dir}'), {id:id}, function(s){
- c.reload();
- },'get',false,'删除中...,删除成功');
- },
- search:function(){
- at.setparams({'key':get('key_{rand}').value}, true);
- }
- };
- js.initbtn(c);
-
-
- right{rand}=function(o1,e){
- c.righmenu(o1,e);
- }
-
- $('#optionview_{rand}').css('height',''+(viewheight-102)+'px');
- });
- </script>
- <style>
- /*图形样式*/
- .rf{position:absolute;background-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.2);border:var(--border);text-align:center;max-width:150px;min-width:100px;border-radius:5px}
- .rf_nei{padding:5px 10px}
- .rf_ract{}
- .rf_yuan{border-radius:20%}
- .rf-text{font-size:14px;word-wrap:nowrap;height:20px;line-height:20px;overflow:hidden}
- .rf-texts{font-size:12px;word-wrap:nowrap;height:20px;line-height:20px;overflow:hidden}
- .rf-txt{position:absolute;color:var(--main-color)}
- .rf-active{background-color:#60C2F7}
- /*箭头的*/
- .rf_shu{position:absolute;height:100px;border:none;width:12px;overflow:hidden;transform-origin:0px 0px;-webkit-transform-origin:0px 0px;-ms-transform-origin:0px 0px;-moz-transform-origin:0px 0px;}
- .rf_shu1{width:6px;height:94px;background-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.2);margin-left:3px}
- .rf_shu2{width:0px;height:0px; overflow:hidden;border-width:6px;border-style:solid;border-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.2) transparent transparent transparent;}
- .rf_shus{position:absolute;height:100px;border:none;width:6px;overflow:hidden;background-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.1)}
- .rf_hens{position:absolute;height:6px;border:none;width:100px;overflow:hidden;background-color:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.1)}
- </style>
- <table width="100%">
- <tr valign="top">
- <td width="25%">
- <div class="panel panel-info" style="margin:0px">
- <div class="panel-heading">
- <h3 class="panel-title">流程模块(双击显示步骤)</h3>
- </div>
- <div>
- <div class="input-group" style="width:200px">
- <input class="form-control" id="key_{rand}" placeholder="模块名称/编号">
- <span class="input-group-btn">
- <button class="btn btn-default" click="search" type="button"><i class="icon-search"></i></button>
- </span>
- </div>
- </div>
- <div id="optionview_{rand}" style="height:400px;overflow:auto"></div>
- </div>
- </td>
- <td width="10"></td>
- <td>
- <div>
- <table width="100%">
- <tr>
- <td align="left" nowrap>
- <button class="btn btn-default" click="reload" id="relad_{rand}" disabled type="button">刷新</button>
- <button class="btn btn-default" click="pipei" id="addp_{rand}" disabled type="button">匹配流程</button>
- </td>
- <td align="left" width="90%" id="downshow_{rand}" style="padding:0px 10px;">
-
- </td>
- <td align="right" nowrap>
- <button class="btn btn-primary" click="adddowns" id="down_{rand}" disabled type="button">新增下级步骤</button>
- </td>
- </tr>
- </table>
-
- </div>
-
- <div class="blank10"></div>
- <div class="blank1"></div>
- <div class="blank10"></div>
-
-
- <div id="view_{rand}"></div>
- <div class="blank10"></div>
- <div id="mainvss{rand}" style="background:rgba(0,0,0,0.1);border:var(--border);border-radius:5px;padding:10px;display:none;">
- <div oncontextmenu="return false" id="mainv{rand}" class="notsel" style="position:relative;height:auto;"></div>
- </div>
- </td>
- </tr>
- </table>
|