indexpublic.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. var objcont,tabs_title,tabsarr={},nowtabs,opentabs=[],menutabs,menuarr,admintype='0';
  2. var viewwidth,viewheight,optmenudatas=[];
  3. js.initbtn = function(obj){
  4. var o = $("[click]"),i,o1,cl;
  5. for(i=0; i<o.length; i++){
  6. o1 = $(o[i]);
  7. cl = o1.attr('clickadd');
  8. if(cl!='true'){
  9. o1.click(function(eo){
  10. var cls = $(this).attr('click');
  11. if(typeof(cls)=='string'){
  12. cls=cls.split(',');
  13. obj[cls[0]](this, cls[1], cls[2], eo);
  14. }
  15. return false;
  16. });
  17. }
  18. }
  19. o.attr('clickadd','true');
  20. }
  21. js.initedit = function(id,can){
  22. var cans = js.apply({
  23. resizeType : 0,
  24. allowPreviewEmoticons : false,
  25. allowImageUpload : true,
  26. formatUploadUrl:false,
  27. uploadJson:'mode/kindeditor/kindeditor_upload.php',
  28. allowFileManager:true,
  29. items : ['fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
  30. 'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
  31. 'insertunorderedlist', '|','image', 'link','unlink','|','source','clearhtml','fullscreen'],
  32. blur:function(){
  33. }
  34. },can);
  35. var editorobj = KindEditor.create('#'+id+'', cans);
  36. return editorobj;
  37. }
  38. js.setwhere = function(mid,call){
  39. if(!call)call='';
  40. var url =js.getajaxurl('@setwhere','where','flow',{modeid:mid,callback:call});
  41. js.tanbody('setwherewin','设置条件',500,330,{
  42. html:'<div style="height:320px;overflow:hidden"><iframe src="" name="winiframese" width="100%" height="100%" frameborder="0"></iframe></div>',
  43. bbar:'none'
  44. });
  45. winiframese.location.href=url;
  46. }
  47. function publicstore(mo,dos,oans){
  48. if(!mo)mo='index';
  49. if(!dos)dos='';
  50. return js.getajaxurl('publicstore',mo,dos,oans);
  51. }
  52. function publicmodeurl(num,act,oans){
  53. if(!act)act='publicstore';
  54. return js.getajaxurl(act,'mode_'+num+'|input','flow',oans);
  55. }
  56. function publicsave(mo, dos,oans){
  57. if(!mo)mo='index';
  58. if(!dos)dos='';
  59. return js.getajaxurl('publicsave',mo,dos,oans);
  60. }
  61. function editfacechang(xid,nems){
  62. js.upload('_editfacechangback',{maxup:'1',thumbnail:'150x150','title':'修改['+nems+']的头像',uptype:'image','params1':xid,'urlparams':'noasyn:yes'});
  63. }
  64. function _editfacechangback(a,xid){
  65. var f = a[0];
  66. var nf= f.thumbpath+'?'+Math.random()+'';
  67. if(xid==adminid)get('myface').src=nf;
  68. if(get('faceviewabc_'+xid+''))get('faceviewabc_'+xid+'').src=nf;
  69. js.msg('wait','头像修改中...');
  70. js.ajax(js.getajaxurl('editface','admin','system'),{fid:f.id,'uid':xid},function(){
  71. js.msg('success','修改成功,如没显示最新头像,请清除浏览器缓存');
  72. });
  73. }
  74. function _addbodykey(){
  75. $('body').keydown(function(e){
  76. var code = e.keyCode;
  77. if(code==27){
  78. var objt = $('div[tanbodynew]');
  79. if(objt.length>0){
  80. js.tanclose($(objt[objt.length-1]).attr('tanbodynew'));return false;
  81. }
  82. if(get('xpbg_bodydds')){
  83. js.tanclose($('#xpbg_bodydds').attr('xpbody'));
  84. }else{
  85. closenowtabs();
  86. }
  87. return false;
  88. }
  89. //弹出帮助
  90. if(code==113){
  91. js.confirm('是否打开查看关于['+nowtabs.name+']的帮助信息?',function(jg){
  92. if(jg=='yes')window.open('http://www.rockoa.com/view_'+nowtabs.num+'.html?title='+jm.base64encode(nowtabs.name)+'');
  93. });
  94. return false;
  95. }
  96. });
  97. }
  98. function openinput(name,num, id,cbal){
  99. if(!id)id='0';
  100. if(!cbal)cbal='';
  101. if(id.substr(0,1)=='0'){name='[新增]'+name+'';}else{name='[编辑]'+name+'';}
  102. var url='?a=lu&m=input&d=flow&num='+num+'&mid='+id+'';
  103. openxiangs(name, url,'', cbal);
  104. return false;
  105. }
  106. function openxiangs(name,num,id,cbal){
  107. if(!id)id=0;
  108. if(!cbal)cbal='';
  109. var url = 'task.php?a=p&num='+num+'&mid='+id+'';
  110. var jg = num.indexOf('?')>-1 ? '&' : '?';
  111. if(num.indexOf('?')>-1 || num.substr(0,4)=='http'){url=num+''+jg+'callback='+cbal+'';}else{url+='&callback='+cbal+'';}
  112. js.winiframe(name,url);
  113. return false;
  114. }
  115. function openxiang(num,id,cbal){
  116. var url = 'task.php?a=p&num='+num+'&mid='+id+'';
  117. if(cbal)url+='&callback='+cbal+'';
  118. js.open(url, 800,500);
  119. }
  120. //打开聊天会话
  121. function openchat(id, lx,face){
  122. try{if(nwjsgui){opener.openchat(id, lx,face);return;}}catch(e){}
  123. if(!lx)lx=0;var types=['user','group'];
  124. var sle = (types[lx]) ? types[lx] : lx;
  125. var url = '?d=reim&m=chat&uid='+id+'&type='+sle+'',csne={};
  126. if(face)csne.icon=face;
  127. var num = ''+sle+'_'+id+'';
  128. js.open(url, 480,500, num,{},csne);
  129. }
  130. function optmenuclass(o1,num,id,obj,mname,oi, cola){
  131. this.modenum = num;
  132. this.modename= mname;
  133. this.id = id;
  134. this.mid = id;
  135. this.tableobj=obj;
  136. this.oi = oi;
  137. this.obj = o1;
  138. this.columns= cola;
  139. this.optmenudatas= {};
  140. this.optobj = obj.options.optobj || {};
  141. var me = this;
  142. xrockcd={inputblur:function(){},selectdata:function(){js.msg('msg','此功能未开发')}}
  143. this._init=function(){
  144. if(typeof(optmenuobj)=='object')optmenuobj.remove();
  145. this.callbackstr = '';
  146. if(this.columns.callback)this.callbackstr=this.columns.callback;
  147. optmenuobj=$.rockmenu({
  148. data:[],
  149. itemsclick:function(d){me.showmenuclick(d);},
  150. width:150
  151. });
  152. var da = [{name:'详情',lx:998,nbo:false},{name:'详情(新窗口)',lx:998,nbo:true}];
  153. var off=$(this.obj).offset();
  154. var subdata = this.optmenudatas[''+this.modenum+'_'+this.id+''];
  155. if(!subdata){
  156. da.push({name:'<img src="images/loadings.gif" align="absmiddle"> 加载菜单中...',lx:999});
  157. this.loadoptnum();
  158. }else{
  159. for(i=0;i<subdata.length;i++)da.push(subdata[i]);
  160. }
  161. optmenuobj.setData(da);
  162. optmenuobj.showAt(off.left,off.top+20);
  163. };
  164. this.xiang=function(oi,nbo){
  165. var mnem=this.modename;
  166. if(!nbo){
  167. if(!mnem)mnem='详情';
  168. openxiangs(mnem,this.modenum,this.mid, this.callbackstr);
  169. }else{
  170. openxiang(this.modenum,this.mid, this.callbackstr);
  171. }
  172. };
  173. this.openedit=function(){
  174. openinput(this.modename,this.modenum,this.mid, this.callbackstr);
  175. };
  176. this.getupgurl=function(str){
  177. if(str.substr(0,4)=='http' || str.indexOf('|')==-1)return str;
  178. var a1 = str.split('|'),lx = a1[0],mk = a1[1],cs=a1[2];
  179. var url= '';
  180. if(lx=='add')url='?a=lu&m=input&d=flow&num='+mk+'';
  181. if(lx=='xiang')url='task.php?a=p&num='+mk+'';
  182. if(cs)url+='&'+cs;
  183. return url;
  184. };
  185. this.showmenuclick=function(d){
  186. d.num=this.modenum;d.mid=this.id;
  187. d.modenum = this.modenum;
  188. var lx = d.lx;if(!lx)lx=0;
  189. if(lx==999)return;
  190. if(lx==998){this.xiang(d.oi, d.nbo);return;}
  191. if(lx==997){this.printexcel(d.oi);return;}
  192. if(lx==996){this.xiang(d.oi, d.nbo);return;}
  193. if(lx==11){this.openedit();return;}
  194. this.changdatsss = d;
  195. if(lx==2 || lx==3 || lx==6){
  196. var clx='user';if(lx==3)clx='usercheck';
  197. if(lx==6)clx='deptusercheck';
  198. js.getuser({type:clx,title:d.name,callback:function(na,nid){me.changeuser(na,nid);}});
  199. return;
  200. }
  201. //打开新窗口
  202. if(lx==5){
  203. var upg = d.upgcont;
  204. if(isempt(upg)){
  205. js.msg('msg','没有设置打开的操作地址');
  206. }else{
  207. var url = this.getupgurl(upg);
  208. openxiangs(d.name, url,'', this.callbackstr);
  209. }
  210. return;
  211. }
  212. if(lx==7){
  213. var upg = d.upgcont;
  214. if(isempt(upg)){
  215. js.msg('msg','没有设置自定义方法');
  216. }else{
  217. var dxs = this.optobj[upg];
  218. if(!dxs)dxs = window[upg];
  219. if(!dxs){
  220. js.msg('msg','设置的方法“'+upg+'”不存在');
  221. }else{
  222. dxs(this.tableobj.getData(this.oi),d);
  223. }
  224. }
  225. return;
  226. }
  227. var nwsh = 'showfielsv_'+js.getrand()+'';
  228. var uostr= '<div align="left" style="padding:10px"><div id="'+nwsh+'" style="height:60px;overflow:auto" class="input"></div><input style="width:180px" id="'+nwsh+'_input" type="file"></div>';
  229. var bts = (d.issm==1)?'必填':'选填';
  230. if(d.optnum!=null && d.optnum.indexOf('noup')>-1)uostr='';
  231. if(!d.smcont)d.smcont='';
  232. if(lx==1 || lx==9 || lx==10 || lx==13 || lx==15 || lx==16 || lx==17 || lx==19){
  233. if(d.nup==1)uostr=''; //不需要上传文件
  234. js.prompt(d.name,'请输入['+d.name+']说明('+bts+'):',function(index, text){
  235. if(index=='yes'){
  236. if(!text && d.issm==1){
  237. js.msg('msg','没有输入['+d.name+']说明');
  238. }else{
  239. me.okchangevalue(d, text);
  240. }
  241. return true;
  242. }
  243. },d.smcont,'', uostr);
  244. this._uosschange(nwsh);
  245. return;
  246. }
  247. //提醒
  248. if(lx==14){
  249. openinput('提醒设置','remind',''+d.djmid+'&def_modenum='+this.modenum+'&def_mid='+this.mid+'&def_explain=basejm_'+jm.base64encode(d.smcont)+'', this.callbackstr);
  250. return;
  251. }
  252. //回执
  253. if(lx==18){
  254. openinput(d.name,'receipt',''+d.djmid+'&def_modenum='+this.modenum+'&def_mid='+this.mid+'&def_modename=basejm_'+jm.base64encode(d.modename)+'&def_explain=basejm_'+jm.base64encode(d.smcont)+'', this.callbackstr);
  255. return;
  256. }
  257. if(lx==4){
  258. js.prompt(d.name, '说明('+bts+'):', function(index, text){
  259. if(index=='yes'){
  260. if(!text && d.issm==1){
  261. js.msg('msg','没有输入['+d.name+']说明');
  262. }else{
  263. var ad=js.getformdata('myformsbc');
  264. for(var i in ad)d['fields_'+i+'']=ad[i];
  265. me.okchangevalue(d, text);
  266. }
  267. return true;
  268. }
  269. },'','<div align="left" id="showmenusss" style="padding:10px">加载中...</div>', uostr);
  270. var url='index.php?a=lus&m=input&d=flow&num='+d.modenum+'&menuid='+d.optmenuid+'&mid='+d.mid+'';
  271. $.get(url, function(s1){
  272. s1=s1.replace(/c\./gi, 'xrockcd.');
  273. var s='<form name="myformsbc">'+s1+'</form>';
  274. $('#showmenusss').html(s);
  275. js.resizetan('confirm');
  276. });
  277. this._uosschange(nwsh);
  278. return;
  279. }
  280. this.showmenuclicks(d,'');
  281. };
  282. this._uosschange=function(nwsh){
  283. this.fupobj = $.rockupload({
  284. autoup:false,
  285. fileview:nwsh,
  286. allsuccess:function(a,sid){
  287. me.upsuccessla(sid);
  288. }
  289. });
  290. $('#'+nwsh+'_input').change(function(){
  291. me.fupobj.change(this);
  292. });
  293. };
  294. this.upsuccessla=function(sid){
  295. var d = this.changdatsss;
  296. d.logfileid = sid;
  297. this.showmenuclicks(d, this.inputexplain);
  298. js.tanclose('confirm');
  299. };
  300. this.okchangevalue=function(d,text){
  301. this.changdatsss = d;
  302. this.inputexplain = text;
  303. this.fupobj.start();
  304. };
  305. this.changeuser=function(nas,sid){
  306. if(!sid)return;
  307. var d = this.changdatsss,sm='';
  308. d.changename = nas;
  309. d.changenameid = sid;
  310. this.showmenuclicks(d,sm);
  311. };
  312. this.showmenuclicks=function(d,sm){
  313. if(!sm)sm='';
  314. d.sm = sm;
  315. for(var i in d)if(d[i]==null)d[i]='';
  316. js.msg('wait','处理中...');
  317. js.ajax(js.getajaxurl('yyoptmenu','flowopt','flow'),d,function(ret){
  318. if(ret.code==200){
  319. me.optmenudatas[''+d.modenum+'_'+d.mid+'']=false;
  320. me.tableobj.reload();
  321. js.msg('success','处理成功');
  322. }else{
  323. js.msg('msg',ret.msg);
  324. }
  325. },'post,json');
  326. };
  327. this.loadoptnum=function(){
  328. js.ajax(js.getajaxurl('getoptnum','flowopt','flow'),{num:this.modenum,mid:this.id,bfrom:'hou'},function(ret){
  329. if(ret.code == 200){
  330. me.optmenudatas[''+me.modenum+'_'+me.id+''] = ret.data;
  331. me._init();
  332. }else{
  333. js.msg('msg',ret.msg);
  334. }
  335. },'get,json');
  336. };
  337. this._init();
  338. }
  339. js.getuser = function(cans){
  340. var can = js.apply({title:'读取人员',idobj:false,nameobj:false,value:'',type:'deptusercheck',callback:function(){}}, cans);
  341. can.onselect=can.callback;
  342. js.changeuser(false, can.type, can.title, can);
  343. }
  344. /**
  345. * type=0高级搜索使用,1设置自定义字段
  346. */
  347. var highdata={};
  348. function highsearchclass(options){
  349. var me = this;
  350. var cans = js.apply({'oncallback':function(){},'modenum':'','type':0}, options);
  351. for(var a in cans)this[a]=cans[a];
  352. this.init = function(){
  353. if(!this.modenum)return;
  354. if(this.type==0){
  355. js.tanbody('searchhigh','高级搜索', 450,300,{
  356. html:'<div id="searchhighhtml" style="height:200px;overflow:auto;"></div>',
  357. btn:[{text:'搜索'}],
  358. msg:'<a id="searchhigh_cz" href="javascript:;">[重置]</a> &nbsp; '
  359. });
  360. this.initfields();
  361. }
  362. if(this.type==1){
  363. js.tanbody('searchhigh','自定义列显示', 300,350,{
  364. html:'<div id="searchhighhtml" class="select-list" style="height:300px;overflow:auto;"></div>',
  365. btn:[{text:'确定'},{text:'清空',bgcolor:'#d9534f'}]
  366. });
  367. this.initfields();
  368. $('#searchhigh_btn1').click(function(){
  369. me.clearcolumn();
  370. });
  371. }
  372. $('#searchhigh_btn0').click(function(){
  373. me.queding();
  374. });
  375. $('#searchhigh_cz').click(function(){
  376. me.chongzhi();
  377. });
  378. };
  379. this.initfields=function(){
  380. if(this.type==1){
  381. var i,a=this.fieldsarr,b=this.fieldsselarr,len=a.length,str='',fid='columns_'+this.modenum+'_'+this.pnum+'',selstr='caozuo';
  382. if(this.isflow>0)selstr+=',base_name,base_deptname';
  383. for(i=0;i<len;i++){
  384. str+='<div class="div01"><label><input name="selfields" type="checkbox" value="'+a[i].fields+'">&nbsp;'+a[i].name+'('+a[i].fields+')</label></div>';
  385. if(a[i].islb==1)selstr+=','+a[i].fields+'';
  386. }
  387. str+='<div class="div01"><label><input name="selfields" type="checkbox" value="caozuo">&nbsp;操作列</label></div>';
  388. $('#searchhighhtml').html(str);
  389. if(b[fid])selstr=b[fid];
  390. selstr = ','+selstr+',';
  391. $('input[name=selfields]').each(function(){
  392. if(selstr.indexOf(','+this.value+',')>=0)this.checked=true;
  393. });
  394. this.columnsnum = fid;
  395. return;
  396. }
  397. $('#searchhighhtml').html('<div align="center" style="padding:10px">'+js.getmsg('加载中...')+'</div>');
  398. var fieldsat = this.getinitdata('fields');
  399. if(!fieldsat){
  400. var url = js.getajaxurl('getcolumns','mode_'+this.modenum+'|input','flow');
  401. js.ajax(url,{modenum:this.modenum},function(ret){
  402. me.searchhighshow(ret);
  403. },'get,json');
  404. }else{
  405. this.searchhighshow(fieldsat);
  406. }
  407. },
  408. this.getinitdata=function(lx){
  409. var d = highdata[this.modenum];
  410. if(!d)return false;
  411. return d[lx];
  412. };
  413. this.setinitdata=function(lx, da){
  414. if(!highdata[this.modenum])highdata[this.modenum]={};
  415. highdata[this.modenum][lx]=da;
  416. };
  417. this.searchhighshow=function(d){
  418. this.setinitdata('fields',d);
  419. var s = '<form name="highform"><table width="100%">',i,len=d.length,b;
  420. for(i=0;i<len;i++){
  421. b = d[i];
  422. s+='<tr>';
  423. s+='<td width="80" align="right"><font color="#555555">'+b.name+'</font></td>';
  424. s+='<td style="padding:5px">'+this.searchhighshowinput(b)+'</td>';
  425. s+='</tr>';
  426. }
  427. s+='</table></form>';
  428. $('#searchhighhtml').html(s);
  429. var obj = document['highform'],i,data=this.getinitdata('data'),na;
  430. if(!data)data={};
  431. for(i=0;i<obj.length;i++){
  432. $(obj[i]).blur(function(){
  433. me.saveformdata();
  434. }).keyup(function(e){
  435. if(e.keyCode==13)me.queding();
  436. });
  437. na = obj[i].name;
  438. if(data[na])obj[i].value=data[na];
  439. }
  440. };
  441. this.chongzhi=function(){
  442. document['highform'].reset();
  443. this.saveformdata();
  444. };
  445. this.searchhighshowinput=function(b){
  446. var type = b.fieldstype,name = 'soufields_'+b.fields+'';
  447. var s = '<input placeholder="关键词包含" type="text" class="inputs" name="'+name+'">';
  448. if(type=='date' || type=='datetime'){
  449. s='<input style="width:150px" onclick="js.datechange(this,\''+type+'\')" class="inputs datesss" readonly name="'+name+'_start"> 至 <input onclick="js.datechange(this,\''+type+'\')" style="width:150px" class="inputs datesss" readonly name="'+name+'_end"> ';
  450. }
  451. if(type=='month'){
  452. s='<input style="width:150px" onclick="js.datechange(this,\''+type+'\')" class="inputs datesss" readonly name="'+name+'">';
  453. }
  454. if(type=='number'){
  455. s='<input style="width:150px" type="number" onfocus="js.focusval=this.value" maxlength="10" onblur="js.number(this)" class="inputs" name="'+name+'_start"> 至 <input style="width:150px" type="number" onfocus="js.focusval=this.value" maxlength="10" onblur="js.number(this)" class="inputs" name="'+name+'_end"> ';
  456. }
  457. if(type=='select' || type=='rockcombo'){
  458. var i = 0,len=b.store.length;
  459. s='<select name="'+name+'" class="inputs">';
  460. s+='<option value="">-选择-</option>';
  461. for(i=0;i<len;i++){
  462. s+='<option value="'+b.store[i].value+'">'+b.store[i].name+'</option>';
  463. }
  464. s+='</select>';
  465. }
  466. return s;
  467. };
  468. this.setmsg=function(str){
  469. js.setmsg(str,'', 'msgview_searchhigh');
  470. };
  471. this.queding=function(){
  472. var d = '';
  473. if(this.type==0){
  474. d = this.saveformdata();
  475. this.oncallback(d);
  476. js.tanclose('searchhigh');
  477. }
  478. if(this.type==1){
  479. $('input[name=selfields]').each(function(){
  480. if(this.checked)d+=','+this.value+'';
  481. });
  482. if(d!='')d=d.substr(1);
  483. this.savecolunms(d);
  484. }
  485. };
  486. this.savecolunms=function(d){
  487. this.setmsg('保存中...');
  488. js.ajax(js.getajaxurl('savecolunms','flow','main'),{num:this.columnsnum,str:d,modeid:this.modeid},function(s){
  489. if(s=='ok'){
  490. js.msg('success','保存成功');
  491. me.oncallback(d);
  492. js.tanclose('searchhigh');
  493. }else{
  494. me.setmsg(s);
  495. }
  496. },'post');
  497. };
  498. this.clearcolumn=function(){
  499. this.savecolunms('');
  500. };
  501. this.saveformdata=function(){
  502. var d = js.getformdata('highform');
  503. this.setinitdata('data',d);
  504. return d;
  505. };
  506. this.init();
  507. }
  508. /**
  509. * 订阅
  510. */
  511. function classubscribe(options){
  512. var me = this;
  513. var cans = js.apply({'oncallback':function(){},title:'','params':{},objtable:false}, options);
  514. for(var a in cans)this[a]=cans[a];
  515. this._init = function(){
  516. if(!this.objtable){
  517. js.msg('msg','没指定一个表格无法设置订阅');
  518. return;
  519. }
  520. var cyrl = this.objtable.geturlparams(),cstr='',i,vsts,ostrs='';
  521. var cyrls = cyrl[1];
  522. cyrls.loadci=1;
  523. for(i in cyrls){
  524. vsts = cyrls[i];
  525. if(vsts || vsts=='0')cstr+='&'+i+'='+vsts+'';
  526. }
  527. cstr = cstr.substr(1);
  528. for(i in this.params){
  529. vsts = this.params[i];
  530. if(vsts || vsts=='0')ostrs+='&'+i+'='+vsts+'';
  531. }
  532. if(ostrs!='')ostrs=ostrs.substr(1);
  533. var h = $.bootsform({
  534. title:'订阅',height:500,width:500,tablename:'subscribe',isedit:0,
  535. params:{int_filestype:'status',otherfields:'optid={adminid},optname={admin},optdt={now}'},
  536. submitfields:'title,cont,explain,suburl,suburlpost',
  537. url:publicmodeurl('subscribe','publicsave'),beforesaveaction:'savebefore',
  538. items:[{
  539. labelText:'订阅名称',name:'title',required:true,value:this.title
  540. },{
  541. labelText:'订阅提醒内容',name:'cont',value:this.cont,type:'textarea',required:true,height:60
  542. },{
  543. labelText:'订阅参数',name:'suburlpost',type:'hidden',height:60,value:cstr
  544. },{
  545. labelText:'订阅地址',name:'suburl',type:'hidden',height:50,value:jm.base64encode(cyrl[0])
  546. },{
  547. labelText:'订阅参数',blankText:'根据参数获取数据如:key=关键词&month={month},乱写会导致预想不到的后果。',name:'suburlposts',type:'textarea',height:60,value:ostrs
  548. },{
  549. labelText:'说明',name:'explain',type:'textarea',height:50,value:this.explain
  550. },{
  551. name:'status',labelBox:'启用',type:'checkbox',checked:true
  552. }],
  553. success:function(){
  554. js.confirm('订阅成功,是否直接到我的订阅管理下添加订阅运行时间?',function(jg){
  555. if(jg=='yes')addtabs({url:'flow,page,subscribe,atype=my',name:'我订阅管理',num:'rssglmy','icons':'cog'});
  556. });
  557. me.oncallback();
  558. },
  559. submitcheck:function(d){
  560. var str = d.suburlpost;
  561. if(!isempt(d.suburlposts))str+='&'+d.suburlposts+'';
  562. str = jm.base64encode(str);
  563. return {'suburlpost':str};
  564. }
  565. });
  566. h.isValid();
  567. };
  568. this._init();
  569. }
  570. js.subscribe=function(csns){
  571. return new classubscribe(csns);
  572. }
  573. //自定义导出
  574. publicdaochuobjfarr = {};
  575. function publicdaochuobj(options){
  576. var me = this;
  577. var cans = js.apply({'oncallback':function(){},'modenum':'','modenames':'',modename:'',objtable:false,fieldsarr:[],btnobj:false,notdingyue:false}, options);
  578. for(var a in cans)this[a]=cans[a];
  579. this._init=function(){
  580. if(!this.btnobj || !this.objtable)return;
  581. if(!this.daochuobj)this.daochuobj=$.rockmenu({
  582. width:120,top:35,donghua:false,data:[],
  583. itemsclick:function(d, i){
  584. me.daonchuclick(d);
  585. }
  586. });
  587. var d = [{name:'导出全部',lx:0},{name:'导出当前页',lx:1},{name:'自定义列导出',lx:3}];
  588. if(!this.notdingyue)d.push({name:'订阅此列表',lx:2});
  589. d.push({name:'打印此列表',lx:4});
  590. this.daochuobj.setData(d);
  591. var lef = $(this.btnobj).offset();
  592. this.daochuobj.showAt(lef.left, lef.top+35);
  593. };
  594. this.daonchuclick=function(d){
  595. if(d.lx==0)this.objtable.exceldown();
  596. if(d.lx==1)this.objtable.exceldownnow();
  597. if(d.lx==2)this.subscribelist();
  598. if(d.lx==3)this.excelautoinit();
  599. if(d.lx==4)this.printlist();
  600. }
  601. this.printlist=function(){
  602. var rnd = this.objtable.printrnd;
  603. if(!rnd){
  604. rnd = 'table'+js.getrand();
  605. window[rnd] = this.objtable;
  606. this.objtable.printrnd = rnd;
  607. }
  608. window.open('?d=public&m=print&table='+rnd+'&modenum='+this.modenum+'&modename='+jm.base64encode(this.modename)+'');
  609. }
  610. this.subscribelist=function(){
  611. var name = nowtabs.name;
  612. if(this.modename!='')name=''+this.modename+'('+name+')';
  613. js.subscribe({
  614. title:name,
  615. cont:''+name+'的列表的',
  616. explain:'订阅['+name+']的列表',
  617. objtable:this.objtable
  618. });
  619. }
  620. this.excelautoinit=function(){
  621. if(this.fieldsarr.length==0){
  622. if(this.modenum!=''){
  623. if(publicdaochuobjfarr[this.modenum]){
  624. this.loadfarrshow(publicdaochuobjfarr[this.modenum]);
  625. }else{
  626. js.loading('读取字段中...');
  627. js.ajax(js.getajaxurl('getfields','flowopt','flow'),{'modenum':this.modenum}, function(ret){
  628. js.unloading();
  629. me.loadfarrshow(ret);
  630. },'get,json', function(st){
  631. js.msgerror(st);
  632. });
  633. }
  634. }else{
  635. var farr = this.objtable.getcolumns(),i,fars=[];
  636. for(i=0;i<farr.length;i++){
  637. if(!farr[i].notexcel)fars.push({
  638. 'fields':farr[i].dataIndex,
  639. 'name':farr[i].text,
  640. 'islb':'1'
  641. });
  642. }
  643. this.fieldsarr=fars;
  644. this.excelauto();
  645. }
  646. }else{
  647. this.excelauto();
  648. }
  649. }
  650. this.loadfarrshow=function(ret){
  651. var farr = ret.fieldsarr;
  652. publicdaochuobjfarr[this.modenum]=ret;
  653. this.fieldsarr=farr;
  654. this.isflow = ret.isflow;
  655. this.modenames = ret.modenames;
  656. this.excelauto();
  657. }
  658. this.excelauto=function(){
  659. if(this.fieldsarr.length==0){
  660. js.msg('msg','没有设置字段数据');
  661. return;
  662. }
  663. var dar=[],i,sdar;
  664. for(i in this.fieldsarr)dar.push(this.fieldsarr[i]);
  665. if(!isempt(this.modenames)){
  666. sdar = this.modenames.split(',');
  667. for(i in sdar)dar.push({'fields' : 'sub_table_'+i+'','name' : sdar[i]});
  668. }
  669. this.nowfieldsarr = dar;
  670. var str='<table width="100%"><tr>',len=dar.length,d1,sel,oi=0;
  671. for(i=0;i<len;i++){
  672. d1 = dar[i];
  673. if(this.isflow==0){
  674. if(d1.fields=='base_name' || d1.fields=='base_deptname' || d1.fields=='sericnum')continue;
  675. }
  676. oi++;
  677. sel = '';
  678. if(d1.islb==1)sel='checked';
  679. str+='<td width="25%" align="left"><label><input name="daochufields" value="'+i+'" '+sel+' type="checkbox">'+d1.name+'</label></td>';
  680. if(oi%4==0)str+='</tr><tr>';
  681. }
  682. str+='</tr></table>';
  683. str+='<div><label><input type="checkbox" onclick="js.selall(this,\'daochufields\')">全选</label>&nbsp;&nbsp;&nbsp;导出前&nbsp;<input type="number" class="form-control" id="daolimit" style="width:100px" min="1" value="1000">&nbsp;条记录</div>';
  684. js.tanbody('autoexceldao',''+this.modename+'自定义列导出',520,410,{
  685. html:'<div>'+str+'</div>',
  686. bodystyle:'padding:10px',
  687. btn:[{text:'确定'}]
  688. });
  689. $('#autoexceldao_btn0').click(function(){
  690. me.okdaochu();
  691. });
  692. }
  693. this.okdaochu=function(){
  694. var did = js.getchecked('daochufields');
  695. if(did==''){
  696. js.msg('msg','至少要选择一个列');
  697. return;
  698. }
  699. var dida = did.split(','),i,d1,str1='',str2='',str3='';
  700. for(i=0;i<dida.length;i++){
  701. d1 = this.nowfieldsarr[dida[i]];
  702. str1+=','+d1.name+'';
  703. str2+=','+d1.fields+'';
  704. if(d1.fields.indexOf('sub_table_')==0)str3+=','+d1.fields.substr(10)+'';
  705. }
  706. str1 = str1.substr(1);
  707. str2 = str2.substr(1);
  708. if(str3!='')str3 = str3.substr(1);
  709. this.objtable.exceldown('',2, {
  710. 'page':1,
  711. 'limit':get('daolimit').value,
  712. 'excelfields':str2,
  713. 'excelheader':str1,
  714. 'excelsubtab':str3
  715. });
  716. js.tanclose('autoexceldao');
  717. }
  718. this._init();
  719. }
  720. function pirnttablelist(d,na){
  721. var rnd = d.printrnd;
  722. if(!rnd){
  723. rnd = 'table'+js.getrand();
  724. window[rnd] = d;
  725. d.printrnd = rnd;
  726. }
  727. window.open('?d=public&m=print&table='+rnd+'&modename='+jm.base64encode(na)+'');
  728. }