input_two.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517
  1. /**
  2. * 录入js额外文件,要共用到详情页里的
  3. */
  4. var inputtwo={
  5. onchangebefore:function(){},
  6. selectdatadata:{}, //保存数据源
  7. selectdata:function(s1,ced,fid,tit,zbis){
  8. if(isedit==0)return;
  9. if(!tit)tit='请选择...';
  10. if(s1.indexOf('[SQL]')==0){js.msg('msg','此元素类型的不支持数据源是SQL的');return;}
  11. var a1 = s1.split(','),idobj=false,acttyle='act';
  12. var fids = a1[1];
  13. if(fids){
  14. if(zbis>=1){//说明是子表
  15. var gezs = this.getxuandoi(fid);
  16. fids+=gezs[2];
  17. }
  18. idobj=form(fids);
  19. }
  20. var gcan,dass,i,befs
  21. gcan = {'act':a1[0],'actstr':jm.base64encode(s1),'acttyle':acttyle,'sysmodenum':modenum,'sysmid':mid};
  22. dass = this.selectdatadata[fid];
  23. befs = this.onselectdatabefore(fid,zbis,s1);
  24. if(befs){
  25. if(typeof(befs)=='string'){js.msg('msg',befs);return;}
  26. if(typeof(befs)=='object'){
  27. dass=[];
  28. for(i in befs)gcan[i]=befs[i];
  29. }
  30. }
  31. $.selectdata({
  32. data:dass,title:tit,fid:fid,
  33. url:geturlact('getselectdata', gcan),
  34. checked:ced, nameobj:form(fid),idobj:idobj,
  35. onloaddata:function(a){
  36. c.selectdatadata[fid]=a;
  37. },
  38. onselect:function(seld,sna,sid){
  39. c.onselectdataall(this.fid,seld,sna,sid);
  40. if(c.onselectdata[this.fid])c.onselectdata[this.fid](seld,sna,sid);
  41. }
  42. });
  43. },
  44. selectdataclear:function(fid,s1,zbis){
  45. if(form(fid))form(fid).value='';
  46. var a1 = s1.split(',');
  47. var fids = a1[1];
  48. if(fids){
  49. if(zbis>=1){
  50. var gezs = this.getxuandoi(fid);
  51. fids+=gezs[2];
  52. }
  53. if(form(fids))form(fids).value='';
  54. }
  55. },
  56. //编辑器
  57. htmlediter:function(fid){
  58. var items = [
  59. 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline','removeformat','|',
  60. 'fontname', 'fontsize','quickformat', '|',
  61. 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist','insertunorderedlist', '|',
  62. 'image', 'link','unlink','|',
  63. 'undo','source','clearhtml','fullscreen'
  64. ];
  65. if(ismobile==1)items=['forecolor', 'hilitecolor', 'bold', 'italic','|','source','clearhtml','fullscreen'];
  66. var oethed = this.htmlediteritems(fid);
  67. if(oethed){
  68. var kx = 0,i;
  69. if(oethed[0]=='clear'){items=[];kx=1;oethed.push('fullscreen')}
  70. for(i=kx;i<oethed.length;i++)items.push(oethed[i]);
  71. }
  72. var cans = {
  73. resizeType : 0,
  74. allowPreviewEmoticons : false,
  75. allowImageUpload : true,
  76. formatUploadUrl:false,
  77. allowFileManager:true,
  78. uploadJson:'?m=upload&a=upimg&d=public',
  79. minWidth:'300px',height:'250',
  80. items : items
  81. };
  82. this.editorobj[fid] = KindEditor.create("[name='"+fid+"']", cans);
  83. },
  84. //初始上传框
  85. filearr:{},
  86. initupssa:{},
  87. initinput:function(){
  88. if(isedit==0){
  89. $('div[tsye="img"]').hide();
  90. $("div[id$='_divadd']").hide();
  91. }
  92. var o,o1,sna,i,tsye,uptp,tdata,farr=alldata.filearr,far,allfid='',allsna={};
  93. var o = $('div[id^="filed_"]');
  94. for(i=0;i<o.length;i++){
  95. o1 = o[i];sna= $(o1).attr('tnam');tsye=$(o1).attr('tsye');tdata=$(o1).attr('tdata');
  96. var val = form(sna).value;
  97. if(tsye=='img'){
  98. var val1 = data[''+sna+'_view'];
  99. if(!val1)val1=val;
  100. if(val1)get('imgview_'+sna+'').src=val1;
  101. }
  102. if(tsye=='file' && val){
  103. if(farr){
  104. var fid,f,vals=','+val+',';
  105. for(fid in farr){
  106. f = farr[fid];
  107. if(!f || vals.indexOf(','+f.id+',')<0)continue;
  108. this.showfileup(sna, f);
  109. }
  110. this.showupid(sna);//多文件上传显示id
  111. }else{
  112. allfid+=','+val+'';
  113. allsna[sna]=val;
  114. }
  115. }
  116. }
  117. if(allfid){
  118. js.ajax('api.php?m=upload&a=afileinfo',{allfid:allfid.substr(1)},function(farr){
  119. var sna,fid,f,vals;
  120. if(farr)for(sna in allsna){
  121. vals = ','+allsna[sna]+',';
  122. for(fid in farr){
  123. f = farr[fid];
  124. if(!f || vals.indexOf(','+f.id+',')<0)continue;
  125. c.showfileup(sna, f);
  126. }
  127. c.showupid(sna);
  128. }
  129. },'get,json');
  130. }
  131. if(ismobile==1){
  132. $('div[tmp="mobilezbiao"]').css('width',''+($(window).width()-12)+'px');
  133. }
  134. },
  135. initupss:function(sna){
  136. if(isedit==0 || this.initupssa[sna])return;
  137. var o,o1,tsye,uptp='image';
  138. o1 = get('filed_'+sna+'');tsye=$(o1).attr('tsye');tdata=$(o1).attr('tdata');
  139. if(tsye=='file'){
  140. uptp='*';
  141. if(!isempt(tdata))uptp=tdata;
  142. }
  143. this.initupssa[sna]=$.rockupload({
  144. 'inputfile':'filed_'+sna+'_inp',
  145. 'initremove':false,'uptype':uptp,'formming':sna,
  146. 'urlparams':{'sysmodenum':modenum,'sysmid':mid},
  147. 'oparams':{sname:sna,snape:tsye},
  148. 'onsuccess':function(f,gstr){
  149. var sna= f.sname,tsye=f.snape,d=js.decode(gstr);
  150. if(tsye=='img'){
  151. get('imgview_'+sna+'').src = d.filepath;
  152. form(sna).value=d.filepath;
  153. c.upimages(sna,d.id,false, d.autoup);
  154. }else if(tsye=='file'){
  155. $('#meng_'+c.uprnd+'').remove();
  156. $('#up_'+c.uprnd+'').attr('upid_'+sna+'',d.id);
  157. c.upfbo = false;
  158. c.filearr['f'+d.id+''] = f;
  159. c.showupid(sna);//显示ID
  160. }
  161. c.uploadback(sna, f);
  162. if(this.changenext)this.changenext();//上传下一个文件
  163. },
  164. 'onprogress':function(f,bl){
  165. var sna= f.sname,tsye=f.snape;
  166. if(tsye=='file'){
  167. $('#meng_'+c.uprnd+'').html(''+bl+'%');
  168. }
  169. },
  170. onchange:function(f){
  171. var sna= f.sname,tsye=f.snape;
  172. if(tsye=='file'){
  173. var flx = js.filelxext(f.fileext);
  174. c.uprnd = js.getrand();
  175. c.upfbo = true;
  176. var s='<div onclick="c.clickupfile(this,\''+sna+'\')" id="up_'+c.uprnd+'" title="'+f.filename+'('+f.filesizecn+')" class="upload_items">';
  177. if(f.isimg){
  178. s+='<img class="imgs" src="'+f.imgviewurl+'">'
  179. }else{
  180. s+='<div class="upload_items_items"><img src="web/images/fileicons/'+flx+'.gif" alian="absmiddle"> ('+f.filesizecn+')<br>'+f.filename+'</div>';
  181. }
  182. s+='<div id="meng_'+c.uprnd+'" class="upload_items_meng" style="font-size:16px">0%</div></div>';
  183. $('#'+sna+'_divadd').before(s);
  184. }else if(tsye=='img'){
  185. js.loading('上传中...');
  186. }
  187. },
  188. onerror:function(estr){
  189. c.upfbo = false;
  190. js.msg('msg',estr);
  191. },
  192. onchangebefore:function(){
  193. c.onchangebefore(this);
  194. }
  195. });
  196. },
  197. showfileup:function(sna, f){
  198. var s = '';
  199. s='<div onclick="c.clickupfile(this,\''+sna+'\')" title="'+f.filename+'('+f.filesizecn+')" upid_'+sna+'="'+f.id+'" class="upload_items">';
  200. if(js.isimg(f.fileext)){
  201. s+='<img class="imgs" src="'+f.thumbpath+'">';
  202. }else{
  203. s+='<div class="upload_items_items"><img src="web/images/fileicons/'+js.filelxext(f.fileext)+'.gif" alian="absmiddle"> ('+f.filesizecn+')<br>'+f.filename+'</div>';
  204. }
  205. s+='</div>';
  206. $('#'+sna+'_divadd').before(s);
  207. this.filearr['f'+f.id+''] = f;
  208. },
  209. upimages:function(fid,fileid,bs, lbu){
  210. if(!bs){
  211. if(lbu!=1){js.unloading();return;}
  212. js.loading('等待上传完成...');
  213. setTimeout("c.upimages('"+fid+"','"+fileid+"', true)",3000);
  214. }else{
  215. js.ajax('api.php?m=login&a=upimagepath',{fileid:fileid,fid:fid},function(ret){
  216. js.unloading();
  217. var da = ret.data;
  218. if(da.path)form(da.fid).value=da.path;
  219. },'get,json');
  220. }
  221. },
  222. //多文件点击上传
  223. outusebool:false,
  224. uploadfilei:function(sna,ssi){
  225. if(isedit==0)return;
  226. var ts = this.uploadfileibefore(sna);
  227. if(ts){js.msg('msg',ts);return;}
  228. if(this.upfbo){js.msg('msg','请等待上传完成在添加');return;}
  229. if(!this.outusebool && ssi!='onlychange'){
  230. js.alert('<button onclick="c.uploadfileis(\''+sna+'\',0)" type="button" style="border-radius:5px;background:#d9534f" class="webbtn">选择本地文件上传</button><br><br><button onclick="c.uploadfileis(\''+sna+'\',1)" type="button" style="border-radius:5px;" class="webbtn">从文件库中选择</button>');
  231. return;
  232. }
  233. this.uploadfileis(sna,0);
  234. },
  235. uploadfileis:function(sna,lx){
  236. js.tanclose('confirm');
  237. if(lx==0){
  238. this.initupss(sna);
  239. get('filed_'+sna+'_inp').click();
  240. }else if(!this.outusebool){
  241. var o1,tsye,uptp='image';
  242. o1 = get('filed_'+sna+'');tsye=$(o1).attr('tsye');tdata=$(o1).attr('tdata');
  243. if(tsye=='file'){
  244. uptp='*';
  245. if(!isempt(tdata))uptp=tdata;
  246. }
  247. $.selectdata({
  248. title:'文件库中选择',fid:sna,tsye:tsye,searchajax:true,checked:false,
  249. url:'api.php?m=upload&a=changedata&uptp='+uptp+'&tsye='+tsye+'',
  250. onselect:function(seld,sna,sid){
  251. if(seld){
  252. if(this.tsye=='img'){
  253. get('imgview_'+this.fid+'').src = seld.filepath;
  254. form(this.fid).value=seld.filepath;
  255. }else{
  256. c.showfileup(this.fid, seld);
  257. c.showupid(this.fid);
  258. }
  259. c.showxuanfile(seld);
  260. }
  261. }
  262. });
  263. }else{
  264. js.msg('msg','无法操作');
  265. }
  266. },
  267. showxuanfile:function(xda){
  268. var ob = form('sxuanfileid'),st1;
  269. st1 = ob.value;
  270. if(st1)st1+=',';
  271. st1+=''+xda.id+'';
  272. ob.value = st1;
  273. },
  274. //上传完成
  275. showupid:function(sna){
  276. var os = $('div[upid_'+sna+']'),fvid='';
  277. for(var i=0;i<os.length;i++){
  278. fvid+=','+$(os[i]).attr('upid_'+sna+'')+'';
  279. }
  280. if(fvid!='')fvid=fvid.substr(1);
  281. form(sna).value=fvid;
  282. },
  283. //上传文件点击
  284. clickupfile:function(o1,sna, xs){
  285. this.yuobj = o1;
  286. var o = $(o1);
  287. var fid = o.attr('upid_'+sna+'');
  288. if(isempt(fid))return;
  289. var f = this.filearr['f'+fid+''];if(!f)return;
  290. if(isedit==0 || xs){
  291. js.alertclose();
  292. this.loadicons();
  293. js.fileopt(fid,0);
  294. }else{
  295. var fileext = f.fileext,oflx=',doc,docx,ppt,pptx,xls,xlsx,',s1='';
  296. if(oflx.indexOf(','+fileext+',')>-1)s1='&nbsp; <a style="color:blue" href="javascript:;" onclick="js.alertclose();js.fileopt('+fid+',2)">在线编辑</a>';
  297. js.confirm('确定要<font color=red>删除文件</font>:'+o1.title+'吗?<a style="color:blue" href="javascript:;" onclick="js.alertclose();js.downshow('+fid+',\'abc\')">下载</a>&nbsp; <a style="color:blue" href="javascript:;" onclick="c.clickupfile(c.yuobj,\''+sna+'\', true)">预览</a>'+s1+'',function(jg){
  298. if(jg=='yes'){
  299. o.remove();
  300. c.showupid(sna);
  301. if(!f.xuanbool)$.get(js.getajaxurl('delfile','upload','public',{id:fid,mid:mid,num:moders.num}));
  302. }
  303. });
  304. }
  305. },
  306. uploadimgclear:function(fid){
  307. get('imgview_'+fid+'').src='images/noimg.jpg';
  308. form(fid).value='';
  309. },
  310. //2020-09-02新增地图上选择位置
  311. selectmap:function(sna,snall,fna,iszb){
  312. var hei = winHb()-150;
  313. var url = 'https://map.qq.com/api/js?v=2.exp&key=55QBZ-JGYLO-BALWX-SZE4H-5SV5K-JCFV7&callback=c.showmap';
  314. js.tanbody('selectmap','选择['+fna+']',winWb()-((ismobile==1)?5:80),hei,{
  315. html:'<div style="padding:5px"><input onkeyup="if(event.keyCode==13)c.selectmapsou(this)" type="text" placeholder="请输入格式(地址 城市)如:鼓浪屿 厦门" class="inputs"></div><div id="selectmap" style="height:'+(hei-20)+'px;overflow:hidden"></div>',
  316. btn:[{text:'确定'}]
  317. });
  318. this.selectmapdata={sna:sna,snall:snall};
  319. this._temsel=[24.51036967209648,118.17883729934692,12];
  320. if(snall && form(snall) && form(snall).value)this._temsel = form(snall).value.split(',');
  321. if(!this.showmapbo){js.importjs(url);}else{this.showmap()}
  322. $('#selectmap_btn0').click(function(){
  323. c.selectmapque();
  324. js.tanclose('selectmap');
  325. });
  326. $('#selectmap_btn1').click(function(){
  327. c.selectmapdinwei();
  328. });
  329. },
  330. selectmapclear:function(sna,snall){
  331. if(form(sna))form(sna).value='';
  332. if(snall && form(snall))form(snall).value='';
  333. },
  334. showmapbo:false,
  335. showmap:function(){
  336. this.showmapbo=true;
  337. var center = new qq.maps.LatLng(parseFloat(this._temsel[0]),parseFloat(this._temsel[1]));
  338. map = new qq.maps.Map(get('selectmap'),{
  339. center: center,
  340. zoom: parseFloat(this._temsel[2])
  341. });
  342. qq.maps.event.addListener(map, 'click', function(event) {
  343. marker.setPosition(event.latLng);
  344. });
  345. marker = new qq.maps.Marker({
  346. position: center,
  347. map: map,
  348. draggable:true,
  349. title:'点地图确定位置'
  350. });
  351. },
  352. selectmapsou:function(o1){
  353. var val = o1.value;
  354. if(!val)return;
  355. js.msg('wait','搜索中...');
  356. js.ajax('api.php?m=kaoqin&a=suggestion',{key:jm.base64encode(val)},function(ret){
  357. js.msg();
  358. if(ret.status==0){
  359. var res = ret.data[0];
  360. var center = new qq.maps.LatLng(res.location.lat,res.location.lng);
  361. map.setCenter(center);
  362. marker.setPosition(center);
  363. }else{
  364. js.msg('msg',ret.message);
  365. }
  366. },'get,json');
  367. },
  368. selectmapque:function(){
  369. var as = marker.getPosition();
  370. var x = as.getLat();
  371. var y = as.getLng();
  372. var zoom = map.getZoom();
  373. this.selectmapdata.lat=x;
  374. this.selectmapdata.lng=y;
  375. this.selectmapdata.zoom=zoom;
  376. js.msg('wait','确定搜索地址...');
  377. this.geocoder(x,y);
  378. },
  379. //搜索位置
  380. geocoder:function(lat,lng, jid){
  381. js.ajax('api.php?m=kaoqin&a=gcoder',{lat:lat,lng:lng},function(ret){
  382. js.msg();
  383. if(ret.status==0){
  384. var result = ret.result;
  385. var address= result.formatted_addresses.recommend;
  386. var d1 = c.selectmapdata;
  387. d1.address = address;
  388. var info = result.address_component;
  389. d1.addressinfo = {
  390. province:info.province,
  391. city:info.city,
  392. town:info.district,
  393. streetNumber:info.street_number,
  394. street:info.street
  395. };
  396. js.msg();
  397. var sna = d1.sna;
  398. if(form(sna))form(sna).value=d1.address+'|'+d1.lat+','+d1.lng+'';
  399. var sna1 = d1.snall;
  400. if(sna1 && form(sna1)){
  401. form(sna1).value=''+d1.lat+','+d1.lng+','+d1.zoom+'';
  402. form(sna).value=d1.address;
  403. }
  404. c.onselectmap(sna,d1);
  405. }else{
  406. js.msg('msg',ret.message);
  407. }
  408. },'get,json');
  409. },
  410. xuanfile:function(fid,lx,fname,o1){
  411. if(!fname)fname='';
  412. $.selectdata({
  413. title:fname+'(模版选择)',fid:fid,
  414. url:'api.php?m=upload&a=getmfile&fenlei='+jm.base64encode(lx)+'',
  415. checked:false,nameobj:false,idobj:false,
  416. onselect:function(seld,sna,sid){
  417. if(sid)c.xuanfiles(this.fid,sid,fname,o1);
  418. }
  419. });
  420. },
  421. xuanfiles:function(fid,sid,fname,o1){
  422. js.loading('生成文件中...');if(!fname)fname='';
  423. js.ajax('api.php?m=upload&a=getmfilv',{fileid:sid,fname:jm.base64encode(fname)},function(ret){
  424. if(ret.success){
  425. js.unloading();
  426. c.showfileup(fid,ret.data);
  427. c.showupid(fid);
  428. if(o1)$(o1).remove();
  429. }else{
  430. js.msgerror(ret.msg);
  431. }
  432. },'get,json');
  433. },
  434. //手写签名
  435. autograph:function(fid,lx){
  436. if(typeof(autographClass)=='undefined'){
  437. js.importjs('web/res/js/autograph.js?'+Math.random()+'', function(){
  438. c.autograph(fid,lx);
  439. });
  440. return;
  441. }
  442. var obj = new autographClass({fid:fid});
  443. if(lx==0)obj.create();
  444. if(lx==1)obj.imports();
  445. if(lx==2)obj.clear();
  446. },
  447. //自动完成2022-10-30添加
  448. autocompletearr:{},
  449. autocomplete:function(o1,s1,id1,zb){
  450. clearTimeout(this.autoctime);
  451. this.autocompletea=[o1,s1,id1,zb];
  452. if(this.nowinpvle == o1.value && get('completelist'))return;
  453. if(this.autocompletearr[id1]){
  454. this.autoctime = setTimeout(function(){c.autocompleteshow(o1,c.autocompletearr[id1]);},10);
  455. return;
  456. }
  457. var a1 = s1.split(',');
  458. var gcan = {'act':a1[0],'actstr':jm.base64encode(s1),'acttyle':'act','sysmodenum':modenum,'sysmid':mid};
  459. js.ajax(geturlact('getselectdata', gcan),{key:jm.base64encode(o1.value)}, function(ret){
  460. c.autocompletearr[id1] = ret;
  461. c.autocompleteshow(o1,ret);
  462. },'get,json')
  463. },
  464. autocompleteshow:function(o1,da){
  465. if(!da || da.length==0)return;
  466. var o2 = $(o1),lefta=o2.offset(),i,len=da.length,ds=[],zl=10,j=0;
  467. $('#completelist').remove();
  468. var str= '<div id="completelist" style="position:absolute;z-index:9;left:'+lefta.left+'px;top:'+(lefta.top+29)+'px;background:white;border:1px var(--main-color) solid;border-radius:5px;box-shadow: 0px 0px 5px rgb(0,0,0,0.3)"></div>';
  469. var val= strreplace(o1.value);
  470. if(val){
  471. for(i=0;i<len;i++)if(da[i].name.indexOf(val)>-1 || (da[i].subname && da[i].subname.indexOf(val)>-1)){
  472. ds.push(da[i]);j++;if(j>=zl*3)break;
  473. }
  474. }else{
  475. ds=da;
  476. }
  477. this.autodata = ds;
  478. this.nowinpvle= o1.value;
  479. $('body').append(str);
  480. this.autocompleteshows(zl,1)
  481. js.addbody('completelist', 'remove','completelist');
  482. },
  483. autocompleteshows:function(zl,p){
  484. var ds = this.autodata;
  485. var str='',i,len=ds.length,j=0;
  486. for(i=(p-1)*zl;i<len;i++){
  487. str+='<div class="list-itemv" onclick="c.autocompleteclick('+i+')" value="'+i+'" style="padding:5px 10px">'+ds[i].name+'';
  488. if(ds[i].subname)str+='&nbsp;<span style="font-size:12px">('+ds[i].subname+')</span>';
  489. str+='</div>';
  490. j++;
  491. if(j>=zl)break;
  492. }
  493. if(len>zl){
  494. str+='<div style="padding:5px 10px;background:rgba(0,0,0,0.1)">总记录'+len+'条';
  495. if(p>1)str+='&nbsp;<a href="javascript:;" class="zhu" onclick="c.autocompleteshows(\''+zl+'\','+(p-1)+')">&lt;上页</a>';
  496. if(j==zl)str+='&nbsp;<a href="javascript:;" class="zhu" onclick="c.autocompleteshows(\''+zl+'\','+(p+1)+')">下页&gt;</a>';
  497. str+='</div>';
  498. }
  499. setTimeout(function(){$('#completelist').html(str)},10);
  500. },
  501. autocompleteclick:function(i){
  502. var d = this.autodata[i],o1=this.autocompletea[0];
  503. o1.value=d.name;
  504. var a1 = this.autocompletea[1].split(',');
  505. if(a1[1]){
  506. if(form(a1[1]))form(a1[1]).value = d.value;
  507. }
  508. this.onselectdataall(o1.name,d);
  509. $('#completelist').remove();
  510. }
  511. }
粤ICP备19079148号