input.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935
  1. /**
  2. * createname:信呼开发团队-雨中磐石
  3. * homeurl:http://www.rockoa.com/
  4. * Copyright (c) 2016 rainrock
  5. * Date:2016-01-01
  6. * remark:本文件页面是系统公共录入页面上主要js文件,处理录入页面上交互设计,公式计算等。
  7. xh
  8. xhxh
  9. xh xh xh xh
  10. xhh xhxhxhxhxh xhxhxh xhxhxxh
  11. xhxh xhxhxhxh xh xh xhxhxhxhxhxhxh
  12. xh xh xhxhxhxhxh xhxhxh xh
  13. xh xh
  14. xh xhxhxhxhxh xh
  15. xh xh xh xh
  16. xh xh xh xh
  17. xh xhxhxhxhxh xhxh
  18. */
  19. var ismobile=0,firstrs={},alldata={},isxiang=0,
  20. submitparams={},//要提交提交的参数
  21. subdataminlen=[];//子表至少行数
  22. function initbodys(){};
  23. function initother(){};
  24. function savesuccess(){};
  25. function saveerror(){};
  26. function eventaddsubrows(){}
  27. function eventdelsubrows(){}
  28. function geturlact(act,cns){
  29. var url=js.getajaxurl(act,'mode_'+moders.num+'|input','flow',cns);
  30. return url;
  31. }
  32. function initbody(){
  33. modenum = moders.num;
  34. js.tanstyle = 1;
  35. js.importjs('webmain/flow/input/inputjs/input_two.js?'+Math.random()+'', function(){
  36. for(var oi in inputtwo)c[oi]=inputtwo[oi];
  37. initbody_tmp();
  38. });
  39. if(get('flow5div'))js.importjs('webmain/flow/input/inputjs/input_twp.js?'+Math.random()+'', function(){
  40. for(var oj in inputtwp)c[oj]=inputtwp[oj];
  41. c.flow5init();
  42. });
  43. }
  44. function initbody_tmp(){
  45. initother();
  46. $('body').keydown(function(et){
  47. var code = et.keyCode;
  48. if(code==27){
  49. c.close();
  50. return false;
  51. }
  52. if(et.altKey){
  53. if(code == 83){
  54. get('AltS').click();
  55. return false;
  56. }
  57. }
  58. });
  59. var len = arr.length,i,fid,nfid='',flx,lhtbo=[];
  60. for(i=0;i<len;i++){
  61. fid=arr[i].fields;
  62. flx=arr[i].fieldstype;
  63. if(arr[i].islu=='1' && arr[i].iszb=='0'){
  64. if(flx=='checkboxall')fid+='[]';
  65. if(fid.indexOf('temp_')!=0 && !form(fid)){
  66. nfid+='\n('+fid+'.'+arr[i].name+')';
  67. }
  68. if(flx=='htmlediter')lhtbo.push(arr[i].fields);
  69. }
  70. }
  71. if(nfid!=''){
  72. js.alert('缺少必要的字段:'+nfid+',请重新布局录入页');
  73. return;
  74. }
  75. c.initsubtable();
  76. if(lhtbo.length>0){
  77. js.importjs('mode/kindeditor/kindeditor-min.js', function(){
  78. for(var i=0;i<lhtbo.length;i++)c.htmlediter(lhtbo[i]);
  79. c.showdata();
  80. });
  81. }else{
  82. c.showdata();
  83. }
  84. if(ismobile==1)f.fileobj = $.rockupload({
  85. autoup:false,
  86. fileview:'view_fileidview',
  87. allsuccess:function(){
  88. c.saveken();
  89. }
  90. });
  91. $('#view_fileidview').click(function(){c.loadicons()});
  92. }
  93. function changesubmit(d){};
  94. function changesubmitbefore(){};
  95. //函数触发
  96. function oninputblur(name,zb,obj,zbxu,row){};
  97. var f={
  98. change:function(o1){
  99. f.fileobj.change(o1);
  100. }
  101. };
  102. js.apiurl = function(m,a,cans){
  103. var url=''+apiurl+'api.php?m='+m+'&a='+a+'&adminid='+adminid+'';
  104. var cfrom='mweb';
  105. url+='&device='+device+'';
  106. url+='&cfrom='+cfrom+'';
  107. url+='&token='+token+'';
  108. if(!cans)cans={};
  109. for(var i in cans)url+='&'+i+'='+cans[i]+'';
  110. return url;
  111. }
  112. //选择人员前处理
  113. js.changeuser_before=function(na){
  114. if(na=='sys_nextcoursename'){
  115. var fw = '',o = form('sys_nextcourseid');
  116. if(o){
  117. if(o.value==''){o.focus();return '请先选择下步处理步骤'};
  118. var o1= o.options[o.selectedIndex];
  119. fw = $(o1).attr('changerange');
  120. return {'changerange':fw};
  121. }
  122. }
  123. return c.changeuser_before(na);
  124. }
  125. var c={
  126. //可重写的方法
  127. onselectdata:{},
  128. onselectdataall:function(){},
  129. changeuser_before:function(){},
  130. onselectdatabefore:function(){},
  131. htmlediteritems:function(){},
  132. uploadback:function(){},
  133. uploadfileibefore:function(){},
  134. onselectmap:function(){},
  135. callback:function(cs, msg){
  136. var calb = js.request('callback');
  137. if(ismobile==1 && js.msgok)js.msgok(msg, function(){js.back()},1);
  138. if(!calb){
  139. if(ismobile==0){
  140. try{parent.js.msgok(msg);}catch(e){}
  141. try{parent.bootstableobj[moders.num].reload();}catch(e){}
  142. try{parent.js.tanclose('winiframe');}catch(e){}
  143. }
  144. return;
  145. }
  146. try{parent[calb](cs);}catch(e){}
  147. try{opener[calb](cs);}catch(e){}
  148. try{parent.js.msgok(msg);}catch(e){}
  149. try{parent.js.tanclose('winiframe');}catch(e){}
  150. },
  151. save:function(){
  152. var d = this.savesss();
  153. if(!d)return;
  154. if(ismobile==1){
  155. js.msg('wait','保存中...');
  156. get('AltS').disabled=true;
  157. f.fileobj.start();
  158. }else{
  159. this.saveken();
  160. }
  161. },
  162. saveken:function(){
  163. var d = this.savesss();
  164. if(!d)return;
  165. this.saveok(d);
  166. },
  167. showtx:function(msg, fid){
  168. js.setmsg(msg);
  169. if(ismobile==1)js.msg('msg', msg);
  170. if(fid && form(fid))form(fid).focus();
  171. },
  172. changisturn:function(){
  173. var txt = '提交(S)';
  174. if(!get('sysisturn').checked)txt='存草稿(S)';
  175. get('AltS').value=txt;
  176. },
  177. savesss:function(){
  178. if(js.ajaxbool||isedit==0)return false;
  179. var len = arr.length,i,val,fid,flx,nas,j,j1,zbd,sda,zbs,zbmc,fa,sdtname,edename;
  180. changesubmitbefore();
  181. var d = js.getformdata();
  182. for(i=0;i<len;i++){
  183. if(arr[i].iszb!='0')continue;
  184. fa = arr[i];
  185. fid=fa.fields;
  186. flx=fa.fieldstype;
  187. nas=fa.name;
  188. if(fa.islu=='1' && flx=='htmlediter' && this.editorobj[fid]){
  189. d[fid] = this.editorobj[fid].html();
  190. }
  191. val=d[fid];
  192. if(fa.isbt=='1'){
  193. if(flx=='uploadfile' && val=='0'){
  194. this.showtx('请选择'+nas+'');
  195. return false;
  196. }
  197. if(isempt(val)){
  198. if(form(fid) && flx!='hidden')form(fid).focus();
  199. this.showtx(''+nas+'不能为空');
  200. return false;
  201. }
  202. }
  203. if(val && flx=='email'){
  204. if(!js.email(val)){
  205. this.showtx(''+nas+'格式不对');
  206. form(fid).focus();
  207. return false;
  208. }
  209. }
  210. if(fid=='startdt')sdtname=fa.name;
  211. if(fid=='enddt')edename=fa.name;
  212. }
  213. if(sdtname && edename && d.startdt && d.enddt){
  214. if(d.startdt>=d.enddt){
  215. this.showtx(''+sdtname+'必须大于'+edename+'', 'enddt');
  216. return false;
  217. }
  218. }
  219. //子表判断记录是不是空
  220. len = subfielsa.length;
  221. for(i=0;i<this.subcount;i++){//子表数
  222. zbd = this.getsubdata(i);
  223. zbs = subdataminlen[i];
  224. zbmc= zbnamearr[i];
  225. if(typeof(zbs)=='number' && zbs==0)continue;//不需要子表行
  226. if(typeof(zbs)=='number' && zbs>0 && zbd.length<zbs){
  227. this.showtx('['+zbmc+']至少要'+zbs+'行');
  228. return false;
  229. }
  230. for(j1=0;j1<zbd.length;j1++){//总行
  231. for(j=0;j<subfielsa.length;j++){//必填字段
  232. sda = subfielsa[j];
  233. if(sda.iszb==(i+1)){//子表要对应
  234. flx = sda.type;
  235. val = zbd[j1][sda.fields];
  236. fid = ''+sda.fields+''+i+'_'+zbd[j1]._hang+'';
  237. if(isempt(val)){
  238. if(form(fid))form(fid).focus();
  239. this.showtx('['+sda.zbname+']第'+(j1+1)+'行上'+sda.name+'不能为空');
  240. this.subshantiss(i, fid,0);
  241. return false;
  242. }
  243. if(flx=='number'&&parseFloat(val)==0){
  244. if(form(fid))form(fid).focus();
  245. this.showtx('['+sda.zbname+']第'+(j1+1)+'行上'+sda.name+'不能为0');
  246. this.subshantiss(i, fid,0);
  247. return false;
  248. }
  249. }
  250. }
  251. }
  252. }
  253. var bo = true;
  254. if(form('istrun') && d.istrun=='0')bo=false; //是否提交的判断
  255. if(get('sysisturn')){
  256. if(get('sysisturn').checked){
  257. d.istrun = 1;
  258. }else{
  259. d.istrun = 0;
  260. bo=false;
  261. }
  262. }
  263. if(firstrs.isbt==1 && bo){
  264. if(!d.sysnextoptid && form('sysnextopt')){
  265. this.showtx('请指定['+firstrs.name+']处理人');
  266. form('sysnextopt').focus();
  267. return false;
  268. }
  269. }
  270. if(form('sys_nextcourseid') && bo){
  271. if(!d.sys_nextcourseid){
  272. this.showtx('请指定下步处理步骤');
  273. form('sys_nextcourseid').focus();
  274. return false;
  275. }
  276. if(!d.sys_nextcoursenameid && this.changenextbool){
  277. this.showtx('请选择下步处理人');
  278. return false;
  279. }
  280. }
  281. if(moders.iscs=='2' && isempt(d.syschaosongid) && bo){
  282. this.showtx('请选择抄送对象');
  283. return false;
  284. }
  285. if(this.flow5get){
  286. var d1 = this.flow5get();
  287. if(d1.length==0){
  288. this.showtx('请先设置审核流程');
  289. return false;
  290. }
  291. d.sysflow5str = JSON.stringify(d1);
  292. }
  293. var s=changesubmit(d);
  294. if(typeof(s)=='string'&&s!=''){
  295. this.showtx(s);
  296. return false;
  297. }
  298. if(typeof(s)=='object')d=js.apply(d,s);
  299. d = js.apply(d,submitparams);
  300. d.sysmodeid=moders.id;
  301. d.sysmodenum=moders.num;
  302. return d;
  303. },
  304. changenextbool:true,
  305. changenextcourse:function(o,lx){
  306. if(lx!=4)return;
  307. var o1= o.options[o.selectedIndex];
  308. var clx = $(o1).attr('checktype');
  309. var dov = $('#sys_nextcoursediv1')
  310. if(clx=='change'){
  311. this.changenextbool=true;
  312. dov.show();
  313. }else{
  314. this.changenextbool=false;
  315. dov.hide();
  316. }
  317. },
  318. subshantiss:function(i,fid,oi){
  319. if(!form(fid))return;
  320. clearTimeout(this.subshantistime1);
  321. if(oi%2==0){
  322. $(form(fid)).parent().css('background','red');
  323. }else{
  324. $(form(fid)).parent().css('background','');
  325. if(oi>10)return;
  326. }
  327. this.subshantistime1 = setTimeout(function(){c.subshantiss(i,fid,oi+1);},200);
  328. },
  329. saveok:function(d){
  330. js.setmsg('保存中...');
  331. get('AltS').disabled=true;
  332. js.ajax(geturlact('save'),d,function(str){
  333. var a = js.decode(str);
  334. c.backsave(a, str);
  335. }, 'post', function(){
  336. get('AltS').disabled=false;
  337. js.setmsg('error:内部错误,可F12调试');
  338. });
  339. },
  340. backsave:function(a,str){
  341. var msg = a.msg;
  342. if(a.success){
  343. //var msgs = (mid=='0')?'新增':'编辑'
  344. var sumsg = ''+a.msg+'成功';
  345. js.setmsg(sumsg,'green');
  346. js.msg('success',sumsg);
  347. this.formdisabled();
  348. $('#AltSspan').hide();
  349. form('id').value=a.data;
  350. isedit=0;
  351. savesuccess();
  352. this.callback(a.data, sumsg);
  353. try{
  354. var nowli= js.getoption('nowListener');
  355. if(nowli)js.sendevent('reload',nowli);
  356. js.backla();}catch(e){}
  357. }else{
  358. if(typeof(msg)=='undefined')msg=str;
  359. get('AltS').disabled=false;
  360. this.showtx(msg);//错误提醒
  361. saveerror(msg);
  362. }
  363. },
  364. changeturn:function(){
  365. if(get('sysisturn').checked){
  366. get('AltS').value='提交';
  367. }else{
  368. get('AltS').value='保存草稿';
  369. }
  370. },
  371. showdata:function(){
  372. var smid=form('id').value;
  373. if(smid=='0'||smid==''){
  374. isedit=1;
  375. $('#AltSspan').show();
  376. $('#Altzhan').show();
  377. c.loadzhan();
  378. c.initdatelx();
  379. c.initinput();
  380. initbodys(smid);
  381. }else{
  382. js.setmsg('加载数据中...');
  383. js.ajax(geturlact('getdata'),{mid:smid,flownum:moders.num},function(str){
  384. c.showdataback(js.decode(str));
  385. },'post', function(){
  386. js.setmsg('error:内部错误,可F12调试');
  387. });
  388. }
  389. },
  390. //预览文件
  391. downshow:function(id, ext,pts){
  392. js.yulanfile(id, ext,pts);
  393. },
  394. showfilestr:function(d){
  395. var flx = js.filelxext(d.fileext);
  396. var s = '<img src="web/images/fileicons/'+flx+'.gif" align="absmiddle" height=16 width=16> <a href="javascript:;" onclick="js.downshow('+d.id+')">'+d.filename+'</a> ('+d.filesizecn+')';
  397. return s;
  398. },
  399. loadicons:function(){
  400. if(!this.loacdis){
  401. $('body').append('<link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">');
  402. this.loacdis= true;
  403. }
  404. },
  405. showviews:function(o1){
  406. this.loadicons();
  407. var url = (typeof(o1)=='string')? o1 : o1.src;
  408. $.imgview({'url':url,'ismobile':ismobile==1});
  409. },
  410. initdatelx:function(){
  411. },
  412. subcount:3,//子表数量
  413. showdataback:function(a){
  414. if(a.success){
  415. var da = a.data;
  416. alldata= da;
  417. js.setmsg();
  418. var len = arr.length,i,j;
  419. data=da.data;
  420. for(i=0;i<len;i++)this.showvalue(arr[i],da.data);
  421. isedit=da.isedit;
  422. if(form('base_name'))form('base_name').value=da.user.name;
  423. if(form('base_deptname'))form('base_deptname').value=da.user.deptname;
  424. js.downupshow(da.filers,'fileidview', (isedit==0));
  425. var subd = da.subdata,subds;
  426. for(j=0;j<this.subcount;j++){
  427. subds=subd['subdata'+j+''];
  428. if(subds)for(i=0;i<subds.length;i++){
  429. subds[i].sid=subds[i].id;
  430. if(form('xuhao'+j+'_'+i+'')){
  431. c.adddatarow(j,i, subds[i]);
  432. }else{
  433. c.insertrow(j, subds[i], true);
  434. }
  435. }
  436. }
  437. c.initinput();
  438. if(c.flow5initdata)c.flow5initdata();
  439. initbodys(form('id').value);
  440. if(isedit==0){
  441. this.formdisabled();
  442. js.setmsg('无权编辑');
  443. }else{
  444. $('#AltSspan').show();
  445. c.initdatelx();
  446. }
  447. if(da.isflow>0){
  448. $('.status').css({'color':da.statuscolor,'border-color':da.statuscolor}).show().html(da.statustext);
  449. }
  450. }else{
  451. get('AltS').disabled=true;
  452. this.formdisabled();
  453. js.setmsg(a.msg);
  454. js.msg('msg',a.msg);
  455. }
  456. },
  457. date:function(o1,lx){
  458. $(o1).rockdatepicker({view:lx,initshow:true});
  459. },
  460. close:function(){
  461. window.close();
  462. },
  463. formdisabled:function(){
  464. $('form').find('*').attr('disabled', true);
  465. $('#fileupaddbtn').remove();
  466. },
  467. upload:function(){
  468. js.upload('',{showid:'fileidview'});
  469. },
  470. changeuser:function(na, lx){
  471. js.changeuser(na,lx);
  472. },
  473. changeclear:function(na){
  474. js.changeclear(na);
  475. },
  476. editorobj:{},
  477. subtablefields:[],
  478. subtablestring:[],
  479. initsubtable:function(){
  480. var i,oba,j,o,nas,nle,nasa,fname,o2,str,cell,i1;
  481. this.subcount = $("input[name^='sub_totals']").length;
  482. for(i=0;i<this.subcount;i++){
  483. o2 = get('tablesub'+i+'');
  484. if(o2){
  485. fname=[];
  486. o=$('#tablesub'+i+'');
  487. form('sub_totals'+i+'').value=o2.rows.length-1;
  488. this.repaixuhao(i);
  489. oba = o.find('tr:eq(1)').find('[name]');
  490. for(j=0;j<oba.length;j++){
  491. nas=oba[j].name;
  492. nasa=nas.split('_');
  493. nle = nasa.length;
  494. nna= nasa[0];
  495. if(nle>2)nna+='_'+nasa[1]+'';
  496. if(nle>3)nna+='_'+nasa[2]+'';
  497. fname.push(nna.substr(0,nna.length-1));
  498. }
  499. this.subtablefields[i]=fname;
  500. cell = o2.rows[1].cells.length;
  501. str='';
  502. for(i1=0;i1<cell;i1++)str+='<td>'+o2.rows[1].cells[i1].innerHTML+'</td>';
  503. this.subtablestring[i]=str;
  504. }
  505. }
  506. //引入公式相关的js文件
  507. var gongsistr='';
  508. for(i=0;i<gongsiarr.length;i++)gongsistr+=','+gongsiarr[i].gongsi+'';
  509. if(gongsistr!=''){
  510. if(gongsistr.indexOf('AmountInWords')>-1)js.importjs('js/rmb.js');
  511. if(gongsistr.indexOf('js.')>-1)js.importjs('js/jsrock.js');
  512. }
  513. this.tempkey = ''+moders.num+'tempdata';
  514. },
  515. getsubdata:function(i){
  516. var d=[];
  517. if(!get('tablesub'+i+''))return d;
  518. var len=parseFloat(form('sub_totals'+i+'').value);
  519. var i1,ji,i2,far=this.subtablefields[i],lens=far.length,fna;
  520. for(i1=0;i1<len;i1++){
  521. var a={_hang:i1};i2=0;
  522. for(j1=0;j1<lens;j1++){
  523. fna=''+far[j1]+''+i+'_'+i1+'';
  524. if(form(fna)){
  525. a[far[j1]]=form(fna).value;
  526. i2++;
  527. }
  528. }
  529. if(i2>0)d.push(a);
  530. }
  531. return d;
  532. },
  533. delrow:function(o,xu){
  534. if(isedit==0){
  535. $(o).remove();
  536. return;
  537. }
  538. var o1=get('tablesub'+xu+'').rows;
  539. if(o1.length<=2){
  540. js.msg('msg','最后一行不能删除');
  541. return;
  542. }
  543. $(o).parent().parent().remove();
  544. this.repaixuhao(xu);
  545. this.rungongsi();
  546. eventdelsubrows(xu);
  547. },
  548. rungongsi:function(){
  549. var i,len=gongsiarr.length,d;
  550. for(i=0;i<len;i++){
  551. d = gongsiarr[i];
  552. if(d.iszb==0&&form(d.fields))this.inputblur(form(d.fields),0);
  553. }
  554. },
  555. repaixuhao:function(xu){
  556. var o=$('#tablesub'+xu+'').find("input[temp='xuhao']");
  557. for(var i=0;i<o.length;i++){
  558. o[i].value=(i+1);
  559. }
  560. },
  561. insertrow:function(xu, d, isad){
  562. var o2 = get('tablesub'+xu+'');
  563. if(!o2){alert('表单设计有误,请重新设计第'+(xu+1)+'个多行子表');return;}
  564. var o=$('#tablesub'+xu+'');
  565. var oi = o2.rows.length-1,i,str='',oba,nas,oj,nna,ax2,d1,nass;
  566. oi=1;
  567. //var cell = o2.rows[oi].cells.length;
  568. //for(i=0;i<cell;i++)str+='<td>'+o2.rows[oi].cells[i].innerHTML+'</td>';
  569. str = this.subtablestring[xu];
  570. oba = o.find('tr:eq('+oi+')').find('[name]');
  571. oj = parseFloat(form('sub_totals'+xu+'').value);
  572. var narrs=[],fasr=this.subtablefields[xu],wux=''+xu+'_'+oj+'';
  573. for(i=0;i<oba.length;i++){
  574. nas=oba[i].name;
  575. oi = nas.lastIndexOf('_');
  576. nass= nas.substr(0, oi-1);
  577. nna=nass+''+wux+'';
  578. str=str.replace(new RegExp(''+nass+''+xu+'_0','gi'), nna);
  579. narrs.push(nna);
  580. }
  581. form('sub_totals'+xu+'').value=(oj+1);
  582. str=str.replace(/rockdatepickerbool=\"true\"/gi,'');
  583. o.append('<tr>'+str+'</tr>');
  584. d=js.apply({sid:'0'},d);
  585. for(d1 in d){
  586. ax2=d1+wux;
  587. if(form(ax2))form(ax2).value=d[d1];
  588. }
  589. this.repaixuhao(xu);
  590. this.initdatelx();
  591. var nusa = [""+xu+"",""+oj+"",wux,nass,nna];
  592. if(!isad)eventaddsubrows(xu, oj);
  593. return nusa;
  594. },
  595. adddatarow:function(xu, oj, d){
  596. d=js.apply({sid:'0'},d);
  597. var fasr=this.subtablefields[xu],ans;
  598. for(var i=0;i<fasr.length;i++){
  599. ans=fasr[i]+''+xu+'_'+oj+'';
  600. if(form(ans)&&d[fasr[i]])form(ans).value=d[fasr[i]];
  601. }
  602. },
  603. //设置子表行数据
  604. setrowdata:function(xu, oj, d){
  605. var ans;
  606. for(var i in d){
  607. ans=i+''+xu+'_'+oj+'';
  608. if(form(ans))form(ans).value=d[i];
  609. }
  610. },
  611. //设置子表行数据【常用】
  612. setrowval:function(fid, d){
  613. var sela = this.getxuandoi(fid);
  614. this.setrowdata(sela[0],sela[1], d);
  615. },
  616. //根据名称获取第几个子,哪一行[第几个子表,第几行]
  617. getxuandoi:function(fid){
  618. var naa = fid.substr(fid.lastIndexOf('_')-1);
  619. var spa = naa.split('_');
  620. spa[2] = naa;
  621. spa[3] = fid.replace(naa,'');
  622. spa[4] = fid;
  623. return spa;
  624. },
  625. addrow:function(o,xu){
  626. if(isedit==0){
  627. $(o).remove();
  628. return;
  629. }
  630. this.insertrow(xu);
  631. },
  632. //子表表单对象,na名称,zb第几个子表,hs第几行
  633. getforms:function(na,zb,hs){
  634. var fid = ''+na+''+zb+'_'+hs+'';
  635. return form(fid);
  636. },
  637. getsubtabledata:function(){
  638. },
  639. _getsubtabledatas:function(xu){
  640. var oxut=form('sub_totals'+xu+'');
  641. if(!oxut)return false;
  642. var da={},fasr,len=parseFloat(oxut.value),j,f,na;
  643. da['sub_totals'+xu+'']=oxut.value;
  644. fasr=this.subtablefields[xu];
  645. for(j=1;j<=len;j++){
  646. for(f=0;j<fasr.length;j++){
  647. na=fasr[f]+''+xu+'_'+j+'';
  648. if(form(na))da[na]=form(na).value;
  649. }
  650. };
  651. return da;
  652. },
  653. getsubtotals:function(fid, xu){
  654. var oi=0;
  655. if(!xu)xu='0';
  656. var oxut=form('sub_totals'+xu+'');
  657. if(!oxut)return oi;
  658. var len=parseFloat(oxut.value),j,na,val;
  659. for(j=0;j<len;j++){
  660. na=fid+''+xu+'_'+j+'';
  661. if(form(na)){
  662. val=form(na).value;
  663. if(val)oi+=parseFloat(val);
  664. }
  665. }
  666. return oi;
  667. },
  668. getselobj:function(fv){
  669. var o = form(fv);
  670. if(!o)return;
  671. var o1= o.options[o.selectedIndex];
  672. return o1;
  673. },
  674. getseltext:function(fv){
  675. var o1 = this.getselobj(fv);
  676. if(!o1)return '';
  677. return o1.text;
  678. },
  679. getselattr:function(fv,art){
  680. var o1 = this.getselobj(fv);
  681. if(!o1)return '';
  682. return $(o1).attr(art);
  683. },
  684. setfields:function(fid,na){
  685. if(ismobile==1)na=''+na+':'
  686. $('#div_'+fid+'').parent().prev().text(na);
  687. },
  688. fieldshide:function(fid){
  689. var o = $('#div_'+fid+'').parent();
  690. o.hide();
  691. o.prev().hide();
  692. },
  693. fieldsshow:function(fid){
  694. var o = $('#div_'+fid+'').parent();
  695. o.show();
  696. o.prev().show();
  697. },
  698. savezhan:function(){
  699. var d = js.getformdata();
  700. var len = arr.length,i,fid;
  701. for(i=0;i<len;i++){
  702. if(arr[i].iszb!='0')continue;
  703. fid = arr[i].fields;
  704. if(arr[i].islu=='1' && arr[i].fieldstype=='htmlediter' && this.editorobj[fid]){
  705. d[fid] = this.editorobj[fid].html();
  706. }
  707. }
  708. for(i=0;i<this.subcount;i++)d['subdata'+i+''] = this.getsubdata(i);
  709. this.savezhans(jm.base64encode(JSON.stringify(d)));
  710. js.msgok('暂存保存成功');
  711. },
  712. savezhans:function(str){
  713. if(!str)str='';
  714. js.ajax(geturlact('savezhan'),{flownum:moders.num,contstr:str},function(ret){
  715. if(!str){
  716. js.msgok('暂存已删除');
  717. js.reload();
  718. }
  719. }, 'post');
  720. },
  721. showvalue:function(fa,da){
  722. var fid,flx,val,ojb,j,fb=[];
  723. fid = fa.fields;
  724. flx = fa.fieldstype;
  725. if(fa.islu=='1' && fa.iszb=='0' && fid.indexOf('temp_')!=0){
  726. val=da[fid];
  727. if(val==null)val='';
  728. fb.push(fid);
  729. if(flx=='checkboxall'){
  730. ojb=$("input[name='"+fid+"[]']");
  731. val=','+val+',';
  732. for(j=0;j<ojb.length;j++){
  733. if(val.indexOf(','+ojb[j].value+',')>-1)ojb[j].checked=true;
  734. }
  735. }else if(flx=='graph'){
  736. if(form(fid))form(fid).value=val;
  737. if(val)$('#graphview_'+fid+'').append('<div><img id="imgqianming_'+fid+'" src="'+val+'" height="90"></div>');
  738. }else if(flx=='checkbox'){
  739. form(fid).checked = (val=='1');
  740. }else if(flx=='htmlediter' && this.editorobj[fid]){
  741. this.editorobj[fid].html(val);
  742. }else if(flx.substr(0,6)=='change'){
  743. if(form(fid))form(fid).value=val;
  744. fid = fa.data;
  745. if(!isempt(fid)&&form(fid)){
  746. form(fid).value=da[fid];
  747. fb.push(fid);
  748. }
  749. }else{
  750. if(form(fid))form(fid).value=val;
  751. }
  752. }
  753. return fb;
  754. },
  755. loadzhan:function(){
  756. var dstr = tempdata;
  757. if(dstr){
  758. var da = js.decode(jm.base64decode(dstr));
  759. c.loadzhanshow(da);
  760. }
  761. },
  762. loadzhanshow:function(da){
  763. var i,zn,j,sub,len;
  764. for(i=0;i<this.subcount;i++){
  765. sub = da['subdata'+i+''];
  766. if(sub){
  767. zn = sub.length;
  768. for(j=0;j<zn;j++){
  769. if(form('xuhao'+i+'_'+j+'')){
  770. this.setrowdata(i,j, sub[j]);
  771. }else{
  772. this.insertrow(i,sub[j],true);
  773. }
  774. }
  775. }
  776. }
  777. var len=arr.length,fda=['id'];
  778. for(i=0;i<len;i++)fda= fda.concat(this.showvalue(arr[i],da));
  779. for(i in da){
  780. if(fda.indexOf(i)==-1 && i.indexOf('0_')==-1){
  781. if(form(i))form(i).value = da[i];
  782. }
  783. }
  784. js.msg('success','当前记录读取暂存的,<a href="javascript:;" onclick="c.savezhans()" class="zhu">[删除暂存]</a>', 10);
  785. this.zhanbool = true;
  786. },
  787. //----强大公式计算函数处理start-----
  788. inputblur:function(o1,zb){
  789. if(isedit==0)return;
  790. var ans=[],nae,nae2,i,len=gongsiarr.length,d,iszb,iszbs,diszb,gongsi,gs1,gs2,bgsa,lens,blarr,j,val,nams;
  791. if(zb>0){
  792. ans = this.getxuandoi(o1.name);
  793. nae = ans[3]; //表单name名称
  794. nae2= ans[2]; //格式0_0
  795. iszb= parseFloat(ans[0]);
  796. iszbs = iszb+1; //第几个子表
  797. }else{
  798. nae = o1.name;
  799. }
  800. for(i=0;i<len;i++){
  801. d = gongsiarr[i];
  802. gongsi = d.gongsi;
  803. if((gongsi+d.fields).indexOf(nae)<0 || isempt(gongsi))continue;
  804. diszb = parseFloat(d.iszb);
  805. if(diszb==0){
  806. //主表字段公式计算[{zb0.count}*{zb0.price}] - [{discount}]
  807. bgsa = this.splitgongs(gongsi);
  808. lens = bgsa.length;
  809. gongsi = bgsa[lens-1];
  810. for(j=0;j<lens-1;j++){
  811. gs2 = bgsa[j];
  812. gs1 = this.subtongjisd(gs2);
  813. if(gs1=='')gs1 = this.zhujisuags(gs2,'','',true);
  814. gongsi = gongsi.replace(gs2, gs1);
  815. }
  816. gongsi = gongsi.replace(/\[/g,'');
  817. gongsi = gongsi.replace(/\]/g,'');
  818. this.gongsv(d.fields, gongsi,d.gongsi);
  819. }else if(diszb==iszbs && zb>0){
  820. this.zhujisuags(gongsi, d.fields, nae2, false);//子表行内计算
  821. }
  822. }
  823. oninputblur(nae,zb, o1,ans[0],ans[1]);
  824. if(o1.selectedIndex){
  825. var o2= o1.options[o1.selectedIndex];
  826. if(o2.text=='其它..'){
  827. js.prompt('新的选项','请输入...', function(jg,txt){
  828. if(jg=='yes' && txt){
  829. $.post('?m=input&a=saveoption&d=flow',{num:o1.value,name:txt});
  830. o2.text = txt;o2.value = txt;
  831. }else{
  832. o1.value = '';
  833. }
  834. });
  835. }
  836. }
  837. },
  838. splitgongs:function(gongsi){
  839. if(gongsi.indexOf(']')<0)gongsi = '['+gongsi+']';
  840. var carr = gongsi.split(']'),i,bd=[],st;
  841. for(i=0;i<carr.length;i++){
  842. st = carr[i];
  843. st = st.substr(st.indexOf('[')+1);
  844. if(st)bd.push(st);
  845. }
  846. bd.push(gongsi);
  847. return bd;
  848. },
  849. zhujisuags:function(gongsi, fid, nae2, blx){
  850. var blarr,j,nams,val,ogs;
  851. ogs = gongsi+'';
  852. blarr = this.pipematch(ogs);
  853. for(j=0;j<blarr.length;j++){
  854. nams = ''+blarr[j]+''+nae2+'';
  855. val = form(nams) ? form(nams).value : '0';
  856. if(val==='')val='0';
  857. ogs = ogs.replace('{'+blarr[j]+'}', val);
  858. }
  859. if(blx)return '('+ogs+')';
  860. nams = ''+fid+''+nae2+'';
  861. return this.gongsv(nams, ogs, gongsi);
  862. },
  863. subtongjisd:function(gongsi){
  864. var str = '',blarr,zb,i,dds,kes,gss,i1;
  865. if(gongsi.indexOf('zb0.')>-1 || gongsi.indexOf('zb1.')>-1 || gongsi.indexOf('zb2.')>-1 || gongsi.indexOf('zb3.')>-1 || gongsi.indexOf('zb4.')>-1){
  866. blarr = this.pipematch(gongsi);
  867. zb = blarr[0].split('.')[0].replace('zb','');//哪个子表
  868. dds = this.getsubdata(zb);
  869. for(i=0;i<dds.length;i++){
  870. gss = gongsi+'';
  871. for(i1 in dds[i])gss=gss.replace('{zb'+zb+'.'+i1+'}', dds[i][i1] ? dds[i][i1] : 0);
  872. str+= '+('+gss+')';
  873. }
  874. }
  875. if(str!=''){
  876. str = '('+str.substr(1)+')';
  877. }
  878. return str;
  879. },
  880. gongsv:function(ne,vlas,gongss){
  881. var val = '0',vals,val1,xs;
  882. if(form(ne)){
  883. try{
  884. val = eval(vlas);if(!val)val='0';
  885. val1= 'a'+val+'';vals= val1.split('.');
  886. if(vals[1] && vals[1].length>2){
  887. xs = $(form(ne)).attr('xiaoshu');
  888. if(!xs || xs=='0')xs = 2;
  889. val=js.float(val, parseFloat(xs));
  890. }
  891. form(ne).value=val;
  892. }catch(e){
  893. alert(''+ne+'计算公式设置有错误:'+gongss+'\n\n'+vlas+'');
  894. }
  895. }
  896. return val;
  897. },
  898. pipematch:function(str){
  899. var star = str.match(/\{(.*?)\}/gi),i;
  900. var b = [];
  901. if(star)for(i=0;i<star.length;i++){
  902. b.push(star[i].substr(1, star[i].length-2));
  903. }
  904. return b;
  905. }
  906. //----公式end -----
  907. };