信呼OA版本v2.3.8

This commit is contained in:
雨中磐石
2022-08-14 16:47:40 +08:00
parent 4640677d27
commit e3fcd913e3
1405 changed files with 133635 additions and 73 deletions

View File

@@ -0,0 +1,29 @@
<?php
class agentClassAction extends ActionNot{
public function initAction()
{
$this->mweblogin(0, true);
}
public function defaultAction()
{
$num = $this->get('num');
$reim= m('reim');
$arr = $reim->getagent(0, "and `num`='$num'");
if(!$arr)exit('应用['.$num.']不存在');
$rs = $arr[0];
$this->title = $rs['name'];
$yyurl = ''.P.'/we/ying/yingyong/'.$num.'.html';
if(!file_exists($yyurl))$yyurl='';
$yyurljs = ''.P.'/we/ying/yingyong/'.$num.'.js';
if(!file_exists($yyurljs))$yyurljs='';
$this->assign('arr', $rs);
$this->assign('openfrom', $this->get('openfrom'));
$this->assign('yyurl', $yyurl);
$this->assign('yyurljs', $yyurljs);
$gid = $rs['id'];
$reim->setallyd('agent', $this->adminid, $gid);
}
}

View File

@@ -0,0 +1,132 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title><?=$da['title']?></title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
<link rel="shortcut icon" href="<?=$arr['face']?>" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/jswx.js"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script type="text/javascript" src="webmain/we/ying/ying.js"></script>
<script type="text/javascript" src="mode/plugin/jquery-rockdoupull.js"></script>
<style>
body,html{background-color:#f1f1f1;}
.weui_tab{width:100%;height:50px}
.weui_navbar_item{font-size:16px;}
.weui_navbar_item span{position:absolute;left:3px;top:3px}
.weui_navbar_item:active{background-color:#f5f5f5}
.contline{padding-top:10px;color:#999999;font-size:14px;text-align:center;}
.contlist{margin:15px;padding:8px 10px;position:relative; background:white}
.contlist:active,.active{ background-color:#f1f1f1}
.contlist .title{font-size:16px}
.contlist .dt{font-size:12px;color:#aaaaaa;}
.contlist .xq{color:#3D8EDB;font-size:14px;padding-top:7px}
.contlist .xq span{float:right}
.contlist .cont{font-size:14px;padding:10px 0px}
.contlist .imgs{height:130px;overflow:hidden;margin:5px 0px}
.contlist .zt{font-size:10px;position:absolute;top:1px;right:0px;padding:1px 3px;background-color:red;color:white;}
.contlist .face{font-size:14px;padding:5px 0px;height:30px;overflow:hidden;}
.contlist .face img{border-radius:15px;height:24px;width:24px;margin-right:5px}
.contlist .opt{font-size:10px;position:absolute;bottom:1px;right:1px;padding:1px 3px;color:#aaaaaa}
.showblank{color:#aaaaaa;font-size:14px;padding-bottom:15px;text-align:center}
.showblanks{padding:10px;color:#aaaaaa;font-size:12px;text-align:center}
.notrecord{text-align:center;font-size:20px;padding-top:50px;color:#aaaaaa}
.dao{padding:10px;height:40px;overflow:hidden;padding-bottom:0px}
.mydao{margin:5px;text-align:center; background:white;height:30px;line-height:30px;font-size:14px;border:1px #9FD3F4 solid;border-radius:5px}
.dao .active{background:#1389D3;color:white; border:1px #1389D3 solid}
</style>
<script>
var json = <?=json_encode($arr)?>;
ismobile = 1;
var agentlx=1;
function yingyonginit(){
yy.loadshow();
}
function initbody(){
adminid = js.getoption('adminid', <?=$da['adminid']?>);
admintoken = js.getoption('admintoken', '<?=$xhrock->admintoken?>');
yy.init();
yingyonginit();
}
function callPhone(o1){
if(appobj1('callPhone',$(o1).text())){
return false;
}else{
return true;
}
}
</script>
</head>
<body>
<?php if($showheader==1){?>
<div>
<div class="r-header" style="padding-top:<?=$cenghei?>px" >
<div class="r-header-text" onclick="location.reload()" id="header_title"><?=$da['title']?></div>
<?php if($rock->get('openfrom')!='reim'){?>
<span onclick="js.back()" class="r-position-left r-header-btn"><i class="icon-chevron-left"></i></span>
<?php }?>
</div>
<div class="blank50" id="header_line" style="height:<?=($cenghei+50)?>px"></div>
</div>
<?php }?>
<?php if($yyurl==''){?>
<div style="z-index:2" id="searsearch_bar" class="weui_search_bar">
<form onclick="yy.searchuser()" class="weui_search_outer" onsubmit="yy.sousousou();return false;">
<div class="weui_search_inner">
<i class="weui_icon_search"></i>
<input type="search" class="weui_search_input" id="search_input" placeholder="输入关键词搜索" >
<a onclick="yy.souclear()" class="weui_icon_clear"></a>
</div>
<label for="search_input" class="weui_search_text" id="search_text">
<i class="weui_icon_search"></i>
<span>输入关键词搜索</span>
</label>
</form>
<a onclick="yy.searchcancel()" style="color:#1389D3" class="weui_search_cancel">取消</a>
</div>
<?php }?>
<div id="footerdiv" class="dao">
<?php
$zlen = count($arr['menu']);
if($zlen==0)$zlen=1;
$width = 100/$zlen;
foreach($arr['menu'] as $k=>$rs){
$cls = ($k==0)?' active':'';
$s='<div onclick="yy.clickmenu('.$k.',this)" style="float:left;height:40px;overflow:hidden;width:'.$width.'%;"><div temp="tablx" class="mydao'.$cls.'">';
if(!isempt($rs['num']))$s.='<span class="badge" id="'.$rs['num'].'_stotal"></span>';
$s.=''.$rs['name'].'';
if($rs['submenu'])$s.=' <i class="icon-angle-down"></i>';
$s.='</div></div>';
echo $s;
}
?>
</div>
<div id="mainbody" class="r-touch">
<?php if($yyurl!='')include_once($yyurl);?>
</div>
<?php
if($yyurljs!='')echo '<script type="text/javascript" src="'.$yyurljs.'"></script>'."\n";
?>
<script type="text/javascript" src="web/res/js/jquery-imgview.js"></script>
<script type="text/javascript" src="web/res/js/jquery-rockupload.js"></script>
<script type="text/javascript" src="web/res/js/jquery-changeuser.js"></script>
</body>
</html>

257
webmain/we/chat/chat.js Normal file
View File

@@ -0,0 +1,257 @@
var im={
minid:999999999,
init:function(){
strformat.emotspath='web/';
this.type = receinfor.type;
this.gid = receinfor.gid;
this.showobj = $('#showview');
this.inputobj = $('#contentss');
$('#btn').click(function(){
im.sendcont();
});
this.loaddata();
this.readinforshow();
im.touchobj = $('#showview').rockdoupull({
downbgcolor:'',
downbool:true,
ondownsuccess:function(){
im.dropdown_success();
}
});
this.resizehei();
$(window).resize(this.resizehei);
},
submitinput:function(){
try{im.sendcont();}catch(e){}
return false;
},
getheight:function(ss){
var hei = 50;if(!ss)ss=0;
if(get('header_title'))hei+=50;
return $(window).height()-hei+ss;
},
resizehei:function(){
var h = im.getheight();
im.showobj.css('height',''+h+'px');
im.touchobj.resize();
},
loaddata:function(o1, iref){
if(this.boolload)return;
var iref = (!iref)?false:true;
var minid= 0;
if(iref)minid=this.minid;
if(o1)$(o1).html('<img src="images/loadings.gif" height="14" width="15" align="absmiddle"> 加载中...');
this.boolload = true;
this.isshangla = false;
js.ajax('reim','getrecord',{type:this.type,gid:this.gid,minid:minid,lastdt:''},function(ret){
if(o1)$(o1).html('');
im.boolload = false;
im.loaddatashow(ret, iref);
},'none', false,false,'get');
},
readinforshow:function(){
setTimeout('im.readinforshows()',1000*10);
},
readinforshows:function(){
var minid=this.minid;
js.ajax('reim','getrecord',{type:this.type,gid:this.gid,minid:0,lastdt:this.lastdt},function(ret){
im.loaddatashow(ret, false, true);
im.readinforshow();
},'none', false,false,'get');
},
loaddatashow:function(ret,isbf, isls){
var a = ret.rows;
this.lastdt = ret.nowdt;
var i,len = a.length,cont,lex,nas,fase,nr,d,na=[],rnd,sid;
$('#loadmored').remove();
if(isbf){
if(len>0)this.showobj.prepend('<div class="showblanks">---------↑以上是新加载---------</div>');
na = a;
}else{
for(i= len-1; i>=0; i--)na.push(a[i]);
}
for(i= 0; i<len; i++){
d = na[i];
sid = parseFloat(d.id);
lex = 'right';
nas = '我';
fase= adminface;
if(d.sendid!=adminid){
lex='left';
nas= d.sendname;
fase= d.face;
}
nr = this.contshozt(d.filers);
if(nr=='')nr= jm.base64decode(d.cont);
rnd = 'mess_'+sid+'';
cont= strformat.showqp(lex,nas,d.optdt,nr ,'', fase, rnd);
if(!isbf){
this.addcont(cont, isbf);
}else{
this.showobj.prepend(cont);
}
if(sid<this.minid)this.minid=sid;
}
if(len>0 && !isls){
var s = '<div id="histordiv" class="showblanks" >';
if(ret.wdtotal==0){
s+='---------↑以上是历史记录---------';
if(len>=5){
//this.showobj.prepend('<div id="loadmored" class="showblanks" ><a href="javascript:;" onclick="im.loadmoreda(this)">点击加载更多...</a></div>');
this.isshangla = true;
}
}else{
s+='---↑以上是历史,还有未读信息'+ret.wdtotal+'条,<a href="javascript:;" onclick="im.loaddata(this)">点击加载</a>---';
}
s+='</div>';
if(!isbf)this.addcont(s);
if(isbf)this._addclickf();
}
if(im.touchobj)im.touchobj.ondownok();
},
dropdown_success:function(){
if(this.isshangla){
this.loadmoreda(false);
}else{
setTimeout(function(){im.touchobj.ondownok()},1000);
}
},
loadmoreda:function(o1){
this.loaddata(o1, true);
},
addcont:function(cont, isbf){
var o = this.showobj;
if(cont){if(isbf){o.prepend(cont);}else{o.append(cont);}}
clearTimeout(this.scrolltime);
this.scrolltime = setTimeout(function(){
im.showobj.animate({scrollTop:get('showview').scrollHeight},100);
im._addclickf();
}, 50);
},
_addclickf:function(){
var o = this.showobj.find('img[fid]');
o.unbind('click');
o.click(function(){
im.clickimg(this);
});
},
clickimg:function(o1){
var o=$(o1);
var fid=o.attr('fid');
var src = o1.src.replace('_s.','.');
$.imgview({url:src,ismobile:true});
},
contshozt:function(d){
return strformat.contshozt(d,'web/');
},
sendcont : function(ssnr){
if(js.ajaxbool)return;
js.msg('none');
var o = this.inputobj;
var nr = strformat.sendinstr(o.val());
nr = nr.replace(/</gi,'&lt;').replace(/>/gi,'&gt;').replace(/\n/gi,'<br>');
if(ssnr)nr=ssnr;
if(isempt(nr))return false;
var conss = jm.base64encode(nr);
if(conss.length>500){
js.msg('msg','发送内容太多了');
return;
}
var nuid= js.now('time'),optdt = js.serverdt();
var cont= strformat.showqp('right','我',optdt, nr, nuid, adminface);
this.addcont(cont);
o.val('').focus();
this.sendconts(conss, nuid, optdt, 0);
return false;
},
sendconts:function(conss, nuid, optdt, fid){
var d = {cont:conss,gid:this.gid,type:this.type,nuid:nuid,optdt:optdt,fileid:fid};
js.ajax('reim','sendinfor',d,function(ret){
im.sendsuccess(ret,nuid);
},'none',false,function(){
im.senderror(nuid);
});
},
senderror:function(nuid){
js.ajaxbool = false;
get(nuid).src='images/error.png';
get(nuid).title='发送失败';
},
sendsuccess:function(d,nuid){
this.bool = false;
if(!d.id){
this.senderror(nuid);
return;
}
$('#'+d.nuid+'').remove();
var bo = false;
d.messid=d.id;
d.face = adminface;
},
addinput:function(s){
var val = this.inputobj.val()+s;
this.inputobj.val(val).focus();
},
showemit:function(){
var da = [];
var a = strformat.emotsarr,i;
for(i=1;i<50;i++)da.push({name:'&nbsp; <img src="web/images/im/emots/qq/'+(i-1)+'.gif" align="absmiddle">&nbsp;'+a[i], num:a[i]});
js.showmenu({
data:da,width:150,align:'left',
onclick:function(d){
im.addinput(d.num);
}
});
},
sendfile:function(){
if(typeof(uploadobj)=='undefined')uploadobj = $.rockupload({
inputfile:'allfileinput',
updir:'reimchat',
urlparams:{noasyn:'yes'}, //不需要同步到文件平台上
initpdbool:true,
onchange:function(d){
im.sendfileshow(d);
},
onprogress:function(f,per,evt){
strformat.upprogresss(per);
},
onsuccess:function(f,str,o1){
im.sendfileok(f,str);
},
onerror:function(str){
js.msg('msg', str);
im.senderror(im.upfilearr.nuid);
}
});
strformat.upobj = uploadobj;
uploadobj.click();
},
sendfileshow:function(f){
f.face = adminface;
var fa = strformat.showupfile(f);
var cont= fa.cont;
this.upfilearr = fa;
this.addcont(cont);
},
sendfileok:function(f,str){
var tm= this.upfilearr,conss='';
var a = js.decode(str);
a.isimg = f.isimg;
strformat.upsuccess(a);
if(f.isimg){
conss = '[图片 '+a.filesizecn+']';
}else{
conss = '['+f.filename+' '+f.filesizecn+']'
}
this.sendconts(jm.base64encode(conss), tm.nuid, tm.optdt, a.id);
},
fileyulan:function(pn,fid){
var url = '?m=public&a=fileviewer&id='+fid+'';
js.location(url);
}
}
strformat.clickfile=function(fid,lx){
js.fileopt(fid,lx);
}

View File

@@ -0,0 +1,21 @@
<?php
class chatClassAction extends ActionNot{
public function initAction()
{
$this->mweblogin(0, true);
}
public function defaultAction()
{
//if(getconfig('platdwnum'))return '平台模式请使用REIM通信平台会话';
$type = $this->get('type');
$uid = (int)$this->get('uid');
$db = m('reim');
$arr = $db->getreceinfor($type, $uid);
if(!isset($arr['name']))exit('error');
$this->title = $arr['name'];
if(isset($arr['utotal']))$this->title.='('.$arr['utotal'].')';
$this->assign('arr', $arr);
}
}

View File

@@ -0,0 +1,69 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title><?=$da['title']?></title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
<link rel="stylesheet" type="text/css" href="web/res/css/chat.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/jswx.js"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script type="text/javascript" src="web/res/js/strformat.js"></script>
<script type="text/javascript" src="webmain/we/chat/chat.js"></script>
<script type="text/javascript" src="mode/plugin/jquery-rockdoupull.js"></script>
<style>
body,html{background-color:#f1f1f1;overflow:hidden}
.showblanks{padding:10px;color:#aaaaaa;font-size:12px;text-align:center}
.qipao .qipaocont{font-size:16px}
.qipao .qipaoface{}
<?php
$maincolor = getconfig('apptheme','#1389D3');
$maincolora= c('image')->colorTorgb($maincolor);
$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
echo 'body{--main-color:'.$maincolor.'}.qipao .qipaocontright{background:rgba('.$maincolors.',0.4)}.qipao .qipaoright{border-color: transparent transparent transparent rgba('.$maincolors.',0.4)}';
?>
</style>
<script>
ismobile = 1;
var receinfor=<?=json_encode($arr)?>;
function initbody(){
adminid = js.getoption('adminid');
adminface = js.getoption('adminface','images/noface.png');
adminame = js.getoption('adminame','我');
im.init();
}
</script>
</head>
<body>
<?php if($showheader==1){?>
<div>
<div class="r-header">
<div onclick="location.reload()" id="header_title" class="r-header-text"><?=$da['title']?></div>
<span onclick="js.back()" class="r-position-left r-header-btn"><i class="icon-chevron-left"></i></span>
</div>
<div class="blank50"></div>
</div>
<?php }?>
<div class="r-touch" style="height:300px;" id="showview"></div>
<div class="blank50"></div>
<div class="r-chat r-border-t">
<form onsubmit="return im.submitinput()">
<table cellspacing="0" cellpadding="0" width="100%"><tr>
<td style="padding-left:10px"><i style="color:#888888;font-size:20px" class="icon-folder-close" onclick="im.sendfile()"></td>
<td width="100%" style="padding:10px"><input autocomplete="off" maxlength="500" type="text" id="contentss" class="r-chat-input"></td>
<td style="padding-right:10px"><i style="color:#888888;font-size:24px" class="icon-heart" onclick="im.showemit();return false;"></td>
<td style="padding-right:10px"><button style="border-radius:5px" type="button" id="btn" class="r-chat-btn r-btn-active" value="">发送</button></td>
</tr></table>
</form>
</div>
<script type="text/javascript" src="web/res/js/jquery-imgview.js"></script>
<script type="text/javascript" src="web/res/js/jquery-rockupload.js"></script>
</body>
</html>

View File

@@ -0,0 +1,52 @@
<?php
class flowClassAction extends ActionNot{
public function initAction()
{
$this->mweblogin(0, true);
}
public function applyAction()
{
$this->title = '申请流程';
$viewobj = m('view');
$applyarr = m('mode')->getmoderows($this->adminid,'and islu=1');
$modearr = array();
$otyle = '';
$oi = 0;
foreach($applyarr as $k=>$rs){
if(!$viewobj->isadd($rs, $this->adminid))continue;
if($otyle!=$rs['type']){
$oi = 0;
}
$otyle = $rs['type'];
$oi++;
$modearr[$rs['type']][]=array('modenum'=>$rs['num'],'url'=>'?a=lum&m=input&d=flow&num='.$rs['num'].'&show=we','name'=>$rs['name'],'title'=>''.$oi.'.'.$rs['name']);
}
$this->assign('modearr', $modearr);
}
//单据查看
public function viewAction()
{
$this->title = '单据查看';
$viewobj = m('view');
$applyarr = m('mode')->getmoderows($this->adminid,'');
$modearr = array();
$otyle = '';
$oi = 0;
foreach($applyarr as $k=>$rs){
if($rs['isscl']==0)continue;
if($otyle!=$rs['type']){
$oi = 0;
}
$otyle = $rs['type'];
$oi++;
$modearr[$rs['type']][]=array('modenum'=>$rs['num'],'url'=>'?m=ying&d=we&mnum='.$rs['num'].'&show=we','name'=>$rs['name'],'title'=>''.$oi.'.'.$rs['name']);
}
$this->assign('modearr', $modearr);
$this->displayfile = 'webmain/we/flow/tpl_flow_apply.html';
}
}

View File

@@ -0,0 +1,79 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title><?=$da['title']?></title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<style>
</style>
<script>
ismobile = 1;
function xuantype(o1){
var val = o1.value;
if(val){
js.backto('typelx'+val+'');
}
}
function initApp(){
js.setapptitle();
}
</script>
</head>
<body>
<?php if($showheader==1){?>
<div>
<div class="r-header" style="padding-top:<?=$cenghei?>px" >
<div onclick="location.reload()" id="header_title" class="r-header-text"><?=$da['title']?></div>
<span onclick="js.back()" class="r-position-left r-header-btn"><i class="icon-chevron-left"></i></span>
</div>
<div class="blank50" id="header_line" style="height:<?=($cenghei+50)?>px"></div>
</div>
<?php }?>
<div style="background:white"><div style="margin:0px 10px"><select style="width:100%;border:none;background:none;height:40px;font-size:16px" onchange="xuantype(this)">
<option value="">-快速选择分类-</option>
<?php
$count=0;
foreach($modearr as $type=>$rows){
$count++;
echo '<option value="'.$count.'">'.$type.'('.count($rows).')</option>';
}
?>
</select></div></div>
<?php
$count=0;$count1=0;
foreach($modearr as $type=>$rows){
$count1++;
?>
<div class="weui_cells_title" id="typelx<?=$count1?>"><?=$type?>(<?=count($rows)?>)</div>
<div class="weui_cells weui_cells_access">
<?php
foreach($rows as $k=>$rs){
$count++;
?>
<a class="weui_cell" href="<?=$rs['url']?>">
<div class="weui_cell_bd weui_cell_primary">
<p><?=$rs['title']?></p>
</div>
<div class="weui_cell_ft">
</div>
</a>
<?php
}
?>
</div>
<?php
}
?>
<div align="center" class="weui_cells_title">总共<?=$count?>个模块</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,66 @@
<?php
class indexClassAction extends ActionNot{
public function initAction()
{
$this->mweblogin(0, false);
}
public function defaultAction()
{
$this->title = getconfig('apptitle',$this->bd6('5L!h5ZG8T0E:'));
if(COMPANYNUM){
$companyinfo = m('company')->getone(1);
$oanemes = $companyinfo['oanemes'];
if(isempt($oanemes))$oanemes = $companyinfo['name'];
$this->title = $oanemes;
}
$ybarr = $this->option->authercheck();
if(is_string($ybarr))return $ybarr;
$this->assign('xhauthkey', getconfig('authkey', $ybarr['authkey']));
$this->assign('tplmess', $this->option->getval('wxgzh_tplmess'));
}
public function bd6($str)
{
return $this->jm->base64decode($str);
}
public function editpassAction()
{
}
/**
* 用户信息
*/
public function userinfoAction()
{
$uid = (int)$this->get('uid');
$urs = m('admin')->getone($uid, '`id`,`name`,`deptallname`,`ranking`,`tel`,`email`,`mobile`,`sex`,`face`');
if(!$urs)exit('not user');
//权限过滤
$flow = m('flow')->initflow('user');
$ursa = $flow->viewjinfields(array($urs));
$urs = $ursa[0];
if(isempt($urs['face']))$urs['face']='images/noface.png';
$this->assign('arr', $urs);
}
public function companyAction()
{
$this->assign('carr', m('admin')->getcompanyinfo($this->adminid));
$this->assign('ofrom', $this->get('ofrom'));
}
public function testAction()
{
}
}

View File

@@ -0,0 +1,224 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title><?=$da['title']?></title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
<link rel="shortcut icon" href="favicon.ico" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/jswx.js"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script type="text/javascript" src="js/jsmain.js"></script>
<script type="text/javascript" src="webmain/we/index/tpl_index.mini.js?<?=time()?>"></script>
<link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
<style>
html,body{overflow:hidden;background-color:#f1f1f1}
<?php
$maincolor = getconfig('apptheme','#1389D3');
$maincolora= c('image')->colorTorgb($maincolor);
$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
echo 'body{--main-color:'.$maincolor.';}';
?>
.weui_tabbar_icon{text-align:center;color:#888888;font-size:20px;overflow:hidden;;height:28px}
.weui_tabbar_item{padding-top:2px;margin-bottom:5px;position:relative}
.weui_media_box{padding:10px 15px}
.weui_media_box.weui_media_appmsg .weui_media_hd {height:40px;width:40px;line-height:40px}
.weui_media_box .weui_media_desc{height:20px;line-height:20px;padding-right:20px}
.weui_bar_item_on .weui_tabbar_icon{color:<?=$maincolor?>}
.weui_grid_icon{width:26px;height:26px;text-align:center;}
.weui_grid_icon img{border-radius:6px}
.weui_grid_icon i{font-size:26px}
.weui_grid_icon span{position:absolute;top:5px;right:5px;}
.weui_tabbar_item span{position:absolute;right:5px;top:2px}
.weui_media_bd span{position:absolute;right:10px;top:15px}
.weui_media_bd font{position:absolute;right:5px;top:40px;font-size:13px;color:#888888}
.hd{padding:2em 0; text-align:center}
.hd img{height:100px;width:100px;border-radius:50px}
.weui_tabbar{position:fixed}
.weui_media_box:before{left:0}
.yingshright{position:absolute;right:0px;bottom:0px;display:block; width: 0;height: 0;border-bottom: 15px solid #dedede;border-left: 15px solid transparent;}
.agentp{color:#888888;padding:5px;font-size:14px;margin-top:5px}
.weui_daohang{display:inline-block;width:100%;background:#f1f1f1;}
.weui_daohang span{height:50px;padding:0px 8px;display:block;line-height:50px; float:left;margin:0px;}
.weui_daohang .jiantou{padding:0px;font-size:12px;color:#cccccc}
.weui_grid_label{height:20px;overflow:hidden}
</style>
</head>
<script>
xhauthkey = '<?=$xhauthkey?>';
maincolor = '<?=$maincolor?>';
</script>
<body scroll="no" style="overflow:hidden">
<?php if($showheader==1){?>
<div>
<div class="r-header">
<div class="r-header-text" onclick="location.reload()" id="header_title">信呼</div>
<span onclick="RO.smenu()" class="r-position-right r-header-btn"></span>
</div>
<div class="blank50" id="header_line"></div>
</div>
<?php }?>
<div id="mbody" class="r-touch" style="height:350px;position:relative;">
<div index="m" id="m_index0">
<div id="home_silder"></div>
<div id="hylidiv" style="margin-bottom:15px;display:none">
<div class="agentp">应用</div>
<div id="hyli" style="background:white" class="weui_grids"></div>
</div>
<div class="weui_panel"><div id="historylist"></div></div>
<div id="hwu_tems" style="padding-top:50px;text-align:center;color:#cccccc">无会话消息</div>
</div>
<div index="m" style="display:none" id="m_index1"></div>
<div index="m" style="background-color:white;display:none" id="m_index2">
<div class="weui_search_bar" id="s_bar">
<form onclick="RO.sus()" class="weui_search_outer" onsubmit="RO.slo();return false;">
<div class="weui_search_inner">
<i class="weui_icon_search"></i>
<input type="search" onblur="RO.bsor()" class="weui_search_input" id="s_inp" placeholder="搜索联系人" >
<a onclick="RO.scle()" class="weui_icon_clear"></a>
</div>
<label for="s_inp" class="weui_search_text" id="search_text">
<i class="weui_icon_search"></i>
<span>搜索联系人</span>
</label>
</form>
<a onclick="RO.sqx()" style="color:#1389D3" class="weui_search_cancel">取消</a>
</div>
<div id="uslx" class="r-tab">
<div id="uslx_0" onclick="RO.cusr(0)" class="r-tab-item active">联系人<span id="userstotal">(0)</span></div>
<div id="uslx_1" onclick="RO.cusr(1)" class="r-tab-item">会话<span id="glists">(0)</span></div>
</div>
<div id="userlistdiv" temp="us" style="margin-top:0">
<div class="weui_daohang r-border-b" id="userdao">
</div>
<div class="weui_panel_bd">
<div id="list" class="weui_panel weui_panel_access"></div>
<div id="deptlist"></div>
<div id="sslst" class="weui_panel weui_panel_access"></div>
</div>
</div>
<div class="weui_panel" temp="us" style="margin-top:0;display:none">
<div class="weui_panel_bd r-border-t">
<div class="weui_media_box weui_media_small_appmsg">
<div id="glist" class="weui_cells weui_cells_access"></div>
</div>
</div>
</div>
<div class="weui_panel" temp="us" style="margin-top:0;display:none"><div id="showdept"></div></div>
</div>
<div index="m" style="display:none" id="m_index3">
<div style="margin-top:20px" class="weui_panel weui_panel_access">
<div class="weui_panel_bd">
<a href="javascript:;" onclick="RO.opu(adminid)" class="weui_media_box weui_media_appmsg">
<div class="weui_media_hd">
<img class="weui_media_appmsg_thumb" id="myface" src="images/logo.png">
</div>
<div class="weui_media_bd">
<h4 class="weui_media_title" id="my_mz"></h4>
<p style="font-size:14px;color:#888888"><label id="my_bm"></label></p>
</div>
</a>
</div>
</div>
<div class="weui_cells weui_cells_access">
<div class="weui_cell">
<div class="weui_cell_bd weui_cell_primary">
<p style="color:#888888">职位</p>
</div>
<span id="my_zw" class="weui_cell_right"></span>
</div>
<div class="weui_cell">
<div class="weui_cell_bd weui_cell_primary">
<p style="color:#888888">我手机号</p>
</div>
<span id="my_sj" class="weui_cell_right">158****0000</span>
</div>
<div class="weui_cell">
<div class="weui_cell_bd weui_cell_primary">
<p style="color:#888888">用户名</p>
</div>
<span id="my_yh" class="weui_cell_right"></span>
</div>
</div>
<div id="weixllq" class="weui_cells weui_cells_access">
<?php if($tplmess=='1'){?>
<div onclick="RO.bdwx(this)" class="weui_cell">
<div class="weui_cell_bd weui_cell_primary">
微信公众号
</div>
<span class="weui_cell_ft" id="bdwx">未绑定,点击绑定</span>
</div>
<?php }?>
<?php if(ISMORECOM){?>
<div onclick="RO.chdw()" class="weui_cell">
<div class="weui_cell_bd weui_cell_primary">
切换单位
</div>
<p style="color:#888888;font-size:14px" id="nowc_div"></p>
<span class="weui_cell_ft"></span>
</div>
<?php }?>
<div onclick="RO.tbtx()" class="weui_cell">
<div class="weui_cell_bd weui_cell_primary">
同步微信头像
</div>
<span class="weui_cell_ft"></span>
</div>
</div>
<div class="weui_btn_area">
<input class="weui_btn weui_btn_warn" type="button" onclick="RO.tui()" value="退出登录">
</div>
<div style="height:10px"></div>
</div>
</div>
<div style="height:55px; overflow:hidden"></div>
<div id="footerdiv" style="height:55px;overflow:hidden;z-index:2" class="weui_tabbar">
<a href="javascript:;" id="tabnav0" onclick="RO.ctab(0)" class="weui_tabbar_item weui_bar_item_on">
<span id="stotal_ss0" class="badge"></span>
<div class="weui_tabbar_icon">
<i class="icon-comment-alt"></i>
</div>
<p class="weui_tabbar_label" style="margin-top:0">会话</p>
</a>
<a href="javascript:;" id="tabnav1" onclick="RO.ctab(1)" class="weui_tabbar_item">
<span id="stotal_ss1" class="badge"></span>
<div class="weui_tabbar_icon">
<i class="icon-th-large"></i>
</div>
<p class="weui_tabbar_label" style="margin-top:0">应用</p>
</a>
<a href="javascript:;" id="tabnav2" onclick="RO.ctab(2)" class="weui_tabbar_item">
<div class="weui_tabbar_icon">
<i class="icon-group"></i>
</div>
<p class="weui_tabbar_label" style="margin-top:0">联系人</p>
</a>
<a href="javascript:;" id="tabnav3" onclick="RO.smenu()" class="weui_tabbar_item">
<div class="weui_tabbar_icon">
<i class="icon-cog"></i>
</div>
<p class="weui_tabbar_label" style="margin-top:0">更多</p>
</a>
</div>
<script type="text/javascript" src="mode/plugin/jquery-rockdoupull.js"></script>
<script type="text/javascript" src="mode/plugin/jquery-rocksilder.js"></script>
<script type="text/javascript" src="web/res/js/jquery-changeuser.js"></script>
</body>
</html>

View File

@@ -0,0 +1,27 @@
var ROabc={index:0,splittime:5,ctabci:0,rock:function(){for(var _i in werock)this[_i]=werock[_i];date=js.now();js.ajaxwurbo=true;this.touchobj=$('#mbody').rockdoupull({downbool:true,scrollbool:false,ondownsuccess:function(){RO.reload('none');},ondownbefore:function(){return(RO.index==0||RO.index==1||RO.index==2);},ondrayrlend:function(lx){if(lx<-100)RO.ctab(RO.index+1);if(lx>100)RO.ctab(RO.index-1);}});adminface=js.getoption('adminface','images/noface.png');adminame=js.getoption('adminame',this.bd6('5oiR'));if(adminface)get('myface').src=adminface;$('#myname').html(adminame);$('#my_mz').html(adminame);$('#my_bm').html(js.getoption('deptallname'));$('#my_zw').html(js.getoption('ranking'));var si=sessionStorage.getItem('nowtabs');if(!si)si=0;var dz=location.href;if(dz.indexOf('#list')>0)si=0;if(dz.indexOf('#ying')>0)si=1;if(dz.indexOf('#user')>0)si=2;this.ctab(si);var errmsg=js.request('errmsg');if(!isempt(errmsg))js.wx.alert(this.bd6(errmsg));if(!this.checkyz()){this.ctab=this.lda=function(){};}
this.lda();},lda:function(){this.resiezess();$(window).resize(RO.resiezess);var agentjson=js.getoption('agentjson');var hisjson=js.getoption('historyjson');if(agentjson==''||hisjson==''){this.reload();}else{this.reload();var str=js.getoption('silderarr');if(str)this.showsilder(js.decode(str));RO.showagent(js.decode(agentjson));RO.showhistory(js.decode(hisjson));}
this.initsearch();$('#nowc_div').html(js.getoption('nowcompany'));},reload:function(lx){if(this.index==2){this.reus(lx);}else{this.ress(lx);}},ress:function(lx){this.homeress(lx);},reus:function(lx){js.ajax('dept','data',false,function(ret){RO.reuss(ret);},lx,false,function(){RO.showerror();});},ressw:function(ret){this.loadtime=ret.loadtime;js.setoption('agentjson',ret.agentjson);js.setoption('historyjson',ret.historyjson);var yyda=js.decode(ret.agentjson);this.showcompanyinfo(ret.companyinfo);this.showagent(yyda);this.showhistory(js.decode(ret.historyjson));js.setoption('myhomenum',ret.myhomenum);if(ret.silderarr){var str='';if(ret.silderarr.length>0)str=JSON.stringify(ret.silderarr);js.setoption('silderarr',str);this.showsilder(ret.silderarr);}
this.shagent(yyda);this.reloadok();if(ret.editpass==0){js.wx.alert(RO.bd6('6K!35YWI5L!u5pS55a!G56CB5ZCO5Zyo5L2.55So'),function(){RO.xgmm();});}else{this.timeajaxs();}},shagent:function(d){var stotal=0;var myhomenum=js.getoption('myhomenum');$('#hylidiv').hide();$('#hyli').html('');if(!myhomenum)return;myhomenum=','+myhomenum+',';var bo=false;for(var i=0;i<d.length;i++){stotal+=parseFloat(d[i].stotal);if(myhomenum.indexOf(','+d[i].num+',')>-1){this.showagents(d[i],'hyli','histotal_home_');bo=true;}}
if(bo)$('#hylidiv').show();this.changestotl(false,0);},showmyinfo:function(){js.ajaxbool=false;js.ajax('indexreim','showmyinfo',false,function(ret){RO.sufo(ret);},'none');},sufo:function(ret){js.setoption('deptallname',ret.deptallname);js.setoption('ranking',ret.ranking);adminface=ret.face;js.setoption('adminface',adminface);js.setoption('admintoken',ret.admintoken);adminame=ret.name;js.setoption('adminame',adminame);js.setoption('adminid',ret.id);adminid=ret.id;var sj=ret.mobile;get('myface').src=adminface;$('#myname').html(adminame);$('#my_mz').html(adminame);$('#my_bm').html(ret.deptallname);$('#my_yh').html(ret.user);$('#my_sj').html(''+sj.substr(0,3)+'****'+sj.substr(-4)+'');$('#my_zw').html(ret.ranking);this.showcompanyinfo(ret.companyinfo);if(get('bdwx')){if(ret.bdwx){$('#bdwx').html(''+this.bd6('5bey57uR5a6a')+'(<img src="'+ret.bdwx.headimgurl+'" whdth="16" height="16" align="absmiddle">'+ret.bdwx.nickname+')');}else{$('#bdwx').html(this.bd6('5pyq57uR5a6aLOeCueWHu!e7keWumg::'));}}}};var grouparr=[],userarr=[],agentarr={},RO={};function initbody(){for(var i in ROabc)js.main[i]=ROabc[i];js.main.zhuinit();RO=js.main;js.main.rock();}
var werock={ctab:function(lx){lx=parseFloat(lx);if(lx<0)lx=3;if(lx>3)lx=0;$("[index='m']").hide();var sid='m_index'+lx+'';$('#'+sid+'').show();$('.weui_tabbar a').removeClass('weui_bar_item_on');$('#tabnav'+lx+'').addClass('weui_bar_item_on');var tass=[document.title,this.bd6('5bqU55So'),this.bd6('6IGU57O75Lq6'),adminame];$('.r-header-text').html(tass[lx]);var tabs=['chat','ying','user','my'];if(get('rtb'+this.index+''))get('rtb'+this.index+'').src='images/nav_'+tabs[this.index]+'0.png';if(get('rtb'+lx+''))get('rtb'+lx+'').src='images/nav_'+tabs[lx]+'1.png';this.index=lx;try{sessionStorage.setItem('nowtabs',lx);}catch(e){}
this.touchobj.hidescrolls();if(lx==2){this.showuserlist();}
if(lx==3){this.showmyinfo();}else{setTimeout('RO.showmyinfo()',200);}
this.ctabci++;},resiezess:function(){var hei=RO.geth();$('#mbody').css('height',''+hei+'px');if(RO.touchobj)RO.touchobj.resize();},qihuendrap:function(yd){if(yd>100&&this.index>0)this.ctab(this.index-1);if(yd<-100&&this.index!=3)this.ctab(this.index+1);},showagent:function(a){var i,len=a.length,d,oshow,typearr={},s,ois=0;oshow=$('#m_index1');oshow.html('');for(i=0;i<len;i++){d=a[i];d.i=i;if(!typearr[d.types])typearr[d.types]=[];typearr[d.types].push(d);}
for(ty in typearr){ois++;len=typearr[ty].length;s='<div class="agentp">'+ty+'</div><div id="agentshow_'+ois+'" style="background-color:white" class="weui_grids"></div>';oshow.append(s);for(i=0;i<len;i++){this.showagents(typearr[ty][i],'agentshow_'+ois+'');}}
this.changestotl('agentstotal_',1);},showagents:function(d,shows,qizx){var s='';if(!qizx)qizx='agentstotal_';var s1=d.stotal;if(s1==0)s1='';s='<a href="javascript:;" onclick="RO.openagent('+d.id+')" class="weui_grid">';s+='<div class="weui_grid_icon">';s+=' <img src="'+d.face+'">';s+=' <span id="'+qizx+''+d.id+'" temp="agent'+d.id+'" class="badge">'+s1+'</span>';s+='</div>';s+='<p class="weui_grid_label">';s+=' '+d.name+'';s+='</p>';s+='</a>';agentarr[d.id]=d;$('#'+shows+'').append(s);},changestotl:function(jg,lx){if(!jg)jg='histotal_';var o=$("span[id^='"+jg+"']"),oi=0,i,len=o.length,v1;for(i=0;i<len;i++){v1=$(o[i]).text();if(v1=='')v1='0';oi=oi+parseFloat(v1);}
if(oi==0)oi='';$('#stotal_ss'+lx+'').html(''+oi);},openagent:function(id){var d=agentarr[id],a=[],i,d1,d2,s2;if(!d)return;var url='?m=ying&d=we&num='+d.num+'';if(d.url=='link'&&!isempt(d.urlm))url=d.urlm;$('span[temp="agent'+id+'"]').html('');this.changestotl('agentstotal_',1);this.changestotl(false,0);js.location(url);},changewxtx:function(o1){var tx=o1.checked?'1':'0';js.ajax('indexreim','changewxtx',{tx:tx},function(){},'none',false,false,'get');},tbtx:function(){js.ajax('indexreim','tongbuface',false,function(ret){var fac=ret.face;if(fac){adminface=fac;js.setoption('adminface',fac);get('myface').src=adminface+'?'+Math.random()+'';}
js.msg('success',RO.bd6('5ZCM5q2l5oiQ5Yqf'));},'wait');},bdwx:function(o1){if($(o1).text().indexOf(this.bd6('5bey'))>-1){js.wx.confirm(this.bd6('6KaB6Kej6Zmk57uR5a6a5ZCX77yf'),function(lx){if(lx=='yes')RO.bdwxjc();});return;}
if(!js.iswxbo()){js.wx.alert(this.bd6('6K!35Zyo5b6u5L!h5LiK5omT5byA'));return;}
js.wx.load(this.bd6('5aSE55CG5LitLi4u'));js.location('?m=login&d=we&a=oauthto&state=bang');},bdwxjc:function(){js.ajax('indexreim','wxbdjc',false,function(){js.wx.msgok(RO.bd6('5bey6Kej6Zmk57uR5a6a'));$('#bdwx').html(RO.bd6('5pyq57uR5a6aLOeCueWHu!e7keWumg::'));});},chdw:function(){js.location('?m=index&d=we&a=company');},initsearch:function(){$('#s_inp').keydown(function(){RO.slo();});$('#s_inp').keyup(function(){RO.slo();});},sus:function(){$('#s_bar').addClass('weui_search_focusing');$('#s_inp').focus();},bsor:function(){var val=$('#s_inp').val();if(val==''){$('#s_bar').removeClass('weui_search_focusing');this.hitsoubo(false);}},sqx:function(){$('#s_inp').val('').blur();this.bsor();},scle:function(){$('#s_inp').val('').focus();},slo:function(){clearTimeout(this.sousousoutime);this.sousousoutime=setTimeout('RO.slos()',500);},hitsoubo:function(bo){if(!bo){$('#userdao').show();$('#deptlist').show();$('#list').show();$('#sslst').hide();}else{$('#userdao').hide();$('#deptlist').hide();$('#list').hide();$('#sslst').show().html('');}},slos:function(){var val=$('#s_inp').val();if(val==''){this.hitsoubo(false);return;}
this.hitsoubo(true);var i,a=userarr,len=a.length;for(i=0;i<len;i++){if(a[i].name.indexOf(val)>-1||a[i].deptname.indexOf(val)>-1||a[i].ranking.indexOf(val)>-1||a[i].pingyin.indexOf(val)==0){this.showlist(a[i],true);}}},smenu:function(){js.wx.actionsheet({data:[{name:'<img src="'+adminface+'" align="absmiddle" height="30" width="30"> '+adminame+'',lx:0},{name:this.bd6('5Yi35paw5pWw5o2u'),lx:1},{name:this.bd6('5L!u5pS55a!G56CB'),lx:2},{name:this.bd6('6YCA5Ye655m75b2V'),lx:3}],onclick:function(a){var lx=a.lx;if(lx==0)RO.ctab(3);if(lx==1)RO.reload();if(lx==2)RO.xgmm();if(lx==3)RO.tui();}});},showuserlist:function(){var us=js.getoption('userjson');if(us==''){this.reus();}else{userarr=js.decode(us);grouparr=js.decode(js.getoption('groupjson'));deptarr=js.decode(js.getoption('deptjson'));this.showuserall();this.showgroupall();}},showuserall:function(){var i,len=userarr.length;$('#userdao').html('');$('#userstotal').html('('+len+')');this.showuserlists(deptarr[0].id,0);},showuserlists:function(id,level,o1){if(o1){var as=$('#userdao span');var rb=false;for(var i=0;i<as.length;i++){if(o1==as[i])rb=true;if(rb)$(as[i]).remove();}}
var a=deptarr,i,len=a.length,d,dn;$('#deptlist').html('');$('#list').html('')
for(i=0;i<len;i++){d=a[i];if(d.id==id)dn=d;if(d.pid==id){d.face='images/wjj.png';this.showdeptlsit(d,level+1);}}
if(level>0)$('#userdao').append('<span class="jiantou"></span>');$('#userdao').append('<span onclick="RO.showuserlists('+id+',0, this)">'+dn.name+'</span>');len=userarr.length;var noi=0;for(i=0;i<len;i++){d=userarr[i];if(d.deptid==id||d.deptidss.indexOf(','+id+',')>-1){this.showlist(d,false);noi++;}}
if(noi==0&&$('#deptlist').html()==''){$('#list').append('<div style="font-size:14px;text-align:center;padding:30px 10px;color:#cccccc">'+dn.name+' '+this.bd6('5LiL5peg6IGU57O75Lq6')+'</div>');}},showdeptlsit:function(a,level){var s='';s+='<a class="weui_media_box weui_media_appmsg" onclick="RO.showuserlists('+a.id+','+level+')">';s+=' <div class="weui_cell_hd"><img src="'+a.face+'" style="width:34px;margin-right:5px;display:block"></div>';s+=' <div class="weui_cell_bd weui_cell_primary"><p>'+a.name+'';if(a.ntotal>0)s+=' <span style="font-size:12px;color:#888888">('+a.ntotal+')</span>';s+=' </p></div>';s+='</a>';$('#deptlist').append(s);},showlist:function(a,cbo){var s='<a temp="user_'+a.id+'" onclick="RO.opu('+a.id+')" class="weui_media_box weui_media_appmsg">';s+=' <div class="weui_media_hd">';s+=' <img class="weui_media_appmsg_thumb" src="'+a.face+'">';s+=' </div>';s+=' <div class="weui_media_bd">';s+=' <h4 class="weui_media_title">'+a.name+'</h4>';s+=' <p class="weui_media_desc">'+a.deptname+'('+a.ranking+')</p>';s+=' </div>';s+='</a>';if(!cbo){$('#list').append(s);}else{$('#sslst').append(s);}},showgroupall:function(){var i,len2=grouparr.length;$('#glist').html('');$('#glists').html('('+len2+')');for(i=0;i<len2;i++)this.showgroup(grouparr[i],true);},showgroup:function(a,cbo){var s='';s+='<a class="weui_cell" onclick="RO.openguser(\'group\','+a.id+')">';s+=' <div class="weui_cell_hd"><img src="'+a.face+'" alt="" style="width:34px;margin-right:5px;display:block"></div>';s+=' <div class="weui_cell_bd weui_cell_primary"><p>'+a.name+'</p></div>';s+='</a>';$('#glist').append(s);},shdata:{},showhistory:function(a){var i,len=a.length;$('#historylist').html('');$('#hwu_tems').show();for(i=0;i<len;i++){this.showhistorys(a[i]);}
this.changestotl(false,0);if(i>0)$('#hwu_tems').hide();},showhistorys:function(d,pad){var s,ty,o=$('#historylist'),d1,st,attr;var num=''+d.type+'_'+d.receid+'';$('#index_'+num+'').remove();this.shdata[num]=d;st=d.stotal;if(st=='0')st='';var ops=d.optdt.substr(11,5);if(d.optdt.indexOf(date)!=0)ops=d.optdt.substr(5,5);ty=d.type;s='<a id="index_'+num+'" onclick="RO.clickitems(\''+ty+'\','+d.receid+', this)" class="weui_media_box weui_media_appmsg">';s+=' <div class="weui_media_hd">';s+=' <img class="weui_media_appmsg_thumb" src="'+d.face+'">';s+=' </div>';s+=' <div class="weui_media_bd">';s+=' <span id="histotal_'+num+'" class="badge">'+st+'</span>';s+=' <font >'+ops+'</font>';s+=' <h4 class="weui_media_title">'+d.name+'</h4>';s+=' <p class="weui_media_desc">'+this.bd6(d.cont)+'</p>';s+=' </div>';s+='</a>';if(!pad){o.append(s);}else{o.prepend(s);}},clickitems:function(ty,id,o){var o1=$(o),num=''+ty+'_'+id+'',d=this.shdata[num];var da=[{name:this.bd6('5omT5byA'),lx:0}];if(d&&d.stotal>0)da.push({name:this.bd6('5qCH6K!G5bey6K!7'),lx:2});da.push({name:this.bd6('5Yig6Zmk5q2k6K6w5b2V'),lx:1});js.showmenu({data:da,onclick:function(a){var lx=a.lx;if(lx==0){RO.openguser(ty,id);}
if(lx==1){o1.remove();var tst=$('#historylist').text();if(tst=='')$('#hwu_tems').show();js.ajax('reim','delhistory',{type:ty,gid:id},false,'none');}
if(lx==2){RO.biaoyidu(ty,id,true);}}});},opu:function(id){js.location('?a=userinfo&d=we&uid='+id+'');},biaoyidu:function(ty,id,lbo){if(lbo){var num=''+ty+'_'+id+'';$('#histotal_'+num+'').html('');this.changestotl(false,0);var d=this.shdata[num];if(d)d.stotal='0';}
js.ajax('reim','yiduall',{type:ty,gid:id},false,'none');},openguser:function(ty,id){var num=''+ty+'_'+id+'';$('#histotal_'+num+'').html('');this.changestotl(false,0);if(ty=='agent'){var d=this.shdata[num];var url='';if(d&&d.stotal>0&&!isempt(d.xgurl)){d.stotal='0';var xga=d.xgurl.split('|');if(xga[1]>0)url='task.php?a=x&num='+xga[0]+'&mid='+xga[1]+'';}
if(!url){this.openagent(id);}else{this.biaoyidu(ty,id,false);js.location(url);}}else{js.location('?m=chat&d=we&type='+ty+'&uid='+id+'');}},tui:function(){js.wx.confirm(this.bd6('56Gu5a6a6KaB6YCA5Ye657O757uf5ZCX77yf'),function(lx){if(lx=='yes')RO.tuis();});},tuis:function(){js.ajax('login','loginexit',false,function(){js.wx.msgok(RO.bd6('5bey5oiQ5Yqf6YCA5Ye6'),function(){js.location('?m=login&d=we');},1);});},cusr:function(lx){$("#uslx div").removeClass('active');$("#uslx_"+lx+"").addClass('active');$("div[temp='us']").hide();$("div[temp='us']:eq("+lx+")").show();},timeajaxs:function(){clearTimeout(this.homeretime);if(this.loadtime)this.homeretime=setTimeout(function(){RO.timeajax()},this.splittime*1000);},timeajax:function(){js.ajax('indexreim','loadhit',{time:this.loadtime},function(ret){RO.loadtime=ret.loadtime;if(ret.rows.length>0){RO.shownewhis(ret.rows);}
RO.timeajaxs();},'none',false,function(){js.msg();RO.timeajaxs();},'get');},shownewhis:function(a){var i,len=a.length,d=false;for(i=0;i<len;i++){if(!d&&a[i].stotal>0)d=a[i];this.showhistorys(a[i],true);}
this.changestotl(false,0);if(i>0)$('#hwu_tems').hide();},showcompanyinfo:function(info){if(info){this.companyinfo=info;var neme=info.name;js.setoption('nowcompany',neme);$('#nowc_div').html(neme);}},showsilder:function(a){if(this.showsilderobj)this.showsilderobj.remove();if(!a||a.length==0)return;this.showsilderobj=$.rocksilder({view:'home_silder',titlebool:true,data:a,onclick:function(d){js.location(d.url);}});},reuss:function(ret){js.setoption('deptjson',ret.deptjson);js.setoption('userjson',ret.userjson);js.setoption('groupjson',ret.groupjson);deptarr=js.decode(ret.deptjson);userarr=js.decode(ret.userjson);grouparr=js.decode(ret.groupjson);this.showuserall();this.showgroupall();this.reloadok();}}

View File

@@ -0,0 +1,81 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title>我的单位</title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/jswx.js"></script>
<style>
body, html{height:auto}
<?php
$maincolor = getconfig('apptheme','#1389D3');
$maincolora= c('image')->colorTorgb($maincolor);
$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
echo 'body{--main-color:'.$maincolor.';}';
?>
</style>
<script>
var nowid = <?=$carr['companyid']?>;
var ofrom = '<?=$ofrom?>';
var c={
change:function(ns,id){
if(nowid==id)return;
js.wx.confirm('确定要切换到单位上“'+ns+'”吗?', function(jg){
if(jg=='yes'){
js.setoption('nowcompany', ns);
js.loading('切换中...');
js.ajax('index','changecompany',{id:id}, function(){
if(ofrom=='reim'){
parent.reim.changecomok();
}else{
js.wx.msgok('切换成功',function(){js.back();},1);
}
},'none',false,false,'get');
}
});
}
}
</script>
</head>
<body>
<?php if($showheader==1){?>
<div>
<div class="r-header">
<div class="r-header-text" id="header_title">我的单位</div>
<span onclick="js.back()" class="r-position-left r-header-btn"><i class="icon-chevron-left"></i></span>
</div>
<div class="blank50"></div>
</div>
<?php }?>
<div onclick="js.reload();" class="weui_cells_title">我加入单位</div>
<div id="list" class="weui_cells weui_cells_access">
<?php foreach($carr['companyinfoall'] as $k=>$rs){?>
<div class="weui_cell" onclick="c.change('<?=$rs['name']?>', <?=$rs['id']?>)">
<div class="weui_cell_bd weui_cell_primary"><p><img src="<?=$rs['logo']?>" height="20" width="20" align="absmiddle"> <?=$rs['name']?></p></div>
<span class="weui_cell_right">
<?php
if($rs['id']==$carr['companyid']){
echo '<i class="weui_icon_success_no_circle"></i>';
}else{
}
?>
</span>
</div>
<?php }?>
</div>
<?php if(isempt($ofrom)){?>
<div style="bottom:30px" id="buttonstr" align="center" class="weui_extra_area"><a onclick="js.back()" href="javascript:;">&lt;&lt;返回</a></div>
<div style="height:10px"></div>
<?php }?>
</body>
</html>

View File

@@ -0,0 +1,106 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title>修改密码</title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
<link rel="shortcut icon" href="favicon.ico" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/jswx.js"></script>
<script>
ismobile = 1;
function loginsubmit(){
var opass = $('#oldpass').val();
var pass = $('#newpass').val();
var pass1 = $('#newpass1').val();
if(opass==''){
js.msg('msg','旧密码不能为空');
return false;
}
if(pass.length <4){
js.msg('msg','新密码不能少于4个字符');
return false;
}
if(!/[a-zA-Z]{1,}/.test(pass) || !/[0-9]{1,}/.test(pass)){
js.msg('msg','新密码必须使用字母+数字');
return false;
}
if(opass==pass){
js.msg('msg','新密码不能和旧密码相同');
return false;
}
if(pass!=pass1){
js.msg('msg','确认密码不一致');
return false;
}
js.ajax('user','editpass',{passoldPost:opass,passwordPost:pass},function(){
js.wx.msgok('密码修改成功',function(){
if(js.request('ofrom')=='reim'){
parent.js.tanclose('winiframe');
}else{
js.back();
}
},1);
});
}
function initbody(){
}
</script>
<style>
<?php
$maincolor = getconfig('apptheme','#1389D3');
$maincolora= c('image')->colorTorgb($maincolor);
$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
echo 'body{--main-color:'.$maincolor.';}';
?>
</style>
</head>
<body style="overflow:hidden">
<?php if($showheader==1){?>
<div>
<div class="r-header">
<div class="r-header-text" id="header_title">修改密码</div>
<span onclick="js.back()" class="r-position-left r-header-btn"><i class="icon-chevron-left"></i></span>
</div>
<div class="blank50"></div>
</div>
<?php }?>
<div class="weui_cells weui_cells_form">
<div class="weui_cell">
<div class="weui_cell_hd"><label class="weui_label">旧密码</label></div>
<div class="weui_cell_bd weui_cell_primary">
<input class="weui_input" type="text" id="oldpass" placeholder="请输入旧密码"/>
</div>
</div>
<div class="weui_cell">
<div class="weui_cell_hd"><label class="weui_label">新密码</label></div>
<div class="weui_cell_bd weui_cell_primary">
<input class="weui_input" id="newpass" type="password" placeholder="至少4位字母+数字组合"/>
</div>
</div>
<div class="weui_cell">
<div class="weui_cell_hd"><label class="weui_label">确认密码</label></div>
<div class="weui_cell_bd weui_cell_primary">
<input class="weui_input" id="newpass1" type="password" placeholder="请输入"/>
</div>
</div>
</div>
<div class="weui_btn_area">
<input class="weui_btn weui_btn_primary" type="button" onclick="loginsubmit()" value="确定" id="btn0">
</div>
</body>
</html>

View File

@@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title><?=$da['title']?></title>
<link rel="shortcut icon" href="favicon.ico" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/touch-0.2.14.min.js"></script>
<style>
</style>
<script>
function initbody(){
$(window).scroll(function(){
//var dd=$('body').scrollTop();
//js.debug(dd);
});
var obj = document.body;
touch.on(obj, 'dragstart', function(e){
startyy = e.distanceY;
stime = e.timeStamp;
startyys = $('body').scrollTop();
//js.debug(startyys);
js.debug(e);
});
touch.on(obj, 'drag', function(e){
var hei = e.distanceY-startyy;
var o = $('#mainbody');
//var lef = startyys-hei;if(lef<0)lef=0;
});
touch.on(obj, 'dragend', function(e){
var jg = e.timeStamp-stime;
var hudong = e.distanceY-startyy;
var hei = hudong>0 ? -1 : 1;
//计算滑动速度
var hms = 300;
var jgs = (hms-jg)/0.2 * hei;
if(jg<hms){
var ass = $('#mainbody').scrollTop();
//$('#mainbody').animate({scrollTop:ass+jgs}, hms-jg+200);
}
js.debug(''+jg+'-'+hei+':'+(300-jg)/0.5+'');
setTimeout(function(){
var heig = $('body').scrollTop() - startyys;
var s = '在时间:'+jg+',滑动:'+hudong+',总滚动:'+heig+'';
js.debug(s);
},2000);
});
}
</script>
</head>
<body style="background-color:#eeeeee">
<?php
for($i=0;$i<=100; $i++)echo '<div style="padding:10px; border-bottom:1px #cccccc solid">测试'.$i.'</div>';
?>
</body>
</html>

View File

@@ -0,0 +1,126 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title><?=$arr['name']?></title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
<link rel="shortcut icon" href="favicon.ico" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script type="text/javascript" src="web/res/js/jquery-imgview.js"></script>
<?php
if($web=='ding')echo '<script type="text/javascript" src="js/jsdd.js?'.time().'"></script>';
?>
<style>
<?php
$maincolor = getconfig('apptheme','#1389D3');
$maincolora= c('image')->colorTorgb($maincolor);
$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
echo 'body{--main-color:'.$maincolor.';}';
?>
body,html{overflow:hidden}
.hd{padding:2em 0; text-align:center;}
.hd img{height:100px;width:100px;border-radius:50px}
</style>
<script>
ismobile = 1,openbo=false;
function initbody(){
//if(js.jssdkdingding)js.jssdkdingding(['biz.chat.chooseConversationByCorpId','biz.chat.openSingleChat','biz.chat.pickConversation']);
}
js.jssdkddcall=function(bo){
openbo = bo;
}
function gotochar(){
if(!openbo){
js.location('?m=chat&d=we&type=user&uid=<?=$arr['id']?>');
}else{
}
}
function showface(o1){
$.imgview({url:o1.src,ismobile:true});
}
</script>
</head>
<body>
<?php if($showheader==1){?>
<div>
<div class="r-header">
<div class="r-header-text" id="header_title"><?=$arr['name']?></div>
<span onclick="js.back()" class="r-position-left r-header-btn"><i class="icon-chevron-left"></i></span>
</div>
<div class="blank50"></div>
</div>
<?php }?>
<div>
<div style="margin-top:20px" class="weui_panel weui_panel_access">
<div class="weui_panel_bd">
<a href="javascript:void(0);" class="weui_media_box weui_media_appmsg">
<div class="weui_media_hd">
<img class="weui_media_appmsg_thumb" onclick="showface(this)" src="<?=$arr['face']?>">
</div>
<div class="weui_media_bd">
<h4 class="weui_media_title"><?=$arr['name']?></h4>
<p style="font-size:14px;color:#888888">部门:<?=$arr['deptallname']?><br>职位:<?=$arr['ranking']?></p>
</div>
</a>
</div>
</div>
<div style="height:10px"></div>
<p class="weui_cells_title">联系方式</p>
<div class="weui_cells weui_cells_access">
<a class="weui_cell">
<div class="weui_cell_bd weui_cell_primary">
<p style="color:#888888">性别</p>
</div>
<span style="color:#000000"><?=$arr['sex']?></span>
</a>
<a class="weui_cell" href="tel:<?=$arr['tel']?>">
<div class="weui_cell_bd weui_cell_primary">
<p style="color:#888888">电话</p>
</div>
<span style="color:#000000" class="weui_cell_ft"><?=$arr['tel']?></span>
</a>
<a class="weui_cell" href="tel:<?=$arr['mobile']?>">
<div class="weui_cell_bd weui_cell_primary">
<p style="color:#888888">手机号</p>
</div>
<span style="color:#000000" class="weui_cell_ft"><?=$arr['mobile']?></span>
</a>
<a class="weui_cell" href="mailto:<?=$arr['email']?>">
<div class="weui_cell_bd weui_cell_primary">
<p style="color:#888888">邮箱</p>
</div>
<span class="weui_cell_right"><?=$arr['email']?></span>
</a>
<?php if($da['adminid']=='1'){?>
<a class="weui_cell">
<div class="weui_cell_bd weui_cell_primary">
<p style="color:#888888">用户Id</p>
</div>
<span style="color:#000000"><?=$arr['id']?></span>
</a>
<?php }?>
</div>
<div class="weui_btn_area">
<a onclick="gotochar()" class="weui_btn weui_btn_primary"><i class="icon-comment"></i> 发消息</a>
</div>
<div style="height:10px"></div>
</div>
</body>
</html>

View File

@@ -0,0 +1,108 @@
<?php
class loginClassAction extends ActionNot{
public function defaultAction()
{
//判断是否可以快捷登录
$iskj = $this->weiuser();
if($this->rock->iswebbro(1)){
$token = $this->option->getval('dingding_token0');
if(!isempt($token))$iskj=3;
}
$this->assign('iskj', $iskj);
$ptoken = $this->get('ptoken');
$loginyzm = (int)getconfig('loginyzm','0');
if(!isempt($ptoken))$loginyzm = 0;
$this->assign('loginyzm', $loginyzm); //登录类型
$this->smartydata['platsign'] = $this->getsession('platsign');
}
//判断当前使用微信啥的
public function weiuser()
{
$iskj = 0;
if($this->rock->iswebbro(0)){
$qycrid = $this->option->getval('weixinqy_corpid');
if($this->rock->isqywx){
if(!isempt($qycrid))$iskj=2;
}else{
//$coppid = $this->option->getval('weixin_corpid');
//if(!isempt($coppid))$iskj=1;
if($iskj==0 && !isempt($qycrid))$iskj=2;
if($iskj==0 && $this->option->getval('wxgzh_tplmess')=='1')$iskj=4;
}
}
return $iskj;
}
/**
* 微信快捷登录
*/
public function wxloginAction()
{
$this->display= false;
$iskj = $this->weiuser();
if($iskj==2){
m('weixinqy:oauth')->login();
}else if($iskj==4){
m('wxgzh:oauth')->oauthto('we','login');
}else{
m('weixin:oauth')->login();
}
}
//获取后回调
public function wxlogincodeAction()
{
$this->display= false;
$iskj = $this->weiuser();
if($iskj==2){
m('weixinqy:oauth')->logincode();
}else{
m('weixin:oauth')->logincode();
}
}
/**
* 微信授权绑定
*/
public function oauthtoAction()
{
$this->display= false;
m('wxgzh:oauth')->oauthto();
}
public function oauthbackAction()
{
$state = $this->get('state','bang');
$ubarr = m('wxgzh:oauth')->oauthback();
if($state=='login'){
m('wxgzh:oauth')->wxloginback($ubarr);
}else{
if(!is_array($ubarr)){
$this->assign('backstate', '0');
$this->assign('backerror', $ubarr);
}else{
$this->assign('backstate', '1');
$this->assign('backarr', $ubarr);
}
}
}
/**
* 无登录页面的快捷登录
*/
public function qywxloginAction()
{
$this->display= false;
m('weixinqy:oauth')->login('qy');
}
public function qywxlogincodeAction()
{
m('weixinqy:oauth')->logincode('qy');
}
}

View File

@@ -0,0 +1,331 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title>登录</title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
<link rel="shortcut icon" href="favicon.ico" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/jswx.js"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<?php
if($iskj==3)echo '<script type="text/javascript" src="js/jsdd.js"></script>';
?>
<style>
body,html{overflow:hidden;}
body{background-color:#fbf9fe}
.page_desc{text-align:center;color:#888;font-size:14px}
.hd{padding:2em 0; text-align:center}
.hd img{height:100px;width:100px;border-radius:50px}
.weui_label{width:80px;}
.weui_btn:disabled{background:#888888}
</style>
<script>
var temp_token='';
function initbody(){
var msurl = location.href;
var us=jm.base64decode(js.request('user'));
if(!us)us=js.getoption('adminuser');
$('#adminpass').val(jm.base64decode(js.getoption('weadminpass')));
get('adminmobile').value=js.getoption('adminmobile');
temp_token=js.request('token');
$('#adminuser').val(us);
var face = js.getoption('adminface');
if(face)get('myface').src=face;
if(temp_token.length>=8&&us!=''){
loginsubmit(0);
}
var errmsg = js.request('errmsg');
if(errmsg)js.wx.alert(jm.base64decode(errmsg));
if(!errmsg){
var ptoken = js.request('ptoken');
if(ptoken!='' && us!=''){
$('#adminpass').val(ptoken);
loginsubmit(0);
}
}
$('#adminuser').keyup(function(e){
if(e.keyCode==13 && this.value)$('#adminpass').focus();
});
$('#adminpass').keyup(function(e){
js.setoption('weadminpass', jm.base64encode(this.value));
if(e.keyCode==13 && this.value)loginsubmit(0);
});
}
var loginyzm = '';
function loginsubmit(lx){
if(js.ajaxbool)return false;
if(lx==1)temp_token='';
var user = '',pass = '';
js.setmsg('');
var ltype = get('logintype').value;
if(ltype=='0'){
user = get('adminuser').value,pass = get('adminpass').value;
if(user==''){
js.wx.alert('用户名不能为空', function(){get('adminuser').focus()});
return false;
}
if(pass==''&&temp_token==''){
js.wx.alert('密码不能为空', function(){get('adminpass').focus()});
return false;
}
}else{
user = get('adminmobile').value;
if(user==''){
js.msg('msg','手机号不能为空');
get('adminmobile').focus();
return false;
}
js.setoption('adminmobile', user);
loginyzm = get('adminmobileyzm').value;
if(loginyzm=='' || loginyzm.length!=6){
js.msg('msg','手机验证码格式不对');
get('adminmobileyzm').focus();
return false;
}
}
js.setoption('adminuser', user);
var o = get('btn0');
o.value='登录中...';
o.disabled=true;
var spd = {user:jm.base64encode(user),pass:jm.base64encode(pass),ltype:ltype,token:temp_token,yanzm:loginyzm};
loginyzm = '';
js.ajax('login','check',spd, function(da){
o.value='登录成功';
loginsuccess(da);
},'none',false, function(str, ret){
o.value='登录';
o.disabled=false;
if(ret){
var a = ret.data;
if(a.shouji){
mobilejsho = a.mobile;
js.wx.prompt('输入手机验证码','手机号:'+a.shouji+'&nbsp;<span><a class="zhu" href="javascript:;" onclick="getcodes(this)">[获取验证码]</a></span>',function(txt){
if(txt){
loginyzm = txt;
loginsubmit(0);
}
});;
}
}
});
return false;
}
function getcodes(o1){
var da = {'mobile':mobilejsho,'device':device};
var o2 = $(o1).parent();
o2.html(js.getmsg('获取中...'));
js.ajax('yanzm','index',da, function(da){
o2.html(js.getmsg('获取成功','green'));
},'none',false, function(str, ret){
o2.html(js.getmsg(str));
});
return false;
}
function loginsuccess(d){
js.setoption('adminface', d.face);
js.setoption('adminame',d.name);
js.setoption('deptallname',d.deptallname);
js.setoption('ranking',d.ranking);
js.setoption('adminid',d.uid);
var burl = js.request('backurl');
var curl = (burl=='')?'?m=index&d=we':jm.base64decode(burl);
js.location(curl);
}
function yanzdengl(lx){
js.wx.load('处理中...');
var burl = js.request('backurl');
js.location('?m=login&d=we&a=wxlogin&state=login&backurl='+burl+'');
}
//最新钉钉快捷登录使用
function dingdengl(bo){
if(!bo){
js.wx.load('处理中...');
js.ddjsimport(function(){
dingdengl(true);
});
return;
}
js.ajax('login','ddqiyeid',false,function(ret){
if(!ret.qiyeid){
js.wx.alert('没有设置钉钉的企业CorpId');
return;
}
js.wx.load('处理中...');
dd.ready(function() {
dd.runtime.permission.requestAuthCode({
corpId: ret.qiyeid,
onSuccess: function(result){
dingdlogn(result.code);
},
onFail : function(err) {
shidengl(1);
}
});
});
},'none',false, function(str){
shidengl(str);
});
}
function shidengl(lx){
js.wx.unload();
js.wx.alert('无法使用钉钉快捷登录'+lx+'');
}
function dingdlogn(code){
js.ajax('login','dingcheck',{code:code}, function(ret){
$('#adminuser').val(ret.user);
$('#adminpass').val(ret.ptoken);
loginsubmit(0);
},'none',false, function(str){
shidengl(str);
});
}
function reimplatlogin(){
js.wx.load('登录中...');
js.ajax('login','reimplatlogin',false, function(ret){
$('#adminuser').val(ret.user);
$('#adminpass').val(ret.pass);
loginsubmit(0);
},'none',false, function(str){
js.wx.unload();
js.wx.alert(str);
});
}
function changlogin(o1){
var ltype = get('logintype').value;
if(ltype=='0'){
$(o1).html('帐号密码登录');
get('logintype').value='1';
$('#loginview0').hide();
$('#loginview1').show();
}else{
$(o1).html('验证码登录');
get('logintype').value='0';
$('#loginview1').hide();
$('#loginview0').show();
}
}
//获取验证码
function getyzm(o1){
mobilejsho = get('adminmobile').value;
if(!mobilejsho){
js.msg('msg','请输入手机号');
get('adminmobile').focus();
return;
}
var da = {'mobile':mobilejsho,'device':device};
o1.value = '获取中...';
js.setmsg();
o1.disabled=true;
js.ajax('yanzm','glogin',da, function(da){
o1.value = '获取成功';
js.msg('success', '验证码已发送到手机上');
dshitime(60, o1);
},'none',false, function(str, ret){
o1.value = '重新获取';
o1.disabled=false;
js.setmsg(str);
});
}
function dshitime(sj,o1){
if(sj==0){
o1.disabled=false;
o1.value='重新获取';
return;
}
o1.disabled=true;
o1.value=''+sj+'';
setTimeout(function(){dshitime(sj-1, o1)},1000);
}
</script>
</head>
<body>
<div class="hd">
<div><img id="myface" onclick="location.reload()" src="images/logo.png"></div>
</div>
<div class="weui_cells weui_cells_form">
<?php if($loginyzm!=3){?>
<div id="loginview0">
<div class="weui_cell">
<div class="weui_cell_hd"><label class="weui_label">用户名</label></div>
<div class="weui_cell_bd weui_cell_primary">
<input class="weui_input" type="text" id="adminuser" placeholder="请输入用户名/姓名/手机号"/>
</div>
</div>
<div class="weui_cell">
<div class="weui_cell_hd"><label class="weui_label">密码</label></div>
<div class="weui_cell_bd weui_cell_primary">
<input class="weui_input" id="adminpass" type="password" placeholder="请输入密码"/>
</div>
</div>
</div>
<div id="loginview1" style="display:none">
<input type="hidden" id="logintype" value="0">
<?php }else{?>
<div id="loginview1">
<input type="hidden" id="logintype" value="1">
<?php }?>
<div class="weui_cell">
<div class="weui_cell_hd"><label class="weui_label">手机号</label></div>
<div class="weui_cell_bd weui_cell_primary">
<input class="weui_input" type="text" id="adminmobile" maxlength="11" placeholder="请输入手机号"/>
</div>
</div>
<div class="weui_cell">
<div class="weui_cell_hd"><label class="weui_label">验证码</label></div>
<div class="weui_cell_bd weui_cell_primary">
<input class="weui_input" id="adminmobileyzm" maxlength="6" placeholder="请输入验证码"/>
</div>
<div class="weui_cell_ft">
<input class="weui_btn weui_btn_mini weui_btn_primary" onclick="getyzm(this)" type="button" value="获取">
</div>
</div>
</div>
</div>
<div class="weui_btn_area">
<input class="weui_btn weui_btn_primary" type="button" onclick="loginsubmit(0)" value="登录" id="btn0">
</div>
<?php
if($iskj>0){
if($iskj==3){
echo '<div onclick="dingdengl()" style="text-align:center;padding-top:10px;color:#1389D3">钉钉快捷登录</div>';
}else{
echo '<div onclick="yanzdengl('.$iskj.')" style="text-align:center;padding-top:10px;color:#1389D3">'.(($iskj==2)?'企业':'').'微信'.(($iskj==4)? '公众号':'快捷').'登录</div>';
}
}
if($da['platsign'])echo '<div onclick="reimplatlogin(this)" style="text-align:center;padding-top:10px;color:#336699">快捷登录</div>';
if($loginyzm>0 && $loginyzm!=3)echo '<div class="weui_extra_area" onclick="changlogin(this)" style="text-align:center;color:#888888;padding-bottom:10px">验证码登录</div>';
?>
</body>
</html>

View File

@@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title>微信授权</title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<style>
body,html{overflow:hidden;}
body{background-color:#fbf9fe}
</style>
<script>
</script>
</head>
<body>
<div class="weui_msg">
<?php if($backstate=='1'){?>
<div class="weui_icon_area"><i class="weui_icon_success weui_icon_msg"></i></div>
<div class="weui_text_area">
<h2 class="weui_msg_title">操作成功</h2>
<p class="weui_msg_desc">绑定微信:<?=$backarr['nickname']?></p>
</div>
<?php }else{?>
<div class="weui_icon_area"><i class="weui_icon_warn weui_icon_msg"></i></div>
<div class="weui_text_area">
<h2 class="weui_msg_title" style="color:red">操作失败</h2>
<p class="weui_msg_desc"><?=$backerror?></p>
</div>
<?php }?>
<div class="weui_opr_area">
<p class="weui_btn_area">
<?php if($backstate=='1'){?>
<button onclick="history.back()" class="weui_btn weui_btn_primary">确定</button>
<?php }else{?>
<button onclick="history.back()" class="weui_btn weui_btn_warn">确定</button>
<?php }?>
</p>
</div>
<div class="weui_extra_area">
<a href="">可点确定返回</a>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,29 @@
<?php
class lognClassAction extends ActionNot{
public function initAction()
{
$this->mweblogin(0, true);
}
public function defaultAction()
{
$randkey = $this->get('randkey');
$dfrom = $this->get('dfrom','reim');
if(isempt($randkey))exit('无效访问');
$db = m('admin');
$urs = $db->getone($this->adminid,'name,face');
$urs['face'] = $db->getface($urs['face']);
$urs['randkey'] = $randkey;
c('cache')->set($randkey,'0',60);
$this->assign('urs', $urs);
$this->assign('dfrom', $dfrom);
}
}

View File

@@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title>确认登录</title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="shortcut icon" href="favicon.ico" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/jswx.js"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<style>
body,html{overflow:hidden; background:white}
.page_desc{text-align:center;color:#888;font-size:14px}
.hd{padding:2em 0; text-align:center}
.hd img{height:100px;width:100px;border-radius:50px}
</style>
<script>
function loginsubmit(lx,o){
var spd = {lx:lx,'randkey':'<?=$urs['randkey']?>'};
js.ajax('index','checkewm',spd, function(da){
$('#loginsits').html(da);
},'mode',false, function(str){
},'get');
return false;
}
</script>
</head>
<body>
<div style="margin-top:30px" class="hd">
<div><img id="myface" onclick="location.reload()" src="<?=$urs['face']?>"></div>
<div class="page_desc"><?=$urs['name']?></div>
</div>
<div id="loginsits" align="center">
<div class="weui_btn_area">
<input class="weui_btn weui_btn_primary" type="button" onclick="loginsubmit(1)" value="确认登录">
</div>
<div class="weui_btn_area">
<input class="weui_btn weui_btn_default" type="button" onclick="loginsubmit(0)" value="取消">
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,174 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title><?=$da['title']?></title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
<link rel="shortcut icon" href="<?=$arr['face']?>" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/jswx.js"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script type="text/javascript" src="js/jsmain.js"></script>
<script type="text/javascript" src="webmain/we/ying/ying.js?<?=time()?>"></script>
<style>
<?php
$maincolor = getconfig('apptheme','#1389D3');
$maincolora= c('image')->colorTorgb($maincolor);
$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
echo 'body{--main-color:'.$maincolor.'}';
?>
body,html{background-color:#f1f1f1;overflow:hidden}
.weui_tab{position:fixed;bottom:0px;width:100%;height:50px}
.weui_navbar_item{font-size:16px;}
.weui_navbar_item span{position:absolute;left:3px;top:3px}
.weui_navbar_item:active{background-color:#f5f5f5}
.weui_navbar_item_disabled{color:#aaaaaa}
.contline{padding-top:10px;color:#999999;font-size:14px;text-align:center;}
.contlist{margin:15px;padding:8px 10px;position:relative; background:white}
.contlist:active,.active{ background-color:#f1f1f1}
.contlist .title{font-size:16px}
.contlist .dt{font-size:12px;color:#aaaaaa;}
.contlist .xq{color:<?=$maincolor?>;font-size:14px;padding-top:7px}
.contlist .xq span{float:right}
.contlist .cont{font-size:14px;padding:10px 0px}
.contlist .imgs{height:130px;overflow:hidden;margin:5px 0px}
.contlist .zt{font-size:10px;position:absolute;top:2px;right:1px;padding:1px 3px;background-color:red;color:white}
.contlist .face{font-size:14px;padding:5px 0px;overflow:hidden;}
.contlist .face img{border-radius:15px;height:24px;width:24px;margin-right:5px}
.contlist .opt{font-size:10px;position:absolute;bottom:1px;right:1px;padding:1px 3px;color:#aaaaaa}
.showblank{color:#aaaaaa;font-size:14px;padding-bottom:15px;text-align:center}
.showblanks{padding:10px;color:#aaaaaa;font-size:12px;text-align:center}
.notrecord{text-align:center;font-size:20px;padding-top:50px;color:#aaaaaa}
.r-border:after{border-radius:5px}
</style>
<script>
var json = <?=json_encode($arr)?>;
ismobile = 1,openfrom='<?=$openfrom?>';
var agentlx=0,xhauthkey = '<?=$xhauthkey?>',maincolor='<?=$maincolor?>';
function yingyonginit(){
yy.loadshow();
}
function initbody(){
adminid = '<?=$da['adminid']?>';
admintoken = '<?=$xhrock->admintoken?>';
yy.init();
yingyonginit();
}
function initApp(){
js.setapptitle(json.name);
js.location=function(dz){
if(js.appwin('',dz))return;
location.href = dz;
}
var nowlist = 'yingyong_mode_'+json.num+'';
js.setoption('nowListener', nowlist);
api.addEventListener({
name: nowlist
}, function(ret, err) {
if(ret){
var lx = ret.value.opttype;
if(lx=='reload')yy.reload();
}
});
}
function callPhone(o1){
if(typeof(o1)!='string')o1 = $(o1).text();
if(appobj1('callPhone', o1)){
return false;
}else if(apicloud){
api.call({type:'tel_prompt',number:o1});
return false;
}else{
return true;
}
}
<?php if(isset($arr['leixing'])){ ?>
try{sessionStorage.removeItem(''+json.num+'_event');}catch(e){}
yy.clad=function(){
js.location('?a=lum&m=input&d=flow&num='+json.leixing+'&show=we');
}
yy.typechange=function(o1){
var val = o1.value;
yy.search({'typeid':val});
}
yy.onshowdata=function(da){
if(get('typeid') && da.typearr){
js.setselectdata(get('typeid'), da.typearr, 'id');
}
}
<?php } ?>
</script>
</head>
<body>
<?php if($showheader==1){?>
<div>
<div class="r-header" style="padding-top:<?=$cenghei?>px" >
<div class="r-header-text" onclick="location.reload()" id="header_title"><?=$da['title']?></div>
<?php if($rock->get('openfrom')!='reim'){?>
<span onclick="js.back()" class="r-position-left r-header-btn"><i class="icon-chevron-left"></i></span>
<?php }?>
<span onclick="yy.clad()" class="r-position-right r-header-btn"><i class="icon-plus"></i></span>
</div>
<div class="blank50" id="header_line" style="height:<?=($cenghei+50)?>px"></div>
</div>
<?php }?>
<?php if($yyurl=='' || isset($searchtool)){?>
<div style="z-index:2" id="searsearch_bar" class="weui_search_bar">
<?php
if($typename){
echo '<select id="typeid" onchange="yy.typechange(this)" style="width:100px;border:none;background:white;font-size:14px"><option value="">'.$typename.'</option></select>';
}
?>
<form onclick="yy.seuser()" class="weui_search_outer" onsubmit="yy.sous();return false;">
<div class="weui_search_inner">
<i class="weui_icon_search"></i>
<input type="search" class="weui_search_input" id="s_inp" placeholder="<?=$searchmsg?>" >
<a onclick="yy.scle()" class="weui_icon_clear"></a>
</div>
<label for="s_inp" class="weui_search_text" id="search_text">
<i class="weui_icon_search"></i>
<span><?=$searchmsg?></span>
</label>
</form>
<a onclick="yy.sqxs()" style="color:<?=$maincolor?>" class="weui_search_cancel">取消</a>
</div>
<?php }?>
<div id="mainbody" class="r-touch">
<?php if($yyurl!='')include_once($yyurl);?>
</div>
<div style="height:50px;overflow:hidden"></div>
<div id="footerdiv" style="z-index:5" class="weui_tab">
<div class="weui_navbar weui_tabbar">
<?php
foreach($arr['menu'] as $k=>$rs){
$s='<div temp="taby" tempxu="'.$k.'" onclick="yy.clickmenu('.$k.',this)" class="weui_navbar_item">';
if(!isempt($rs['num']))$s.='<span class="badge" id="'.$rs['num'].'_stotal"></span>';
$s.='<font>'.$rs['name'].'</font>';
if($rs['submenu'])$s.=' <i class="icon-angle-down"></i>';
$s.='</div>';
echo $s;
}
?>
</div>
</div>
<?php
if($yyurljs!='')echo '<script type="text/javascript" src="'.$yyurljs.'"></script>'."\n";
?>
<script type="text/javascript" src="web/res/js/jquery-imgview.js"></script>
<script type="text/javascript" src="web/res/js/jquery-rockupload.js"></script>
<script type="text/javascript" src="web/res/js/jquery-changeuser.js"></script>
</body>
</html>

View File

@@ -0,0 +1,433 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title><?=$da['title']?></title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/jswx.js"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&libraries=convertor,geometry&key=<?=$da['qqmapkey']?>"></script>
<script type="text/javascript" src="js/dingwei.js"></script>
<style>
<?php
$maincolor = getconfig('apptheme','#1389D3');
$maincolora= c('image')->colorTorgb($maincolor);
$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
echo 'body{--main-color:'.$maincolor.'}';
?>
.weui_tabbar_icon{text-align:center;color:#888888;font-size:20px;}
.weui_tabbar_item{padding-top:2px;margin-bottom:5px;position:relative}
.weui_bar_item_on .weui_tabbar_icon{color:<?=$maincolor?>}
</style>
<script>
var kqrs = <?=json_encode($kqrs);?>,kqors = <?=json_encode($kqors);?>,kqallrs=[],isgzh = <?=$isgzh?>;
js.servernow = '<?=$rock->now?>',openfrom='<?=$openfrom?>';
var label='',accuracy=0,latitude='',longitude='',kqjuli=-1,addbo = true,explain='',dakaci=1;
function initbody(){
js.getsplit();
showtimessabc();
showkqrswz();
initupload();
kqallrs.push(kqrs);
for(var i in kqors)kqallrs.push(kqors[i]);
nowtimetime = js.now('time');
addkqinfor(0);
}
function addkqinfor(bo){
js.ajax('kaoqin','getshang',{},function(ret){
var sbarr = ret.sbarr,s='',rs;
s='<table width="100%" class="r-border-t">';
for(var i=0;i<sbarr.length;i++){
rs = sbarr[i];
if(i>0)s+='<tr><td colspan="2"><div style="margin:0px 10px" class="r-border-t"></div></td></tr>';
s+='<tr><td align="center" nowrap height="60px"><div style="padding:0px 20px"><b>'+rs.name+'</b></div></td><td width="99%"><div style="color:#888888;font-size:14px">'+rs.stime.substr(0,5)+'-'+rs.etime.substr(0,5)+'</div><div>'+rs.state+'</div></td></tr>';
}
s+='</table>';
$('#shangbshow').html(s);
var dkarr = ret.dkarr;
var s = '',i,oi=1;
for(i=0;i<dkarr.length;i++){
s+=''+dkarr[i].dktime+'';
oi++;
}
if(s!='')s=s.substr(1);
$('#todyadak').html(s);
dakaci = oi;
if(bo==0){
$('#dkbtn').html('第'+oi+'次打卡');
js.dw.init(isgzh); //定位开始
}
},'mode', false,false, 'get');
}
function showtimessabc(){
var dt = js.serverdt('Y年m月d日(星期W) H:i:s').split(' ');
$('#dtstr').html(dt[0]);
$('#timess').html(dt[1]);
setTimeout('showtimessabc()',1000);
}
//显示考勤位置
function showkqrswz(){
var s = '';
if(kqrs){
s+=','+kqrs.name+'';
if(kqrs.iswgd=='1')s=',无固定位置';
if(kqors && kqrs.iswgd=='0')for(var i=0;i<kqors.length;i++){
s+=','+kqors[i].name+'';
if(kqors[i].iswgd=='1'){
s=',无固定位置';
break;
}
}
}
if(s=='')s='没设置考勤位置';
if(s!='')s=s.substr(1);
$('#weizhi').html(s);
}
js.dw.ondwwait=function(msg){
latitude = '';
$('#dwshow').html('<img src="images/loadings.gif" height="14px" align="absmiddle"> '+msg+'');
return true;
}
js.dw.ondwerr=function(msg){
latitude = '';
$('#dwshow').html(''+msg+',<a href="javascript:;" onclick="js.dw.start()">[在定位]</a>');
}
//定位成功后回调
js.dw.ondwcall = function(res){
latitude = res.latitude;
longitude = res.longitude;
accuracy = res.accuracy;
label = res.address;
var center = res.center;
$('#dwshow').html(''+res.addressinfo+',<a href="javascript:;" onclick="js.dw.start()">[更新]</a>');
var i,kqrsa,enddt,juli;
addbo = true;//可以添加记录
for(i=0;i<kqallrs.length;i++){
kqrsa = kqallrs[i];
enddt = new qq.maps.LatLng(parseFloat(kqrsa.location_x), parseFloat(kqrsa.location_y));
juli = parseInt(qq.maps.geometry.spherical.computeDistanceBetween(center, enddt));
if(juli<0)juli = 0-juli;
if(kqrsa['iswgd']=='1')juli=0; //无固定位置的
kqallrs[i]['kqjuli'] = juli;
kqjuli = juli;
}
if(!isfenwein()){
$('#dkbtnto').addClass('btnwai');
$('#dkbtn').html('外出定位');
}else{
$('#dkbtnto').removeClass('btnwai');
$('#dkbtn').html('第'+dakaci+'次打卡');
}
nowtimetime = js.now('time');
}
//判断有没有在考勤地点上
function isfenwein(){
var i,kqrsa,slju,sljus,iskqbo=false;
for(i=0;i<kqallrs.length;i++){
kqrsa = kqallrs[i];
slju = parseFloat(kqrsa.precision);
sljus = parseFloat(kqrsa.kqjuli);
if(sljus<=slju)iskqbo = true;
}
kqwucha = slju;
return iskqbo;
}
var addkaoqinbool=false,upfileid='';
function addkaoqin(o1, lbos){
if((js.now('time') - nowtimetime)>60*1000){
js.wx.alert('停留页面太久,请刷新页面再试',function(){
js.reload();
});
return;
}
if(addkaoqinbool){
js.wx.alert('已保存过了,请退出页面');
return;
}
if(js.dw.dwbool){js.wx.alert('正在定位,稍后在添加');return;}
if(latitude=='' || kqjuli==-1){js.wx.alert('定位没有成功,不能添加');return;}
if(!addbo){js.wx.alert('请重新定位后在打卡');return;}
if(!lbos && ispzs){
js.wx.load('<span id="tisssa">处理中</span>...');
if(!imagecont){
upfaceobj.start();
}else{
upfaceobj.sendbase64(imagecont,{filename:'打卡图片.png'});
}
return;
}
if(isfenwein()){
if(kqrs.ispz=='1' && !ispzs){js.wx.alert('请使用相机拍照才能打卡');return;}
adddk('打卡',1);
}else{
adddk('保存',0);
}
}
function adddk(ts, lx){
var o1 = get('dkbtn');
$(o1).html(''+ts+'中...');
var ispz = (kqrs) ? kqrs.ispz : '0';
var data = {location_x:latitude,type:lx,location_y:longitude,scale:12,fileid:upfileid,precision:accuracy,label:jm.base64encode(label),sm:jm.base64encode(explain),ispz:ispz};
addkaoqinbool = true;
js.ajax('weixin','addlocation',data,function(ret){
js.wx.unload();
js.wx.alert(''+ts+'成功:'+ret.now+'');
$(o1).html(''+ts+'成功');
addbo = false;
addkqinfor(1);
if(lx==1)get('notify_sound_audio').play();
},'none');
}
function addbeizhu(o1){
js.wx.prompt('加备注','请输入备注说明:',function(txt){
explain = txt;
if(txt){
$(o1).html('备注:'+txt+'');
}else{
$(o1).html('加备注...');
}
});
}
function changetab(lx){
var url='?d=we&m=ying&a=location';
if(lx==2)url='?m=ying&d=we&num=kqtotal';
if(lx==3)url='?m=ying&d=we&num=kqpai';
js.location(url);
}
function paizhao33(){
if(js.jssdkstate!=1){
js.wx.alert('非微信下的jssdk无法使用拍照');
return;
}
wx.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['camera'],
defaultCameraMode: "normal",
isSaveToAlbum: 0,
success: function (res) {
var localIds = res.localIds;
}
});
}
var imagecont = '';
function paizhao(){
if(!ispzs){
if(apicloud){
api.getPicture({
sourceType: 'camera',
encodingType: 'png',
destinationType: 'base64',quality:80,
targetWidth:1000,targetHeight:1000
}, function(ret, err) {
if (ret) {
imagecont= ret.base64Data;
$('#paizhaoimg').parent().show();
get('paizhaoimg').src = imagecont;
get('pzbtnicons').className='icon-remove';
ispzs = true;
}
});
}else{
upfaceobj.click({uptype:'image'});
}
}else{
upfaceobj.clear();
imagecont = '';
$('#paizhaoimg').parent().hide();
get('paizhaoimg').src = 'images/noimg.jpg';
get('pzbtnicons').className='icon-camera';
ispzs = false;
}
}
function showimgs(o1){
$.imgview({'url':o1.src,'ismobile':true});
}
var ispzs = false;
function initupload(){
upfaceobj=$.rockupload({
uptype:'image',
inputfile:'cameraInput',
fileview:'fileview',
autoup:false,
urlparams:{noasyn:'yes'},
onsuccess:function(f,str){
var a=js.decode(str);
if(imagecont){
imagecont= '';
upfileid = a.id;
addkaoqin(false,true);
}
},
onchange:function(f){
$('#paizhaoimg').parent().show();
get('paizhaoimg').src = f.imgviewurl;
get('pzbtnicons').className='icon-remove';
ispzs = true;
},
onchangebefore:function(f){
if(f.lastModified){
var btune = js.now('time')-f.lastModified;
if(btune>10*1000)return '请使用相机拍照';
}
},
onprogress:function(f,bl){
$('#tisssa').html('上传中('+bl+'%)');
},
allsuccess:function(far, ids){
imagecont = '';
upfileid = ids;
addkaoqin(false,true);
}
});
}
function changfile(o1){
upfaceobj.change(o1);
}
var yy={
iscy:'<?=$iscy?>',
clickadd:function(){
var str = '应用首页显示';
if(this.iscy==1)str='取消应用首页显示';
if(apicloud){
api.actionSheet({
title: '选择菜单',
cancelTitle: '取消',
buttons: [str,'关闭应用']
}, function(ret, err) {
var index = ret.buttonIndex;
if(index==1)yy.addchangying();
if(index==2)js.back();
});
}else{
js.showmenu({
data:[{name:str,lx:1}],
width:170,
onclick:function(d){
if(d.lx==1)yy.addchangying();
}
});
}
},
addchangying:function(){
js.ajax('indexreim','shecyy',{yynum:'kqdaka'},function(ret){
yy.iscy = ret.iscy;
js.wx.msgok(ret.msg, false, 1);
},'mode', false,false, 'get');
}
}
</script>
<style>
.addbtns{ background:#C5E0F7;padding:5px;margin-top:20px;width:100px;height:100px;border-radius:50%}
.addbtnss{right:10px;bottom:10px;width:100px;height:100px; background:#4E9CE0;opacity:0.8;z-index:1;border-radius:50%;font-size:16px;color:white;text-align:center;line-height:98px;}
.addbtnss:active{opacity:1}
.btnwai{background:#FCD5BA}
.btnwai .addbtnss{background:#ff6600}
</style>
</head>
<body>
<?php if($showheader==1){?>
<div>
<div class="r-header" style="padding-top:<?=$cenghei?>px" >
<div class="r-header-text" onclick="location.reload()" id="header_title"><?=$da['title']?></div>
<span onclick="js.back()" class="r-position-left r-header-btn"><i class="icon-chevron-left"></i></span>
<span onclick="yy.clickadd()" class="r-position-right r-header-btn"><i class="icon-plus"></i></span>
</div>
<div class="blank50" id="header_line" style="height:<?=($cenghei+50)?>px"></div>
</div>
<?php }?>
<div align="center" style="background:white;padding-bottom:10px">
<div id="timess" onclick="location.reload()" style="font-size:40px">15:10:00</div>
<div id="dtstr" style="font-size:14px"><?=date('Y年m月d日')?>(星期三)</div>
<div class="blank5"></div>
<div id="dwshow" style="font-size:14px;color:#aaaaaa;padding:0px 10px">等待定位</div>
</div>
<div style="display:none;position:fixed;z-index:2;left:1px;top:60px;width:120px;height:80px;overflow:hidden;"><img width="100%" onclick="showimgs(this)" id="paizhaoimg" src="images/noimg.jpg"></div>
<div style="display:none">
<form name="form_cameraInput">
<input type="file" <?php if($rock->iswebbro())echo 'capture="camera"';?> onchange="changfile(this)" accept="image/*" id="cameraInput" /></form>
</div>
<div style="display:none" id="fileview"></div>
<div class="r-padding10 r-border-t" style="background:white;padding:15px 10px; background-color:#f5f5f5">考勤范围:<font color="#888888" id="weizhi">没设置考勤位置</font></div>
<div id="shangbshow" style="background:white">
<table width="100%" class="r-border-t">
<tr><td align="center" nowrap height="60px"><div style="padding:0px 20px"><b>上班</b></div></td><td width="99%"><div style="color:#888888;font-size:14px">09:00-12:00</div><div><font color=#888888>加载中</font></div></td></tr>
<tr><td colspan="2"><div style="margin:0px 10px" class="r-border-t"></div></td></tr><tr><td align="center" nowrap height="60px"><div style="padding:0px 20px"><b>下班</b></div></td><td width="99%"><div style="color:#888888;font-size:14px">13:00-18:00</div><div><font color=#888888>加载中</font></div></td></tr>
</table>
</div>
<div class="r-border-t"></div>
<div align="center">
<div id="dkbtnto" class="addbtns">
<div class="addbtnss" id="dkbtn" onclick="addkaoqin(this)">第1次打卡</div>
</div>
</div>
<div class="r-padding10" align="center"><a id="beshuomdiv" onclick="addbeizhu(this)" href="javascript:;">加备注...</a>&nbsp;&nbsp;<a href="javascript:;" onclick="paizhao()"><i id="pzbtnicons" class="icon-camera"></i></a></div>
<div class="r-padding10 r-wrap" align="center" style="font-size:14px;color:#888888;">今日打卡:<span id="todyadak"></span></div>
<audio id="notify_sound_audio" hidden="true" style="display:none" src="web/res/sound/dkcg.mp3"></audio>
<div style="height:55px; overflow:hidden"></div>
<div style="height:55px;overflow:hidden;z-index:2;position:fixed" class="weui_tabbar">
<a href="javascript:;" class="weui_tabbar_item weui_bar_item_on">
<div class="weui_tabbar_icon">
<i class="icon-time"></i>
</div>
<p class="weui_tabbar_label"><?=$da['title']?></p>
</a>
<a href="javascript:;" onclick="changetab(1)" class="weui_tabbar_item">
<div class="weui_tabbar_icon">
<i class="icon-fighter-jet"></i>
</div>
<p class="weui_tabbar_label">外勤定位</p>
</a>
<a href="javascript:;" onclick="changetab(2)" class="weui_tabbar_item">
<div class="weui_tabbar_icon">
<i class="icon-bar-chart"></i>
</div>
<p class="weui_tabbar_label">考勤统计</p>
</a>
<a href="javascript:;" onclick="changetab(3)" class="weui_tabbar_item">
<div class="weui_tabbar_icon">
<i class="icon-list-alt"></i>
</div>
<p class="weui_tabbar_label">我的排班</p>
</a>
</div>
<script type="text/javascript" src="web/res/js/jquery-rockupload.js"></script>
<script type="text/javascript" src="web/res/js/jquery-imgview.js"></script>
</body>
</html>

View File

@@ -0,0 +1,351 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title><?=$da['title']?></title>
<link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
<link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/jswx.js"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script type="text/javascript" src="web/res/js/jquery-rockupload.js"></script>
<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&libraries=convertor,geometry&key=<?=$da['qqmapkey']?>"></script>
<script type="text/javascript" src="js/dingwei.js"></script>
<style>
<?php
$maincolor = getconfig('apptheme','#1389D3');
$maincolora= c('image')->colorTorgb($maincolor);
$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
echo 'body{--main-color:'.$maincolor.'}';
?>
</style>
<script>
//考勤信息
var kqrs = <?=json_encode($kqrs);?>,kqors = <?=json_encode($kqors);?>,kqallrs=[],isgzh = <?=$isgzh?>;
js.servernow = '<?=$rock->now?>',openfrom='<?=$openfrom?>';
var infoWin,marker,circle;
var label='',accuracy=0,latitude='',longitude='',kqjuli=-1,addbo = true;
function initbody(){
initbodyss();
initupload();
nowtimetime = js.now('time');
}
function initbodyss(){
js.getsplit();
js.dw.init(isgzh); //定位开始
showtimessabc();
var lata = js.getoption('latlongedu','24.504332,118.141136,12').split(',');
if(!lata[2])lata[2]=12;
scale = parseFloat(lata[2]);
var center = new qq.maps.LatLng(parseFloat(lata[0]), parseFloat(lata[1]));
map = new qq.maps.Map(document.getElementById('container'),{
center: center,
zoom: scale
});
if(kqrs){
kqallrs.push(kqrs);
var i,kqrsa,enddt,precision;
for(i in kqors)kqallrs.push(kqors[i]);
for(i=0;i<kqallrs.length;i++){
kqrsa = kqallrs[i];
enddt = new qq.maps.LatLng(parseFloat(kqrsa.location_x), parseFloat(kqrsa.location_y));
new qq.maps.Marker({map: map,position:enddt});
precision = parseFloat(kqrsa.precision);
if(precision>0){
new qq.maps.Circle({
map:map,
center:enddt,
radius:precision,
fillColor:new qq.maps.Color(255,0,0, 0.3),
strokeColor:new qq.maps.Color(255,0,0, 0.5),
strokeWeight:1
});
}
}
}
}
function dingweidak(){
js.dw.start();
}
//定位成功后回调
js.dw.ondwcall = function(res){
latitude = res.latitude;
longitude = res.longitude;
accuracy = res.accuracy;
var center = res.center;
addbo = true;
scale = map.getZoom();
js.setoption('latlongedu',''+latitude+','+longitude+','+scale+'');
map.setCenter(res.center);
label = res.address;
showinfo(center ,accuracy, '定位成功<br>地址:'+res.addressinfo+'');
var i,kqrsa,enddt,juli;
for(i=0;i<kqallrs.length;i++){
kqrsa = kqallrs[i];
enddt = new qq.maps.LatLng(parseFloat(kqrsa.location_x), parseFloat(kqrsa.location_y));
juli = parseInt(qq.maps.geometry.spherical.computeDistanceBetween(center, enddt));
if(juli<0)juli = 0-juli;
if(kqrsa['iswgd']=='1')juli=0; //无固定位置的
kqallrs[i]['kqjuli'] = juli;
kqjuli = juli;
}
nowtimetime = js.now('time');
}
function showtimessabc(){
var dt = js.serverdt('H:i:s');
$('#timess').html(dt);
setTimeout('showtimessabc()',1000);
}
function showinfo(center ,fw, str){
if(!infoWin)infoWin = new qq.maps.InfoWindow({
map: map
});
infoWin.open();
infoWin.setContent(str);
infoWin.setPosition(center);
if(!marker)marker= new qq.maps.Marker({
map: map
});
marker.setPosition(center);
if(!circle)circle=new qq.maps.Circle({
map:map,
strokeWeight:1
});
circle.setCenter(center);
circle.setRadius(parseFloat(fw));
}
//保存
var adddkjlcs = {},upfileid='',imagecont='';
function adddkjl(lx,ss,sm, uobo){
if(!uobo){
adddkjlcs.lx=lx;adddkjlcs.ss=ss;adddkjlcs.sm=sm;
js.wx.load('<span id="tisssa">'+ss+'中</span>...');
if(!imagecont){
upfaceobj.start();
}else{
upfaceobj.sendbase64(imagecont,{filename:'打卡图片.png'});
}
return;
}else{
$('#tisssa').html(''+ss+'中');
}
if(!sm)sm='';
scale = map.getZoom();
var ispz = (kqrs) ? kqrs.ispz : '0';
js.setoption('latlongedu',''+latitude+','+longitude+','+scale+'');
var data = {location_x:latitude,type:lx,location_y:longitude,fileid:upfileid,scale:scale,precision:accuracy,label:jm.base64encode(label),sm:jm.base64encode(sm),ispz:ispz};
js.ajax('weixin','addlocation',data,function(ret){
js.msg('success',''+ss+'成功:'+ret.now+'');
$('#dwdiv').after('<div>刚'+ss+'.'+ret.now.substr(10)+'('+label+')</div>');
addbo = false;
if(lx==1)get('notify_sound_audio').play();
},'none');
}
function adddkjlok(ids){
upfileid= ids;
adddkjl(adddkjlcs.lx,adddkjlcs.ss,adddkjlcs.sm,true);
}
function adddkjlsss(){
if((js.now('time') - nowtimetime)>60*1000){
js.wx.alert('停留页面太久,请刷新页面再试',function(){
js.reload();
});
return;
}
if(js.dw.dwbool){js.wx.alert('正在定位,稍后在添加');return;}
if(latitude==''){js.wx.alert('定位没有成功,不能添加');return;}
if(!addbo){js.wx.alert('已保存过了,请重新定位后在保存');return;}
js.wx.prompt('保存定位','请输入说明(选填)',function(text){
adddkjl(0,'保存', text);
});
}
var dwarr = <?=json_encode($dwarr)?>;
function showdw(id){
var d = dwarr[id];
if(isempt(d.location_x)){js.wx.alert('没有位置信息无法查看');return;}
if(js.jssdkstate!=1 || isempt(d.location_x)){
var url = '?d=main&m=kaoqin&a=location&id='+d.id+'';
js.location(url);
}else{
wx.openLocation({
latitude: parseFloat(d.location_x), // 纬度浮点数范围为90 ~ -90
longitude: parseFloat(d.location_y), // 经度浮点数范围为180 ~ -180。
name: '定位地址', // 位置名
address: d.label, // 地址详情说明
scale: parseFloat(d.scale)
});
}
}
function addkaoqin(){
if((js.now('time') - nowtimetime)>60*1000){
js.wx.alert('停留页面太久,请刷新页面再试',function(){
js.reload();
});
return;
}
if(!kqrs){js.wx.alert('没有设置定位考勤位置');return;}
if(js.dw.dwbool){js.wx.alert('正在定位,稍后在添加');return;}
if(latitude=='' || kqjuli==-1){js.wx.alert('定位没有成功,不能添加');return;}
var i,kqrsa,slju,sljus,iskqbo=false;
for(i=0;i<kqallrs.length;i++){
kqrsa = kqallrs[i];
slju = parseFloat(kqrsa.precision);
sljus = parseFloat(kqrsa.kqjuli);
if(sljus<=slju)iskqbo = true;
}
if(!iskqbo){js.wx.alert('当前位置距离考勤点有'+kqjuli+'米,考勤设置误差不能超过'+slju+'米,故不能添加考勤打卡!');return;}
if(!addbo){js.wx.alert('已打卡过了,请重新定位后在打卡');return;}
if(kqrs.ispz=='1' && !ispzs){js.wx.alert('请使用相机拍照才能打卡');return;}
adddkjl(1,'打卡');
}
var ispzs = false;
function initupload(){
upfaceobj=$.rockupload({
uptype:'image',
inputfile:'cameraInput',
fileview:'fileview',
autoup:false,
urlparams:{noasyn:'yes'},
onsuccess:function(f,str){
var a=js.decode(str);
if(imagecont){
imagecont= '';
adddkjlok(a.id);
}
},
onchange:function(f){
$('#paizhaoimg').parent().show();
get('paizhaoimg').src = f.imgviewurl;
get('pzbtnicons').className='icon-remove';
ispzs = true;
},
onchangebefore:function(f){
if(f.lastModified){
var btune = js.now('time')-f.lastModified;
if(btune>10*1000)return '请使用相机拍照';
}
},
onprogress:function(f,bl){
$('#tisssa').html('上传图中('+bl+'%)');
},
allsuccess:function(far, ids){
imagecont = '';
adddkjlok(ids);
}
});
}
function paizhao(){
if(!ispzs){
if(apicloud){
api.getPicture({
sourceType: 'camera',
encodingType: 'png',
destinationType: 'base64',quality:80,
targetWidth:1000,targetHeight:1000
}, function(ret, err) {
if (ret) {
imagecont= ret.base64Data;
$('#paizhaoimg').parent().show();
get('paizhaoimg').src = imagecont;
get('pzbtnicons').className='icon-remove';
ispzs = true;
}
});
}else{
upfaceobj.click({uptype:'image'});
}
}else{
upfaceobj.clear();
imagecont = '';
$('#paizhaoimg').parent().hide();
get('paizhaoimg').src = 'images/noimg.jpg';
get('pzbtnicons').className='icon-camera';
ispzs = false;
}
}
function changfile(o1){
upfaceobj.change(o1);
}
function showimgs(o1){
$.imgview({'url':o1.src,'ismobile':true});
}
</script>
<style>
.addbtnss{position:absolute;right:10px;bottom:10px;width:80px;height:80px; background:rgba(0,0,0,0.5);z-index:1;border-radius:50%;font-size:14px;color:white;text-align:center}
.addbtnss:active{background:rgba(0,0,0,0.8)}
</style>
</head>
<body>
<?php if($showheader==1){?>
<div>
<div class="r-header" style="padding-top:<?=$cenghei?>px" >
<div class="r-header-text" onclick="location.reload()" id="header_title"><?=$da['title']?></div>
<span onclick="js.back()" class="r-position-left r-header-btn"><i class="icon-chevron-left"></i></span>
</div>
<div class="blank50" id="header_line" style="height:<?=($cenghei+50)?>px"></div>
</div>
<?php }?>
<div>
<div style="width:100%;height:300px;position:relative">
<div style="display:none;position:absolute;z-index:2;left:1px;top:1px;width:120px;height:80px;overflow:hidden"><img width="100%" onclick="showimgs(this)" id="paizhaoimg" src="images/noimg.jpg"></div>
<div id="container" style="position:absolute;width:100%;height:300px;"></div>
<div class="addbtnss" onclick="addkaoqin()"><div style="margin-top:20px">考勤打卡<br><span id="timess"><?=date('H:i:s')?></span></div></div>
</div>
<div style="display:none">
<form name="form_cameraInput">
<input type="file" <?php if($rock->iswebbro())echo 'capture="camera"';?> onchange="changfile(this)" accept="image/*" id="cameraInput" /></form>
</div>
<div style="padding:10px">
<table width="100%"><tr>
<td width="35%"><button type="button" onClick="dingweidak()" class="weui_btn weui_btn_default" name="button"><i class="icon-map-marker"></i> 定位</button></td>
<td width="10" nowrap></td>
<td><button type="button" onClick="adddkjlsss()" class="weui_btn weui_btn_primary" name="button"><i class="icon-plus"></i> 保存定位</button></td>
<td width="10" nowrap></td>
<td><button type="button" onClick="paizhao()" class="weui_btn weui_btn_default" name="button"><i id="pzbtnicons" class="icon-camera"></i></button></td>
</tr></table>
</div>
<div style="display:none" id="fileview"></div>
<div style="padding:0px 10px;line-height:26px">
<div id="dwdiv"><b>今日定位:</b></div>
<?php
foreach($dwarr as $k=>$rs){
$imgs = '<img src="web/images/fileicons/jpg.gif" align="absmiddle">';
if(isempt($rs['imgpath']) || !file_exists($rs['imgpath']))$imgs='';
echo '<div>'.($k+1).'.'.substr($rs['optdt'],11).'('.$rs['label'].')'.$imgs.',<a href="javascript:;" onclick="showdw('.$k.')">[查看]</a></div>';
}
if($rows)echo '<div class="blank10"></div><div><b>今日我的外勤:</b></div>';
foreach($rows as $k=>$rs){
echo '<div>'.($k+1).'.['.$rs['atype'].']'.$rs['address'].','.$rs['reason'].'('.$rs['outtime'].')</div>';
}
?>
</div>
<audio id="notify_sound_audio" hidden="true" style="display:none" src="web/res/sound/dkcg.mp3"></audio>
<div class="blank10"></div>
</div>
<script type="text/javascript" src="web/res/js/jquery-imgview.js"></script>
</body>
</html>

476
webmain/we/ying/ying.js Normal file
View File

@@ -0,0 +1,476 @@
/**
* 来自:信呼开发团队
* 作者:磐石(rainrock)
* 网址http://www.rockoa.com/
* 修改时间2020-03-20
* 移动端应用主js文件请不要去修改
*/
var myScroll=false,yy={
sousoukey:'',
onshowdata:function(){},
loadci:0,
searchparams:{},
resizehei:function(){
var hei= this.getheight();
if(agentlx==0){
var ob = this.showobj.css({'height':''+hei+'px'});
return ob;
}
},
getheight:function(ss){
return this.geth(ss);
},
scrollnew:function(){
var top = $(document).scrollTop();
if(top>50){
if(!get('backtuodiv')){
var s = '<div id="backtuodiv" onclick="js.backtop()" style="position:fixed;right:5px;bottom:10px;width:30px;height:30px; background:rgba(0,0,0,0.4);z-index:9;border-radius:50%;font-size:14px;color:white;text-align:center;line-height:30px"><i class="icon-angle-up"></i></div>';
$('body').append(s);
}
}else{
$('#backtuodiv').remove();
}
},
loadshow:function(){
var url = location.href,arr = json.menu;
var urla= url.split('#'),darr = this.getfirstnum(arr);
var dkey= darr[0];
if(urla[1])dkey = urla[1];
this.getdata(dkey,1);
if(darr[1]>-1){
var tit = arr[darr[1]].name;
if(darr[2]>-1)tit = arr[darr[1]].submenu[darr[2]].name;
this.showtabstr(darr[1], tit);
}
},
getfirstnum:function(d){
var dbh = 'def',bh='',a = d[0],i,len,lens,subs;
if(a){
bh = a.url;
if(a.submenu[0])bh=a.submenu[0].url;
}
try{
var site = sessionStorage.getItem(''+json.num+'_event');
if(site)bh = site;
}catch(e){}
if(isempt(bh))bh=dbh;
len = d.length;
var goi = -1,goj=-1;
for(i=0;i<len;i++){
subs = d[i].submenu;
lens = subs.length;
if(goi>-1)break;
if(lens>0){
for(var j=0;j<lens;j++){
if(subs[j].url==bh){
goi = i;
goj = j;
break;
}
}
}else{
if(d[i].url==bh){
goi = i;
break;
}
}
}
return [bh,goi,goj];
},
showtabstr:function(oi, tit){
$('[temp="tablx"]').removeClass('active');
$('[temp="tablx"]:eq('+oi+')').addClass('active');
$('[temp="taby"]').css({'color':'','border-top':''});
$('[temp="taby"]:eq('+oi+')').css({'color':maincolor,'border-top':'1px '+maincolor+' solid'});
$('[temp="taby"]:eq('+oi+')').find('font').html(tit);
this.settitle(tit);
},
clickmenu:function(oi,o1){
if(o1.className.indexOf('disabled')>0)return;
var sid='menushoess_'+oi+'';
if(get(sid)){
$('#'+sid+'').remove();
return;
}
$("div[id^='menushoess']").remove();
var a = json.menu[oi],slen=a.submenu.length,i,a1;
this.menuname1 = a.name;
this.menuname2 = '';
if(slen<=0){
this.clickmenus(a,oi);
}else{
if(agentlx==0){
var o=$(o1),w=1/json.menu.length*100;
var s='<div id="'+sid+'" style="position:fixed;z-index:5;left:'+(o.offset().left)+'px;bottom:50px; background:white;width:'+w+'%" class="menulist r-border-r r-border-l">';
for(i=0;i<slen;i++){
a1=a.submenu[i];
s+='<div onclick="yy.clickmenua('+oi+','+i+')" class="r-border-t" style="color:'+a1.color+';">'+a1.name+'</div>';
}
s+='</div>';
$('body').append(s);
}
if(agentlx==1){
var da = [];
for(i=0;i<slen;i++){
a1=a.submenu[i];
a1.oi = oi;
a1.i = i;
da.push(a1);
}
js.showmenu({
data:da,
width:150,
onclick:function(d){
yy.clickmenua(d.oi,d.i);
}
});
}
}
},
seuser:function(){
$('#searsearch_bar').addClass('weui_search_focusing');
$('#s_inp').focus();
},
sqxs:function(){
$('#s_inp').blur();
$('#searsearch_bar').removeClass('weui_search_focusing');
},
scle:function(){
$('#s_inp').val('').focus();
},
sous:function(){
var key = $('#s_inp').blur().val();
this.keysou(key);
},
clickmenua:function(i,j){
var a = json.menu[i].submenu[j];
this.menuname2 = a.name;
this.clickmenus(a,i);
},
onclickmenu:function(a){
return true;
},
settitle:function(tit){
document.title = tit;
$('#header_title').html(tit);
js.setapptitle();
},
clickmenus:function(a,oi){
$("div[id^='menushoess']").remove();
if(!this.onclickmenu(a))return;
var tit = this.menuname1;
if(this.menuname2!='')tit=this.menuname2;
if(a.type==0){
this.sqxs();
this.sousoukey='';
this.clickevent(a);
this.showtabstr(oi, tit);
}
if(a.type==1){
var url=a.url,amod=this.num;
if(url.substr(0,3)=='add'){
if(url!='add')amod=url.replace('add_','');
url='index.php?a=lum&m=input&d=flow&num='+amod+'&show=we';
}
js.location(url);
}
},
clickevent:function(a){
this.getdata(a.url, 1);return;
if(agentlx==1){
js.location('#'+a.url+'');
}else{
this.getdata(a.url, 1);
}
},
data:[],
_showstotal:function(d){
var d1,v,s,o1;
for(d1 in d){
v=d[d1];
if(v==0)v='';
o1= $('#'+d1+'_stotal');
o1.html(v);
}
},
regetdata:function(o,p){
var mo = 'mode';
if(o){
o.innerHTML='<img src="images/loading.gif" align="absmiddle">';
mo = 'none';
}
this.getdata(this.nowevent,p, mo);
},
reload:function(){
this.getdata(this.nowevent,this.nowpage);
},
search:function(cans){
if(!cans)cans={};
this.searchparams=cans;
this.getdata(this.nowevent,1, '', cans);
},
keysou:function(key){
if(this.sousoukey == key)return;
this.sousoukey = key;
this.regetdata(false,1);
},
xiang:function(oi){
var d = this.data[oi-1];
if(d.xiangurl){
js.location(d.xiangurl+'&show=we');
return;
}
var ids = d.id,nus=d.modenum,modne=d.modename;
if(!ids)return;
if(!nus||nus=='undefined')nus = this.num;
var url='task.php?a=x&num='+nus+'&mid='+ids+'&show=we';
js.location(url);
},
suboptmenu:{},
showmenu:function(oi){
var a = this.data[oi-1],ids = a.id,i;
var nus=a.modenum;if(!nus||nus=='undefined')nus = this.num;
if(a.type=='applybill' && nus){
var url='index.php?a=lum&m=input&d=flow&num='+nus+'&show=we';
js.location(url);return;
}
if(!ids)return;
this.tempid = ids;
this.tempnum = nus;
this.temparr = {oi:oi,da:a};
var da = [{name:this.bd6('6K!m5oOF'),lx:998,oi:oi}];
var subdata = this.suboptmenu[''+nus+'_'+ids+''];
if(typeof(subdata)=='object'){
for(i=0;i<subdata.length;i++)da.push(subdata[i]);
}else{
da.push({name:'<img src="images/loadings.gif" align="absmiddle"> '+this.bd6('5Yqg6L296I!c5Y2V5LitLi4u')+'',lx:999});
this.loadoptnum(nus,ids);
}
js.showmenu({
data:da,
width:150,
onclick:function(d){
yy.showmenuclick(d);
}
});
this.suboptmenu={};
},
loadoptnum:function(nus,id){
js.ajax('agent','getoptnum',{num:nus,mid:id},function(ret){
yy.suboptmenu[''+nus+'_'+id+'']=ret;
yy.showmenu(yy.temparr.oi);
},'none',false,function(estr){
yy.suboptmenu[''+nus+'_'+id+'']=[];
yy.showmenu(yy.temparr.oi);
});
},
getupgurl:function(str){
if(str.substr(0,4)=='http')return str;
var a1 = str.split('|'),lx = a1[0],mk = a1[1],cs=a1[2];
var url= '';
if(lx=='add')url='?a=lum&m=input&d=flow&num='+mk+'';
if(lx=='xiang')url='task.php?a=x&num='+mk+'';
if(cs)url+='&'+cs;
return url;
},
showmenuclick:function(d){
d.num=this.num;d.mid=this.tempid;
d.modenum = this.tempnum;
var lx = d.lx;if(!lx)lx=0;
if(lx==999)return;
if(lx==998){this.xiang(d.oi);return;}
if(lx==996){this.xiang(this.temparr.oi);return;}
this.changdatsss = d;
if(lx==2 || lx==3){
var clx='changeuser';if(lx==3)clx='changeusercheck';
$('body').chnageuser({
'changetype':clx,
'titlebool':get('header_title'),
'onselect':function(sna,sid){
yy.xuanuserok(sna,sid);
}
});
return;
}
if(lx==5){
var upg = d.upgcont;
if(isempt(upg)){
js.msg('msg',this.bd6('5rKh5pyJ6K6!572u5omT5byA55qE5pON5L2c5Zyw5Z2A'));
}else{
var url = this.getupgurl(upg);
js.location(url);
}
return;
}
if(lx==7){
var upg = d.upgcont;
if(isempt(upg)){
js.msg('msg',this.bd6('5rKh5pyJ6K6!572u6Ieq5a6a5LmJ5pa55rOV'));
}else{
if(!window[upg]){
js.msg('msg',this.bd6('6K6!572u55qE5pa55rOV4oCcezB94oCd5LiN5a2Y5ZyoJw::').replace('{0}',upg));
}else{
window[upg](this.temparr.da,d);
}
}
return;
}
if(lx==1 || lx==9 || lx==10 || lx==13 || lx==15 || lx==16 || lx==17){
var bts = (d.issm==1)?'必填':'选填';
js.wx.prompt(d.name,'请输入['+d.name+']说明('+bts+')',function(text){
if(!text && d.issm==1){
js.msg('msg','没有输入['+d.name+']说明');
}else{
yy.showmenuclicks(d, text);
}
});
return;
}
if(lx==14){
var url='index.php?a=lum&m=input&d=flow&num=remind&mid='+d.djmid+'&def_modenum='+d.modenum+'&def_mid='+d.mid+'&def_explain=basejm_'+jm.base64encode(d.smcont)+'&show=we';
js.location(url);
return;
}
if(lx==18){
var url='index.php?a=lum&m=input&d=flow&num=receipt&mid='+d.djmid+'&def_modenum='+d.modenum+'&def_mid='+d.mid+'&def_modename=basejm_'+jm.base64encode(d.modename)+'&def_explain=basejm_'+jm.base64encode(d.smcont)+'&show=we';
js.location(url);
return;
}
if(lx==11){
var url='index.php?a=lum&m=input&d=flow&num='+d.modenum+'&mid='+d.mid+'&show=we';
js.location(url);
return;
}
this.showmenuclicks(d,'');
},
xuanuserok:function(nas,sid){
if(!sid)return;
var d = this.changdatsss,sm='';
d.changename = nas;
d.changenameid = sid;
this.showmenuclicks(d,sm);
},
showmenuclicks:function(d, sm){
if(!sm)sm='';
d.sm = sm;
for(var i in d)if(d[i]==null)d[i]='';
js.ajax('index','yyoptmenu',d,function(ret){
yy.suboptmenu[''+d.modenum+'_'+d.mid+'']=false;
yy.getdata(yy.nowevent, 1);
});
},
showdata:function(a){
this.overend = true;
var s='',i,len=a.rows.length,d,st='',oi;
$('#showblank').remove();
$('#notrecord').remove();
if(typeof(a.stotal)=='object')this._showstotal(a.stotal);
if(a.page==1){
this.showobj.html('');
this.data=[];
}
for(i=0;i<len;i++){
d=a.rows[i];
oi=this.data.push(d);
if(d.showtype=='line' && d.title){
s='<div class="contline">'+d.title+'</div>';
}else{
if(!d.statuscolor)d.statuscolor='';
st='';
if(d.ishui==1)st='color:#aaaaaa;';
s='<div style="'+st+'" class="r-border contlist">';
if(d.title){
if(d.face){
s+='<div onclick="yy.showmenu('+oi+')" class="face"><img src="'+d.face+'" align="absmiddle">'+d.title+'</div>';
}else{
s+='<div onclick="yy.showmenu('+oi+')" class="tit">'+d.title+'</div>';
}
}
if(d.optdt)s+='<div class="dt">'+d.optdt+'</div>';
if(d.picurl)s+='<div onclick="yy.showmenu('+oi+')" class="imgs"><img src="'+d.picurl+'" width="100%"></div>';
if(d.cont)s+='<div onclick="yy.showmenu('+oi+')" class="cont">'+d.cont.replace(/\n/g,'<br>')+'</div>';
if(d.id && d.modenum && !d.noshowopt){
s+='<div class="xq r-border-t"><font onclick="yy.showmenu('+oi+')">操作<i class="icon-angle-down"></i></font><span onclick="yy.xiang('+oi+')">详情&gt;&gt;</span>';
s+='</div>';
}
if(d.xiangurl){
s+='<div class="xq r-border-t" onclick="yy.xiang('+oi+')"><font>详情&gt;&gt;</font></div>';
}
if(d.statustext)s+='<div style="background-color:'+d.statuscolor+';opacity:0.7" class="zt">'+d.statustext+'</div>';
s+='</div>';
}
this.showobj.append(s);
}
var count=a.count;
if(count==0)count=len;
if(count>0){
this.nowpage = a.page;
s = '<div class="showblank" id="showblank">共'+count+'条记录';
if(a.maxpage>1)s+=',当前'+a.maxpage+'/'+a.page+'页';
if(a.page<a.maxpage){
s+=', <a id="showblankss" onclick="yy.regetdata(this,'+(a.page+1)+')" href="javascript:;">点击加载</a>';
this.overend = false;
}
s+= '</div>';
this.showobj.append(s);
if(a.count==0)$('#showblank').html('');
}else{
this.showobj.html('<div class="notrecord" id="notrecord">暂无记录</div>');
}
this.onshowdata(a);
},
scrollEndevent:function(){
yy.regetdata(get('showblankss'),yy.nowpage+1);
},
clad:function(){
var str = this.bd6('5bqU55So6aaW6aG15pi!56S6');
if(json.iscy==1)str=this.bd6('5Y!W5raI5bqU55So6aaW6aG15pi!56S6');
if(apicloud){
api.actionSheet({
title: this.bd6('6YCJ5oup6I!c5Y2V'),
cancelTitle: this.bd6('5Y!W5raI'),
buttons: [str,this.bd6('5YWz6Zet5bqU55So')]
}, function(ret, err) {
var index = ret.buttonIndex;
if(index==1)yy.addchangying();
if(index==2)js.back();
});
}else{
js.showmenu({
data:[{name:str,lx:1}],
width:170,
onclick:function(d){
if(d.lx==1)yy.addchangying();
}
});
}
},
addchangying:function(){
js.ajax('indexreim','shecyy',{yynum:json.num},function(ret){
json.iscy = ret.iscy;
js.wx.msgok(ret.msg, false, 1);
},'mode', false,false, 'get');
},
init:function(){
for(var i in js.main)this[i]=js.main[i];
this.zhuinit();
this.num = json.num;
this.showobj = $('#mainbody');
$('.weui_navbar').click(function(){return false;});
$('body').click(function(){
$("div[id^='menushoess']").remove();
});
this.resizehei();
$(window).resize(function(){yy.resizehei();});
if(agentlx==1){$(window).scroll(function(){yy.scrollnew();});}
if(!this.checkyz()){this.clickmenu=this.showdata=function(){};return;}
},
getdata:function(st,p, mo, cas){
this.getdatamain(st,p, mo, cas);
}
}

View File

@@ -0,0 +1,200 @@
<?php
/**
* 移动端应用控制器页面
* 主页http://www.rockoa.com/
* 软件:信呼
* 作者:雨中磐石(rainrock)
* 日期2016-10-10
*/
class yingClassAction extends ActionNot{
public $openfrom = '';
public function initAction()
{
$this->mweblogin(0, true);
$openfrom = $this->get('openfrom');
if(isempt($openfrom))$openfrom = $this->get('cfrom');
if(!isempt($openfrom)){
$this->rock->setsession('openfrom', $openfrom);
}else{
$openfrom = $this->rock->session('openfrom');
}
$this->openfrom = $openfrom;
$this->assign('openfrom', $this->openfrom);
}
private function bd6($str)
{
return $this->jm->base64decode($str);
}
public function defaultAction()
{
$ybarr = $this->option->authercheck();
if(is_string($ybarr))return $ybarr;
$authkey = $ybarr['authkey'];
$num = $this->get('num');
$mnum = $this->get('mnum'); //模块编号
$this->assign('xhauthkey', getconfig('authkey', $authkey));
if(!isempt($mnum)){
$this->showmodenum($mnum);
return;
}
$reim = m('reim');
$arr = $reim->getagent(0, "and `num`='$num'");
if(!$arr)exit('应用['.$num.']不存在');
$rs = $arr[0];
$this->title = $rs['name'];
$yyurl = ''.P.'/we/ying/yingyong/'.$num.'.html';
if(!file_exists($yyurl))$yyurl='';
$yyurljs = ''.P.'/we/ying/yingyong/'.$num.'.js';
if(!file_exists($yyurljs))$yyurljs='';
$rs['iscy'] = $this->iscy($num);
$this->assign('arr', $rs);
$this->assign('num', $num);
$this->assign('yyurl', $yyurl);
$this->assign('yyurljs', $yyurljs);
$this->assign('searchmsg', '输入关键词搜索');
$this->assign('typename', '');
$gid = $rs['id'];
$reim->setallyd('agent', $this->adminid, $gid);
$clasne = 'ying_'.$num.'Class';
$classpath = ''.P.'/we/ying/yingyong/'.$clasne.'.php';
if(file_exists($classpath)){
include_once($classpath);
$yingobj = new $clasne();
$yingobj->initYing($this);
}
if(getconfig('useropt')=='1')m('log')->addlog('打开应用', '应用['.$num.'.'.$this->title.']');
}
//默认根据模块显示
private function showmodenum($mnum)
{
$typename = '';
$flow = m('flow')->initflow($mnum);
$mrs = $flow->moders;
if($mrs['status']=='0')exit('模块['.$mnum.','.$mrs['name'].']已停用');
$souarr = $flow->flowwesearchdata(0);
$searchmsg = arrvalue($souarr, 'searchmsg','输入关键词搜索');
$typename = arrvalue($souarr, 'typename');
$this->title = $mrs['name'];
$pnum = $this->get('pnum');
$menu = array();
$atypearr = m('where')->getmywhere($mrs['id'], $this->adminid, $pnum);
if(!$atypearr)exit('请到【流程模块→流程模块条件】建条件,分组编号要为空');
if(isempt($pnum)){
if($mrs['iscs']>0)$atypearr[] = array('id' => 0,'num' => 'chaos','name' => '抄送给我');
if($mrs['isflow']>0)$atypearr[] = array('id' => 0,'num' => 'mychuli','name' => '经我处理');
}
$isadd = m('view')->isadd($mrs['id'], $this->adminid);
if($isadd)$atypearr[] = array('id' => 0,'num' => 'add','type' => 1,'name' => '+新增');
foreach($atypearr as $k1=>$rs1){
$uar = array('type' => 0,'name' => $rs1['name'],'url' => $rs1['num'].'|'.$mnum.'','num' => '','submenu'=> array());
if(arrvalue($rs1,'type')==1){$uar['type']=1;$uar['url']='add_'.$mnum.'';}
$menu[] = $uar;
if($k1>1)break;
}
if(count($atypearr)>3){
$submenu = array();
foreach($atypearr as $k1=>$rs1){
$uar = array('type' => 0,'name' => $rs1['name'],'url' => $rs1['num'].'|'.$mnum.'','num' => '','submenu'=> array());
if(arrvalue($rs1,'type')==1){$uar['type']=1;$uar['url']='add_'.$mnum.'';}
if($k1>1)$submenu[] = $uar;
}
$menu[2] = array(
'name' => '更多&gt;&gt;',
'num' => '',
'submenu' => $submenu,
);
}
if(!$menu)$menu[] = array(
'name' => $mrs['name'],
'url' => 'my|'.$mnum.'',
'num' => '',
'submenu' => array(),
);
$arr = array(
'face' => '',
'leixing'=>$mnum,
'menu' => $menu,
'num' => 'base',
'name' => $mrs['name'],
);
$yyurl = '';
$yyurljs = '';
$this->assign('searchmsg', $searchmsg);
$this->assign('yyurl', $yyurl);
$this->assign('arr', $arr);
$this->assign('yyurljs', $yyurljs);
$this->assign('typename', $typename);
if(getconfig('useropt')=='1')m('log')->addlog('打开模块应用', '模块['.$mnum.'.'.$this->title.']');
}
private function iscy($num)
{
$myyyid= $this->option->getval('yinghomeshow_'.$this->adminid.'');
$iscy = 0;
if(!isempt($myyyid) && contain(','.$myyyid.',',','.$num.','))$iscy=1;
return $iscy;
}
public function locationAction()
{
$this->title = '考勤定位';
$kq = m('kaoqin');
$arr = m('waichu')->getoutrows($this->date,$this->adminid);
$this->assign('rows', $arr);
$dt = $this->rock->date;
$dwarr = m('location')->getrows("uid='$this->adminid' and `optdt` like '$dt%'",'*','`id` desc');
$this->assign('dwarr', $dwarr);
$kqrs = $kq->dwdkrs($this->adminid, $this->date);
$isgzh = m('wxgzh:index')->isusegzh();
$this->assign('isgzh', $isgzh);
$this->assign('kqrs', $kqrs);
$dwids = arrvalue($kqrs, 'dwids');
$kqors = array();
if(!isempt($dwids)){
$kqors = m('kqdw')->getrows("id in($dwids) and `id`<>".$kqrs['id']."");
}
$this->assign('kqors', $kqors);
$this->smartydata['qqmapkey'] = getconfig('qqmapkey','55QBZ-JGYLO-BALWX-SZE4H-5SV5K-JCFV7');
}
/**
* 最新打卡使用
*/
public function dakaAction()
{
$this->title = '考勤打卡';
$kq = m('kaoqin');
$dt = $this->rock->date;
$dwarr = m('location')->getrows("uid='$this->adminid' and `optdt` like '$dt%'",'*','`id` desc');
$this->assign('dwarr', $dwarr);
$kqrs = $kq->dwdkrs($this->adminid, $this->date);
$isgzh = m('wxgzh:index')->isusegzh();
$this->assign('isgzh', $isgzh);
$this->assign('iscy', $this->iscy('kqdaka'));
$this->assign('kqrs', $kqrs);
$dwids = arrvalue($kqrs, 'dwids');
$kqors = array();
if(!isempt($dwids)){
$kqors = m('kqdw')->getrows("id in($dwids) and `id`<>".$kqrs['id']."");
}
$this->assign('kqors', $kqors);
$this->smartydata['qqmapkey'] = getconfig('qqmapkey','55QBZ-JGYLO-BALWX-SZE4H-5SV5K-JCFV7');
}
}

View File

@@ -0,0 +1,27 @@
<script type="text/javascript" src="web/res/mode/calendar/jquery-rockcalendar.js"></script>
<script type="text/javascript" src="web/res/mode/calendar/jquery-rocklunar.js"></script>
<script type="text/javascript">
yingyonginit = function(){
monthobj = $('#mainbody').rockcalendar({
height:yy.getheight(-2),headerbgcolor:'#dddddd',
selbgcolor:'#DEF7F2',
changemonth:function(y, m){
var dt = ''+y+'年'+xy10(m)+'月';
setTimeout(function(){
yy.settitle(dt);
},10);
},
align:'center',
valign:'center',
renderer:function(day, s, s1,s2,col1,col2){
var s = '<div><font color='+col1+'>'+s1+'</font><br><div style="font-size:11px;height:16px;overflow:hidden;color:'+col2+'">'+s2+'</div></div>';
return s;
}
});
}
yy.clickevent=function(d){
if(d.url=='nowmonth')monthobj.nowmonth();
if(d.url=='prevmonth')monthobj.fanmonth(-1);
if(d.url=='nextmonth')monthobj.fanmonth(1);
}
</script>

View File

@@ -0,0 +1,30 @@
var soumodeid = 0;
yy.onclickmenu=function(d){
if(this.nowevent!=d.url)soumodeid=0;
return true;
}
function myyingsinit(){
var s = '<select id="modeid" style="width:100px;border:none;background:white;font-size:14px"><option value="0">选择模块</option></select>';
$('#searsearch_bar').prepend(s);
$('#modeid').change(function(){
soumodeid = this.value;
yy.search({'modeid':this.value});
});
}
yy.onshowdata=function(da){
if(da.modearr){
var s = '<option value="0">选择模块</option>',len=da.modearr.length,i,csd,types='';
for(i=0;i<len;i++){
csd = da.modearr[i];
if(types!=csd.type){
if(types!='')s+='</optgroup>';
s+='<optgroup label="'+csd.type+'">';
}
s+='<option value="'+csd.id+'">'+csd.name+'</option>';
types = csd.type;
}
$('#modeid').html(s);
if(soumodeid>0)get('modeid').value = soumodeid;
}
}
myyingsinit();

View File

@@ -0,0 +1,9 @@
<script type="text/javascript">
yy.onclickmenu=function(d){
if(d.url=='moreapply'){
js.location('?d=we&m=flow&a=apply');
}else{
return true;
}
}
</script>

View File

@@ -0,0 +1,30 @@
yy.onclickmenu=function(d){
if(d.url=='moreapply'){
js.location('?d=we&m=flow&a=apply');
}else{
return true;
}
}
function myyingsinit(){
var s = '<select id="modeid" style="width:100px;border:none;background:white;font-size:14px"><option value="0">选择模块</option></select>';
$('#searsearch_bar').prepend(s);
$('#modeid').change(function(){
yy.search({'modeid':this.value});
});
}
yy.onshowdata=function(da){
if(da.modearr){
var s = '<option value="0">选择模块</option>',len=da.modearr.length,i,csd,types='';
for(i=0;i<len;i++){
csd = da.modearr[i];
if(types!=csd.type){
if(types!='')s+='</optgroup>';
s+='<optgroup label="'+csd.type+'">';
}
s+='<option value="'+csd.id+'">'+csd.name+'</option>';
types = csd.type;
}
if(len>0)$('#modeid').html(s);
}
}
myyingsinit();

View File

@@ -0,0 +1,13 @@
function myyingsinit(){
var s = '<select id="typeid" style="width:100px;border:none;background:white;font-size:14px"><option value="">所有分类</option></select>';
$('#searsearch_bar').prepend(s);
$('#typeid').change(function(){
yy.search({'typeid':this.value});
});
}
yy.onshowdata=function(da){
if(da.typearr){
js.setselectdata(get('typeid'), da.typearr, 'id');
}
}
myyingsinit();

View File

@@ -0,0 +1,23 @@
function myyingsinit(){
var s = '<select id="modeid" style="width:100px;border:none;background:white;font-size:14px"><option value="0">选择模块</option></select>';
$('#searsearch_bar').prepend(s);
$('#modeid').change(function(){
yy.search({'modeid':this.value});
});
}
yy.onshowdata=function(da){
if(da.modearr){
var s = '<option value="0">选择模块</option>',len=da.modearr.length,i,csd,types='';
for(i=0;i<len;i++){
csd = da.modearr[i];
if(types!=csd.type){
if(types!='')s+='</optgroup>';
s+='<optgroup label="'+csd.type+'">';
}
s+='<option value="'+csd.id+'">'+csd.name+'</option>';
types = csd.type;
}
if(len>0)$('#modeid').html(s);
}
}
myyingsinit();

View File

@@ -0,0 +1,56 @@
<div id="mainbodyobjdse"></div>
<div id="dayabc" style="height:24px;line-height:24px;overflow:hidden;font-size:12px;background-color:#d4e3f7;border-top:1px #dddddd solid;position:absolute;bottom:50px;left:0px;width:100%">空白为休息日</div>
<script type="text/javascript" src="web/res/mode/calendar/jquery-rockcalendar.js"></script>
<script type="text/javascript" src="web/res/mode/calendar/jquery-rocklunar.js"></script>
<script type="text/javascript">
yingyonginit = function(){
monthobj = $('#mainbodyobjdse').rockcalendar({
height:yy.getheight(-25),headerbgcolor:'#dddddd',
selbgcolor:'#d4e3f7',
overShow:false,
bordercolor:'#dddddd',
changemonth:function(y, m){
var dt = ''+y+'年'+xy10(m)+'月';
setTimeout(function(){
yy.settitle(dt);
},10);
getpaibang(''+y+'-'+xy10(m)+'');
},
align:'left',
valign:'top',
renderer:function(day, s0, s1,s2,col1,col2){
var s = '<div><font color='+col1+'>'+s1+'</font><br><div style="font-size:11px;color:'+col2+'" id="day'+day+'">'+s2+'</div></div>';
return s;
}
});
var hei= yy.getheight(-25);
yy.showobj.css({'height':''+hei+'px'});
}
yy.clickevent=function(d){
if(d.url=='nowmonth')monthobj.nowmonth();
if(d.url=='prevmonth')monthobj.fanmonth(-1);
if(d.url=='refenxi')refenxiss();
}
var monthnow = '';
function getpaibang(month){
monthnow = month;
$.get(js.getajaxurl('getmyanaykq','kaoqin','main', {month:month,uid:js.request('uid')}), function(strss){
var d1,s='',da=js.decode(strss);
for(d1 in da){
s=da[d1];
if(s!='')$('#day'+d1+'').html(s);
}
s='';var toarr = da['total'];
for(d1 in toarr)s+=''+d1+':'+toarr[d1]+'';
if(s!='')s=s.substr(1);
$('#dayabc').html(s);
});
}
function refenxiss(){
js.loading('分析中...');
$.get(js.getajaxurl('reladanaymy','kaoqin','main', {month:monthnow,uid:js.request('uid')}), function(da){
getpaibang(monthnow);
js.unloading();
});
}
</script>

View File

@@ -0,0 +1,7 @@
yy.onclickmenu=function(a){
if(a.url=='add_kqdkjl'){
js.location('?d=we&m=ying&a=location');
return;
}
return true;
}

View File

@@ -0,0 +1,42 @@
<div id="mainbodyobjdse"></div>
<div id="dayabc" style="height:24px;line-height:24px;overflow:hidden;font-size:12px;padding:0px 5px; background-color:#d4e3f7;border-top:1px #dddddd solid">空白为休息日</div>
<script type="text/javascript" src="web/res/mode/calendar/jquery-rockcalendar.js"></script>
<script type="text/javascript" src="web/res/mode/calendar/jquery-rocklunar.js"></script>
<script type="text/javascript">
yingyonginit = function(){
monthobj = $('#mainbodyobjdse').rockcalendar({
height:yy.getheight(-25),headerbgcolor:'#dddddd',
selbgcolor:'#d4e3f7',
overShow:false,
bordercolor:'#dddddd',
changemonth:function(y, m){
var dt = ''+y+'年'+xy10(m)+'月';
setTimeout(function(){
yy.settitle(dt);
},10);
getpaibang(''+y+'-'+xy10(m)+'');
},
align:'center',
valign:'center',
renderer:function(day, s0, s1,s2,col1,col2){
var s = '<div><font color='+col1+'>'+s1+'</font><br><div style="font-size:11px;height:16px;overflow:hidden;color:'+col2+'" id="day'+day+'">'+s2+'</div></div>';
return s;
}
});
}
yy.clickevent=function(d){
if(d.url=='nowmonth')monthobj.nowmonth();
if(d.url=='prevmonth')monthobj.fanmonth(-1);
if(d.url=='nextmonth')monthobj.fanmonth(1);
}
function getpaibang(month){
js.ajax('kaoqin','getpaib',{'month':month,'uid':js.request('uid')},function(ret){
for(var d1 in ret){
var s1 = ret[d1];
if(s1=='')s1='休息';
if(d1!='abc')s1 = '['+s1+']';
$('#day'+d1+'').html(s1);
}
},'mode', false,false, 'get');
}
</script>

View File

@@ -0,0 +1,5 @@
yy.showmenu=function(oi){
var a = this.data[oi-1];
var url = '?m=ying&d=we&num=kqbiao&uid='+a.uid+'';
js.location(url);
}

View File

@@ -0,0 +1,13 @@
function myyingsinit(){
var s = '<select id="typeid" style="width:100px;border:none;background:white;font-size:14px"><option value="">所有分类</option></select>';
$('#searsearch_bar').prepend(s);
$('#typeid').change(function(){
yy.search({'typeid':this.value});
});
}
yy.onshowdata=function(da){
if(da.typearr){
js.setselectdata(get('typeid'), da.typearr, 'id');
}
}
myyingsinit();

View File

@@ -0,0 +1,334 @@
<style>
.progresscls{height:24px;overflow:hidden;line-height:24px;border:0px #eeeeee solid; position:relative;;width:100%;background-color:#f1f1f1;margin-top:3px}
.progressclssse{background-color:#B0D6FC;height:24px;overflow:hidden;width:5%;position:absolute;z-index:0;left:0px;top:0px}
.progressclstext{font-size:10px;color:#0556A8;height:24px;overflow:hidden;line-height:24px;text-align:left;position:absolute;z-index:1;left:5px;top:0px}
.workheader span{float:left;display:block;padding:0px 10px; border-right:1px #dddddd solid;cursor:pointer;}
.workheader span:active{background:#e1e1e1}
</style>
<script type="text/javascript">
var cqids = '<?=$worcarr['ids']?>';
yingyonginit = function(){
c.init();
}
yy.regetdata=function(){
c.getfile(0,0);
}
var c = {
typeid:0,
cqid:0,
ismanage:0,
isup:0,
uptype:'',
officebj:'',
init:function(){
c.getfile(0,0);
c.upobj = $.rockupload({
'inputfile' : 'wordupfile',
onchange:function(a){
c.onchange(a);
},
onprogress:function(a,bl){
c.onprogress(a,bl);
},
onsuccess:function(a,str){
c.onsuccess(a,str);
},
onerror:function(str){
js.msg('msg', str);
$('#progresstext_heheheh').html('<font color=red>上传失败</font>');
}
});
},
onchange:function(a){
$('#progresscls_hehehehsss').remove();
$('body').append('<div id="progresscls_hehehehsss" style="position:absolute;bottom:50px;" class="progresscls"><div id="progresscls_heheheh" class="progressclssse"></div><div class="progressclstext" id="progresstext_heheheh" >'+a.filename+','+a.filesizecn+'(0%)</div></div>');
},
onprogress:function(a,per){
$('#progresscls_heheheh').css('width',''+per+'%');
$('#progresstext_heheheh').html(''+a.filename+','+a.filesizecn+'('+per+'%)');
},
onsuccess:function(a,str){
var f = js.decode(str);
$('#progresstext_heheheh').html(''+a.filename+','+a.filesizecn+',上传成功,保存中...');
var fileid = f.id;
js.ajax('word','savefile',{typeid:c.typeid,sid:fileid,cqid:this.cqid},function(a){
$('#progresscls_hehehehsss').remove();
js.msg('success',''+a.filename+'上传成功');
a.fileid=a.id;
a.name = a.filename;
$('#wordlisttable').append(c.showlist(a));
},'none');
},
create:function(){
js.wx.prompt('新建文件夹','请输入文件夹名称:',function(text){
if(!text){js.msg('msg','没有输入文件夹名称');return;}
js.ajax('word','createfolder',{name:text,typeid:c.typeid,cqid:c.cqid},function(a){
c.createshow(a);
});
});
},
createshow:function(a){
$('#wordlisttable').append(this.showlist(a));
},
up:function(){
c.upobj.click({'uptype':this.uptype});
},
//切换分区
changfenqu:function(fq){
yy.sousoukey='';
yy.sqxs();
$('#workheader span:gt(0)').remove();
this.uptype = $(fq.options[fq.selectedIndex]).attr('uptype');
this.getfile(0, fq.value);
},
disabedgl:function(lx){
var clas = 'weui_navbar_item_disabled';
if(lx){
$('div[tempxu=2]').addClass(clas);
}else{
$('div[tempxu=2]').removeClass(clas);
}
},
disableup:function(lx){
var clas = 'weui_navbar_item_disabled';
if(lx){
$('div[tempxu=0]').addClass(clas);
}else{
$('div[tempxu=0]').removeClass(clas);
}
},
getfile:function(pid,cid,alx,padg){
this.typeid = pid;
this.cqid = cid;
this.disabedgl(true);
this.disableup(true);
if(!alx)alx='';
this.atype = alx;
if(!padg)padg=1;
this.page = padg;
get('cpselect').value = this.cqid;
js.ajax('word','getdata',{typeid:pid,cqid:this.cqid,cqids:cqids,atype:alx,page:padg,key:yy.sousoukey},function(a){
c.ismanage = a.ismanage;
c.isup = a.isup;
c.officebj = a.officebj;
if(a.ismanage==1)c.disabedgl(false);//有权限
if(a.isup==1)c.disableup(false);//有权限
c.data=[];
c.showdata(a);
},'mode');
},
reload:function(){
this.getfile(this.typeid,this.cqid,this.atype);
},
nextpage:function(){
this.getfile(this.typeid,this.cqid,this.atype,this.page+1);
},
showdata:function(a){
$('#showblank').remove();
var rows = a.rows;
var i,len=rows.length,s;
s='<table id="wordlisttable" style="width:100%; background-color:white">';
for(i=0;i<len;i++){
s+=c.showlist(rows[i]);
}
s+='</table>';
s+='<div style="margin-top:10px" class="showblank" id="showblank">共'+a.count+'条记录';
if(a.maxpage>1)s+=',当前'+a.maxpage+'/'+a.page+'页';
if(a.page<a.maxpage){
s+=', <a id="showblankss" onclick="c.nextpage(this)" href="javascript:;">点击加载</a>';
}
s+='</div>';
if(a.page<=1){
$('#mainbody_show').html(s);
}else{
$('#mainbody_show').append(s);
}
},
showlist:function(d){
if(!d.id)d.id=d.fileid;
if(!d.fileext)d.fileext='folder';
var oi = this.data.push(d),s1='';
var s='';
s+='<tr style="height:60px;border-top:1px #f1f1f1 solid" id="'+d.fileext+'_'+d.id+'" onclick="c.clicksse('+oi+',event,this)" >';
s1='<div id="filename_'+oi+'">'+d.name+'</div>';
if(d.fileid){
s1+='<div style="font-size:12px;color:#888888">大小:'+d.filesizecn+'';
if(!isempt(d.shate))s1+=',共享给:'+d.shate+'';
s1+='</div>';
}
if(d.fileext=='folder'){
s+='<td align="center" width="40"><img src="images/folder.png" height="24" width="24"></td><td>'+s1+'</td>';
}else{
var slx = d.fileext;
if(js.fileall.indexOf(','+slx+',')<0)slx='wz';
var fstr = 'web/images/fileicons/'+slx+'.gif';
if(d.thumbpath)fstr = d.thumbpath;
s+='<td align="center" width="40"><img src="'+fstr+'" height="16" width="16"></td><td>'+s1+'</td>';
}
s+='</tr>';
return s;
},
chentcolor:function(oi,e,o1){
if(this._olodwet)$(this._olodwet).css('background','');
$(o1).css('background','#f3f3f3');
this._olodwet = o1;
},
isoffice:function(ext){
var strs = ',doc,dot,wps,wpt,docx,dotx,docm,dotm,xls,xlt,et,xlsx,xltx,csv,xlsm,xltm,ppt,pptx,pptm,ppsx,ppsm,pps,potx,potm,dpt,dps,';
return strs.indexOf(','+ext+',')>=0;
},
clicksse:function(oi,e,o1){
this.chentcolor(oi,e,o1);
var d = this.data[oi-1];
this.tempoi = oi;
this.tempda = d;
var a = [{name:(d.fileext=='folder')?'打开':'下载',lx:0}];
if(d.fileext!='folder'){
a.push({name:'预览',lx:7});
}
if(this.ismanage==1){
a.push({name:'重命名',lx:1});
a.push({name:'删除',lx:4});
a.push({name:'共享给...',lx:5});
a.push({name:'移动',lx:2});
if(this.officebj=='1' && this.isoffice(d.fileext))a.push({name:'编辑',lx:8});
}
if(d.fileext!='folder'){
a.push({name:'转发给...',lx:6});
}
js.showmenu({data:a,onclick:function(d){c.clickmenuss(d)}});
},
clickmenuss:function(d){
var lx=d.lx;
if(lx==0)this.celdblckc(this.tempoi);
if(lx==1)this.cmmr();
if(lx==2)this.movesss();
if(lx==3)this.moveokzh();
if(lx==4)this.delfload();
if(lx==5)this.fenxiang();
if(lx==6)this.zhuanfagei();
if(lx==7)this.yulans();
if(lx==8)js.fileopt(this.tempda.fileid,2);
},
celdblckc:function(oi){
var d = this.data[oi-1];
if(d.fileext=='folder'){
var s = '<span onclick="c.clickheadeer('+d.id+', this)">'+d.name+'&gt;</span>';
$('#workheader').append(s);
this.getfile(d.id,d.cid);
}else{
js.fileopt(d.fileid,1);
}
},
yulans:function(){
var d = this.tempda;
js.fileopt(d.fileid,0);
},
clickheadeer:function(pid,o1){
var as = $('#workheader span');
var rb = false;
for(var i=0;i<as.length;i++){
if(rb)$(as[i]).remove();
if(o1==as[i])rb=true;
}
c.getfile(pid,this.cqid);
},
cmmr:function(){
js.wx.prompt('重命名','请输入新的名称:',function(text){
if(!text){js.msg('msg','没有输入新的名称');return;}
if(c.tempda.name==text)return;
c.data[c.tempoi-1].name=text;
$('#filename_'+c.tempoi+'').html(text);
c.cmmrssok(text);
},this.tempda.name);
},
cmmrssok:function(txt){
var d={id:this.tempda.id,type:this.tempda.fileext,name:jm.base64encode(txt)};
js.ajax('word','rename',d,function(a){},'none');
},
movesss:function(){
$.selectdata({
title:'选择移动的分区/目录',
url:js.apiurl('word','moveget'),
checked:false,
onselect:function(sda,sna, sid){
js.ajax('word','movefile',{'cqid':sda.cqid,'typeid':sda.typeid,'ids':c.tempda.id},function(a){
js.msg('success','移动成功');
c.reload();
});
}
});
},
delfload:function(){
js.wx.confirm('确定要删除吗?',function(lx){
if(lx=='yes')c.delfloadok();
});
},
delfloadok:function(){
var d = this.tempda;
this.movedata=false;
js.ajax('word','delfile',{type:d.fileext,id:d.id},function(a){
$('#'+d.fileext+'_'+d.id+'').remove();
js.msg('success','删除成功');
});
},
fenxiang:function(){
$('body').chnageuser({
'changetype':'changedeptusercheck',
'title':'共享给...',
'titlebool':get('header_title'),
'onselect':function(sna,sid){
c.fenxiangok(sna,sid);
}
});
},
zhuanfagei:function(){
$('body').chnageuser({
'changetype':'changeusercheck',
'title':'转发给...',
'titlebool':get('header_title'),
'onselect':function(sna,sid){
c.zhuanfageiok(sna,sid);
}
});
},
zhuanfageiok:function(sna,sid){
var d = this.tempda;
var ds = {'tuid':sid,'type':'user','cont':'','fileid':d.fileid};
js.ajax('reim','forward', ds, function(){
js.msg('success','已转发给【'+sna+'】')
});
},
fenxiangok:function(sna,sid){
var d = this.tempda;
js.ajax('word','shatefile',{type:d.fileext,ids:d.id,sid:sid,sna:sna},function(a){
if(sid==''){
js.msg('success','已取消共享');
}else{
js.msg('success','已共享给【'+sna+'】');
}
c.reload();
});
},
wfenxx:function(lx){
this.getfile(this.typeid,0, lx);
}
};
yy.clickevent=function(d){
if(d.url=='create')c.create();
if(d.url=='up')c.up();
if(d.url=='shate')c.wfenxx('shateall');
if(d.url=='fxgw')c.wfenxx('shatewfx');
}
yy.initScroll=function(){}
</script>
<div><select id="cpselect" onchange="c.changfenqu(this)" style="width:100%;border:none;height:40px;font-size:16px;padding:5px"><option uptype="" value="0">所有分区</option><?php
foreach($worcarr['rows'] as $k=>$rs){
echo '<option uptype="'.$rs['uptype'].'" value="'.$rs['id'].'">'.$rs['name'].'</option>';
}
?></select></div>
<div class="workheader" id="workheader" style="line-height:50px; background-color:#ffffff;overflow:hidden;border-top:1px #dddddd solid"><span onclick="c.clickheadeer(0, this)">顶级目录&gt;</span></div>
<div id="mainbody_show"></div>

View File

@@ -0,0 +1,7 @@
openxieeditfile=function(d,d1){
if(!d1.officebj){
js.msg('msg','移动端在线编辑需要用“在线编辑服务”,请到“系统设置”下设置');
}else{
js.fileopt(d.fileid,2);
}
}

View File

@@ -0,0 +1,11 @@
yy.onshowdata=function(da){
if(da.projectarr){
var s = '<select id="projcetid" style="width:100px;border:none;background:white;font-size:14px"><option value="">所有项目</option></select>';
$('#searsearch_bar').prepend(s);
$('#projcetid').change(function(){
yy.search({'projcetid':this.value});
});
js.setselectdata(get('projcetid'), da.projectarr, 'id');
}
}

View File

@@ -0,0 +1,27 @@
<?php
/**
* 移动端应用【word.文档】的接口程序
* 主页http://www.rockoa.com/
* 软件:信呼
* 作者:雨中磐石(rainrock)
* 日期2017-11-21
*/
class ying_wordClass extends yingClassAction{
private $mobj;
private $searchtool = true; //需要搜索拦
public function initYing($mobj)
{
$this->mobj = $mobj;
//获取分区
$worcarr = m('worc')->getmywroc();
$this->mobj->assign('worcarr', $worcarr);
$this->mobj->assign('searchtool', $this->searchtool);
$this->mobj->assign('searchmsg', '文件名/文件夹');
}
}