indexpublic.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780
  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. var me = this;
  141. xrockcd={inputblur:function(){},selectdata:function(){js.msg('msg','此功能未开发')}}
  142. this._init=function(){
  143. if(typeof(optmenuobj)=='object')optmenuobj.remove();
  144. this.callbackstr = '';
  145. if(this.columns.callback)this.callbackstr=this.columns.callback;
  146. optmenuobj=$.rockmenu({
  147. data:[],
  148. itemsclick:function(d){me.showmenuclick(d);},
  149. width:150
  150. });
  151. var da = [{name:'详情',lx:998,nbo:false},{name:'详情(新窗口)',lx:998,nbo:true}];
  152. var off=$(this.obj).offset();
  153. var subdata = this.optmenudatas[''+this.modenum+'_'+this.id+''];
  154. if(!subdata){
  155. da.push({name:'<img src="images/loadings.gif" align="absmiddle"> 加载菜单中...',lx:999});
  156. this.loadoptnum();
  157. }else{
  158. for(i=0;i<subdata.length;i++)da.push(subdata[i]);
  159. }
  160. optmenuobj.setData(da);
  161. optmenuobj.showAt(off.left,off.top+20);
  162. };
  163. this.xiang=function(oi,nbo){
  164. var mnem=this.modename;
  165. if(!nbo){
  166. if(!mnem)mnem='详情';
  167. openxiangs(mnem,this.modenum,this.mid, this.callbackstr);
  168. }else{
  169. openxiang(this.modenum,this.mid, this.callbackstr);
  170. }
  171. };
  172. this.openedit=function(){
  173. openinput(this.modename,this.modenum,this.mid, this.callbackstr);
  174. };
  175. this.getupgurl=function(str){
  176. if(str.substr(0,4)=='http' || str.indexOf('|')==-1)return str;
  177. var a1 = str.split('|'),lx = a1[0],mk = a1[1],cs=a1[2];
  178. var url= '';
  179. if(lx=='add')url='?a=lu&m=input&d=flow&num='+mk+'';
  180. if(lx=='xiang')url='task.php?a=p&num='+mk+'';
  181. if(cs)url+='&'+cs;
  182. return url;
  183. };
  184. this.showmenuclick=function(d){
  185. d.num=this.modenum;d.mid=this.id;
  186. d.modenum = this.modenum;
  187. var lx = d.lx;if(!lx)lx=0;
  188. if(lx==999)return;
  189. if(lx==998){this.xiang(d.oi, d.nbo);return;}
  190. if(lx==997){this.printexcel(d.oi);return;}
  191. if(lx==996){this.xiang(d.oi, d.nbo);return;}
  192. if(lx==11){this.openedit();return;}
  193. this.changdatsss = d;
  194. if(lx==2 || lx==3 || lx==6){
  195. var clx='user';if(lx==3)clx='usercheck';
  196. if(lx==6)clx='deptusercheck';
  197. js.getuser({type:clx,title:d.name,callback:function(na,nid){me.changeuser(na,nid);}});
  198. return;
  199. }
  200. //打开新窗口
  201. if(lx==5){
  202. var upg = d.upgcont;
  203. if(isempt(upg)){
  204. js.msg('msg','没有设置打开的操作地址');
  205. }else{
  206. var url = this.getupgurl(upg);
  207. openxiangs(d.name, url,'', this.callbackstr);
  208. }
  209. return;
  210. }
  211. if(lx==7){
  212. var upg = d.upgcont;
  213. if(isempt(upg)){
  214. js.msg('msg','没有设置自定义方法');
  215. }else{
  216. if(!window[upg]){
  217. js.msg('msg','设置的方法“'+upg+'”不存在');
  218. }else{
  219. var xda = this.tableobj.getData(this.oi);
  220. window[upg](xda,d);
  221. }
  222. }
  223. return;
  224. }
  225. var nwsh = 'showfielsv_'+js.getrand()+'';
  226. 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>';
  227. var bts = (d.issm==1)?'必填':'选填';
  228. if(d.optnum!=null && d.optnum.indexOf('noup')>-1)uostr='';
  229. if(!d.smcont)d.smcont='';
  230. if(lx==1 || lx==9 || lx==10 || lx==13 || lx==15 || lx==16 || lx==17){
  231. if(d.nup==1)uostr=''; //不需要上传文件
  232. js.prompt(d.name,'请输入['+d.name+']说明('+bts+'):',function(index, text){
  233. if(index=='yes'){
  234. if(!text && d.issm==1){
  235. js.msg('msg','没有输入['+d.name+']说明');
  236. }else{
  237. me.okchangevalue(d, text);
  238. }
  239. return true;
  240. }
  241. },d.smcont,'', uostr);
  242. this._uosschange(nwsh);
  243. return;
  244. }
  245. //提醒
  246. if(lx==14){
  247. openinput('提醒设置','remind',''+d.djmid+'&def_modenum='+this.modenum+'&def_mid='+this.mid+'&def_explain=basejm_'+jm.base64encode(d.smcont)+'', this.callbackstr);
  248. return;
  249. }
  250. //回执
  251. if(lx==18){
  252. 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);
  253. return;
  254. }
  255. if(lx==4){
  256. js.prompt(d.name, '说明('+bts+'):', function(index, text){
  257. if(index=='yes'){
  258. var ad=js.getformdata('myformsbc');
  259. for(var i in ad)d['fields_'+i+'']=ad[i];
  260. me.okchangevalue(d, text);
  261. return true;
  262. }
  263. },'','<div align="left" id="showmenusss" style="padding:10px">加载中...</div>', uostr);
  264. var url='index.php?a=lus&m=input&d=flow&num='+d.modenum+'&menuid='+d.optmenuid+'&mid='+d.mid+'';
  265. $.get(url, function(s1){
  266. s1=s1.replace(/c\./gi, 'xrockcd.');
  267. var s='<form name="myformsbc">'+s1+'</form>';
  268. $('#showmenusss').html(s);
  269. js.resizetan('confirm');
  270. });
  271. this._uosschange(nwsh);
  272. return;
  273. }
  274. this.showmenuclicks(d,'');
  275. };
  276. this._uosschange=function(nwsh){
  277. this.fupobj = $.rockupload({
  278. autoup:false,
  279. fileview:nwsh,
  280. allsuccess:function(a,sid){
  281. me.upsuccessla(sid);
  282. }
  283. });
  284. $('#'+nwsh+'_input').change(function(){
  285. me.fupobj.change(this);
  286. });
  287. };
  288. this.upsuccessla=function(sid){
  289. var d = this.changdatsss;
  290. d.logfileid = sid;
  291. this.showmenuclicks(d, this.inputexplain);
  292. js.tanclose('confirm');
  293. };
  294. this.okchangevalue=function(d,text){
  295. this.changdatsss = d;
  296. this.inputexplain = text;
  297. this.fupobj.start();
  298. };
  299. this.changeuser=function(nas,sid){
  300. if(!sid)return;
  301. var d = this.changdatsss,sm='';
  302. d.changename = nas;
  303. d.changenameid = sid;
  304. this.showmenuclicks(d,sm);
  305. };
  306. this.showmenuclicks=function(d,sm){
  307. if(!sm)sm='';
  308. d.sm = sm;
  309. for(var i in d)if(d[i]==null)d[i]='';
  310. js.msg('wait','处理中...');
  311. js.ajax(js.getajaxurl('yyoptmenu','flowopt','flow'),d,function(ret){
  312. if(ret.code==200){
  313. me.optmenudatas[''+d.modenum+'_'+d.mid+'']=false;
  314. me.tableobj.reload();
  315. js.msg('success','处理成功');
  316. }else{
  317. js.msg('msg',ret.msg);
  318. }
  319. },'post,json');
  320. };
  321. this.loadoptnum=function(){
  322. js.ajax(js.getajaxurl('getoptnum','flowopt','flow'),{num:this.modenum,mid:this.id,bfrom:'hou'},function(ret){
  323. if(ret.code == 200){
  324. me.optmenudatas[''+me.modenum+'_'+me.id+''] = ret.data;
  325. me._init();
  326. }else{
  327. js.msg('msg',ret.msg);
  328. }
  329. },'get,json');
  330. };
  331. this._init();
  332. }
  333. js.getuser = function(cans){
  334. var can = js.apply({title:'读取人员',idobj:false,nameobj:false,value:'',type:'deptusercheck',callback:function(){}}, cans);
  335. can.onselect=can.callback;
  336. js.changeuser(false, can.type, can.title, can);
  337. }
  338. /**
  339. * type=0高级搜索使用,1设置自定义字段
  340. */
  341. var highdata={};
  342. function highsearchclass(options){
  343. var me = this;
  344. var cans = js.apply({'oncallback':function(){},'modenum':'','type':0}, options);
  345. for(var a in cans)this[a]=cans[a];
  346. this.init = function(){
  347. if(!this.modenum)return;
  348. if(this.type==0){
  349. js.tanbody('searchhigh','高级搜索', 450,300,{
  350. html:'<div id="searchhighhtml" style="height:200px;overflow:auto;"></div>',
  351. btn:[{text:'搜索'}],
  352. msg:'<a id="searchhigh_cz" href="javascript:;">[重置]</a> &nbsp; '
  353. });
  354. this.initfields();
  355. }
  356. if(this.type==1){
  357. js.tanbody('searchhigh','自定义列显示', 300,350,{
  358. html:'<div id="searchhighhtml" class="select-list" style="height:300px;overflow:auto;"></div>',
  359. btn:[{text:'确定'}]
  360. });
  361. this.initfields();
  362. }
  363. $('#searchhigh_btn0').click(function(){
  364. me.queding();
  365. });
  366. $('#searchhigh_cz').click(function(){
  367. me.chongzhi();
  368. });
  369. };
  370. this.initfields=function(){
  371. if(this.type==1){
  372. var i,a=this.fieldsarr,b=this.fieldsselarr,len=a.length,str='',fid='columns_'+this.modenum+'_'+this.pnum+'',selstr='caozuo';
  373. if(this.isflow>0)selstr+=',base_name,base_deptname';
  374. for(i=0;i<len;i++){
  375. str+='<div class="div01"><label><input name="selfields" type="checkbox" value="'+a[i].fields+'">&nbsp;'+a[i].name+'('+a[i].fields+')</label></div>';
  376. if(a[i].islb==1)selstr+=','+a[i].fields+'';
  377. }
  378. str+='<div class="div01"><label><input name="selfields" type="checkbox" value="caozuo">&nbsp;操作列</label></div>';
  379. $('#searchhighhtml').html(str);
  380. if(b[fid])selstr=b[fid];
  381. selstr = ','+selstr+',';
  382. $('input[name=selfields]').each(function(){
  383. if(selstr.indexOf(','+this.value+',')>=0)this.checked=true;
  384. });
  385. this.columnsnum = fid;
  386. return;
  387. }
  388. $('#searchhighhtml').html('<div align="center" style="padding:10px">'+js.getmsg('加载中...')+'</div>');
  389. var fieldsat = this.getinitdata('fields');
  390. if(!fieldsat){
  391. var url = js.getajaxurl('getcolumns','mode_'+this.modenum+'|input','flow');
  392. js.ajax(url,{modenum:this.modenum},function(ret){
  393. me.searchhighshow(ret);
  394. },'get,json');
  395. }else{
  396. this.searchhighshow(fieldsat);
  397. }
  398. },
  399. this.getinitdata=function(lx){
  400. var d = highdata[this.modenum];
  401. if(!d)return false;
  402. return d[lx];
  403. };
  404. this.setinitdata=function(lx, da){
  405. if(!highdata[this.modenum])highdata[this.modenum]={};
  406. highdata[this.modenum][lx]=da;
  407. };
  408. this.searchhighshow=function(d){
  409. this.setinitdata('fields',d);
  410. var s = '<form name="highform"><table width="100%">',i,len=d.length,b;
  411. for(i=0;i<len;i++){
  412. b = d[i];
  413. s+='<tr>';
  414. s+='<td width="80" align="right"><font color="#555555">'+b.name+'</font></td>';
  415. s+='<td style="padding:5px">'+this.searchhighshowinput(b)+'</td>';
  416. s+='</tr>';
  417. }
  418. s+='</table></form>';
  419. $('#searchhighhtml').html(s);
  420. var obj = document['highform'],i,data=this.getinitdata('data'),na;
  421. if(!data)data={};
  422. for(i=0;i<obj.length;i++){
  423. $(obj[i]).blur(function(){
  424. me.saveformdata();
  425. }).keyup(function(e){
  426. if(e.keyCode==13)me.queding();
  427. });
  428. na = obj[i].name;
  429. if(data[na])obj[i].value=data[na];
  430. }
  431. };
  432. this.chongzhi=function(){
  433. document['highform'].reset();
  434. this.saveformdata();
  435. };
  436. this.searchhighshowinput=function(b){
  437. var type = b.fieldstype,name = 'soufields_'+b.fields+'';
  438. var s = '<input placeholder="关键词包含" type="text" class="inputs" name="'+name+'">';
  439. if(type=='date' || type=='datetime'){
  440. 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"> ';
  441. }
  442. if(type=='month'){
  443. s='<input style="width:150px" onclick="js.datechange(this,\''+type+'\')" class="inputs datesss" readonly name="'+name+'">';
  444. }
  445. if(type=='number'){
  446. 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"> ';
  447. }
  448. if(type=='select' || type=='rockcombo'){
  449. var i = 0,len=b.store.length;
  450. s='<select name="'+name+'" class="inputs">';
  451. s+='<option value="">-选择-</option>';
  452. for(i=0;i<len;i++){
  453. s+='<option value="'+b.store[i].value+'">'+b.store[i].name+'</option>';
  454. }
  455. s+='</select>';
  456. }
  457. return s;
  458. };
  459. this.setmsg=function(str){
  460. js.setmsg(str,'', 'msgview_searchhigh');
  461. };
  462. this.queding=function(){
  463. var d = '';
  464. if(this.type==0){
  465. d = this.saveformdata();
  466. this.oncallback(d);
  467. js.tanclose('searchhigh');
  468. }
  469. if(this.type==1){
  470. $('input[name=selfields]').each(function(){
  471. if(this.checked)d+=','+this.value+'';
  472. });
  473. if(d!='')d=d.substr(1);
  474. this.setmsg('保存中...');
  475. js.ajax(js.getajaxurl('savecolunms','flow','main'),{num:this.columnsnum,str:d,modeid:this.modeid},function(s){
  476. if(s=='ok'){
  477. js.msg('success','保存成功');
  478. me.oncallback(d);
  479. js.tanclose('searchhigh');
  480. }else{
  481. me.setmsg(s);
  482. }
  483. },'post');
  484. }
  485. };
  486. this.saveformdata=function(){
  487. var d = js.getformdata('highform');
  488. this.setinitdata('data',d);
  489. return d;
  490. };
  491. this.init();
  492. }
  493. /**
  494. * 订阅
  495. */
  496. function classubscribe(options){
  497. var me = this;
  498. var cans = js.apply({'oncallback':function(){},title:'','params':{},objtable:false}, options);
  499. for(var a in cans)this[a]=cans[a];
  500. this._init = function(){
  501. if(!this.objtable){
  502. js.msg('msg','没指定一个表格无法设置订阅');
  503. return;
  504. }
  505. var cyrl = this.objtable.geturlparams(),cstr='',i,vsts,ostrs='';
  506. var cyrls = cyrl[1];
  507. cyrls.loadci=1;
  508. for(i in cyrls){
  509. vsts = cyrls[i];
  510. if(vsts || vsts=='0')cstr+='&'+i+'='+vsts+'';
  511. }
  512. cstr = cstr.substr(1);
  513. for(i in this.params){
  514. vsts = this.params[i];
  515. if(vsts || vsts=='0')ostrs+='&'+i+'='+vsts+'';
  516. }
  517. if(ostrs!='')ostrs=ostrs.substr(1);
  518. var h = $.bootsform({
  519. title:'订阅',height:500,width:500,tablename:'subscribe',isedit:0,
  520. params:{int_filestype:'status',otherfields:'optid={adminid},optname={admin},optdt={now}'},
  521. submitfields:'title,cont,explain,suburl,suburlpost',
  522. url:publicmodeurl('subscribe','publicsave'),beforesaveaction:'savebefore',
  523. items:[{
  524. labelText:'订阅名称',name:'title',required:true,value:this.title
  525. },{
  526. labelText:'订阅提醒内容',name:'cont',value:this.cont,type:'textarea',required:true,height:60
  527. },{
  528. labelText:'订阅参数',name:'suburlpost',type:'hidden',height:60,value:cstr
  529. },{
  530. labelText:'订阅地址',name:'suburl',type:'hidden',height:50,value:jm.base64encode(cyrl[0])
  531. },{
  532. labelText:'订阅参数',blankText:'根据参数获取数据如:key=关键词&month={month},乱写会导致预想不到的后果。',name:'suburlposts',type:'textarea',height:60,value:ostrs
  533. },{
  534. labelText:'说明',name:'explain',type:'textarea',height:50,value:this.explain
  535. },{
  536. name:'status',labelBox:'启用',type:'checkbox',checked:true
  537. }],
  538. success:function(){
  539. js.confirm('订阅成功,是否直接到我的订阅管理下添加订阅运行时间?',function(jg){
  540. if(jg=='yes')addtabs({url:'flow,page,subscribe,atype=my',name:'我订阅管理',num:'rssglmy','icons':'cog'});
  541. });
  542. me.oncallback();
  543. },
  544. submitcheck:function(d){
  545. var str = d.suburlpost;
  546. if(!isempt(d.suburlposts))str+='&'+d.suburlposts+'';
  547. str = jm.base64encode(str);
  548. return {'suburlpost':str};
  549. }
  550. });
  551. h.isValid();
  552. };
  553. this._init();
  554. }
  555. js.subscribe=function(csns){
  556. return new classubscribe(csns);
  557. }
  558. //自定义导出
  559. publicdaochuobjfarr = {};
  560. function publicdaochuobj(options){
  561. var me = this;
  562. var cans = js.apply({'oncallback':function(){},'modenum':'','modenames':'',modename:'',objtable:false,fieldsarr:[],btnobj:false,notdingyue:false}, options);
  563. for(var a in cans)this[a]=cans[a];
  564. this._init=function(){
  565. if(!this.btnobj || !this.objtable)return;
  566. if(!this.daochuobj)this.daochuobj=$.rockmenu({
  567. width:120,top:35,donghua:false,data:[],
  568. itemsclick:function(d, i){
  569. me.daonchuclick(d);
  570. }
  571. });
  572. var d = [{name:'导出全部',lx:0},{name:'导出当前页',lx:1},{name:'自定义列导出',lx:3}];
  573. if(!this.notdingyue)d.push({name:'订阅此列表',lx:2});
  574. this.daochuobj.setData(d);
  575. var lef = $(this.btnobj).offset();
  576. this.daochuobj.showAt(lef.left, lef.top+35);
  577. };
  578. this.daonchuclick=function(d){
  579. if(d.lx==0)this.objtable.exceldown();
  580. if(d.lx==1)this.objtable.exceldownnow();
  581. if(d.lx==2)this.subscribelist();
  582. if(d.lx==3)this.excelautoinit();
  583. }
  584. this.subscribelist=function(){
  585. var name = nowtabs.name;
  586. if(this.modename!='')name=''+this.modename+'('+name+')';
  587. js.subscribe({
  588. title:name,
  589. cont:''+name+'的列表的',
  590. explain:'订阅['+name+']的列表',
  591. objtable:this.objtable
  592. });
  593. }
  594. this.excelautoinit=function(){
  595. if(this.fieldsarr.length==0){
  596. if(this.modenum!=''){
  597. if(publicdaochuobjfarr[this.modenum]){
  598. this.loadfarrshow(publicdaochuobjfarr[this.modenum]);
  599. }else{
  600. js.loading('读取字段中...');
  601. js.ajax(js.getajaxurl('getfields','flowopt','flow'),{'modenum':this.modenum}, function(ret){
  602. js.unloading();
  603. me.loadfarrshow(ret);
  604. },'get,json', function(st){
  605. js.msgerror(st);
  606. });
  607. }
  608. }else{
  609. var farr = this.objtable.getcolumns(),i,fars=[];
  610. for(i=0;i<farr.length;i++){
  611. if(!farr[i].notexcel)fars.push({
  612. 'fields':farr[i].dataIndex,
  613. 'name':farr[i].text,
  614. 'islb':'1'
  615. });
  616. }
  617. this.fieldsarr=fars;
  618. this.excelauto();
  619. }
  620. }else{
  621. this.excelauto();
  622. }
  623. }
  624. this.loadfarrshow=function(ret){
  625. var farr = ret.fieldsarr;
  626. publicdaochuobjfarr[this.modenum]=ret;
  627. this.fieldsarr=farr;
  628. this.isflow = ret.isflow;
  629. this.modenames = ret.modenames;
  630. this.excelauto();
  631. }
  632. this.excelauto=function(){
  633. if(this.fieldsarr.length==0){
  634. js.msg('msg','没有设置字段数据');
  635. return;
  636. }
  637. var dar=[],i,sdar;
  638. for(i in this.fieldsarr)dar.push(this.fieldsarr[i]);
  639. if(!isempt(this.modenames)){
  640. sdar = this.modenames.split(',');
  641. for(i in sdar)dar.push({'fields' : 'sub_table_'+i+'','name' : sdar[i]});
  642. }
  643. this.nowfieldsarr = dar;
  644. var str='<table width="100%"><tr>',len=dar.length,d1,sel,oi=0;
  645. for(i=0;i<len;i++){
  646. d1 = dar[i];
  647. if(this.isflow==0){
  648. if(d1.fields=='base_name' || d1.fields=='base_deptname' || d1.fields=='sericnum')continue;
  649. }
  650. oi++;
  651. sel = '';
  652. if(d1.islb==1)sel='checked';
  653. str+='<td width="25%" align="left"><label><input name="daochufields" value="'+i+'" '+sel+' type="checkbox">'+d1.name+'</label></td>';
  654. if(oi%4==0)str+='</tr><tr>';
  655. }
  656. str+='</tr></table>';
  657. 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>';
  658. js.tanbody('autoexceldao',''+this.modename+'自定义列导出',520,410,{
  659. html:'<div>'+str+'</div>',
  660. bodystyle:'padding:10px',
  661. btn:[{text:'确定'}]
  662. });
  663. $('#autoexceldao_btn0').click(function(){
  664. me.okdaochu();
  665. });
  666. }
  667. this.okdaochu=function(){
  668. var did = js.getchecked('daochufields');
  669. if(did==''){
  670. js.msg('msg','至少要选择一个列');
  671. return;
  672. }
  673. var dida = did.split(','),i,d1,str1='',str2='',str3='';
  674. for(i=0;i<dida.length;i++){
  675. d1 = this.nowfieldsarr[dida[i]];
  676. str1+=','+d1.name+'';
  677. str2+=','+d1.fields+'';
  678. if(d1.fields.indexOf('sub_table_')==0)str3+=','+d1.fields.substr(10)+'';
  679. }
  680. str1 = str1.substr(1);
  681. str2 = str2.substr(1);
  682. if(str3!='')str3 = str3.substr(1);
  683. this.objtable.exceldown('',2, {
  684. 'page':1,
  685. 'limit':get('daolimit').value,
  686. 'excelfields':str2,
  687. 'excelheader':str1,
  688. 'excelsubtab':str3
  689. });
  690. js.tanclose('autoexceldao');
  691. }
  692. this._init();
  693. }
  694. //重写js.tanbody
  695. /*
  696. if(homestyle==222){
  697. js.winiframemax = 120;
  698. js.tanbody=function(act,title,w,h,can1){
  699. this.tanbodyindex++;
  700. var can = js.applyIf(can1,{html:'',msg:'',showfun:function(){},bodystyle:'',guanact:'',titlecls:'',btn:[]});
  701. var l=(winWb()-w-50)*0.5,t=(winHb()-h-50)*0.5;
  702. var s = '';
  703. var mid = ''+act+'_main';
  704. $('#'+mid+'').remove();
  705. var heis='';
  706. if(can.bodyheight)heis='height:'+can.bodyheight+';overflow:auto;';
  707. var s = '<div class="modal" id="'+mid+'" tabindex="-1" role="dialog" style="left:3px;top:'+t+'px" aria-labelledby="myModalLabel">';
  708. s+='<div id="xpbg_bodydds" xpbody="'+act+'" class="modal-dialog" style="width:'+w+'px;margin:0px auto" role="document">';
  709. s+=' <div class="modal-content">';
  710. s+=' <div class="modal-header" >';
  711. s+=' <button id="'+act+'_spancancel" type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>';
  712. s+=' <h4 onmousedown="js.move(\''+mid+'\')" class="modal-title">'+title+'</h4>';
  713. s+=' </div>';
  714. s+=' <div class="modal-body" style="padding:0px;'+heis+';'+can.bodystyle+'" id="'+act+'_body">'+can.html+'</div>';
  715. s+=' <div id="'+act+'_bbar" class="modal-footer" align="right"><span id="msgview_'+act+'">'+can.msg+'</span>&nbsp;';
  716. for(var i=0; i<can.btn.length; i++){
  717. var a = can.btn[i];
  718. s+='<button class="btn btn-success" id="'+act+'_btn'+i+'" onclick="return false">';
  719. if(!isempt(a.icons))s+='<i class="icon-'+a.icons+'"></i>&nbsp; ';
  720. s+=''+a.text+'</button>&nbsp; ';
  721. }
  722. s+=' <button class="btn btn-default" id="'+act+'_cancel" onclick="return js.tanclose(\''+act+'\',\''+can.guanact+'\')">取消</button>';
  723. s+=' </div>';
  724. s+=' </div>';
  725. s+=' </div>';
  726. s+='</div>';
  727. $('body').append(s);
  728. if(can.closed=='none'){
  729. $('#'+act+'_bbar').remove();
  730. $('#'+act+'_spancancel').remove();
  731. }
  732. if(can.bbar=='none')$('#'+act+'_bbar').remove();
  733. this.modalobj = $('#'+mid+'').modal({'keyboard':false,'show':true,'backdrop':'static'});
  734. this.modalobj.on('hidden.bs.modal',function(){
  735. $('#'+mid+'').remove();
  736. });
  737. this.tanoffset(act);
  738. can.showfun(act);
  739. }
  740. js.tanclose=function(act, guan){
  741. $('#'+act+'_main').remove();
  742. $($('.modal-backdrop')[0]).remove();
  743. js.xpbody(act,'none');
  744. return false;
  745. }
  746. js.tanoffset=function(act){
  747. var mid=''+act+'_main';
  748. var lh=$('#'+mid+'').find('div[xpbody]').height(),l,t;
  749. t=(winHb()-lh-20)*0.5;
  750. if(t<0)t=1;
  751. $('#'+mid+'').css({'top':''+t+'px'});
  752. }
  753. }
  754. */