{ //document.write('js in base.js
'); //所有项目公用的代码 let lch={ d:{ 'a':'A-lch', 'b':'B-lch', 'c':'C-lch', 'd':['D-lch'], 'e':'E-lch', 'f':'F-lch', 'g':'G-lch', }, bs:{ client: 'admin', version: '20200609', tabsID: '1', frontFW: 'fw7', lang: 'cn', }, lu:{ cid: '', uid: '', token: '', remember: false, time: '', }, td:{ frontConfig:(cb)=>{ lch.post({_p:'sys/frontConfig'},(r,d)=>{ lch.toCallback({r,d},cb,lch.cb.afterFrontConfig,'afterFrontConfig'); if(!r?.stopDefault){ if(r?.data?.language?.personal){ if(lch.bs.lang!=r.data.language.personal){ window.localStorage.lastLang=lch.bs.lang=r.data.language.personal; } } if(r?.data?.language?.dict){ lch.lang(r.data.language.dict); } } }); }, checkLogin:(cb)=>{ lch.post({_p:'sys/checkLogin'},(r,d)=>{ lch.toCallback({r,d},cb); }); }, login:(cid,uid,pwd,cb,remember)=>{ lch.toCallback({cid,uid,remember},null,lch.cb.beforeLogin,'beforeLogin'); window.localStorage.lu={}; let p=lch?.pwd??[8,32]; lch.post({_p:'sys/login',cid,uid,pwd:md5(pwd).substring(p[0],p[1])},(r,d)=>{ let success=(r.errCode===0); if(success){ lch.lu.cid=r.data.cid; lch.lu.uid=r.data.uid; lch.lu.token=r.data.token; lch.lu.remember=remember; lch.lu.time=lch.f.now(); window.localStorage.lu=(remember?JSON.stringify(lch.lu):''); } lch.toCallback({t:'login',s:success,r,d},cb,lch.cb.afterLogin,'afterLogin'); if(success&&!r.stopDefault){ lch.td.frontConfig(); } }); }, changePWD:(pwd,newpwd,cb)=>{ lch.post({_p:'sys/changePWD',pwd,newpwd},(r,d)=>{ cb&&cb(r,d); }); }, getOptions:(opts,cb)=>{ lch.post({_p:'sys/getOptions',options:opts},(r,d)=>{ cb&&cb(r,d); }); }, setOptions:(opts,cb)=>{ lch.post({_p:'sys/setOptions',options:opts},(r,d)=>{ cb&&cb(r,d); }); }, getMenus:(mids,cb)=>{ lch.post({_p:'sys/getMenus',mids},(r,d)=>{ cb&&cb(r,d); }); }, getMenuDetails:(mids,cb)=>{ lch.post({_p:'sys/getMenuDetails',mids},(r,d)=>{ cb&&cb(r,d); }); }, enterMenu:(p,wid,cb)=>{ let r={stopDefault:false}; lch.toCallback({_p:p,wid,r},null,lch.cb.beforeEnterMenu,'beforeEnterMenu'); if(!r.stopDefault){ lch.post({_p:p,wid},(r,d)=>{ lch.toCallback({r,d},cb,lch.cb.afterEnterMenu,'afterEnterMenu'); if(!r.stopDefault){ lch.menuEnter({r,d}); }}); } }, logout:(cb)=>{ let r={stopDefault:false}; lch.toCallback({r},null,lch.cb.beforeLogout,'beforeLogout'); if(!r.stopDefault){ lch.post({_p:'sys/logout'},(r,d)=>{ window.localStorage.lu=''; lch.lu={cid:'',uid:'',token:'',remember:false,time:lch.f.now()}; lch.toCallback({r,d},cb,lch.cb.afterLogout,'afterLogout'); if(!r.stopDefault){ lch.td.frontConfig(); } }); } }, }, myAdminMenu:{ '基础设置':{ 'data_goods':{ 'caption':'商品管理', }, }, }, menuData:{}, menuEnter:(a)=>{ menuData=a.r.data; if(menuData.type=='html'){ }else if(menuData.type=='page'){ }else if(menuData.type=='table'){ }else if(menuData.type=='report'){ }else if(menuData.type=='其他扩展'){ } }, toCallback:(cba,cb,cb2,en)=>{ cb&&cb(cba); (!cba?.r?.stopDefault)&&cb2&&cb2(cba); (!cba?.r?.stopDefault)&&en&&lch.emit(en,cba); }, events:{}, on:(en,cb)=>{ lch.events[en]??=[]; lch?.events[en]?.push(cb); return kkk; }, off:(en,cb)=>{ if(lch?.events[en]){ lch.events[en]=lch?.events[en]?.filter(tcb=>tcb!==cb); } return kkk; }, emit:(en,a)=>{ lch?.events[en]?.forEach(cb=>cb(a)); return kkk; }, cb:{ afterInit: null, afterFrontConfig: null, needLogin: null, beforeLogin: null, afterLogin: null, beforeEnterMenu: null, afterEnterMenu: null, beforeLogout: null, afterLogout: null, uncaughtException: null, postError: null, showToast: null, }, if:{ }, postSN:0, post:(d,sf,ef)=>{ let json={sn:++lch.postSN,bs:lch.bs,lu:lch.lu,time:lch.f.now(),data:d}; console.log(json); let xhr=lch.f.ajax({data:json,timeout:5000, beforeSend:(xhr)=>{ d.wid&&lch.f.eid(d.wid)?.classList?.add('kkcWinFormBusy'); }, success:(d2)=>{ var res={}; res=lch.f.jsonObj(d2); console.log(res); if(res.errCode){ if(['6002','6003'].includes(res.errCode)){ lch.toCallback({r:res,d:json},null,lch.cb.needLogin,'needLogin'); } if(!res.stopDefault){ lch.toCallback({r:res,d:json},null,lch.cb.postError,'postError'); } if(!res.stopDefault){ if(lch.f.eid('kkdWinDock')){ lch.f.wvWindowsAction({id:d.wid,a:'showMsg',d:((lch.f.eid('kkdWinLock')?.style?.offsetTop==0)?{title:'登录失败',content:res.errMsg}:{title:`响应异常`,content:`
${lch.f.jsonSHL(res)}
`})}); }else{ alert(JSON.stringify(res,null,2)); } } }else{ sf&&sf(res,json); if(!res.stopDefault){ if(res?.data?.type){ if(res.data.type=='js'){ try{ eval(`try{ ${res.data.content} }catch(ex){}`); }catch(ex){} }else if(res.data.type=='html'){ try{ lch.f.eid(res.data.to).html(res.data.content); }catch(ex){} }else if(res.data.type=='unknow'){ } } } } }, error:(e)=>{ ef&&ef(e,json); if(!e.stopDefault){ let d2={type:'error',title:'post timeout',msg:JSON.stringify(e)+'\n\n'+JSON.stringify(json),r:{stopDefault:false}}; lch.toCallback(d2,null,lch.cb.showToast,'showToast'); if(!d?.r?.stopDefault){ if(lch.f.eid('kkdWinDock')){ lch.f.wvWindowsAction({id:d.wid,a:'showMsg',d:{title:`网络错误`,content:`
${lch.f.jsonSHL(e)}
`}}); }else{ alert(`${JSON.stringify(e)}\n\n${JSON.stringify(json)}`); } } } }, complete:(xhr,s)=>{ d.wid&&lch.f.eid(d.wid)?.classList?.remove('kkcWinFormBusy'); if(s=='success'){ }else if(s=='error'){ }else if(s=='timeout'){ xhr.abort(); if(lch.f.eid('kkdWinDock')){ lch.f.wvWindowsAction({id:d.wid,a:'showMsg',d:{title:`响应超时`,content:`响应超时`}}); }else{ alert('响应超时'); } } } }); }, err:{ '6001':'该请求已经处理成功过', '6002':'未登录', '6003':'当前口令不匹配应该是用户在其他地方登录了', '6004':'没有权限操作', '6005':'上传的数据过大', '6006':'查询超时', '6007':'其他错误', '6008':'数据库链接异常', '6011':'账套不存在', '6012':'用户不存在', '6013':'密码不对', '6014':'过了到期时间', '6015':'被禁止登录', '6016':'登录IP限制', '6017':'登录时间段限制', '6021':'当前密码不匹配', '6022':'新密码不符合安全策略', }, langDict:{ '用户': { cn:'',en:'Username',hk:'',tw:'',jp:'', }, '密码': { cn:'',en:'Password',hk:'',tw:'',jp:'', }, '下次自动登录': { cn:'',en:'Remember',hk:'',tw:'',jp:'', }, '登录': { cn:'',en:'Login', hk:'',tw:'',jp:'', }, '用户不存在': { cn:'用户 *** 不存在',en:'User name *** not available',hk:'',tw:'',jp:'', }, '功能菜单':{ cn:'',en:'Menu', hk:'',tw:'',jp:'', }, '其它信息':{ cn:'',en:'Others', hk:'',tw:'',jp:'', }, '我的资料':{ cn:'',en:'Profile',hk:'',tw:'',jp:'', }, '选项设置':{ cn:'',en:'Options',hk:'',tw:'',jp:'', }, '帮助手册':{ cn:'',en:'Help', hk:'',tw:'',jp:'', }, '退出登录':{ cn:'',en:'Logout', hk:'',tw:'',jp:'', }, '系统设置':{ cn:'',en:'Basic',hk:'',tw:'',jp:'', }, '取消***个勾选':{ cn:'取消***个勾选项',en:'Unselect *** item',hk:'',tw:'',jp:'', }, '取消':{ cn:'',en:'Cancel',hk:'',tw:'',jp:'', }, '添加':{ cn:'',en:'Add',hk:'',tw:'',jp:'', }, '修改':{ cn:'',en:'Edit',hk:'',tw:'',jp:'', }, '删除':{ cn:'',en:'Delete',hk:'',tw:'',jp:'', }, '打印':{ cn:'',en:'Print',hk:'',tw:'',jp:'', }, '审核':{ cn:'',en:'Check',hk:'',tw:'',jp:'', }, '退回':{ cn:'',en:'Return',hk:'',tw:'',jp:'', }, '通过':{ cn:'',en:'Pass',hk:'',tw:'',jp:'', }, '锁定':{ cn:'',en:'Lock',hk:'',tw:'',jp:'', }, '解锁':{ cn:'',en:'Unlock',hk:'',tw:'',jp:'', }, '移动':{ cn:'',en:'Move',hk:'',tw:'',jp:'', }, '复制':{ cn:'',en:'Copy',hk:'',tw:'',jp:'', }, '搜索':{ cn:'',en:'Search',hk:'',tw:'',jp:'', }, '导入':{ cn:'',en:'Import',hk:'',tw:'',jp:'', }, '导出':{ cn:'',en:'Export',hk:'',tw:'',jp:'', }, '筛选':{ cn:'',en:'Filter',hk:'',tw:'',jp:'', }, '状态':{ cn:'',en:'State',hk:'',tw:'',jp:'', }, '类型':{ cn:'',en:'Type',hk:'',tw:'',jp:'', }, '名称':{ cn:'',en:'Name',hk:'',tw:'',jp:'', }, '备注':{ cn:'',en:'Remark',hk:'',tw:'',jp:'', }, '首页':{ cn:'',en:'First',hk:'',tw:'',jp:'', }, '上一页':{ cn:'',en:'Previous',hk:'',tw:'',jp:'', }, '下一页':{ cn:'',en:'Next',hk:'',tw:'',jp:'', }, '尾页':{ cn:'',en:'Last',hk:'',tw:'',jp:'', }, '用户':{ cn:'',en:'Username',hk:'',tw:'',jp:'', }, '密码':{ cn:'',en:'Password',hk:'',tw:'',jp:'', }, '下次自动登录':{ cn:'',en:'Remember',hk:'',tw:'',jp:'', }, '登录':{ cn:'',en:'Login',hk:'',tw:'',jp:'', }, '登出':{ cn:'',en:'Logout',hk:'',tw:'',jp:'', }, '菜单':{ cn:'',en:'Menu',hk:'',tw:'',jp:'', }, '消息':{ cn:'',en:'News',hk:'',tw:'',jp:'', }, '新建':{ cn:'',en:'New',hk:'',tw:'',jp:'', }, '设置':{ cn:'',en:'Setting',hk:'',tw:'',jp:'', }, 'Finder':{ cn:'文件管理',en:'',hk:'',tw:'',jp:'', }, '位置':{ cn:'',en:'Location',hk:'',tw:'',jp:'', }, '个人文件柜':{ cn:'',en:'Personal',hk:'',tw:'',jp:'', }, '公共文件柜':{ cn:'',en:'Company',hk:'',tw:'',jp:'', }, '':{ cn:'',en:'',hk:'',tw:'',jp:'', }, }, lang:(s,...vars)=>{ let tos=typeof(s); if(tos!=='string'){ if(tos==='object'){ lch.langDict=lch.f.mergeObj(lch.langDict,s); } return ''; } let r,t=''; if(r=lch.langDict[s]){ t=r[lch.bs.lang]??''; } if(t==''){ t=s; } if(t.includes('***')){ let fs=t.split('***'),f2=[]; for(let i=0;i{ let d=new Date(); if(t===0){return +d;} let tot=typeof(t); (tot=='number'?d.setTime(t):(tot=='object'?d=t:'')); d=`${d.getFullYear()}-${('00'+(d.getMonth()+1)).slice(-2)}-${('00'+d.getDate()).slice(-2)} ${('00'+d.getHours()).slice(-2)}:${('00'+d.getMinutes()).slice(-2)}:${('00'+d.getSeconds()).slice(-2)}`; return (t=='d'?d.substring(0,10):(t=='t'?d.substring(11,19):d)); }, strRand:(len=32)=>{ const chars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; let maxPos=chars.length,pwd=[]; for(let i=0;i{ try{ return JSON.parse(str,(r===1?(k,v)=>{ if(typeof(v)=='string'&&v.indexOf('$eval:')==0){try{}catch(e){}} return v;}:r)); }catch(e){ return {}; } }, jsonStr:(obj,r=null,s=4)=>{ return JSON.stringify(obj,(r===1?(k,v)=>{return(typeof(v)=='function'?`$eval:${v}`:v);}:r),s); }, jsonSHL:(json,r)=>{ json??='{}'; if(typeof(json)!='string'){json=lch.f.jsonStr(json,r,2);} json=json.replace(/&/g,'&').replace(//g,'>'); return '
'+json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g,match=>{ return `${match}`; })+'
'; }, mergeObj:(args_base,args_diy)=>{ if(typeof(args_base)!='object'){ return args_diy; } if(typeof(args_diy)=='object'&&args_base!==args_diy){ for(let prop in args_diy){ if(typeof(args_diy[prop])=='object'&&!(args_diy[prop] instanceof HTMLElement)){ args_base[prop]=lch.f.mergeObj(args_base[prop],args_diy[prop]); }else{ args_base[prop]=args_diy[prop]; } } } return args_base; }, domTips:(msg,color='var(--kkvColorTitle)',timePrefix=true)=>{ if(document.body){ let d=document.createElement('div'); d.innerHTML=`
${timePrefix?`[${lch.f.now('t')}] `:''}${msg}
`; document.body.appendChild(d); } }, htmlEncode:(str)=>{ let vs={'&':'&','<':'<','>':'>',' ':' ',"'":''','"':'"'}; for(let k in vs){str=str.replaceAll(k,vs[k]);} return str; }, htmlDecode:(str)=>{ let vs={'<':'<','>':'>',' ':' ',''':"'",'"':'"','&':'&'}; for(let k in vs){str=str.replaceAll(k,vs[k]);} return str; }, ajax:(args)=>{ args=lch.f.mergeObj({url:'?',type:'json',data:{},contentType:null,timeout:30_000,beforeSend:(xhr)=>{},success:(d)=>{},error:(e)=>{},complete:(xhr,s)=>{},progress:(l,t)=>{},uploadProgress:(l,t)=>{}},args); let method=args.type.toUpperCase(),data2svr=''; if(typeof(args.data)=='string'){ data2svr=args.data; }else{ if(method=='JSON'){ data2svr=JSON.stringify(args.data); }else{ data2svr=[]; for(let key in args.data){ data2svr.push(encodeURIComponent(key)+'='+encodeURIComponent(args.data[key])); } data2svr=data2svr.join('&'); } } if(method=='GET'&&data2svr!=''){ args.url+=(args.url.includes('?')?'':'?')+data2svr; data2svr=null; } let xhr=new XMLHttpRequest(); xhr.tmrTimeout=setTimeout(()=>{ args.error&&args.error(0); args.complete&&args.complete(xhr,'timeout'); },args.timeout); xhr.onreadystatechange=()=>{ if(xhr.readyState===0){ }else if(xhr.readyState===1){ args.beforeSend&&args.beforeSend(xhr); }else if(xhr.readyState===2){ }else if(xhr.readyState===3){ }else if(xhr.readyState===4){ xhr.tmrTimeout&&clearTimeout(xhr.tmrTimeout); if(xhr.status==200){ args.success&&args.success(xhr.responseText); args.complete&&args.complete(xhr,'success'); }else{ args.error&&args.error(`${xhr.readyState}.${xhr.status}`); args.complete&&args.complete(xhr,'error'); } } } if(args.progress){ xhr.onprogress=(e)=>{ if(e.lengthComputable){ args.progress(e.loaded,e.total); } }; } if(args.uploadProgress){ xhr.upload.onprogress=(e)=>{ if(e.lengthComputable){ args.uploadProgress(e.loaded,e.total); } }; } xhr.open((method=='JSON'?'POST':method),args.url); if(method!='GET'){ xhr.setRequestHeader('Content-type',args.contentType??(method=='JSON'?'application/json':(method=='POST'?'application/x-www-form-urlencoded':''))); } xhr.send(data2svr); return xhr; }, ue:(s)=>{ return encodeURIComponent(s); }, ens:(n)=>{ return document.getElementsByName(n); }, cns:(n)=>{ return document.getElementsByClassName(n); }, eid:(id)=>{ return document.getElementById(id); }, env:(n,v='')=>{ let es=lch.f.ens(n); return (es[0]?.value??v); }, eidv:(id,v='')=>{ let e=lch.f.eid(id); return (e?.value??v); }, bsIsSupports:(fn='importmap')=>{ return HTMLScriptElement.supports&&HTMLScriptElement.supports(fn); }, bsRequestFullscreen:()=>{ document.documentElement.requestFullscreen(); }, bsExitFullscreen:()=>{ document.exitFullscreen(); }, bsPrint:(andClose)=>{ let t=document.title; document.title='请点击打印按钮开始打印'; window.print(); document.title='结束打印'; document.title=t; andClose&&lch.f.winClose(); }, bsClose:()=>{ window.open('','_self',''); window.close(); }, bsCssVarGet:(n,dv='',e=null)=>{ return getComputedStyle(e??document.documentElement).getPropertyValue(n)??dv; }, bsCssVarSet:(n,v,e=null)=>{ (e??document.documentElement).style.setProperty(n,v); }, debounce:(func,delay=1e3)=>{ let tmr; return function(){ const context=this,args=arguments; clearTimeout(tmr); tmr=setTimeout(()=>{ func.apply(context,args); },delay); }; }, throttle:(func,delay=1e3)=>{ let bIn; return function(){ const context=this,args=arguments; if(!bIn){ func.apply(context,args); bIn=true; setTimeout(()=>{ bIn=false; },delay); } }; }, elementDragResize:(args)=>{ args=lch.f.mergeObj({e:null,drag:true,dragCallback:null,dragArea:{top:0,left:0,right:0,bottom:0},dragRect:{top:0,left:0,right:0,bottom:0},dragCursor:'move',resize:true,resizeCallback:null,resizeSpace:10,minWidth:400,minHeight:300,maxWidth:0,maxHeight:0,allowAction:'123456789'},args); let e=args.e,mT=0,pW,pH,dX,dY,dL,dT,dH,dW,mW,mH,lW,lH,aT,aL,aR,aB,cursors=['','ns-resize','nesw-resize','ew-resize','nwse-resize','ns-resize','nesw-resize','ew-resize','nwse-resize',args.dragCursor]; if(e){ e.style.position='absolute'; }else{ return false; } function actionType(x,y,l,t,w,h){ x-=e.parentNode.offsetLeft; y-=e.parentNode.offsetTop; x-=l; y-=t; if(x<0||y<0){ return 0; } let type=0,b=args.resize,rs=args.resizeSpace,d=args.drag,dr=args.dragRect; if(dr instanceof HTMLElement){ dr={left:dr.offsetLeft,top:dr.offsetTop,right:w-dr.offsetWidth-dr.offsetLeft,bottom:h-dr.offsetHeight-dr.offsetTop}; } let rl=dr.left,rr=dr.right,rt=dr.top,rb=dr.bottom,rh=dr.height; if(b&&(rs<=x&&x<=w-rs)&&yw-rs&&yw-rs&&(rs<=y&&y<=h-rs)){ type=3; }else if(b&&x>w-rs&&y>h-rs){ type=4; }else if(b&&(rs<=x&&x<=w-rs)&&y>h-rs){ type=5; }else if(b&&xh-rs){ type=6; }else if(b&&x(pW-aR))&&![1,5].includes(mT)){ xx=pW-aR-l-w; } if(((t+h+yy)>(pH-aB))&&![3,7].includes(mT)){ yy=pH-aB-t-h; } if(mT==0){ }else if(mT==1){ h-=yy; t+=yy; tc=true; }else if(mT==2){ h-=yy; t+=yy; w+=xx; tc=true; }else if(mT==3){ w+=xx; }else if(mT==4){ w+=xx; h+=yy; }else if(mT==5){ h+=yy; }else if(mT==6){ w-=xx; l+=xx; h+=yy; lc=true; }else if(mT==7){ w-=xx; l+=xx; lc=true; }else if(mT==8){ w-=xx; l+=xx; h-=yy; t+=yy; lc=true; tc=true; }else if(mT==9){ l+=xx; t+=yy; } let ciXi=8; let xs=lch?.v?.elementDragResizeXS??[]; xs.forEach(tx=>{ if([6,7,8,9].includes(mT)&&Math.abs(l-tx)<=ciXi){ if(mT!=9){ w-=tx-l; } l=tx; } if([2,3,4,9].includes(mT)&&Math.abs(l+w-tx)<=ciXi){ if(mT==9){ l=tx-w; }else{ w=tx-l; } } }); let ys=lch?.v?.elementDragResizeYS??[]; ys.forEach(ty=>{ if([1,2,8,9].includes(mT)&&Math.abs(t-ty)<=ciXi){ if(mT!=9){ h-=ty-t; } t=ty; } if([4,5,6,9].includes(mT)&&Math.abs(t+h-ty)<=ciXi){ if(mT==9){ t=ty-h; }else{ h=ty-t; } } }); if(lW&&lW>mW&&w>lW){ w=lW; } if(lH&&lH>mH&&h>lH){ h=lH; } if(w>pW){ w=pW; } if(mW&&wpH){ h=pH; } if(mH&&hpW-aR){ l=pW-aR-w; } if(tpH-aB){ t=pH-aB-h; } e.style.top=t+'px'; e.style.left=l+'px'; e.style.width=w+'px'; e.style.height=h+'px'; if(dT!=t||dL!=l||dW!=w||dH!=h){ e.style.transition=''; let r={e:e,type:mT,actionEnd:false,newRect:{L:l,T:t,W:w,H:h},oldRect:{L:dL,T:dT,W:dW,H:dH}}; if(1<=r.type&&r.type<=8&&typeof(args.resizeCallback)==='function'){ args.resizeCallback(r); } if(r.type==9&&typeof(args.dragCallback)==='function'){ args.dragCallback(r); } } } } function actionEnd(){ let r={e:e,type:mT,actionEnd:true,newRect:{L:e.offsetLeft,T:e.offsetTop,W:e.offsetWidth,H:e.offsetHeight},oldRect:{L:dL,T:dT,W:dW,H:dH}}; mT=0; if(1<=r.type&&r.type<=8&&typeof(args.resizeCallback)==='function'){ args.resizeCallback(r); } if(r.type==9&&typeof(args.dragCallback)==='function'){ args.dragCallback(r); } } e.addEventListener('touchstart', (event)=>{ if(event.touches.length==1){ if(actionStart(event.touches[0].clientX,event.touches[0].clientY)){ event.preventDefault(); } } }); e.addEventListener('touchmove', (event)=>{ if(mT){ actionMove(event.touches[0].clientX,event.touches[0].clientY); event.preventDefault(); } }); e.addEventListener('touchend', (event)=>{ if(mT){ actionEnd(); event.preventDefault(); } }); e.addEventListener('touchcancel', (event)=>{ if(mT){ actionEnd(); event.preventDefault(); } }); let eDrag=lch.f.eid('kkdWinDrag'); e.addEventListener('mousedown', (event)=>{ if(event.button==0&&actionStart(event.clientX,event.clientY)){ eDrag.style.display=''; } }); e.addEventListener('mousemove', (event)=>{ if(mT){ actionMove(event.clientX,event.clientY); event.preventDefault(); }else{ eDrag.style.cursor=e.style.cursor=cursors[actionType(event.clientX,event.clientY,e.offsetLeft,e.offsetTop,e.offsetWidth,e.offsetHeight)]; } }); eDrag.addEventListener('mousemove', (event)=>{ if(mT){ actionMove(event.clientX,event.clientY); } }); eDrag.addEventListener('mouseup', (event)=>{ if(mT){ actionEnd(); eDrag.style.display='none'; } }); eDrag.addEventListener('mouseleave',(event)=>{ if(mT){ actionEnd(); eDrag.style.display='none'; } }); }, wvWindows:(a)=>{ if(lch.f.eid('kkdDesktop')){ return false; } lch.v.wvWindowsList??=['kkdWinLock','kkdWinDrag','kkdWinDock','kkdWinStart','kkdWinList']; lch.v.wvWindows1st??=lch.v.wvWindowsList.length; lch.v.wvWindowsSN??=0; document.body.insertAdjacentHTML('beforeend',`
`); lch.f.eid('kkdWinDockBtnMy' ).addEventListener('click',(event)=>{ lch.f.wvWindowsAction({a:'openForMenu',p:'c.my.info', title:` ${lch.lang('我的资料')}`}); }); lch.f.eid('kkdWinDockBtnHelp' ).addEventListener('click',(event)=>{ lch.f.wvWindowsAction({a:'openForMenu',p:'p.help.admin',title:` ${lch.lang('帮助手册')}`}); }); lch.f.eid('kkdWinDockBtnOptions').addEventListener('click',(event)=>{ lch.f.wvWindowsAction({a:'openForMenu',p:'c.my.options',title:` ${lch.lang('选项设置')}`}); }); lch.f.eid('kkdWinDockBtnLogout' ).addEventListener('click',(event)=>{ if(confirm(lch.lang('确定要退出登录吗?'))){ lch.td.logout(); } }); lch.f.eid('kkdWinDockBtnStart' ).addEventListener('click',(event)=>{ let e=lch.f.eid('kkdWinStart'); e.lchShow=!e.lchShow; e.style.transition='0.3s var(--kkvTransitionHuiTan)'; e.style.width=(window.localStorage[`${lch.lu.cid}.${lch.lu.uid}.kkdWinStart.width`]??200)+'px'; e.style.left=(e.lchShow?'0px':`-${e.offsetWidth}px`); let eb=lch.f.eid('kkdWinDockBtnStart').querySelector('span'); eb.classList.remove(e.lchShow?'icon-category':'icon-left-double-arrow'); eb.classList.add( e.lchShow?'icon-left-double-arrow':'icon-category'); let ewd=lch.f.eid('kkdWinDock'); ewd.style.transition=e.style.transition; ewd.style.left=(e.lchShow?`${e.style.width}`:'0px'); if(lch.f.eid('kkdDesktop').offsetWidth>=800){ let ewa=lch.f.eid('kkdWinArea'); ewa.style.transition=e.style.transition; ewa.style.left=(e.lchShow?`${e.style.width}`:'0px'); setTimeout(()=>{ lch.f.wvWindowsAction({a:'areaResize'}); },500); } }); lch.f.eid('kkdWinDockBtnList').addEventListener('click',(event)=>{ let e=lch.f.eid('kkdWinList'); e.lchShow=!e.lchShow; e.style.transition='0.3s var(--kkvTransitionKuaiDaoMan)'; e.style.right=(e.lchShow?'0px':`-${e.offsetWidth+10}px`); }); lch.f.elementDragResize({e:lch.f.eid('kkdWinStart'),minWidth:180,maxWidth:300,allowAction:'3',resizeCallback:(r)=>{ if(r.actionEnd){ window.localStorage[`${lch.lu.cid}.${lch.lu.uid}.kkdWinStart.width`]=r.e.offsetWidth; } let ewd=lch.f.eid('kkdWinDock'); ewd.style.transition=''; ewd.style.left=r.e.style.width; if(lch.f.eid('kkdDesktop').offsetWidth>=800){ let ewa=lch.f.eid('kkdWinArea'); ewa.style.transition=''; ewa.style.left=r.e.style.width; lch.f.wvWindowsAction({a:'areaResize'}); } }}); }, wvWindowsAction:(a)=>{ a=lch.f.mergeObj({id:'',a:'',d:{}},a); let ed,ew,wid=a.id; if(a.a=='new'){ a.d=lch.f.mergeObj({name:'',title:'',type:'',opener:'',width:0,height:0,minWidth:0,minHeight:0,maxWidth:0,maxHeight:0},a.d); wid=`kkdWinForm${++lch.v.wvWindowsSN}`; lch.f.eid('kkdWinDockItems').insertAdjacentHTML('beforeend',`
${a.d.title}
`); lch.f.eid(`kkdWinArea`).insertAdjacentHTML('beforeend',`
${a.d.title||wid}
`); ed=lch.f.eid(`${wid}Dock`); ew=lch.f.eid(wid); ew.lchWinSN=lch.v.wvWindowsSN; ew.lchWIDPF=`W${lch.v.wvWindowsSN}|`; let ec=ew.querySelector('.kkcWinFormBody'); if(['url','media','image'].includes(a.d.type)){ ec.innerHTML=``; ew.lchGoHome=()=>{ ec.querySelector('iframe').src=a.d.url; }; }else if(a.d.type=='html'){ ec.innerHTML=a.d.html; ec.style.overflow='auto'; ew.lchGoHome=()=>{ ec.scrollTo({top:0,left:0,behavior:'smooth'}); }; }else if(a.d.type=='finder'){ let fid=`kkdWinFinder${ew.lchWinSN}`; ec.innerHTML=lch.f.wvFinder({id:fid,ew}); ew.lchGoHome=()=>{ lch.f.wvFinderAction({id:fid,path:'/'}); } ew.lchGoHome(); setTimeout(()=>{ ew.classList.add('kkcWinFormFinder'); },300); }else if(a.d.type=='editor'){ let editorId=`kkdWinEditor${lch.v.wvWindowsSN}`,codeContent='',editor=null; ec.innerHTML=`
`; editor=ace.edit(editorId); editor.setTheme("ace/theme/monokai"); editor.session.setMode(`ace/mode/javascript`); editor.setOptions({ enableBasicAutocompletion:true, enableLiveAutocompletion:true, enableSnippets:true, }); editor.renderer.setScrollMargin(5,5,5,5); editor.setValue(codeContent); editor.moveCursorTo(0,0); editor.session.on('change',function(delta){ if(codeContent==editor.getValue()){ }else{ } }); let ewfh=ew.querySelector('.kkcWinFormIcon'); ewfh.title=lch.lang('运行'); let ewfi=ewfh.querySelector('span'); ewfi.classList.remove('icon-home'); ewfi.classList.add('icon-play'); ewfi.style.fontSize='24px'; ew.lchGoHome=()=>{ try{ let st=lch.f.now(0); eval(` { ${editor.getValue()} }`); lch.f.wvWindowsAction({id:wid,a:'showMsg',d:{title:'完成',content:`代码运行完毕

时长 ${lch.f.now(0)-st} ms`}}); }catch(ex){ lch.f.wvWindowsAction({id:wid,a:'showMsg',d:{title:'运行报错',content:ex.toString()}}); } }; }else if(a.d.type=='dataTable'){ }else if(a.d.type=='report'){ } ew.querySelector('.kkcWinFormIcon' ).addEventListener('click', (event)=>{ ew.lchGoHome&&ew.lchGoHome(); }); ew.querySelector('.kkcWinFormMin' ).addEventListener('click', (event)=>{ lch.f.wvWindowsAction({a:'min', id:wid}); }); ew.querySelector('.kkcWinFormMax' ).addEventListener('click', (event)=>{ lch.f.wvWindowsAction({a:'max', id:wid}); }); ew.querySelector('.kkcWinFormClose' ).addEventListener('click', (event)=>{ lch.f.wvWindowsAction({a:'close', id:wid}); }); ew.querySelector('.kkcWinFormZOrder').addEventListener('mousedown', (event)=>{ lch.f.wvWindowsAction({a:'zorder',id:wid}); }); ew.querySelector('.kkcWinFormZOrder').addEventListener('touchstart',(event)=>{ lch.f.wvWindowsAction({a:'zorder',id:wid}); }); lch.f.elementDragResize({e:ew,dragCursor:'',minWidth:a.d.minWidth||400,minHeight:a.d.minHeight||300,maxWidth:a.d.maxWidth||0,maxHeight:a.d.maxHeight||0,dragArea:{top:1,left:1,right:1,bottom:1},dragRect:ew.querySelector('.kkcWinFormTitle' ),dragCallback:(r)=>{if(r.actionEnd){lch.f.wvWindowsAction({a:'drag',id:wid,r:r});}},resizeCallback:(r)=>{if(r.actionEnd){lch.f.wvWindowsAction({a:'resize',id:wid,r:r});}}, }); lch.f.wvWindowsAction({a:'zorder',id:wid}); let wlsrs='',initLeft=1,initTop=1; if(a.d.opener&&(wlsrs=window.localStorage[`winRect:${a.d.opener}`])){ wlsrs=wlsrs.split(','); initLeft=wlsrs[0]; initTop=wlsrs[1]; ew.style.width=`${wlsrs[2]}px`; ew.style.height=`${wlsrs[3]}px`; }else{ if(a.d.width){ ew.style.width=`${a.d.width}px`; } if(a.d.height){ ew.style.height=`${a.d.height}px`; } } ew.style.opacity='0.3';ew.style.transform=`scale(${ed.offsetWidth/ew.offsetWidth})`;ew.style.top=(-(ew.offsetHeight*(1+(ed.offsetWidth/ew.offsetWidth)))/2)+'px';ew.style.left=(ed.offsetLeft+((ed.offsetWidth-ew.offsetWidth)/2))+'px'; setTimeout(()=>{ ew.style.transition='0.3s var(--kkvTransitionHuiTan)';ew.style.transform='scale(1)';ew.style.opacity='1';ew.style.top=`${initTop}px`;ew.style.left=`${initLeft}px`; },10); setTimeout(()=>{ lch.f.wvWindowsAction({id:wid,a:'areaResize'}); },500); return wid; }else if(a.a=='zorder'){ lch.v.elementDragResizeXS=lch.v.elementDragResizeYS=[]; let ci,win1st=lch.v.wvWindows1st; wid??=lch.v.wvWindowsList[win1st]; if(!wid){return;} if((ci=lch.v.wvWindowsList.indexOf(wid))==0){ return false; }else if(ci>=1){ lch.v.wvWindowsList.splice(ci,1); } if(lch.f.eid(wid)){ lch.v.wvWindowsList.splice(win1st,0,wid); } for(ci=0;ciwin1st){ ew.classList.remove('kkcWinFormActive'); } if(ci==win1st+1){ lch.v.elementDragResizeXS=[ew.offsetLeft,ew.offsetLeft+ew.offsetWidth]; lch.v.elementDragResizeYS=[ew.offsetTop,ew.offsetTop+ew.offsetHeight]; } if(ed=lch.f.eid(lch.v.wvWindowsList[ci]+'Dock')){ if(ci==win1st){ ed.classList.add('kkcWinDockCur'); }else{ ed.classList.remove('kkcWinDockCur'); } } } } if(ew=lch.f.eid(wid)){ if(ew['lchB4MinRect']){ lch.f.wvWindowsAction({a:'min',id:wid}); } } return wid; }else if(['drag','resize'].includes(a.a)){ ew=lch.f.eid(wid); if(ew.dataset.opener){ window.localStorage[`winRect:${ew.dataset.opener}`]=`${a.r.newRect.L},${a.r.newRect.T},${a.r.newRect.W},${a.r.newRect.H}`; } }else if(['dock','min','max','close'].includes(a.a)){ ew=lch.f.eid(wid); ed=lch.f.eid(`${wid}Dock`); if(a.a=='dock'){ let n=lch.f.now(0); ew.lchLastDockTime??=(n-500); if(ew.lchLastDockTime<=(n-500)){ ew.lchLastDockTime=n; lch.f.wvWindowsAction({a:(ew.parentNode.lchCurWin===ew?'min':'zorder'),id:wid}); } }else if(['min','max'].includes(a.a)){ let r,n1=`lchB4M${a.a.substring(1)}Rect`,n2=`lchB4M${a.a=='min'?'ax':'in'}Rect`; if(ew.parentNode.lchCurWin===ew){ if(r=ew[n1]){ ew[n1]=undefined; }else{ ew[n1]={L:ew.offsetLeft,T:ew.offsetTop,W:ew.offsetWidth,H:ew.offsetHeight}; if(a.a=='min'){ r={T:-(ew.offsetHeight*(1+(ed.offsetWidth/ew.offsetWidth)))/2,L:(ed.offsetLeft+((ed.offsetWidth-ew.offsetWidth)/2)),W:ew.offsetWidth,H:ew.offsetHeight}; }else{ r={T:1,L:1,W:(ew.parentNode.offsetWidth-2),H:(ew.parentNode.offsetHeight-2)}; } if(ew[n2]){ ew[n1]=ew[n2]; ew[n2]=undefined; } } if(a.a=='min'&&!ew['lchB4MinRect']){ ew.style.transition=''; ew.style.left=(ed.offsetLeft+((ed.offsetWidth-ew.offsetWidth)/2))+'px'; } setTimeout(()=>{ ew.style.transition='0.3s var(--kkvTransitionHuiTan)'; ew.style.top=r.T+'px'; ew.style.left=r.L+'px'; ew.style.width=r.W+'px'; ew.style.height=r.H+'px'; if(a.a=='min'){ ew.style.opacity=ew['lchB4MinRect']?'0.3':'1'; ew.style.transform=`scale(${ew['lchB4MinRect']?(ed.offsetWidth/ew.offsetWidth):1})`; } },10); eMax=ew.querySelector('.kkcWinFormMax').querySelector('span'); eMax.classList.remove(ew['lchB4MaxRect']?'icon-square':'icon-layers'); eMax.classList.add( ew['lchB4MaxRect']?'icon-layers':'icon-square'); if(ed){ if(ew['lchB4MinRect']){ ed.classList.add('kkcWinDockMin'); }else{ ed.classList.remove('kkcWinDockMin'); lch.f.wvWindowsAction({a:'removeDockTips',id:wid}); } if(ew['lchB4MaxRect']){ ed.classList.add('kkcWinDockMax'); }else{ ed.classList.remove('kkcWinDockMax'); } } } }else if(a.a=='close'){ if(ew.parentNode.lchCurWin===ew){ ew.style.transition='0.3s var(--kkvTransitionHuiTan)'; ew.style.opacity='0.3'; ew.style.transform=`scale(${ed.offsetWidth/ew.offsetWidth})`; ew.style.top=(-(ew.offsetHeight*(1+(ed.offsetWidth/ew.offsetWidth)))/2)+'px';ew.style.left=(ed.offsetLeft+((ed.offsetWidth-ew.offsetWidth)/2))+'px'; setTimeout(()=>{ lch.f.eid(`${wid}Dock`)?.remove(); ew.parentNode.lchCurWin=null; ew.remove(); let ci; if(ci=lch.v.wvWindowsList.indexOf(wid)){ lch.v.wvWindowsList.splice(ci,1); } lch.f.wvWindowsAction({a:'zorder'}); },300); if(ed){ ed.classList.add('kkcWinDockClose'); } } } }else if(a.a=='areaResize'){ let ci,win1st=lch.v.wvWindows1st,maxW=0,maxH=0; for(ci=win1st;cimaxW){ w=maxW; } if(h>maxH){ h=maxH; } if(l+w>maxW){ l-=l+w-maxW; } if(l<1){ l=1; } if(t+h>maxH){ t-=t+h-maxH; } if(t<1){ t=1; } if(ll!=l||lt!=t||lw!=w||lh!=h){ ew.style.transition='0.3s var(--kkvTransitionHuiTan)'; ew.style.top=t+'px'; ew.style.left=l+'px'; ew.style.width=w+'px'; ew.style.height=h+'px'; } } } } } }else if(a.a=='showMsg'){ if(!wid){ wid=(lch.f.eid('kkdWinLock').offsetTop==0)?'kkdWinLock':'kkdWinDock'; } lch.v.wvMsgBoxSN??=0; a.d=lch.f.mergeObj({title:'',content:'',buttons:''},a?.d); let emw=null,ec=null,mwid=`kkdWinMsgBox${++lch.v.wvMsgBoxSN}`; if(wid.includes('kkdWinForm')){ emw=ew=lch.f.eid(wid); ec=ew.querySelector('.kkcWinFormContent'); }else{ ec=lch.f.eid(wid??'kkdWinDock'); } ec.insertAdjacentHTML('beforeend',`
${a.d.title}
${a.d.content}
`); emw=lch.f.eid(mwid); emw.querySelector('.kkcWinBtnPrimary' ).addEventListener('click',(event)=>{ lch.f.wvWindowsAction({id:mwid,a:'closeMsg'}); }); emw.querySelector('.kkcWinMsgBoxTitle' ).addEventListener('click',(event)=>{ lch.f.wvWindowsAction({id:mwid,a:'closeMsg'}); }); emw.querySelector('.kkcWinMsgBoxContent' ).addEventListener('click',(event)=>{ lch.f.wvWindowsAction({id:mwid,a:'closeMsg'}); }); emw.style.opacity='0';emw.style.top=`${-1*emw.offsetHeight}px`;emw.style.left=`${(emw.parentNode.offsetWidth-emw.offsetWidth)/2}px`; setTimeout(()=>{ emw.style.transition='0.3s var(--kkvTransitionHuiTan)';emw.style.opacity='1';emw.style.top=`0px`; },10); lch.f.wvWindowsAction({a:'dockTips',id:wid}); return mwid; }else if(a.a=='closeMsg'){ ew=lch.f.eid(wid); ew.style.transition='0.3s var(--kkvTransitionHuiTan)'; ew.style.opacity='0';ew.style.top=`${-1*ew.offsetHeight}px`; setTimeout(()=>{ ew.remove(); },300); }else if(a.a=='dockTips'){ if((ew=lch.f.eid(wid))&&ew.parentNode.lchCurWin!==ew){ lch.f.wvWindowsAction({a:'addDockTips',id:wid}); } }else if(a.a=='addDockTips'){ if(ed=lch.f.eid(`${wid}Dock`)){ if(!ed.querySelector('.tips')){ ed.insertAdjacentHTML('beforeend',`
`); } } }else if(a.a=='removeDockTips'){ if(ed=lch.f.eid(`${wid}Dock`)){ ed.querySelector('.tips')?.remove(); } }else if(a.a=='openForMenu'){ let newWin=true; if(!a.mulit){ document.querySelectorAll('.kkcWinForm').forEach(ew=>{ if(ew.dataset.opener==a.p){ newWin=false; wid=lch.f.wvWindowsAction({id:ew.id,a:'zorder'}); } }); } if(newWin){ wid=lch.f.wvWindowsAction({a:'new',d:{title:a.title,type:a.type,opener:a.p,width:a.winwidth,height:a.winheight,minWidth:a.minwidth,minHeight:a.minheight,maxWidth:a.maxwidth,maxHeight:a.maxheight}}); if(ew=lch.f.eid(wid)){ ew.lchGoHome=()=>{ lch.f.wvWindowsAction({a:'enterMenu',id:wid,p:a.p}); }; ew.lchGoHome(); } } }else if(a.a=='enterMenu'){ lch.td.enterMenu(a.p,wid,(a)=>{ console.log(a); let ew=lch.f.eid(wid); let ec=ew.querySelector('.kkcWinFormBody'); if(a?.r?.data?.type=='html'){ ec.innerHTML=a.r.data.html; }else if(a?.r?.data?.type=='table'){ ec.innerHTML=lch.f.wvTable(a.r.data.cells,{id:`${ew.lchWIDPF}mainTable`,checkBox:false,add:'',edit:'',delete:''}); lch.f.wvTableAction({a:'bind'}); }else if(a?.r?.data?.type=='report'){ let d=a.r.data; ec.innerHTML=`
${lch.f.wvMakeInputs({fs:d.fields??d.fs,a:d.fieldsArgs??d.fsa,d:d.data??d.d})}
`; }else if(a?.r?.data?.type=='dataTable'){ ec.innerHTML=lch.f.wvToolbar(a.r.data.toolbar,{id:`${ew.lchWIDPF}mainToolbar`})+ lch.f.wvTable(a.r.data.cells,{id:`${ew.lchWIDPF}mainTable`})+ lch.f.wvPagebar(a.r.data.pages,{id:`${ew.lchWIDPF}mainPagebar`}); lch.f.wvTableAction({a:'bind'}); lch.f.wvToolbarAction({a:'bind'}); lch.f.wvPagebarAction({a:'bind'}); }else{ } }); } }, wvFinder:(a)=>{ a=lch.f.mergeObj({id:'',ew:null},a); let html=[]; a.ew.querySelector('.kkcWinFormLoading').insertAdjacentHTML('beforebegin',`
${lch.lang('位置')}
${lch.lang('个人文件柜')}
${lch.lang('公共文件柜')}
`); let et=a.ew.querySelector('.kkcWinFormTitle'); a.ew.querySelector('.kkcWinFormBody').style.paddingTop=et.offsetHeight+'px'; et.classList.add('kkcWinGlassBG'); et.style.borderBottom='1px solid var(--kkvColorGlassBorder)'; let fs=a.ew.querySelectorAll('.kkcWinFormLeftItem'); fs[0].addEventListener('click',(event)=>{ lch.f.wvFinderAction({ew:a.ew,a:'dir',path:''}); }); fs[1].addEventListener('click',(event)=>{ }); return html.join(''); }, wvFinderAction:(a)=>{ a=lch.f.mergeObj({id:'',a:''},a); if(a.a=='bind'){ }else if(a.a=='dir'){ a.ew.querySelector('.kkcWinFormBody').innerHTML=''+lch.f.wvMakeInputs({ a:{ 'countPerRow':2, addSubmit:'查询', }, fs:{ '名称':{memo:'kk'}, '密码':{type:'p'}, '姓名':{colSpan:2,value:"'sss'<>'b'"}, ace: {type:'ace'}, b: {type:'b'}, chk: {type:'chk'}, c: {type:'c'}, cs: {type:'cs'}, d: {type:'d'}, d2: {type:'d2'}, dt: {type:'dt'}, em: {type:'em'}, g: {type:'g',countPerRow:2}, h: {type:'h'}, l: {type:'l'}, n: {type:'n'}, gv: {type:'gv',countPerRow:1}, p: {type:'p'}, r: {type:'r'}, rb: {type:'rb'}, rs: {type:'rs'}, s: {type:'s'}, sb: {type:'sb'}, sel: {type:'sel'}, t: {type:'t'}, ta: {type:'ta'}, m: {type:'m'}, w: {type:'w'}, u: {type:'u'}, tel: {type:'tel'}, 开始日期:{type:'d',min:'2025-01-01',required:true}, 结束日期:{type:'d',min:'2025-01-01',max:'2025-12-31',required:true}, } })+'
'; }else if(a.a=='list'){ }else if(a.a=='open'){ }else if(a.a=='startfile'){ } }, wvEditor:(a)=>{ a=lch.f.mergeObj({id:''},a); let html=[]; return html.join(''); }, wvEditorAction:(a)=>{ }, wvMenubar:(ms,a,level=0)=>{ a=lch.f.mergeObj({id:'',caption:'',indent:12,search:true},a); let html=[level?'':`
`]; if(a.search&&!level){ lch.v.wvMenubarDataList=[];lch.v.wvMenubarDLMaps={}; html.push(``); } for(let i=0;i`); }else{ ms[i].icon??=lch.f.wvAutoIcon(ms[i].name); let hasSub=(ms[i]?.children?.length>=1),opened=ms[i]?.opened??0; html.push(`
${lch.lang(ms[i].name)} ${ms[i].tips===undefined?'':`
${ms[i].tips}
`}
`); if(hasSub){ html.push(`
`); html.push(`
`); html.push(lch.f.wvMenubar(ms[i].children,a,level+1)); html.push(`
`); html.push(`
`); } if(ms[i].self||!hasSub){ lch.v.wvMenubarDLMaps[a.id]??={}; lch.v.wvMenubarDLMaps[a.id][ms[i].name]=ms[i]._p; lch.v.wvMenubarDataList.push(``); } } } if(a.search&&!level){ html.push(`${lch.v.wvMenubarDataList.join('')}`); } html.push(level?'':`
`); return html.join(''); }, wvMenubarAction:(a)=>{ a=lch.f.mergeObj({a:'click',id:'',e:undefined},a); if(a.a=='search'){ if(lch.v?.wvMenubarDLMaps[a.id]){ let p=lch.v.wvMenubarDLMaps[a.id][a.e.value.trim()]; if(p){ let e=lch.f.eid(`${a.id}-${p}`); if(e){ kkk.f.wvMenubarAction({a:"click",e:e}); a.e.value=''; } } } }else if(a.a=='click'){ let eOpen,eSub=lch.f.eid(`${a.e.id}-sub`); if(eSub){ let bOpen=(eSub.offsetHeight==0); eSub.style.transition='0.3s var(--kkvTransitionHuiTan)'; eSub.style.height=(bOpen?'0':eSub.querySelector('.kkcWinMenuCon').offsetHeight)+'px'; setTimeout(()=>{ eSub.style.height=(bOpen?eSub.querySelector('.kkcWinMenuCon').offsetHeight:'0')+'px'; },10); if(eOpen=a.e.querySelector('span')){ eOpen.classList.remove(`icon-${bOpen?'right':'down'}`); eOpen.classList.add( `icon-${bOpen?'down':'right'}`); } } let eds=a.e.dataset; if(eds.self||!eSub){ a.e.querySelector('.tips')?.remove(); lch.f.wvWindowsAction({a:'openForMenu',p:eds.p,title:` ${lch.lang(eds.name)}`,mulit:eds.mulit,icon:eds.icon,caption:eds.name,type:eds.type,width:eds.winwidth,height:eds.winheight,minWidth:eds.minwidth,minHeight:eds.minheight,maxWidth:eds.maxwidth,maxHeight:eds.maxheight}); if(!(lch.f.eid('kkdDesktop').offsetWidth>=800)){ lch.f.eid('kkdWinStart')?.lchShow&&lch.f.eid('kkdWinDockBtnStart')?.click(); } } } }, wvTable:(cs,a)=>{ a=lch.f.mergeObj({id:'',caption:'',checkBox:true,add:'添加',edit:'修改',delete:'删除',lastNO:0,memoFields:['id','创建者','创建时间','修改者','修改时间','删除者','删除时间','锁定者','锁定时间','浏览者','浏览时间']},a); let html=[``,``],rows=cs.length,cols=cs[0].length,ri=0,ci=0,fn='',fn2i={}; if(a?.sum){ cs.push([]); } if(a?.caption){ html.push(``); } html.push(``); html.push(``); for(ci=0;ci`); } } a.delete&&html.push(``); html.push(``); html.push(``); for(ri=1;ri`); html.push(``); for(ci=0;ci${cs[ri][ci]}`); } } a.delete&&html.push(``); html.push(``); } html.push(``); if(a?.sum){ html.push(``); html.push(``); html.push(``); for(ci=0;ci${cs[rows][ci]}`); } } a.delete&&html.push(``); html.push(``); html.push(``); } html.push(``); html.push(``); html.push(``); for(ci=0;ci${icon?``:''} ${lch.lang(fn)}`); } } a.delete&&html.push(``); html.push(``); html.push(``); html.push(``); for(ci=0;ci`); } } a.delete&&html.push(``); html.push(``); html.push(``); html.push('
${a.caption}
`); a.checkBox&&html.push(``); html.push(`${a.lastNO+ri}`); a.edit&&html.push(``); html.push(`
`); a.checkBox&&html.push(``); ((a.add&&a.edit)||!a.add)&&html.push(`#`); a.add&&html.push(``); html.push(`
',''); return html.join(''); }, wvTableAction:(a)=>{ a=lch.f.mergeObj({id:'',a:''},a); if(a.a=='bind'){ let e,es; if(e=lch.f.eid(`${a.id}_dtrca`)){ e.addEventListener('click',()=>{ let es=lch.f.ens(`${a.id}_dtrc`); for(let ei=0;ei{ lch.f.wvToolbarAction({id:a.id,a:'checkbox'}); }); } es=lch.f.ens(`${a.id}_dtas`); for(let ei=0;ei{ lch.f.wvToolbarAction({id:a.id,a:es[ei]?.dataset?.action,ids:(es[ei]?.dataset?.id?[es[ei]?.dataset?.id]:undefined)}); }); } } } }, wvPagebar:(a)=>{ a=lch.f.mergeObj({id:'',rowCount:0,pageSize:20,pageCurrent:1,pageCount:0,iconText:2,nearCount:4,input:false,select:false},a); let html=[''],btns=[],i=0,si=a.pageCurrent-a.nearCount-1,ei=a.pageCurrent+a.nearCount+1; if(a.pageCount>1){ html.push(`
`); if(a.pageCurrent>a.nearCount){ btns.push([1,([0,2].includes(a.iconText)?``:'')+([1,2].includes(a.iconText)?lch.lang('首页'):'')]); } if(a.pageCurrent>1){ btns.push([a.pageCurrent-1,([0,2].includes(a.iconText)?``:'')+([1,2].includes(a.iconText)?lch.lang('上一页'):'')]); } for(i=si;i<=ei;i++){ if(1<=i&&i<=a.pageCount){ if(i==si||i==ei){ btns.push([0,``]); }else if(i==a.pageCurrent){ btns.push([0,i]); }else{ btns.push([i,i]); } } } if(a.pageCurrent`:'')]); } if(a.pageCurrent`:'')]); } for(i=0;i${btns[i][1]}`); } html.push('
'); } return html.join(''); }, wvPagebarAction:(a)=>{ a=lch.f.mergeObj({id:'',a:''},a); if(a.a=='bind'){ let es=lch.f.ens(`${a.id}_dpbs`); for(let ei=0;ei0){ es[ei].addEventListener('click',()=>{ lch.f.wvPagebarAction({id:a.id,a:'goto',page:es[ei]?.dataset?.page}); }); } } }else if(a.a=='goto'){ alert(lch.f.jsonStr(a)); } }, wvToolbar:(bs,a)=>{ a=lch.f.mergeObj({id:'',iconText:2},a); let html=[`
`],k=''; for(k in bs){ html.push(`
${lch.lang(bs[k].text)}
`); } html.push('
'); return html.join(''); }, wvToolbarAction:(a)=>{ a=lch.f.mergeObj({id:'',a:''},a); if(a.a=='bind'){ let es=lch.f.ens(`${a.id}_dtbs`); for(let ei=0;ei0){ es[ei].style.display='none'; } es[ei].addEventListener('click',()=>{ lch.f.wvToolbarAction({id:a.id,a:es[ei]?.dataset?.action}); }); } }else if(a.a=='checkbox'){ if(lch.f.eid(`${a.id}_dtb`)){ let c=0,e,ei,es=lch.f.ens(`${a.id}_dtrc`),tr; for(ei=0;ei{ a=lch.f.mergeObj({text:'',type:'info',cb:null,e:null,id:'',btns:[]},a); if(!a.e){a.e=document.body;} }, wvAutoIcon:(s)=>{ let icon='',maps={'writing':'*账套','calendar':'*日期,*交期','time':'*时间','time-task':'*天数','selected':'*状态','print':'*打印*,*传真','name-card':'*名称,职位,角色,岗位','customer':'*姓名,*用户,*人,*者,*员','location':'*区域,*位置,*坐标,*定位','unlock':'*密码','security':'*权限','lable':'*编号,*编码,*代码,*代号,*单号','descending':'*顺序,*序号,*排序','logistics-warehouse':'*仓位,*仓库','logistics-storehouse':'*车间*','invoice':'票据*,*发票*,*标签*','money-transfer':'收款*,付款*','code':'*代码*','discount':'*单价,*价格','business-icon-festivals':'*折扣','money-funds':'*金额,*总额,*总价,*货币,*费,*费用','logistics-land-transport':'发货*,*送货*,运输*','logistics-container':'包装*,*深度,*深','decorate':'*颜色*','survey':'*原因','phone':'*电话,*手机','scan':'*条码','qr-code':'*二维码*','picture':'*图片,*图标,*照片,*图,*壁纸','customer-official':'*法人*','user-defined':'*主题','pictures':'*轮播','company':'*地址,*部门,*公司','email':'email,*邮箱*','format-zip':'*文件,*压缩包','link':'*链接','a-titleoptimization':'*标题','message-comments':'*备注,*说明','image-text':'*详情,*简介,*介绍,*图文,*内容,*描述,*说明','fair':'*重量,*KG,*重','attachent':'*附件*','customer-service-fill':'*客服,*热线','money-bank':'*银行','order-manage':'*日志','sign-board':'*公告,*通知','professional':'管理员','customer-interests':'*客户','gongyinglianfuwu':'*网站','business-icon-sales-center':'*帐号,*账号,*种类','connections':'*会员,*类型','order-rejected':'*删除*','folder':'*文件管理*','sousuopaixu':'*数据库*','tool':'*维护*','money-inquiry-template':'调整','money-exchange-rate':'*转账,*转帐','category':'*目录','pinpaiguanggaoreci':'*广告*','goods':'*商品*','order-upload':'*输入','order-success':'*账目*,*帐目*','training':'*报表','reads':'报表查询,报表分析,*总结','table':'*列表,*表格,基础数据,基础设置,*明细,*细节','message-language':'*号,*码','product':'*单位','cascades':'*数量,*数','sorting':'*高度,*高','a-sorting2':'*宽度,*宽','layers':'*厚度,*厚','editor-background':'*面积,*平方,*平米,*平','chengchangzhiyin':'*方式,*方案,*方法'}; for(let k in maps){ maps[k].split(',').forEach(f=>{ if(!icon){ let f0=f.replaceAll('*',''); if(f.startsWith('*')){ if(f.endsWith('*')){ if(s.includes(f0)){ icon=k; } }else{ if(s.endsWith(f0)){ icon=k; } } }else{ if(f.endsWith('*')){ if(s.startsWith(f0)){ icon=k; } }else{ if(s==f){ icon=k; } } } } }); } return icon; }, wvMakeInputs:(a={fs:{},d:{},a:{}})=>{ a.a=lch.f.mergeObj({ 'outInHtmlUseVars':'' ,'prefix':'f_' ,'countPerRow':0 ,'addTrId':false ,'delimiterPerInput':' ' ,'trMode':false,'trIndex':'-{%#%}' ,'addinAll':'' ,'existValueColor':'' ,'autoIcon':true ,'notTrTag':false ,'addSubmit':'','addSubmitClass':'kkcWinBtnPrimary' ,'addReset':'','addResetClass':'btn_w' ,'defaultType':'-' ,'inputOnly':false ,'labelTdStyle':'text-align:right;' ,'inputTdStyle':'padding:4px 0px;' ,'memoTdStyle':'color:grey;' ,'spaceTdStyle':'' ,'placeHolder':false ,'primaryFields':''},a.a); if(a.a.addSubmit!=''){ a.fs.submit={field:'submit',type:'sb',value:a.a.addSubmit,addin:`class='${a.a.addSubmitClass}'`}; } if(a.a.addReset!=''){ a.fs.reset ={field:'reset', type:'rb',value:a.a.addReset, addin:`class='${a.a.addResetClass}'` }; } let f,k,gv=false,i=-1,gvi=0,html=[],crecs=[],countPerRow=a.a.countPerRow,outInHtmlUseVars=a.a.outInHtmlUseVars,widthFull=(a.a.countPerRow>0?" style='width:100%;min-width:12em;'":''),mcpr=a.a.countPerRow; for(k in a.fs){ f=a.fs[k]; (f.type=='gv')&&(gv=true); (['gv','g'].includes(f.type)&&mcpr'); } for(k in a.fs){ i++; f=a.fs[k]; f.field??=f.f??k; f.value??=f.v; f.type??=(f.t??a.a.defaultType)||'sel'; f.notPrefix??=(f.p===''); f.addin??=f.a??''; f.colSpan??=f.cs??''; f.rowSpan??=f.rs??''; f.cells??=f.c??[]; if(typeof(f.cells)=='string'){ f.cells=f.cells.split('/'); } let type=f.type,caption=(f.label??f.l)??f.field,memo=lch.lang((f.memo??f.m)??''),input='',inputFooter=''; if(a.a.autoIcon&&typeof(f.icon)!='string'){ f.icon=lch.f.wvAutoIcon(caption); } if(!type){ if(caption.endsWith('图标')||caption.endsWith('图片')){type='fi';} } let captionShow=lch.f.htmlEncode(lch.lang(caption)); let inputName=(f.notPrefix?'':a.a.prefix)+(f.inputName??f.field)+(a.a.trMode?a.a.trIndex:''); let value=(['string','number'].includes(typeof(f.value))?f.value:((a?.d&&a.d[f.field])||'')); let value2=lch.f.htmlEncode(value); let placeHolder=f.placeHolder??(a.a.placeHolder?captionShow:''); if(a.a.existValueColor&&value!=''){ captionShow=`${captionShow}`; } if(f.field!=''&&a.a.primaryFields.split(',').includes(f.field)){ memo='*'+memo; } if(f.datasetId!=''){ let cells=(a?.d&&a.d[f.datasetId])??[]; for(let j=0;j${f.icon?` `:''}${captionShow}${countPerRow<=0&&memo!=''?` (${memo})`:''}${captionShow?':':''}`; let inputAttrs=`${a.a.addinAll} ${f.addin??''}${placeHolder!=''?` placeholder='${placeHolder}'`:''}${f.required?' required':''}${f.autoFocus?' autofocus':''}${f.disabled?' disabled':''}${f.readonly?' readonly':''}${f.multiple?' multiple':''}${f.autoComplete?` autocomplete='${f.autoComplete}'`:''}${f.list?` list='${f.list}'`:''}${f.size?` size='${f.size}'`:''}${f.maxLength?` maxlength='${f.maxLength}'`:''}${f.pattern?` pattern='${f.pattern}'`:''}${f.accept?` accept='${f.accept}'`:''}${f.min?` min='${f.min}'`:''}${f.max?` max='${f.max}'`:''}${f.step?` step='${f.step}'`:''}${f.src?` src='${f.src}'`:''}${f.width?` width='${f.width}'`:''}${f.height?` height='${f.height}'`:''} ${widthFull}`; let mapsInputType={'':'text',i:'image',c:'color',d:'date',dt:'datetime-local',em:'email',n:'number',p:'password',r:'range',s:'search',t:'time',m:'month',w:'week',tel:'tel',u:'url'}; if(mapsInputType[type]){ if(type=='c'){value2=value2||'#000000';} input=``; } let mapsBtnType={b:'button',sb:'submit',rb:'reset'}; if(mapsBtnType[type]){ label=''; input=``; } if(['g','gv'].includes(type)){ input=caption; if(f.countPerRow){ countPerRow=f.countPerRow; } }else if(type=='e'){ input=''; label=''; }else if(type=='l'){ input=value2; }else if(type=='chk'){ input=``; }else if(type=='h'){ input=``; }else if(type=='d2'){ input=`${lch.lang('至')}`; }else if(type=='ta'){ input=``; }else if(type=='ace'){ let aceIndex=lch.f.now(0),maps_lang={'html':'html','sql':'sql','js':'javascript','css':'css','java':'java','ini':'ini','as':'actionscript','conf':'apache_conf','bat':'batchfile','sh':'sh','cpp':'c_cpp','cs':'csharp','json':'json','xml':'xml','vbs':'vbscript','frm':'vbscript','cls':'vbscript','bas':'vbscript'}; input=`
`;
                                                input+=``;
                    }else if(type=='sel'){      input=`';
                    }else if(type=='cs'){       let rows=f?.cells?.length??0,cols=f?.cols??0,t1='
',t2='
',tr1='',tr2='',td1='',td2=''; if(2>cols){t1=t2=tr1=tr2=td1=td2='';} input=`
${t1}`; for(let ri=1;ri${v}${f.notBr?' ':'
'}${td2}`; if(cols>=2&&ri<(rows-1)){ if(ri%cols==0){input+=`${tr2}${tr1}`;} } } input+=`${t2}
`; }else if(type=='rs'){ let rows=f?.cells?.length??0,cols=f?.cols??0,t1='',t2='
',tr1='',tr2='',td1='',td2=''; if(2>cols){t1=t2=tr1=tr2=td1=td2='';} input=`
${t1}`; for(let ri=1;ri${v}${f.notBr?' ':'
'}${td2}`; if(cols>=2&&ri<(rows-1)){ if(ri%cols==0){input+=`${tr2}${tr1}`;} } } input+=`${t2}
`; }else{ if(input==''){ input=`Type '${type}' not support!`; } } input+=inputFooter; if(a.a.outInHtmlUseVars!=''){ outInHtmlUseVars=outInHtmlUseVars.split(`[%${f.field}%]`).join(input); }else if(type=='h'||a.a.inputOnly){ html.push(input); i--; }else if(a.a.trMode){ html.push(`<${f.th?'th':'td'} class='${a.a.prefix+caption}' style='${a.a.inputTdStyle+f.inputTdStyle}'>${memo?`${input.replace(widthFull,'')+memo}`:input}`); }else if(countPerRow==0){ html.push(label,input); }else if(countPerRow==-1){ html.push(`
${label}
${input}
`); }else if(['st','et','ut'].includes(type)){ if(i%countPerRow!=0){ html.push(''); } i=-1; crecs=[]; html.push(`${label}${memo}`); html.push(`${input}`); }else if(type=='g'){ if(i%countPerRow!=0){ html.push(''); } i=-1; crecs=[]; html.push(``); html.push(`${input}`); html.push(``); }else if(type=='gv'){ if(i%countPerRow!=0){ html.push(''); } i=-1; crecs=[]; if(gvi>0){ html.push(``); } gvi++; html.push(``); html.push(``); }else{ if(gvi==0){ gvi=1; } if(i%countPerRow==0||countPerRow==1){ html.push(a.a.notTrTag?'':(``); if((i+1)%countPerRow==0||countPerRow==1){ html.push(a.a.notTrTag?'':''); if(countPerRow>1){ for(let ci=crecs.length-1;0<=ci;ci--){ crecs[ci]-=1; if(crecs[ci]<=0){ crecs.splice(ci,1); } } } } } } if(gv){ html.push('
${input}
${label} ${input} ${memo} ${a.a.delimiterPerInput}
'); } return (a.a.outInHtmlUseVars!=''?outInHtmlUseVars:html.join('')); }, wvSubmitInputs:(e)=>{ let ew=e.closest('.kkcWinForm'),ef=e.closest('.kkcReportFields'),d={}; ef.querySelectorAll('input[data-name]').forEach(e=>{ d[e.dataset.name]=e.value; }); ef.querySelectorAll('select[data-name]').forEach(e=>{ d[e.dataset.name]=e.value; }); ef.querySelectorAll('textarea[data-name]').forEach(e=>{ d[e.dataset.name]=e.value; }); lch.post({_p:d._p,wid:ew.id},(r,d)=>{ if(r?.data?.cells){ let ed=ew.querySelector('.kkcReportData'); ed.innerHTML=lch.f.wvTable(r.data.cells,{id:`${ew.lchWIDPF}mainTable`,checkBox:false,add:'',edit:'',delete:''}); } }); return false; }, }, }; window.addEventListener('load',(e)=>{ if(window.localStorage.lastLang){ lch.bs.lang=window.localStorage.lastLang; } lch.toCallback(null,null,lch.cb.afterInit,'afterInit'); let d={type:'info',title:'load',msg:'window.onload',r:{stopDefault:false}}; lch.toCallback(d,null,lch.cb.showToast,'showToast'); if(window.localStorage.lu){ try{ lch.lu=JSON.parse(window.localStorage.lu); lch.td.checkLogin((a)=>{ if(a?.r?.data?.result){ lch.toCallback({t:'token',r:a.r,d:a.d},null,lch.cb.afterLogin,'afterLogin'); } lch.td.frontConfig(); }); }catch(ex){ lch.td.frontConfig(); } }else{ lch.td.frontConfig(); } }); window.addEventListener('resize',(e)=>{ lch.f.wvWindowsAction({a:'areaResize'}); }); window.addEventListener('beforeunload',(e)=>{ if(lch.lu.token){ } }); document.addEventListener('visibilitychange',()=>{ if(document.hidden){ }else{ } }); let oldWindowOnError=window.onerror; window.onerror=(message,source,lineno,colno,error)=>{ lch.post({_p:'sys/feedback',message,source,lineno,colno}); let e={message,source,lineno,colno,error,r:{stopDefault:false}}; lch.toCallback(e,null,lch.cb.uncaughtException,'uncaughtException'); if(!e.r.stopDefault){ let emsg=`${error}\nLocate: ${source} at ${lineno},${colno} ${message!=error?(`\nMessage: ${message}`):''}`; if(document.body){ lch.f.domTips(`window.onerror

${emsg.replace('\n','

\n')}\n`,'red'); }else{ alert(emsg); } } if(oldWindowOnError){ return oldWindowOnError(message,source,lineno,colno,error); } } window.addEventListener('error',(e)=>{ lch.toCallback(e,null,lch.cb.uncaughtException,'uncaughtException'); if(!e.r?.stopDefault){ let emsg=JSON.stringify(e); lch.emit('uncaughtException',emsg); } return true; },true); var kkk={ bs:lch.bs, td:lch.td, cb:lch.cb, f:lch.f, v:{}, on:lch.on, off:lch.off, menuEnter:lch.menuEnter, post:lch.post, lang:lch.lang }; //document.write('js in projects/v1_0_0/frontend.js
'); //本项目个性化的代码 lch.pwd=[0,16]; lch.d=lch.f.mergeObj(lch.d,{ 'd':['D-HANS'], 'g':null, }); //document.write('js in final.js
'); //所有项目公用的代码 lch.d=lch.f.mergeObj(lch.d,{ 'd':['D-ZY'], 'e':'E-ZY', 'f':'F-ZY', 'g':'G-ZY', }); }