indexpublic.js 26 KB

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