发布v2.6.8版本

This commit is contained in:
雨中磐石
2025-03-31 20:54:32 +08:00
parent 0701e2a8b4
commit d41bd27082
122 changed files with 9827 additions and 9132 deletions

View File

@@ -23,6 +23,8 @@ td,button{ font-size:var(--font-size)}
a,.cursor{cursor:pointer;}
p{text-indent:24pt; margin:12px 0px;line-height:25px}
input,textarea,select,button{resize: none;outline:none;font-size:var(--font-size);}
input[type=button], input[type=submit], input[type=file], button {-webkit-appearance: none;}
.zhu{ color:#1389D3;color:var(--main-color)}
.hui{ color:#888888}
.red{ color:#ff0000}
@@ -59,7 +61,8 @@ ul,li,a{ list-style-type:none}
.h1{ font-size:24px;font-weight:bold;}
.h2{ font-size:20px;font-weight:bold;}
.input,.inputs,.textarea{height:34px;line-height:25px;background-color:white;padding:5px;width:94%;border:var(--border);border-radius:5px}
.input,.inputs,.textarea{height:30px;line-height:25px;background-color:white;padding:5px;width:94%;border:var(--border);border-radius:5px;}
select.inputs{height:40px}
.inputb{height:34px;line-height:20px;background-color:white;padding:5px;border:var(--border);border-radius:5px}
.inputb:focus,.inputs:focus,.textarea:focus{border:0.5px var(--main-color) solid;}
@@ -88,9 +91,9 @@ a.btn{padding:5px 8px}
.tdinput{padding:8px 5px}
.inborder{border:var(--border);}
a.webbtn:link,a.webbtn:visited,.webbtn{color:#ffffff;opacity:1; background-color:var(--main-color); padding:8px 10px; border:none; cursor:pointer;font-size:var(--font-size)}
a.webbtn:link,a.webbtn:visited,.webbtn{color:#ffffff;opacity:1; background-color:var(--main-color); padding:8px 10px; border:none; cursor:pointer;font-size:var(--font-size);border-radius:5px}
.webbtn:disabled{background-color:#aaaaaa; color:#eeeeee}
.webbtn:hover{box-shadow:0px 0px 5px rgba(0,0,0,0.3);opacity:0.8}
.webbtn:hover,.webbtn:active{box-shadow:0px 0px 5px rgba(0,0,0,0.3);opacity:0.8}
.radius5{border-radius:5px;}
.upload_items{border:var(--border);height:60px;overflow:hidden;float:left;margin-top:5px;margin-bottom:5px;margin-right:10px;cursor:pointer;position:relative}
@@ -99,4 +102,51 @@ a.webbtn:link,a.webbtn:visited,.webbtn{color:#ffffff;opacity:1; background-color
.upload_items_items{padding:5px;text-align:center}
.upload_items_meng{ background:rgba(0,0,0,0.5);position:absolute;left:0px;top:0px;height:60px;overflow:hidden;line-height:60px;text-align:center;width:100%;color:white}
.list-itemv:active{color:var(--main-color);cursor:pointer}
.list-itemv:active{color:var(--main-color);cursor:pointer}
.btn-group{display: flex;align-items: stretch;}
.btn-group .btn{float:left}
.btn-group>.active{box-shadow: inset 0 3px 5px rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b), .125);}
.btn-group :first-child:not(:last-child){
border-top-right-radius:0px;
border-bottom-right-radius:0px;
}
.btn-group :last-child:not(:first-child){
border-top-left-radius:0px;
border-bottom-left-radius:0px;
}
.btn-group :not(:last-child):not(:first-child){
border-radius:0px;
}
.btn-group :not(:first-child){
border-left-width:0px;
}
.rock-loading {
display: inline-block;
height:16px;
width:16px;
vertical-align: middle;
-webkit-mask: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A") 0 0 no-repeat;
mask-size: cover;
-webkit-mask-size: cover;
mask-size: cover;
background-color: currentColor;
}
::-webkit-scrollbar{
width: 8px;
height: 8px;
background-color: transparent;
}
::-webkit-scrollbar-thumb {
border-radius: 5px;
background-color: rgba(0, 0, 0, 0.2);
}
::-webkit-scrollbar-track:hover {
background-color: rgba(0, 0, 0, 0.1);
border-radius: 5px;
}

View File

@@ -27,7 +27,8 @@ table{border-spacing:0;border-collapse: collapse;}
button,.cursor,a{cursor:pointer}
a:link,a:visited{color:var(--main-color);TEXT-DECORATION:none;font-size:var(--font-size)}
a:hover{TEXT-DECORATION:underline;color:red;}
input,button,textarea,select{resize:none;outline:none;font-size:var(--font-size)}
input,button,textarea,select,div{resize:none;outline:none;font-size:var(--font-size);}
input[type=button], input[type=submit], input[type=file], button {-webkit-appearance: none;}
::placeholder{color:#999999;}
.wrap{word-wrap:break-word;word-break:break-all;white-space:normal;}
@@ -237,4 +238,7 @@ textarea.form-control{overflow:auto;padding-top:5px;padding-bottom:5px}
.select-list .div01{padding:8px 10px;border-bottom:var(--border)}
.select-list .div01:hover{background-color:rgba(var(--rgb-r), var(--rgb-g), var(--rgb-b), 0.1);}
.select-list .div02{padding:8px 10px;border-bottom:var(--border);background-color:rgba(var(--rgb-r), var(--rgb-g), var(--rgb-b), 0.1)}
.list-itemv:hover{color:var(--main-color);cursor:pointer;background-color:rgba(var(--rgb-r), var(--rgb-g), var(--rgb-b), 0.1)}
.list-itemv:hover{color:var(--main-color);cursor:pointer;background-color:rgba(var(--rgb-r), var(--rgb-g), var(--rgb-b), 0.1)}
.editortools div{width:26px;height:26px;overflow:hidden;margin-left:8px;line-height:26px;border-radius:5px;cursor:pointer;}
.editortools div:hover{background-color:rgba(0,0,0,0.1);}

View File

@@ -183,4 +183,19 @@ a:link,a:visited{TEXT-DECORATION:none;color:var(--main-color)}
-webkit-mask-size: cover;
mask-size: cover;
background-color: currentColor;
}
::-webkit-scrollbar{
width: 8px;
height: 8px;
background-color: transparent;
}
::-webkit-scrollbar-thumb {
border-radius: 5px;
background-color: rgba(0, 0, 0, 0.2);
}
::-webkit-scrollbar-track:hover {
background-color: rgba(0, 0, 0, 0.1);
border-radius: 5px;
}

View File

@@ -4,7 +4,7 @@ class inputAction extends Action
public $mid = 0;
public $flow;
public $rs = array();
public $gongsiarr,$actclss,$fieldarrall,$inputobj,$subfielsa,$checkobj,$mdb;
public $gongsiarr,$actclss,$fieldarrall,$inputobj,$subfielsa,$checkobj,$mdb,$mallfields;
public function initAction()
{
@@ -70,8 +70,8 @@ class inputAction extends Action
if(!$fieldsarr)$this->backmsg('没有录入元素');
$db = m($table);$subna = '提交';$addbo = false;$where = "`id`='$id'"; $oldrs = false;
$this->mdb = $db;
$this->mdb = $db;
$filelx = (int)arrvalue($this->moders,'filelx','0');
if($id==0){
$where = '';
$addbo = true;
@@ -140,6 +140,7 @@ class inputAction extends Action
//默认字段保存
$allfields = $this->db->getallfields('[Q]'.$table.'');
$this->mallfields = $allfields;
if(in_array('optdt', $allfields))$uaarr['optdt'] = $this->now;
if(in_array('optid', $allfields))$uaarr['optid'] = $this->adminid;
if(in_array('optname', $allfields))$uaarr['optname'] = $this->adminname;
@@ -185,6 +186,8 @@ class inputAction extends Action
if(isset($uaarr[$rs['fields']]))$ss = $this->flow->savedatastr($uaarr[$rs['fields']], $rs, $uaarr);
if($ss!='')$this->backmsg($ss);
}
$fileid = $this->post('fileid');
if($filelx==1 && isempt($fileid))$this->backmsg('必须添加“相关文件”');
//判断保存前的
$ss = '';
@@ -243,7 +246,8 @@ class inputAction extends Action
if($id==0)$id = $this->db->insert_id();
$fobj = m('file');
$fobj->addfile($this->post('fileid'), $table, $id, $modenum);
$fobj->addfile($fileid, $table, $id, $modenum);
if($this->otherfileid!=''){
$ofid1 = substr($this->otherfileid,1);
$fobj->addxuan($ofid1,$this->post('sxuanfileid'),''.$modenum.'|'.$id.'');
@@ -366,8 +370,16 @@ class inputAction extends Action
$len = count($data);
$idss = '0';
$whes = '';
$allfields = $this->db->getallfields('[Q]'.$tables.'');
$allfields = array();
$ischuli = false;
$allfielda = $this->db->gettablefields('[Q]'.$tables.'');
foreach($allfielda as $k1=>$rs1){
$allfields[] = $rs1['name'];
if($rs1['name']=='mid' && contain($rs1['types'],'int(11)'))$ischuli = true;
}
//$allfields = $this->db->getallfields('[Q]'.$tables.'');
$oarray = array();
if(in_array('optdt', $allfields))$oarray['optdt'] = $this->now;
if(in_array('optid', $allfields))$oarray['optid'] = $this->adminid;
@@ -382,6 +394,12 @@ class inputAction extends Action
if(in_array('comid', $allfields))$oarray['comid'] = $this->companyid;
if(!$ischuli){
$usql = 'alter table `[Q]'.$tables.'` MODIFY `mid` int(11) DEFAULT 0 COMMENT \'对应主表'.$this->flow->mtable.'.id\';';
$this->db->query($usql, false);
}
if($data)foreach($data as $k=>$uaarr){
$sid = $uaarr['id'];
$where = "`id`='$sid'";
@@ -571,6 +589,8 @@ class inputAction extends Action
if($content=='')exit('未设置录入页面,请到[流程模块→表单元素管理]下设置');
$filelx = (int)arrvalue($moders,'filelx','0');
$content = $this->flow->flowinputtpl($content, $this->ismobile);
$this->actclss = $this;
@@ -593,13 +613,14 @@ class inputAction extends Action
$this->inputobj->flow = $this->flow;
$this->inputobj->mid = $this->mid;
$this->inputobj->initUser($this->adminid);
$redfont = '<font color=red>*</font>';
$chufarr= array();
$chufarr = array();
if(method_exists($this->flow, 'flowxiangfields'))$chufarr = $this->flow->flowxiangfields($chufarr);
$this->fieldarrall['base_sericnum'] = array('name'=>arrvalue($chufarr,'base_sericnum','单号'));
$this->fieldarrall['base_name'] = array('name'=>arrvalue($chufarr,'base_name','申请人'));
$this->fieldarrall['base_deptname'] = array('name'=>arrvalue($chufarr,'base_deptname','申请人部门'));
$this->fieldarrall['file_content'] = array('name'=>arrvalue($chufarr,'file_content','相关文件'));
$this->fieldarrall['file_content'] = array('name'=>arrvalue($chufarr,'file_content',''.(($filelx==1)? $redfont:'').'相关文件'));
preg_match_all('/\{(.*?)\}/', $content, $list);
foreach($list[1] as $k=>$nrs){
@@ -608,7 +629,7 @@ class inputAction extends Action
}
$this->subfielsa = array();
$content = $this->pisubduolie($content, $modeid, $nameaas);//多列子表匹配的是[]
$content = str_replace('*','<font color=red>*</font>', $content);
$content = str_replace('*',$redfont, $content);
//替换字段名^^
preg_match_all('/\^(.*?)\^/', $content, $list);
@@ -674,6 +695,7 @@ class inputAction extends Action
$this->smartydata['zbnamearr'] = $nameaas;
$this->smartydata['zbshu'] = $zbshu;//子表数
$this->smartydata['isupfile'] = $isupfile;//是否有上传
$this->smartydata['isupfiles'] = $this->fieldarrall['file_content']['name'];
$this->assign('inputobj', c('input'));
@@ -762,11 +784,12 @@ class inputAction extends Action
$rows = array();
$act = $this->get('act');
$modenum= $this->get('sysmodenum');
$actstr = $this->get('actstr');
$actstr = $this->jm->base64decode($this->get('actstr'));
$acta = explode(',', $actstr);
$where = arrvalue($acta, 2);
if(isempt($act)){
if($actstr){
$actstr1 = $this->jm->base64decode($actstr);
$rows = c('input')->sqlstore($actstr1);
$rows = c('input')->sqlstore($actstr);
}
return $rows;
}
@@ -776,23 +799,23 @@ class inputAction extends Action
$objs = m($acta[0]);
$tacs = $acta[1];
if(method_exists($objs, $tacs)){
$rows = $objs->$tacs();
$rows = $objs->$tacs($where);
}
}
if(!$rows && !isempt($act) && method_exists($this, $act)){
$rows = $this->$act();
$rows = $this->$act($where);
}
//从Model上读取
if(!$rows && !isempt($modenum)){
$this->flow = m('flow')->initflow($modenum);
if(method_exists($this->flow, $act)){
$rows = $this->flow->$act();
$rows = $this->flow->$act($where);
}
}
//从数据选项读取
if(!$rows && $actstr){
$acta = explode(',', $this->jm->base64decode($actstr));
$acta = explode(',', $actstr);
if(count($acta)<=3){
$sarr = m('option')->getmnum($acta[0]);
if($sarr){

View File

@@ -146,7 +146,7 @@ var inputtwo={
this.initupssa[sna]=$.rockupload({
'inputfile':'filed_'+sna+'_inp',
'initremove':false,'uptype':uptp,'formming':sna,
'urlparams':{'sysmodenum':modenum,'sysmid':mid},
'urlparams':{'sysmodenum':modenum,'sysmid':mid,'sysuptype':tsye},
'oparams':{sname:sna,snape:tsye},
'onsuccess':function(f,gstr){
var sna= f.sname,tsye=f.snape,d=js.decode(gstr);
@@ -313,9 +313,24 @@ var inputtwo={
},
//2020-09-02新增地图上选择位置
selectlocation:function(sna,snall,iszb){
js.msg('wait','定位中...');
this.selectmapdata={sna:sna,snall:snall};
js.importjs('js/dingwei.js?'+js.getrand()+'', function(){
js.dw.dwsuccess = function(ret){
this.clearchao();
c.selectmapdata.lat=ret.latitude;
c.selectmapdata.lng=ret.longitude;
c.selectmapdata.zoom=12;
c.geocoder(ret.latitude,ret.longitude,ret.accuracy);
}
js.dw.init();
js.dw.start();
});
},
selectmap:function(sna,snall,fna,iszb){
var hei = winHb()-150;
var url = 'https://map.qq.com/api/js?v=2.exp&key=55QBZ-JGYLO-BALWX-SZE4H-5SV5K-JCFV7&callback=c.showmap';
var url = 'https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&callback=c.showmap';
js.tanbody('selectmap','选择['+fna+']',winWb()-((ismobile==1)?5:80),hei,{
html:'<div style="padding:5px"><input onkeyup="if(event.keyCode==13)c.selectmapsou(this)" type="text" placeholder="请输入格式(地址 城市)如:鼓浪屿 厦门" class="inputs"></div><div id="selectmap" style="height:'+(hei-20)+'px;overflow:hidden"></div>',
btn:[{text:'确定'}]
@@ -378,18 +393,18 @@ var inputtwo={
this.selectmapdata.lat=x;
this.selectmapdata.lng=y;
this.selectmapdata.zoom=zoom;
js.msg('wait','确定搜索地址...');
this.geocoder(x,y);
},
//搜索位置
geocoder:function(lat,lng, jid){
js.msg('wait','确定搜索地址...');
js.ajax('api.php?m=kaoqin&a=gcoder',{lat:lat,lng:lng},function(ret){
js.msg();
if(ret.status==0){
var result = ret.result;
var address= result.formatted_addresses.recommend;
var d1 = c.selectmapdata;
d1.address = address;
d1.address = result.address;
if(!result.address_component)result.address_component={province:'',city:'未知',district:'',street_number:'',street:''}
var info = result.address_component;
d1.addressinfo = {
province:info.province,
@@ -398,7 +413,6 @@ var inputtwo={
streetNumber:info.street_number,
street:info.street
};
js.msg();
var sna = d1.sna;
if(form(sna))form(sna).value=d1.address+'|'+d1.lat+','+d1.lng+'';
var sna1 = d1.snall;
@@ -450,68 +464,22 @@ var inputtwo={
if(lx==1)obj.imports();
if(lx==2)obj.clear();
},
//自动完成2022-10-30添加
autocompletearr:{},
//自动完成2024-11-20添加
autocomplete:function(o1,s1,id1,zb){
clearTimeout(this.autoctime);
this.autocompletea=[o1,s1,id1,zb];
if(this.nowinpvle == o1.value && get('completelist'))return;
if(this.autocompletearr[id1]){
this.autoctime = setTimeout(function(){c.autocompleteshow(o1,c.autocompletearr[id1]);},10);
return;
}
var a1 = s1.split(',');
var a1 = s1.split(',');
var gcan = {'act':a1[0],'actstr':jm.base64encode(s1),'acttyle':'act','sysmodenum':modenum,'sysmid':mid};
js.ajax(geturlact('getselectdata', gcan),{key:jm.base64encode(o1.value)}, function(ret){
c.autocompletearr[id1] = ret;
c.autocompleteshow(o1,ret);
},'get,json')
},
autocompleteshow:function(o1,da){
if(!da || da.length==0)return;
var o2 = $(o1),lefta=o2.offset(),i,len=da.length,ds=[],zl=10,j=0;
$('#completelist').remove();
var str= '<div id="completelist" style="position:absolute;z-index:9;left:'+lefta.left+'px;top:'+(lefta.top+29)+'px;background:white;border:1px var(--main-color) solid;border-radius:5px;box-shadow: 0px 0px 5px rgb(0,0,0,0.3)"></div>';
var val= strreplace(o1.value);
if(val){
for(i=0;i<len;i++)if(da[i].name.indexOf(val)>-1 || (da[i].subname && da[i].subname.indexOf(val)>-1)){
ds.push(da[i]);j++;if(j>=zl*3)break;
}
}else{
ds=da;
}
this.autodata = ds;
this.nowinpvle= o1.value;
$('body').append(str);
this.autocompleteshows(zl,1)
js.addbody('completelist', 'remove','completelist');
},
autocompleteshows:function(zl,p){
var ds = this.autodata;
var str='',i,len=ds.length,j=0;
for(i=(p-1)*zl;i<len;i++){
str+='<div class="list-itemv" onclick="c.autocompleteclick('+i+')" value="'+i+'" style="padding:5px 10px">'+ds[i].name+'';
if(ds[i].subname)str+='&nbsp;<span style="font-size:12px">('+ds[i].subname+')</span>';
str+='</div>';
j++;
if(j>=zl)break;
}
if(len>zl){
str+='<div style="padding:5px 10px;background:rgba(0,0,0,0.1)">总记录'+len+'条';
if(p>1)str+='&nbsp;<a href="javascript:;" class="zhu" onclick="c.autocompleteshows(\''+zl+'\','+(p-1)+')">&lt;上页</a>';
if(j==zl)str+='&nbsp;<a href="javascript:;" class="zhu" onclick="c.autocompleteshows(\''+zl+'\','+(p+1)+')">下页&gt;</a>';
str+='</div>';
}
setTimeout(function(){$('#completelist').html(str)},10);
},
autocompleteclick:function(i){
var d = this.autodata[i],o1=this.autocompletea[0];
o1.value=d.name;
var a1 = this.autocompletea[1].split(',');
if(a1[1]){
if(form(a1[1]))form(a1[1]).value = d.value;
}
this.onselectdataall(o1.name,d);
$('#completelist').remove();
var url = geturlact('getselectdata', gcan);
js.chajian('rockselect', {
viewobj:o1,num:o1.name,limit:10,url:url,zb:zb,strsss:s1,
onitemclick:function(sna,val, d){
var fid= this.nameobj.name;
var a1 = this.strsss.split(',');
if(a1[1])if(form(a1[1]))form(a1[1]).value = val
c.onselectdataall(fid,d);
},
nameobj:o1
});
}
}

View File

@@ -13,7 +13,9 @@ c.onselectmap=function(sna,res){
var info = res.addressinfo;
if(form('sheng'))form('sheng').value = info.province;
if(form('shi'))form('shi').value = info.city;
var dz = info.town;
dz+=(info.streetNumber)?info.streetNumber:info.street;
form(sna).value=dz;
if(!res.address){
var dz = info.town;
dz+=(info.streetNumber)?info.streetNumber:info.street;
form(sna).value=dz;
}
}

View File

@@ -87,7 +87,7 @@ class mode_flowelementClassAction extends inputAction{
return array(
'rows' => $rows,
'modearr' => m('mode')->getmodearr(),
//'modearr' => m('mode')->getmodearr(),
'mkrs' => $mkrs,
);
}

View File

@@ -17,6 +17,7 @@ class mode_flowmenuClassAction extends inputAction{
public $alldata = array();
protected function storeafter($table, $rows)
{
$this->db->update('[Q]menu', '`status`=1' , '`id` in(1,2) and `status`=0');//总有一些人把系统菜单给停用了
$pid = (int)$this->post('pid','0');
if($pid>0){
$this->showgetmenu($rows,0,1,1);

View File

@@ -6,6 +6,9 @@ class mode_flowsetClassAction extends inputAction{
public $pobj;
protected function savebefore($table, $arr, $id, $addbo){
if(!in_array('filelx', $this->mallfields)){
$this->db->addFields('[Q]'.$table.'','filelx','tinyint(1)','0','录入页相应文件0选上传,1必须上传');
}
include_once('webmain/main/flow/flowAction.php');
$this->pobj = new flowClassAction();
return $this->pobj->flowsetsavebefore($table, $arr);

View File

@@ -14,5 +14,10 @@ class mode_goodsClassAction extends inputAction{
}
public function reloadstockAjax()
{
m('goods')->setstock();
return 'ok';
}
}

View File

@@ -27,23 +27,27 @@ $maincolors= $colarr['colors'];
.ys1{padding:5px 5px;color:#666666}
.ys2{padding:5px 5px;}
.inputs,.textarea{flex:1;width:95%;margin:3px 0px}
.inputs,.textarea{flex:1;width:95%;margin:3px 0px;width:-webkit-fill-available}
.cionsss{padding:4px; background-color:#dddddd}
.datesss{background:url(mode/icons/date.png) no-repeat right;cursor:pointer}
.status{position: absolute;right:5px;top:10px;display:none;width:80px;height:80px;overflow:hidden; border:3px red solid;border-radius:50%;font-size:20px;text-align:center;line-height:80px;color:red;transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);filter:progid:DXImagetransform.Microsoft.Matrix(M11=0.707,M12=-0.707,M21=0.707,M22=0.707,SizingMethod='auto expand');}
.tablesub td{height:25px;text-align:center;border:var(--border);}
.tablesub .inputs,.tablesub .textarea{border:none;background:none;border-radius:0;margin:0;width:100%;padding:0;}
.tablesub .inputs[readonly]{background-color:rgba(0,0,0,0.1);}
.tablesub{width:-webkit-fill-available}
.tablesub td{height:30px;text-align:center;border:var(--border)}
.tablesub .inputs,.tablesub .textarea{border:none;background:none;border-radius:0;margin:0;width:95%;}
.tablesub .inputs[readonly]{background-color:rgba(0,0,0,0.05);}
.course{padding:8px; background-color:rgba(<?=$maincolors?>,0.2);border:1px rgba(<?=$maincolors?>,0.3) solid;margin-right:10px;text-align:center;border-radius:5px}
.coursejt{height:8px;overflow:hidden;width:30px;background-color:rgba(<?=$maincolors?>,0.2)}
.coursejts{width:0px; height:0px; overflow:hidden;border-width:8px;border-style:solid;border-color:transparent transparent transparent rgba(<?=$maincolors?>,0.2);}
.tishi{color:#888888;font-size:12px;padding:3px}
.ke-icon-crop{background-image: url(mode/icons/crop.png);width: 16px;height: 16px;}
.xuhao{text-align:center;}
.xuhao[readonly]{background:none}
.tablesub .xuhao{text-align:center;width:100%;padding:0;min-width:35px}
.tablesub .xuhao[readonly]{background:none}
.tablesub tr:first-child{background:var(--main-vgcolor)}
.zbtitle{}
.addys{}
</style>
</head>
<body>
@@ -93,8 +97,8 @@ $maincolors= $colarr['colors'];
$firstrs['isbt'] = 1;
}
$stsp.= ''.$firstrs['name'].'</td>';
$stsp.= '<td width="100%"><input class="inputs" style="width:99%" id="sysnextchange" value="'.$firstrs['sysnextopt'].'" placeholder="'.$placeholder.'" readonly type="text" name="sysnextopt"><input name="sysnextoptid" value="'.$firstrs['sysnextoptid'].'" id="sysnextchange_id" type="hidden"><input name="sysnextcustidid" value="'.$firstrs['id'].'" type="hidden"></td>';
$stsp.= '<td nowrap><a href="javascript:;" onclick="js.changeclear(\'sysnextchange\')" class="webbtn">×</a><a href="javascript:;" id="btnchange_recename" onclick="js.changeuser(\'sysnextchange\',\'changeusercheck\',\'选择'.$firstrs['name'].'\',{changerange:\''.$firstrs['checktypeid'].'\'})" class="webbtn">选择</a></td>';
$stsp.= '<td width="100%"><div class="btn-group"><input class="inputs" style="width:99%" id="sysnextchange" value="'.$firstrs['sysnextopt'].'" placeholder="'.$placeholder.'" readonly type="text" name="sysnextopt"><input name="sysnextoptid" value="'.$firstrs['sysnextoptid'].'" id="sysnextchange_id" type="hidden"><input name="sysnextcustidid" value="'.$firstrs['id'].'" type="hidden">';
$stsp.= '<button type="button" onclick="js.changeclear(\'sysnextchange\')" class="webbtn">×</button><button type="button" id="btnchange_recename" onclick="js.changeuser(\'sysnextchange\',\'changeusercheck\',\'选择'.$firstrs['name'].'\',{changerange:\''.$firstrs['checktypeid'].'\'})" class="webbtn">选择</button></div></td>';
$stsp.= '</tr></table></div>';
echo $stsp;
}

View File

@@ -7,7 +7,7 @@
<meta name="apple-mobile-web-app-status-bar-style" content="yes" />
<title><?=$da['title']?></title>
<link rel="shortcut icon" href="favicon.ico" />
<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/cssm.css">
<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/cssm.css?<?=$nowtime?>">
<link rel="stylesheet" type="text/css" href="mode/plugin/css/jquery-rockdatepicker.css"/>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js?<?=$nowtime?>"></script>
@@ -62,13 +62,13 @@ function initApp(){
<?php
$maincolora= c('image')->colorTorgb($maincolor);
$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
echo 'body{--main-color:'.$maincolor.';}';
echo 'body{--main-color:'.$maincolor.';--font-size:16px;}';
?>
.datesss{background:url(mode/icons/date.png) no-repeat right;cursor:pointer}
input,textarea,select,*,td, button{font-size:16px}
.lurim{text-align:right;padding-left:5px}
.tablesub td{height:25px;text-align:left;border:0px #888888 solid;}
.tablesub .inputs{width:100%}
.tablesub .inputs{width:-webkit-fill-available}
.status{position: absolute;right:15px;top:2px;display:none;width:70px;height:70px;overflow:hidden; border:2px red solid;border-radius:50%;font-size:16px;text-align:center;line-height:70px;color:red;transform:rotate(-45deg);-o-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg)}
@@ -78,15 +78,17 @@ input,textarea,select,*,td, button{font-size:16px}
.btn:hover{opacity:1;color:#ffffff}
.lumtr{background-color:white}
.tablelum{}
.inputs{border-bottom:0.5px #cccccc solid;border-top:0px;border-left:0px;border-right:0px}
.inputs:focus{border:none;box-shadow:none;border-bottom:0.5px <?=$maincolor?> solid;}
.inputs1{border-bottom:0.5px #cccccc solid;border-top:0px;border-left:0px;border-right:0px}
.inputs1:focus{border:none;box-shadow:none;border-bottom:0.5px <?=$maincolor?> solid;}
.divzb0{display:inline-block;width:100%;margin:5px 0px}
.divzb1{float:left;width:25%;overflow:auto;text-align:right;line-height:20px;margin-top:8px}
.divzb2{float:left;width:73%}
.xuhao{border:none;font-size:12px;text-align:left;color:#888888}
.xuhao{border:none;font-size:12px;text-align:left;color:#888888;padding:0;margin:0;margin-left:2px;padding-top:2px}
.xuhao:focus{border:none;}
.xuantitle{text-align:left;font-size:12px;padding-left:8px;line-height:30px;margin-top:10px;color:#888888;}
.divinput .btn-group{width:98%}
</style>
</head>
@@ -116,7 +118,7 @@ if($showheader==1)echo '<div id="header_title" style="padding-top:'.$cenghei.'px
if($da['isupfile']==1){
?>
<tr class="lumtr">
<td class="lurim" nowrap>相关文件</td>
<td class="lurim" nowrap><?=$da['isupfiles']?></td>
<td><div class="divinput">
<input name="fileid" id="fileidview-inputEl" type="hidden">
<div id="view_fileidview" style="height:auto;min-height:60px" class="inputs"></div>
@@ -156,8 +158,8 @@ if($showheader==1)echo '<div id="header_title" style="padding-top:'.$cenghei.'px
$firstrs['isbt'] = 1;
}
$stsp.= ''.$firstrs['name'].':</td>';
$stsp.= '<td><div class="divinput"><table width="98%" cellpadding="0" border="0"><tr><td width="100%"><input class="inputs" style="width:99%" id="sysnextchange" value="'.$firstrs['sysnextopt'].'" placeholder="'.$placeholder.'" readonly type="text" name="sysnextopt"><input name="sysnextoptid" value="'.$firstrs['sysnextoptid'].'" id="sysnextchange_id" type="hidden"><input name="sysnextcustidid" value="'.$firstrs['id'].'" type="hidden"></td>';
$stsp.= '<td nowrap><a href="javascript:;" onclick="js.changeclear(\'sysnextchange\')" class="webbtn">×</a><a href="javascript:;" id="btnchange_recename" onclick="js.changeuser(\'sysnextchange\',\'changeusercheck\',\'\',{changerange:\''.$firstrs['checktypeid'].'\'})" class="webbtn">选择</a></td></tr></table></div></td>';
$stsp.= '<td><div class="divinput"><table width="98%" cellpadding="0" border="0"><tr><td width="100%"><div class="btn-group"><input class="inputs" style="flex:1" id="sysnextchange" value="'.$firstrs['sysnextopt'].'" placeholder="'.$placeholder.'" readonly type="text" name="sysnextopt"><input name="sysnextoptid" value="'.$firstrs['sysnextoptid'].'" id="sysnextchange_id" type="hidden"><input name="sysnextcustidid" value="'.$firstrs['id'].'" type="hidden">';
$stsp.= '<button type="button" onclick="js.changeclear(\'sysnextchange\')" class="webbtn">×</button><button type="button" id="btnchange_recename" onclick="js.changeuser(\'sysnextchange\',\'changeusercheck\',\'\',{changerange:\''.$firstrs['checktypeid'].'\'})" class="webbtn">选择</button></div></td></tr></table></div></td>';
$stsp.= '</tr>';
echo $stsp;
}

View File

@@ -1 +1 @@
<table width="100%" bordercolor="#000000" border="0" class="ke-zeroborder"><tbody><tr><td height="34" width="15%" align="right" class="ys1">*申请日期</td><td class="ys2" width="35%">{applydt}{type}</td><td align="right" class="ys1" width="15%">*供应商</td><td class="ys2" width="35%">{custname}{custid}</td></tr><tr><td class="ys2" style="background-color:#CCCCCC;" colspan="4"><strong>采购物品</strong> </td></tr><tr><td class="ys0" colspan="4"><table class="tablesub ke-zeroborder" id="tablesub0" style="width:100%;" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="10%">序号</td><td>*物品</td><td>*采购数量</td><td>单位</td><td>单价</td><td width="5%">操作</td></tr><tr><td>[xuhao0,0]</td><td>[temp_aid0,0][aid0,0]</td><td>[count0,0]</td><td>[unit0,0]</td><td>[price0,0]</td><td>{删,0}</td></tr></tbody></table><div style="background-color:#F1F1F1;">{新增,0}</div></td></tr><tr><td height="34" align="right" class="ys1">优惠价格</td><td class="ys2">{discount}</td><td class="ys1" align="right">*采购金额</td><td class="ys2">{money}</td></tr><tr><td height="34" align="right" class="ys1">说明</td><td colspan="3" class="ys2">{explain}</td></tr><tr><td height="34" align="right" class="ys1">相关文件</td><td colspan="3" class="ys2">{file_content}</td></tr><tr><td height="34" align="right" class="ys1">申请人</td><td class="ys2">{base_name}</td><td class="ys1" align="right">申请人部门</td><td class="ys2">{base_deptname}</td></tr></tbody></table>
<table width="100%" bordercolor="#000000" border="0" class="ke-zeroborder"><tbody><tr><td height="34" width="15%" align="right" class="ys1">*申请日期</td><td class="ys2" width="35%">{applydt}{type}</td><td align="right" class="ys1" width="15%">*供应商</td><td class="ys2" width="35%">{custname}{custid}</td></tr><tr><td class="ys2 zbtitle" colspan="4"><strong>采购物品</strong> </td></tr><tr><td class="ys0" colspan="4"><table class="tablesub ke-zeroborder" id="tablesub0" style="width:100%;" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="10%">序号</td><td>*物品</td><td>*采购数量</td><td>单位</td><td>单价</td><td width="5%">操作</td></tr><tr><td>[xuhao0,0]</td><td>[temp_aid0,0][aid0,0]</td><td>[count0,0]</td><td>[unit0,0]</td><td>[price0,0]</td><td>{删,0}</td></tr></tbody></table><div class="addys">{新增,0}</div></td></tr><tr><td height="34" align="right" class="ys1">优惠价格</td><td class="ys2">{discount}</td><td class="ys1" align="right">*采购金额</td><td class="ys2">{money}</td></tr><tr><td height="34" align="right" class="ys1">说明</td><td colspan="3" class="ys2">{explain}</td></tr><tr><td height="34" align="right" class="ys1">相关文件</td><td colspan="3" class="ys2">{file_content}</td></tr><tr><td height="34" align="right" class="ys1">申请人</td><td class="ys2">{base_name}</td><td class="ys1" align="right">申请人部门</td><td class="ys2">{base_deptname}</td></tr></tbody></table>

View File

@@ -1 +1 @@
<div><strong>此模块是用来开发人员提供帮助的模块如联动菜单等各个帮助页面交互js地址webmain/flow/input/inputjs/mode_demo.js</strong> </div><table width="100%" bordercolor="#000000" border="0" class="ke-zeroborder"><tbody><tr><td height="34" width="15%" align="right" class="ys1">申请日期</td><td class="ys2" width="35%">{applydt}</td><td align="right" class="ys1" width="15%">*测试字段</td><td class="ys2" width="35%">{testfirs}</td></tr><tr><td height="34" align="right" class="ys1">封面图片</td><td class="ys2">{fengmian}</td><td class="ys1" align="right">*编号</td><td class="ys2">{num}</td></tr><tr><td height="34" align="right" class="ys1">选择人员</td><td class="ys2">{xuanren}</td><td class="ys1" align="right">多选字段2<br /></td><td class="ys2">{duoxuanla}</td></tr><tr><td height="34" align="right" class="ys1"></td><td class="ys2">{sheng}</td><td class="ys1" align="right"></td><td class="ys2">{shi}</td></tr><tr><td height="34" align="right" class="ys1">客户</td><td class="ys2">{custname}{custid}</td><td class="ys1" align="right">县(区)</td><td class="ys2">{xian}</td></tr><tr><td class="ys1" align="right">弹出下拉单选</td><td class="ys2">{tanxuan}{tanxuanid}</td><td height="34" align="right" class="ys1">弹框下拉多选</td><td class="ys2">{tanxuancheck}</td></tr><tr><td height="34" align="right" class="ys1">*^qianming^</td><td colspan="3" class="ys2">{qianming}</td></tr><tr><td height="34" align="right" class="ys1">说明</td><td colspan="3" class="ys2">{explain}</td></tr><tr><td height="34" align="right" class="ys1">文件上传1</td><td colspan="3" class="ys2">{upfile1}</td></tr><tr><td height="34" align="right" class="ys1">文件上传2</td><td colspan="3" class="ys2">{upfile2}</td></tr><tr><td height="34" align="right" class="ys1">html编辑器</td><td colspan="3" class="ys2">{htmlcont}</td></tr><tr><td height="34" align="right" class="ys1">相关文件</td><td colspan="3" class="ys2">{file_content}</td></tr><tr><td colspan="4" class="ys1"><strong>多行子表1</strong> </td></tr><tr><td colspan="4" class="ys0"><table class="tablesub ke-zeroborder" id="tablesub0" style="width:100%;" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="10%">序号</td><td>名称</td><td>相关图片</td><td>相应文件</td><td width="5%">操作</td></tr><tr><td>[xuhao0,0]</td><td>[sheng0,0]</td><td>[shi0,0]</td><td>[xian0,0]</td><td>{删,0}</td></tr></tbody></table><div style="background-color:#F1F1F1;">{新增,0}</div></td></tr><tr><td colspan="4" class="ys1"><strong>多行子表2</strong> </td></tr><tr><td colspan="4" class="ys0"><table class="tablesub ke-zeroborder" id="tablesub1" style="width:100%;" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="10%">序号</td><td>简单名称</td><td>文件上传1</td><td>说明</td><td width="5%">操作</td></tr><tr><td>[xuhao1,0]</td><td>[tanxuan1,0]</td><td>[upfile11,0]</td><td>[explain1,0]</td><td>{删,1}</td></tr></tbody></table><div style="background-color:#F1F1F1;">{新增,1}</div></td></tr><tr><td height="34" align="right" class="ys1">申请人</td><td class="ys2">{base_name}</td><td class="ys1" align="right">申请人部门</td><td class="ys2">{base_deptname}</td></tr></tbody></table>
<div><strong>此模块是用来开发人员提供帮助的模块如联动菜单等各个帮助页面交互js地址webmain/flow/input/inputjs/mode_demo.js</strong> </div><table width="100%" bordercolor="#000000" border="0" class="ke-zeroborder"><tbody><tr><td height="34" width="15%" align="right" class="ys1">申请日期</td><td class="ys2" width="35%">{applydt}</td><td align="right" class="ys1" width="15%">*测试字段</td><td class="ys2" width="35%">{testfirs}</td></tr><tr><td height="34" align="right" class="ys1">封面图片</td><td class="ys2">{fengmian}</td><td class="ys1" align="right">*编号</td><td class="ys2">{num}</td></tr><tr><td height="34" align="right" class="ys1">选择人员</td><td class="ys2">{xuanren}</td><td class="ys1" align="right">多选字段2<br /></td><td class="ys2">{duoxuanla}</td></tr><tr><td height="34" align="right" class="ys1"></td><td class="ys2">{sheng}</td><td class="ys1" align="right"></td><td class="ys2">{shi}</td></tr><tr><td height="34" align="right" class="ys1">客户</td><td class="ys2">{custname}{custid}</td><td class="ys1" align="right">县(区)</td><td class="ys2">{xian}</td></tr><tr><td class="ys1" align="right">弹出下拉单选</td><td class="ys2">{tanxuan}{tanxuanid}</td><td height="34" align="right" class="ys1">弹框下拉多选</td><td class="ys2">{tanxuancheck}</td></tr><tr><td height="34" align="right" class="ys1">*^qianming^</td><td colspan="3" class="ys2">{qianming}</td></tr><tr><td height="34" align="right" class="ys1">说明</td><td colspan="3" class="ys2">{explain}</td></tr><tr><td height="34" align="right" class="ys1">文件上传1</td><td colspan="3" class="ys2">{upfile1}</td></tr><tr><td height="34" align="right" class="ys1">文件上传2</td><td colspan="3" class="ys2">{upfile2}</td></tr><tr><td height="34" align="right" class="ys1">html编辑器</td><td colspan="3" class="ys2">{htmlcont}</td></tr><tr><td height="34" align="right" class="ys1">^ztstate^</td><td colspan="3" class="ys2">{ztstate}</td></tr><tr><td height="34" align="right" class="ys1">相关文件</td><td colspan="3" class="ys2">{file_content}</td></tr><tr><td colspan="4" class="ys1"><strong>多行子表1</strong> </td></tr><tr><td colspan="4" class="ys0"><table class="tablesub ke-zeroborder" id="tablesub0" style="width:100%;" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="10%">序号</td><td>名称</td><td>相关图片</td><td>相应文件</td><td>状态</td><td width="5%">操作</td></tr><tr><td>[xuhao0,0]</td><td>[sheng0,0]</td><td>[shi0,0]</td><td>[xian0,0]</td><td>[ztstate0,0]</td><td>{删,0}</td></tr></tbody></table><div style="background-color:#F1F1F1;">{新增,0}</div></td></tr><tr><td colspan="4" class="ys1"><strong>多行子表2</strong> </td></tr><tr><td colspan="4" class="ys0"><table class="tablesub ke-zeroborder" id="tablesub1" style="width:100%;" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="10%">序号</td><td>简单名称</td><td>文件上传1</td><td>说明</td><td width="5%">操作</td></tr><tr><td>[xuhao1,0]</td><td>[tanxuan1,0]</td><td>[upfile11,0]</td><td>[explain1,0]</td><td>{删,1}</td></tr></tbody></table><div style="background-color:#F1F1F1;">{新增,1}</div></td></tr><tr><td height="34" align="right" class="ys1">申请人</td><td class="ys2">{base_name}</td><td class="ys1" align="right">申请人部门</td><td class="ys2">{base_deptname}</td></tr></tbody></table>

View File

@@ -1 +1 @@
<br /><div><b>基本信息</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" width="15%" align="right" class="ys1">*^type^</td><td width="35%" class="ys2">{type}</td><td height="34" width="15%" align="right" class="ys1">*^name^</td><td width="35%" class="ys2">{name}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">*^num^</td><td width="35%" class="ys2">{num}</td><td height="34" width="15%" align="right" class="ys1">*^table^</td><td width="35%" class="ys2">{table}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^where^</td><td width="35%" class="ys2">{where}</td><td height="34" width="15%" align="right" class="ys1">^tables^</td><td width="35%" class="ys2">{tables}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^sort^</td><td width="35%" class="ys2">{sort}</td><td height="34" width="15%" align="right" class="ys1">^names^</td><td width="35%" class="ys2">{names}</td></tr><tr><td height="34" align="right" class="ys1">*^recename^</td><td colspan="3" class="ys2">{recename}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^status^</td><td width="35%" class="ys2">{status}</td><td height="34" align="right" class="ys1">^isscl^</td><td class="ys2">{isscl}</td></tr></tbody></table><br /><div><b>流程</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" width="15%" align="right" class="ys1">*^isflow^</td><td width="35%" class="ys2">{isflow}</td><td height="34" width="15%" align="right" class="ys1">^sericnum^</td><td width="35%" class="ys2">{sericnum}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">*^isflowlx^</td><td width="35%" class="ys2">{isflowlx}</td><td height="34" width="15%" align="right" class="ys1">^isys^</td><td width="35%" class="ys2">{isys}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^isbxs^</td><td width="35%" class="ys2">{isbxs}</td><td height="34" width="15%" align="right" class="ys1">*^iscs^</td><td width="35%" class="ys2">{iscs}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^zfeitime^</td><td width="35%" class="ys2">{zfeitime}</td><td height="34" align="right" class="ys1"></td><td class="ys2"></td></tr></tbody></table><br /><div><b>摘要设置</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" align="right" class="ys1">^summary^</td><td colspan="3" class="ys2">{summary}</td></tr><tr><td height="34" align="right" class="ys1">^summarx^</td><td colspan="3" class="ys2">{summarx}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^sortdir^</td><td width="35%" class="ys2">{sortdir}</td><td height="34" align="right" class="ys1"></td><td class="ys2"></td></tr></tbody></table><br /><div><b>提醒设置</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" width="15%" align="right" class="ys1">^pctx^</td><td width="35%" class="ys2">{pctx}</td><td height="34" width="15%" align="right" class="ys1">^emtx^</td><td width="35%" class="ys2">{emtx}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^mctx^</td><td width="35%" class="ys2">{mctx}</td><td height="34" width="15%" align="right" class="ys1">^wxtx^</td><td width="35%" class="ys2">{wxtx}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^ddtx^</td><td width="35%" class="ys2">{ddtx}</td><td height="34" width="15%" align="right" class="ys1">^istxset^</td><td width="35%" class="ys2">{istxset}</td></tr></tbody></table><br /><div><b>详情显示</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" width="15%" align="right" class="ys1">^isgbjl^</td><td width="35%" class="ys2">{isgbjl}</td><td height="34" width="15%" align="right" class="ys1">^isgbcy^</td><td width="35%" class="ys2">{isgbcy}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^ispl^</td><td width="35%" class="ys2">{ispl}</td><td height="34" align="right" class="ys1"></td><td class="ys2"></td></tr></tbody></table><br /><div><b>其他</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" width="15%" align="right" class="ys1">^islu^</td><td width="35%" class="ys2">{islu}</td><td height="34" width="15%" align="right" class="ys1">^isup^</td><td width="35%" class="ys2">{isup}</td></tr><tr><td height="34" align="right" class="ys1">^statusstr^</td><td colspan="3" class="ys2">{statusstr}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^ishz^</td><td width="35%" class="ys2">{ishz}</td><td height="34" width="15%" align="right" class="ys1">^lbztxs^</td><td width="35%" class="ys2">{lbztxs}</td></tr></tbody></table>
<br /><div><b>基本信息</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" width="15%" align="right" class="ys1">*^type^</td><td width="35%" class="ys2">{type}</td><td height="34" width="15%" align="right" class="ys1">*^name^</td><td width="35%" class="ys2">{name}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">*^num^</td><td width="35%" class="ys2">{num}</td><td height="34" width="15%" align="right" class="ys1">*^table^</td><td width="35%" class="ys2">{table}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^where^</td><td width="35%" class="ys2">{where}</td><td height="34" width="15%" align="right" class="ys1">^tables^</td><td width="35%" class="ys2">{tables}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^sort^</td><td width="35%" class="ys2">{sort}</td><td height="34" width="15%" align="right" class="ys1">^names^</td><td width="35%" class="ys2">{names}</td></tr><tr><td height="34" align="right" class="ys1">*^recename^</td><td colspan="3" class="ys2">{recename}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^status^</td><td width="35%" class="ys2">{status}</td><td height="34" width="15%" align="right" class="ys1">^isscl^</td><td width="35%" class="ys2">{isscl}</td></tr></tbody></table><br /><div><b>流程</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" width="15%" align="right" class="ys1">*^isflow^</td><td width="35%" class="ys2">{isflow}</td><td height="34" width="15%" align="right" class="ys1">^sericnum^</td><td width="35%" class="ys2">{sericnum}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">*^isflowlx^</td><td width="35%" class="ys2">{isflowlx}</td><td height="34" width="15%" align="right" class="ys1">^isys^</td><td width="35%" class="ys2">{isys}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^isbxs^</td><td width="35%" class="ys2">{isbxs}</td><td height="34" width="15%" align="right" class="ys1">*^iscs^</td><td width="35%" class="ys2">{iscs}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^zfeitime^</td><td width="35%" class="ys2">{zfeitime}</td><td height="34" width="15%" align="right" class="ys1">^filelx^</td><td width="35%" class="ys2">{filelx}</td></tr></tbody></table><br /><div><b>摘要设置</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" align="right" class="ys1">^summary^</td><td colspan="3" class="ys2">{summary}</td></tr><tr><td height="34" align="right" class="ys1">^summarx^</td><td colspan="3" class="ys2">{summarx}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^sortdir^</td><td width="35%" class="ys2">{sortdir}</td><td height="34" align="right" class="ys1"></td><td class="ys2"></td></tr></tbody></table><br /><div><b>提醒设置</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" width="15%" align="right" class="ys1">^pctx^</td><td width="35%" class="ys2">{pctx}</td><td height="34" width="15%" align="right" class="ys1">^emtx^</td><td width="35%" class="ys2">{emtx}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^mctx^</td><td width="35%" class="ys2">{mctx}</td><td height="34" width="15%" align="right" class="ys1">^wxtx^</td><td width="35%" class="ys2">{wxtx}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^ddtx^</td><td width="35%" class="ys2">{ddtx}</td><td height="34" width="15%" align="right" class="ys1">^istxset^</td><td width="35%" class="ys2">{istxset}</td></tr></tbody></table><br /><div><b>详情显示</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" width="15%" align="right" class="ys1">^isgbjl^</td><td width="35%" class="ys2">{isgbjl}</td><td height="34" width="15%" align="right" class="ys1">^isgbcy^</td><td width="35%" class="ys2">{isgbcy}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^ispl^</td><td width="35%" class="ys2">{ispl}</td><td height="34" align="right" class="ys1"></td><td class="ys2"></td></tr></tbody></table><br /><div><b>其他</b></div><table width="100%" border="0" class="ke-zeroborder"><tbody><tr class="autoyijianview"><td height="34" width="15%" align="right" class="ys1">^islu^</td><td width="35%" class="ys2">{islu}</td><td height="34" width="15%" align="right" class="ys1">^isup^</td><td width="35%" class="ys2">{isup}</td></tr><tr><td height="34" align="right" class="ys1">^statusstr^</td><td colspan="3" class="ys2">{statusstr}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">^ishz^</td><td width="35%" class="ys2">{ishz}</td><td height="34" width="15%" align="right" class="ys1">^lbztxs^</td><td width="35%" class="ys2">{lbztxs}</td></tr></tbody></table>

View File

@@ -1 +1 @@
<table width="100%" bordercolor="#000000" border="0" class="ke-zeroborder"><tbody><tr><td height="34" align="right" class="ys1">*^title^</td><td class="ys2" colspan="3">{title}</td></tr><tr><td height="34" align="right" class="ys1">^fengmian^</td><td class="ys2" colspan="3">{fengmian}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">*^typename^</td><td width="35%" class="ys2">{typename}</td><td align="right" width="15%" class="ys1">^issms^</td><td width="35%" class="ys2">{issms}&nbsp;<label>{appxs}</label></td></tr><tr><td height="34" align="right" class="ys1">^recename^</td><td colspan="3" class="ys2">{recename}</td></tr><tr><td height="34" align="right" class="ys1">*^content^</td><td colspan="3" class="ys2">{content}</td></tr><tr><td height="34" align="right" class="ys1">^file_content^</td><td colspan="3" class="ys2">{file_content}</td></tr><tr><td height="34" align="right" class="ys1">^url^</td><td colspan="3" class="ys2">{url}</td></tr><tr><td height="34" align="right" class="ys1">*^zuozhe^</td><td class="ys2">{zuozhe}</td><td align="right" class="ys1">*^indate^</td><td class="ys2">{indate}</td></tr><tr><td height="34" align="right" class="ys1">^zstart^</td><td class="ys2">{zstart}</td><td align="right" class="ys1">^zsend^</td><td class="ys2">{zsend}</td></tr><tr><td height="34" align="right" class="ys1">^mintou^</td><td class="ys2">{mintou}</td><td align="right" class="ys1">^maxtou^</td><td class="ys2">{maxtou}</td></tr><tr><td height="34" align="right" class="ys1">^startdt^</td><td class="ys2">{startdt}</td><td align="right" class="ys1">^enddt^</td><td class="ys2">{enddt}</td></tr><tr id="subtitletou"><td class="ys2" style="background-color:#CCCCCC;" colspan="4"><strong>投票选项</strong> </td></tr><tr><td class="ys0" colspan="4"><table class="tablesub ke-zeroborder" id="tablesub0" style="width:100%;" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="10%">序号</td><td>*投票选项</td><td width="5%">操作</td></tr><tr><td>[xuhao0,0]</td><td>[touitems0,0]</td><td>{删,0}</td></tr><tr><td>[xuhao0,1]</td><td>[touitems0,1]</td><td>{删,0}</td></tr></tbody></table><div style="background-color:#F1F1F1;">{新增,0}</div></td></tr></tbody></table>
<table width="100%" bordercolor="#000000" border="0" class="ke-zeroborder"><tbody><tr><td height="34" align="right" class="ys1">*^title^</td><td class="ys2" colspan="3">{title}</td></tr><tr><td height="34" align="right" class="ys1">^fengmian^</td><td class="ys2" colspan="3">{fengmian}</td></tr><tr><td height="34" width="15%" align="right" class="ys1">*^typename^</td><td width="35%" class="ys2">{typename}</td><td align="right" width="15%" class="ys1">^issms^</td><td width="35%" class="ys2">{issms}{appxs}</td></tr><tr><td height="34" align="right" class="ys1">^recename^</td><td colspan="3" class="ys2">{recename}</td></tr><tr><td height="34" align="right" class="ys1">*^content^</td><td colspan="3" class="ys2">{content}</td></tr><tr><td height="34" align="right" class="ys1">^file_content^</td><td colspan="3" class="ys2">{file_content}</td></tr><tr><td height="34" align="right" class="ys1">^url^</td><td colspan="3" class="ys2">{url}</td></tr><tr><td height="34" align="right" class="ys1">*^zuozhe^</td><td class="ys2">{zuozhe}</td><td align="right" class="ys1">*^indate^</td><td class="ys2">{indate}</td></tr><tr><td height="34" align="right" class="ys1">^zstart^</td><td class="ys2">{zstart}</td><td align="right" class="ys1">^zsend^</td><td class="ys2">{zsend}</td></tr><tr><td height="34" align="right" class="ys1">^mintou^</td><td class="ys2">{mintou}</td><td align="right" class="ys1">^maxtou^</td><td class="ys2">{maxtou}</td></tr><tr><td height="34" align="right" class="ys1">^startdt^</td><td class="ys2">{startdt}</td><td align="right" class="ys1">^enddt^</td><td class="ys2">{enddt}</td></tr><tr id="subtitletou"><td class="ys2" colspan="4"><strong>投票选项</strong> </td></tr><tr><td class="ys0" colspan="4"><table class="tablesub ke-zeroborder" id="tablesub0" style="width:100%;" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="10%">序号</td><td>*投票选项</td><td width="5%">操作</td></tr><tr><td>[xuhao0,0]</td><td>[touitems0,0]</td><td>{删,0}</td></tr><tr><td>[xuhao0,1]</td><td>[touitems0,1]</td><td>{删,0}</td></tr></tbody></table><div class="addys">{新增,0}</div></td></tr></tbody></table>

View File

@@ -7,27 +7,17 @@ for(var i=0;i<editarr.length;i++)c.setcolumns(editarr[i],{type:'checkbox'});
bootparams.fanye = false;
c.initpage=function(){
$('#tdleft_{rand}').after('<td ><select style="width:180px;" class="form-control" id="modeid_{rand}" ></select></td>');
$('#modeid_{rand}').change(function(){
c.changemodeid(this);
$('#tdleft_{rand}').after('<td ><input class="input" click="xuanmode" placeholder="-选择模块-" style="width:180px;background:url(images/xiangyou1.png) no-repeat right" id="modes_{rand}" readonly></td>');
}
c.xuanmode = function(o1){
js.selectmode(o1, get('modes_{rand}'), function(sna,val,d){
c.changemodes(val);
});
}
c.onloadbefore=function(d){
if(d.modearr){
var s = '<option value="0">-选择模块-</option>',len=d.modearr.length,i,csd,types='';
for(i=0;i<len;i++){
csd = d.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;
}
s+='</optgroup>';
$('#modeid_{rand}').html(s);
}
if(d.mkrs)mknum = d.mkrs.num;
}
c.changemodeid=function(o1){
@@ -36,6 +26,10 @@ c.changemodeid=function(o1){
mkid = val;
a.setparams({mkid:mkid},true);
}
c.changemodes=function(val){
mkid = val;
a.setparams({mkid:mkid},true);
}
c.xuanmoxbo = function(){
if(mkid=='0'){
js.msgerror('请先选择模块');

View File

@@ -71,24 +71,46 @@ c.allcreate=function(){
},'get',false,'生成中...');
}
c.opentixing=function(fid, val){
js.ajax(js.getajaxurl('opentixing','flow','main'),{fields:fid,value:val},function(s){
js.msg('success', s);
a.reload();
},'get',false,'处理中...');
}
$('#btndownbtn_{rand}').rockmenu({
width:170,top:35,donghua:false,
width:190,top:35,donghua:false,
data:[{
name:'主表管理',lx:0
},{
name:'清空此模块数据',lx:2
},{
name:'同步到单位数据',lx:3
},{
name:'同步菜单到单位数据',lx:4
},{
name:'☑全部模块开启PC提醒',lx:5,'fields':'pctx','value':1
},{
name:'☐全部模块关闭PC提醒',lx:5,'fields':'pctx','value':0
},{
name:'☑全部模块开启APP提醒',lx:5,'fields':'mctx','value':1
},{
name:'☐全部模块关闭APP提醒',lx:5,'fields':'mctx','value':0
},{
name:'☑全部模块开启微信提醒',lx:5,'fields':'wxtx','value':1
},{
name:'☐全部模块关闭微信提醒',lx:5,'fields':'wxtx','value':0
},{
name:'☑全部模块开启钉钉提醒',lx:5,'fields':'ddtx','value':1
},{
name:'☐全部模块关闭钉钉提醒',lx:5,'fields':'ddtx','value':0
}],
itemsclick:function(d, i){
var id = a.changedata.id;
if(!id)return;
if(d.lx==0)c.biaoge();
if(d.lx==2)c.clearalldata(id);
//if(d.lx==2)js.alert('已弃用,防止删除数据不可逆的操作');
if(d.lx==3)c.tongbudanwu();
if(d.lx==4)c.tongbumenu();
if(d.lx==5)c.opentixing(d.fields,d.value);
}
});

View File

@@ -0,0 +1,104 @@
<?php
/**
* 模块goods.物品
* 说明:自定义区域内可写你想要的代码
* 来源:流程模块→表单元素管理→[模块.物品]→生成列表页
*/
defined('HOST') or die ('not access');
?>
<script>
$(document).ready(function(){
{params}
var modenum = 'goods',modename='物品',isflow=0,modeid='9',atype = params.atype,pnum=params.pnum,modenames='',listname='Z29vZHM:';
if(!atype)atype='';if(!pnum)pnum='';
var fieldsarr = [],fieldsselarr= [],chufarr= {"stock":"\u603b\u5e93\u5b58","stock_1":"\u9ed8\u8ba4\u4ed3\u5e93","stock_3":"\u6cc9\u5dde\u4ed3\u5e93","stock_2":"\u4ed3\u5e932"};
<?php
include_once('webmain/flow/page/rock_page.php');
?>
//[自定义区域start]
if(pnum=='all'){
bootparams.checked=true;
bootparams.autoLoad=false;
bootparams.celleditor=true;
var shtm = '<table width="100%"><tr valign="top"><td><div style="border:var(--border);width:220px"><div id="optionview_{rand}" style="height:400px;overflow:auto;"></div></div></td><td width="8" nowrap><div style="width:8px;overflow:hidden"></div></td><td width="95%"><div id="viewgoods_{rand}"></div></td></tr></table>';
$('#viewgoods_{rand}').after(shtm).remove();
c.stable = 'goods';
c.optionview = 'optionview_{rand}';
c.optionnum = 'goodstype';
c.title = '物品分类';
c.rand = '{rand}';
var c = new optionclass(c);
$('#'+c.optionview+'').css('height',''+(viewheight-130)+'px');
$('#tdright_{rand}').prepend(c.getbtnstr('刷新库存','kuncus')+'&nbsp;&nbsp;');
$('#tdright_{rand}').prepend(c.getbtnstr('所有物品','allshow')+'&nbsp;&nbsp;');
$('#tdright_{rand}').prepend(c.getbtnstr('入库','rukuchu,0')+'&nbsp;&nbsp;');
$('#tdright_{rand}').prepend(c.getbtnstr('出库','rukuchu,1')+'&nbsp;&nbsp;');
$('#tdright_{rand}').prepend(c.getbtnstr('打印二维码','prinwem,1')+'&nbsp;&nbsp;');
$('#tdright_{rand}').prepend('<span id="megss{rand}"></span>&nbsp;&nbsp;');
setTimeout(function(){c.mobj=a},5);//延迟设置,不然不能双击分类搜索
c.rukuchu=function(o1, lx){
var s='物品入库';
if(lx==1)s='物品出库';
addtabs({num:'rukuchugood'+lx+'',url:'main,goods,churuku,type='+lx+'',icons:'plus',name:s});
}
c.prinwem=function(){
var sid = a.getchecked();
if(sid==''){
js.msg('msg','没有选中记录');
return;
}
var url = '?a=printewm&m=goods&d=main&sid='+sid+'';
window.open(url);
}
}
c.kuncus=function(){
js.ajax(publicmodeurl('goods','reloadstock'),{},function(){
a.reload();
},'get','','刷新中...,刷新完成');
}
//[自定义区域end]
c.initpagebefore();
js.initbtn(c);
var a = $('#view'+modenum+'_{rand}').bootstable(bootparams);
c.init();
});
</script>
<!--SCRIPTend-->
<!--HTMLstart-->
<div>
<table width="100%">
<tr>
<td style="padding-right:10px;" id="tdleft_{rand}" nowrap><button id="addbtn_{rand}" class="btn btn-primary" click="clickwin,0" disabled type="button"><i class="icon-plus"></i> <?=lang('新增')?></button></td>
<td><select class="form-control" style="width:110px;border-top-right-radius:0;border-bottom-right-radius:0;padding:0 2px" id="fields_{rand}"></select></td>
<td><select class="form-control" style="width:60px;border-radius:0px;border-left:0;padding:0 2px" id="like_{rand}"><option value="0"><?=lang('包含')?></option><option value="1"><?=lang('等于')?></option><option value="2"><?=lang('大于')?><?=lang('等于')?></option><option value="3"><?=lang('小于')?><?=lang('等于')?></option><option value="4"><?=lang('不包含')?></option></select></td>
<td><select class="form-control" style="width:130px;border-radius:0;border-left:0;display:none;padding:0 5px" id="selkey_{rand}"><option value="">-<?=lang('请选择')?>-</option></select><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px" id="keygj_{rand}" placeholder="<?=lang('关键字')?>"><input class="form-control" style="width:130px;border-radius:0;border-left:0;padding:0 5px;display:none;" id="key_{rand}" placeholder="<?=lang('关键字')?>">
</td>
<td>
<div style="white-space:nowrap">
<button style="border-right:0;border-radius:0;border-left:0" class="btn btn-default" click="searchbtn" type="button"><?=lang('搜索')?></button><button class="btn btn-default" id="downbtn_{rand}" type="button" style="padding-left:8px;padding-right:8px;border-top-left-radius:0;border-bottom-left-radius:0"><i class="icon-angle-down"></i></button>
</div>
</td>
<td width="90%" style="padding-left:10px"><div id="changatype{rand}" class="btn-group"></div></td>
<td align="right" id="tdright_{rand}" nowrap>
<span style="display:none" id="daoruspan_{rand}"><button class="btn btn-default" click="daoru,1" type="button"><?=lang('导入')?></button>&nbsp;&nbsp;&nbsp;</span><button class="btn btn-default" style="display:none" id="daobtn_{rand}" disabled click="daochu" type="button"><?=lang('导出')?> <i class="icon-angle-down"></i></button>
</td>
</tr>
</table>
</div>
<div class="blank10"></div>
<div id="viewgoods_{rand}"></div>
<!--HTMLend-->

View File

@@ -319,6 +319,11 @@ class indexClassAction extends Action{
echo $this->get('abc');
}
public function testAction()
{
}
public function getxings($str)
{
if(!isempt($str))$str = substr($str,0,5).'*****'.substr($str,-5);

View File

@@ -745,4 +745,30 @@ function pirnttablelist(d,na){
d.printrnd = rnd;
}
window.open('?d=public&m=print&table='+rnd+'&modename='+jm.base64encode(na)+'');
}
//选择模块
js.selectmode = function(obj, naobj, fun){
this.chajian('rockselect', {
viewobj:obj,
num:'getmodearr',limit:20,
url:js.getajaxurl('getmodearr','flow','main'),
onitemclick:function(sna,val,d){fun(sna,val,d)},
ondatachuli:function(da){
var len=da.length,i,csd,types='',ds=[],dt=[];
for(i=0;i<len;i++){
csd = da[i];
if(types!=csd.type){
ds.push({name:csd.type,style:'font-weight:bold',disabled:true});
dt.push({name:csd.type,value:csd.type,type:csd.type});
}
types = csd.type;
csd.padding='24';
ds.push(csd);
}
this.setSelectData(dt,'所有分类', 'type');
return ds;
},
nameobj:naobj
});
}

View File

@@ -153,9 +153,10 @@ function showmenula(a){
s+='</div>';
if(o.stotal>0){
child = o.children;
s+='<div downmenu="'+i+'_0" style="display:none;background:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.05)">'
for(j=0; j<child.length; j++){
o = child[j];
s+='<div downmenu="'+i+'_'+j+'" class="hover" style="'+css1+';padding-left:30px;background:rgba(0,0,0,0.05);background:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.05);display:none" id="menu_list_'+o.num+'" onClick="clickmenu(this,'+i+','+j+',-1)"><i class="icon-'+o.icons+'"></i> '+o.name+'';
s+='<div class="hover" style="'+css1+';padding-left:30px;" id="menu_list_'+o.num+'" onClick="clickmenu(this,'+i+','+j+',-1)"><i class="icon-'+o.icons+'"></i> '+o.name+'';
if(o.bh){
hongbadge[o.bh]=a[i].num;
s+=' <span class="badge" badge="'+o.bh+'" style="float:none;display:none;background:red;color:white"></span>';
@@ -164,12 +165,15 @@ function showmenula(a){
s+='</div>';
if(o.stotal>0){
hhild = o.children;
s+='<div downmenu="'+i+'_'+j+'_0" style="display:none;background:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.02)">'
for(k=0; k<hhild.length; k++){
o = hhild[k];
s+='<div downmenu="'+i+'_'+j+'_'+k+'" class="hover" style="'+css1+';padding-left:60px;background:rgba(0,0,0,0.02);background:rgba(var(--rgb-r),var(--rgb-g),var(--rgb-b),0.02);display:none" id="menu_list_'+o.num+'" onClick="clickmenu(this,'+i+','+j+','+k+')"><i class="icon-'+o.icons+'"></i> '+o.name+'</div>';
s+='<div class="hover" style="'+css1+';padding-left:60px;" id="menu_list_'+o.num+'" onClick="clickmenu(this,'+i+','+j+','+k+')"><i class="icon-'+o.icons+'"></i> '+o.name+'</div>';
}
s+='</div>';
}
}
s+='</div>';
}
}
if(s=='')s='<div style="padding:30px;color:#cccccc" align="center">暂无</div>';

View File

@@ -12,7 +12,7 @@
<script type="text/javascript" src="js/js.js?<?=$nowtime?>"></script>
<script type="text/javascript" src="js/worker.js"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script type="text/javascript" src="<?=$da['p']?>/<?=$da['d']?><?=$da['m']?>/<?=$da['m']?>public.js"></script>
<script type="text/javascript" src="<?=$da['p']?>/<?=$da['d']?><?=$da['m']?>/<?=$da['m']?>public.js?<?=$nowtime?>"></script>
<script type="text/javascript" src="<?=$da['p']?>/<?=$da['d']?><?=$da['m']?>/<?=$da['m']?>script.js?<?=$nowtime?>"></script>
<script type="text/javascript" src="web/res/mode/menu/jquery-rockmenu.js"></script>
<script type="text/javascript">

File diff suppressed because it is too large Load Diff

View File

@@ -99,6 +99,7 @@ function loginsubmit(){
js.ajax(url,data,function(a){
abcpass = '';
if(a.success){
js.setoption('admintoken', a.token);
get('imglogo').src=a.face;
js.setoption('loginface', a.face);
var burl = js.request('backurl');

View File

@@ -720,7 +720,7 @@ class mode_'.$modenum.'ClassAction extends inputAction{
$tablesn = explode(',', $mrs['names']);
foreach($tablesa as $k=>$tab){
$str = m('input')->getsubtable($modeid, $k+1, 1);
$s.='<tr ><td class="ys2" style="background-color:#CCCCCC;" colspan="4"><strong>'.arrvalue($tablesn, $k).'</strong></td></tr>';
$s.='<tr ><td class="ys2 zbtitle" colspan="4"><strong>'.arrvalue($tablesn, $k).'</strong></td></tr>';
$s.='<tr><td class="ys0" colspan="4">'.$str.'</td></tr>';
}
}
@@ -808,7 +808,7 @@ class mode_'.$modenum.'ClassAction extends inputAction{
$narr['modename'] = $this->moders['name'];
$narr['table'] = $this->moders['table'];
$narr['optdt'] = arrvalue($rs,'optdt');
$nors = $flow->flowrsreplace($rs, 2);
$nors = $flow->rsreplace($rs, 2, null, 1);
$narr['summary'] = $this->rock->reparr($this->moders['summary'], $nors);
$otehsr = '';
if($flow->isflow>0){
@@ -911,7 +911,7 @@ class mode_'.$modenum.'ClassAction extends inputAction{
$fiesss = substr($fields,0,5);
if($fiesss == 'base_' || $fiesss == 'temp_')return;
if(!isempt($tables) && $cans['islu']==1){
$_fieldsa = $this->db->gettablefields('[Q]'.$tables.'');$allfields = array();
$_fieldsa = $this->db->gettablefields('[Q]'.$tables.'');$allfields = array();$this->rock->debugs($_fieldsa,'fields');
foreach($_fieldsa as $k2=>$rs2)$allfields[$rs2['name']] = $rs2;
$this->createfields($allfields, $tables, $fields, $type, $lens, $dev, $name);
if(substr($type,0,6)=='change' && !isempt($data)){
@@ -1087,7 +1087,7 @@ class mode_'.$modenum.'ClassAction extends inputAction{
m('log')->addlog('模块','清空模块['.$name.']的数据');
}
$this->db->query("alter table `[Q]$table` AUTO_INCREMENT=1");
//$this->db->query("alter table `[Q]$table` AUTO_INCREMENT=1");
return 'ok';
}
@@ -1645,4 +1645,13 @@ return array(
}
return $arr;
}
public function opentixingAjax()
{
$fields = $this->get('fields');
if(c('check')->onlynumber($fields))return '错误';
$value = (int)$this->get('value');
m('flow_set')->update("`$fields`='$value'", 'id>0');
return '处理成功';
}
}

View File

@@ -138,11 +138,11 @@ $(document).ready(function(){
<tr id="changefields{rand}" style="display:none">
<td align="right" nowrap >变化字段(可多选)<br><font color="#888888">来自[表单元素管理]</font><font color=white></font></td>
<td class="tdinput"><select multiple name="changefields" size="8" class="form-control"></select></td>
<td class="tdinput"><select multiple style="height:100px;overflow:auto" name="changefields" size="8" class="form-control"></select></td>
</tr>
<tr id="changecourse{rand}" style="display:none">
<td align="right" nowrap >处理的步骤(可多选)<br><font color="#888888">来自[流程审核步骤]</font><font color=white></font></td>
<td class="tdinput"><select multiple name="changecourse" size="5" class="form-control"></select></td>
<td class="tdinput"><select multiple style="height:100px;overflow:auto" name="changecourse" size="5" class="form-control"></select></td>
</tr>
<tr>

View File

@@ -46,6 +46,10 @@ $(document).ready(function(){
modeid=v;
a.setparams({modeid:v},true);
},
changemodes:function(v){
modeid=v;
a.setparams({modeid:v},true);
},
del:function(){
a.del({
url:js.getajaxurl('delmodeshuju','{mode}','{dir}'),
@@ -59,24 +63,13 @@ $(document).ready(function(){
openviewlog:function(id){
var d = a.getData(id);
addtabs({name:'['+d.id+'.'+d.modename+']操作记录','num':''+d.modenum+''+d.id+'',url:'main,flow,viewlog,modenum='+d.table+',mid='+d.id+''});
},
xuanmode:function(o1){
js.selectmode(o1, get('modes_{rand}'), function(sna,val,d){
c.changemodes(val);
});
}
};
$('#mode_{rand}').change(c.changemode);
$.get(js.getajaxurl('getmodearr','{mode}','{dir}'),function(str){
var d=js.decode(str);
var s = '<option value="0">-选择模块-</option>',len=d.data.length,i,csd,types='';
for(i=0;i<len;i++){
csd = d.data[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;
}
$('#mode_{rand}').html(s);
});
js.initbtn(c);
openlogs{rand}=function(id){
c.openviewlog(id);
@@ -88,7 +81,10 @@ $(document).ready(function(){
<table width="100%">
<tr>
<td align="left">
<select style="width:180px" id="mode_{rand}" class="form-control" ><option value="0">-选择模块-</option></select>
<div class="btn-group" style="width:260px;" click="xuanmode">
<input class="input" placeholder="-选择模块-" style="flex:1" id="modes_{rand}" readonly>
<button class="webbtn webbtn-default">v</button>
</div>
</td>
<td align="left" style="padding:0px 10px;">

View File

@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<title><?=$da['title']?>-<?=TITLE?></title>
<link rel="stylesheet" href="webmain/css/css.css" />
<link rel="stylesheet" href="webmain/css/rock.css?<?=time()?>" />
<link rel="stylesheet" href="mode/kindeditor/themes/default/default.css" />
<link rel="shortcut icon" href="favicon.ico" />
<script type="text/javascript" src="js/jquery.js"></script>
@@ -139,6 +139,9 @@ select{font-size:12px}
#page_left div{text-align:left;padding:5px 10px;cursor:pointer}
#page_left div:hover{ background-color:#f1f1f1;color:#225DE8}
</style>
<?php
echo c('color')->getApptheme(false);
?>
</head>
<body>
<div align="center">

View File

@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<title><?=$da['title']?>-<?=TITLE?></title>
<link rel="stylesheet" href="webmain/css/css.css" />
<link rel="stylesheet" href="webmain/css/rock.css?<?=time()?>" />
<link rel="stylesheet" href="mode/kindeditor/themes/default/default.css" />
<link rel="shortcut icon" href="favicon.ico" />
<script type="text/javascript" src="js/jquery.js"></script>
@@ -115,6 +115,9 @@ select{font-size:12px}
#page_left div{text-align:left;padding:5px 10px;cursor:pointer}
#page_left div:hover{ background-color:#f1f1f1;color:#225DE8}
</style>
<?php
echo c('color')->getApptheme(false);
?>
</head>
<body>
<div align="center">

View File

@@ -283,7 +283,7 @@ class fworkClassAction extends Action
if($enddt=='')$enddt = $dtobj->adddate($startdt,'d',7);
$jg = $dtobj->datediff('d',$startdt, $enddt);
if($jg>30)$jg = 30;
$flow = m('flow:meet');
$flow = m('flow')->initflow('meet');
$data = m('meet')->getall("`status`=1 and `type`=0 and `startdt`<='$enddt 23:59:59' and `enddt`>='$startdt' order by `startdt` asc",'hyname,title,startdt,enddt,state,joinname,optname,id');
$datss = array();
foreach($data as $k=>$rs){
@@ -297,8 +297,21 @@ class fworkClassAction extends Action
$columns = $rows;
$barr = array();
$dt = $startdt;
$gdrows = $flow->getall('`type`=1 and `status`=1');
for($i=0; $i<=$jg; $i++){
if($i>0)$dt = $dtobj->adddate($dt,'d',1);
//固定会议
if($gdrows && $dt > $this->rock->date){
$srows = $flow->createmeet($gdrows, $dt, true);
if($srows)foreach($srows as $k1=>$rs){
$key = substr($rs['startdt'],0,10).$rs['hyname'];
if(!isset($datss[$key]))$datss[$key] = array();
$str = '['.substr($rs['startdt'],11,5).'→'.substr($rs['enddt'],11,5).']'.$rs['title'].'('.$rs['joinname'].') <font color=blue>固定会议</font>';
$datss[$key][] = $str;
}
}
$w = $dtobj->cnweek($dt);
$status = 1;
if($w=='六'||$w=='日')$status = 0;

View File

@@ -80,7 +80,7 @@ $(document).ready(function(){
js.initbtn(c);
$('#optionview_{rand}').css('height',''+(viewheight-25)+'px');
$('#optionview_{rand}').css('height',''+(viewheight-45)+'px');
});
</script>

View File

@@ -22,15 +22,15 @@ class kaoqinClassAction extends Action
$dt1 = $this->post('dt1');
$dt2 = $this->post('dt2');
$msg = '获取成功';
$daka = $this->option->getval('qywxplat_daka');
$daka = $this->option->getval('wxqyplat_daka');
if($daka=='1'){
$barr = c('rockqywx')->getcheckindata($uids, $dt1, $dt2, 1);
$barr = c('rockwxqy')->getcheckindata($uids, $dt1, $dt2, 1);
if(!$barr['success']){
$msg = $barr['msg'];
}else{
$data = $barr['data'];
$msg .= ',从代建中应用获取打卡(共'.$data['zongts'].'条,新增'.$data['okload'].'条)';
if($data['maxpage']>1)$msg.=',并发送异步请求1条';
//$msg .= ',从代建中应用获取打卡(共'.$data['zongts'].'条,新增'.$data['okload'].'条)';
//if($data['maxpage']>1)$msg.=',并发送异步请求1条';
}
}else{
if($reimbo->installwx(1)){

View File

@@ -33,22 +33,6 @@ $(document).ready(function(){
},
beforeload:function(){
btn(true);
},
load:function(a){
if(!bools){
var s = '<option value="0">-选择模块-</option>',len=a.modearr.length,i,csd,types='';
for(i=0;i<len;i++){
csd = a.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;
}
$('#mode_{rand}').html(s);
}
bools=true;
}
});
function btn(bo, d){
@@ -76,14 +60,17 @@ $(document).ready(function(){
guanflowviewlist = a;
addtabs({num:'flowview'+id+'',url:'main,view,edit,id='+id+',mid='+mid+'',icons:icon,name:name});
},
changemode:function(){
var v=this.value;
changemodes:function(v){
mid=v;
a.search('and modeid='+v+'');
},
xuanmode:function(o1){
js.selectmode(o1, get('modes_{rand}'), function(sna,val,d){
c.changemodes(val);
});
}
};
js.initbtn(c);
$('#mode_{rand}').change(c.changemode);
});
</script>
@@ -94,7 +81,10 @@ $(document).ready(function(){
<button class="btn btn-warning" click="clickwin,0" type="button"><i class="icon-plus"></i> 新增</button>
</td>
<td style="padding-left:10px">
<select style="width:230px" id="mode_{rand}" class="form-control" ><option value="0">-选择模块-</option></select>
<div class="btn-group" style="width:260px;" click="xuanmode">
<input class="input" placeholder="-选择模块-" style="flex:1" id="modes_{rand}" readonly>
<button class="webbtn webbtn-default">v</button>
</div>
</td>
<td width="90%">

View File

@@ -19,7 +19,7 @@ class viewClassAction extends Action
}
return array(
'rows'=>$rows,
'modearr' => m('mode')->getmodearr(),
//'modearr' => m('mode')->getmodearr(),
);
}

View File

@@ -95,6 +95,37 @@ $(document).ready(function(){
js.ajax(js.getajaxurl('tongbudw','{mode}','{dir}'),false, function(ret){
js.msgok(ret);
},'get');
},
onlinev:function(){
var url = get('push_{rand}').value;
if(!url){js.msgerror('没配置服务端');return;}
js.loading('加载中...');
js.ajax(js.getajaxurl('getonline','{mode}','{dir}'),false, function(ret){
if(ret.success){
js.unloading();
c.onlinevs(ret.data);
}else{
js.msgerror(ret.msg);
js.tanclose('online');
}
},'get,json');
},
onlinevs:function(da){
var s = '',i,j,d;
for(i=0;i<da.rows.length;i++){
d = da.rows[i];
s+='<div style="margin:5px;float:left;padding:5px" class="hover" align="center">';
s+=' <div><img width="30" style="border-radius:50%" height="30" src="'+d.face+'"></div>';
s+=' <div>'+d.name+'';
if(d.pconline)s+='<span class="zhu"><i class="icon-laptop"></i></span>';
if(d.apponline)s+='<span class="zhu"><i class="icon-mobile-phone"></i></span>';
s+=' </div>';
s+='</div>';
}
js.tanbody('online','服务端在线人员', 450, 300, {
html:'<div style="height:350px;overflow:auto;display:inline-block">'+s+'</div>'
});
$('#msgview_online').html(da.msg);
}
};
@@ -115,7 +146,8 @@ $(document).ready(function(){
<td align="right"></td>
<td class="tdinput">
<button click="kuanshu1" class="btn btn-info" type="button">快速设置(推荐)</button>&nbsp;&nbsp;
<button click="kuanshu2" class="btn btn-default" type="button">自定义设置</button>
<button click="kuanshu2" class="btn btn-default" type="button">自定义设置</button>&nbsp;&nbsp;
<button click="onlinev" class="btn btn-default" type="button">在线人员</button>
</td>
</tr>
@@ -147,7 +179,7 @@ $(document).ready(function(){
<tr>
<td></td>
<td class="tdinput"><font color="#888888">不知道地址?请先安装并运行服务端,</font><a href="<?=URLY?>view_server.html" target="_blank">[去下载安装,看帮助]</a></td>
<td class="tdinput"><font color="#888888">不知道地址?请先安装并运行服务端,配置wss请看帮助</font><a href="<?=URLY?>view_server.html" target="_blank">[去下载安装,看帮助]</a></td>
</tr>
<tr>

View File

@@ -27,6 +27,7 @@ class xinhuClassAction extends Action
foreach($rows as $k=>$rs){
$base = ''.DB_BASE.'_company_'.$rs['num'].'';
$this->sevessee($base, 'reimhostsystem');
$this->sevessee($base, 'reimpushurlsystem');
$this->sevessee($base, 'reimrecidsystem', $rs['num']);
$this->sevessee($base, 'reimchehuisystem');
$this->sevessee($base, 'reimservertype');
@@ -38,7 +39,14 @@ class xinhuClassAction extends Action
{
$val = $this->option->getval($key);
if($key=='reimrecidsystem')$val.='_'.$bh.'';
$sql = "update ".$base.".`[Q]option` set `value`='$val',`optdt`='{$this->now}' where `num`='$key'";
$table = "".$base.".`[Q]option`";
$where = "`num`='$key'";
$ors = $this->db->getone($table, $where);
if($ors){
$sql = "update $table set `value`='$val',`optdt`='{$this->now}' where $where";
}else{
$sql = "insert into $table set `value`='$val',`optdt`='{$this->now}',`num`='$key'";
}
$this->db->query($sql, false);
}
@@ -141,4 +149,37 @@ class xinhuClassAction extends Action
));
return $barr;
}
public function getonlineAjax()
{
$barr = m('reim')->pushserver('getonline');
if(!$barr['success'])return $barr;
$data = $barr['data'];
if(!$data)return returnerror('无人员在线');
$ondats = json_decode($data, true);
$pc = $ondats['pc'];
$app = $ondats['app'];
$uar1= explode(',', $pc);
$uar2= explode(',', $app);
$str = $pc;
$on1 = count($uar1);
$on2 = count($uar2);
if($app){
if($str)$str.=',';
$str.=$app;
}
if(!$str)return returnerror('无人员在线');
if(!$app)$on2 = 0;
if(!$pc)$on1 = 0;
$rows = m('admin')->getall('id in('.$str.') and `status`=1','id,name,face','sort asc');
foreach($rows as $k=>$rs){
$rows[$k]['pconline'] = in_array($rs['id'], $uar1);
$rows[$k]['apponline'] = in_array($rs['id'], $uar2);
}
return returnsuccess(array(
'rows' => $rows,
'msg' => 'PC在线'.$on1.'人APP在线'.$on2.'人',
));
}
}

View File

@@ -15,8 +15,6 @@ $(document).ready(function(){
}
},{
text:'分类',dataIndex:'types',editor:true,sortable:true
},{
text:'图标颜色',dataIndex:'iconcolor',editor:true
},{
text:'编号',dataIndex:'num'
},{

View File

@@ -112,10 +112,12 @@ class adminClassModel extends Model
$tj[] = $this->rock->dbinstr($fids, 'all');
$tj[] = $this->rock->dbinstr($fids, 'u'.$uid);
if($us){
$dep = explode(',', $us['deptpath']);
foreach($dep as $deps){
$_deps = str_replace(array('[',']'), array('',''), $deps);
$tj[] = $this->rock->dbinstr($fids, 'd'.$_deps);
if(!isempt($us['deptpath'])){
$dep = explode(',', $us['deptpath']);
foreach($dep as $deps){
$_deps = str_replace(array('[',']'), array('',''), $deps);
$tj[] = $this->rock->dbinstr($fids, 'd'.$_deps);
}
}
//所在组Id
$gids = m('sjoin')->getgroupid($uid);

View File

@@ -91,18 +91,21 @@ class beifenClassModel extends Model
foreach($fields as $k=>$frs){
$fname = $frs['name'];
if($fname=='id')continue;
$nstr = $this->getfielstr($frs);
$nstr = $this->getfielstr($frs);
$frs['explain'] = '';
$nstr1 = $this->getfielstr($frs);
if(!isset($nowfiel[$fname])){
$str.=',add '.$nstr.'';
}else{
$ofrs = $nowfiel[$fname]; //系统上字段类型
$ostr = $this->getfielstr($ofrs);
//$ostr = $this->getfielstr($ofrs);
$ofrs['explain'] = '';
$ostr1 = $this->getfielstr($ofrs);
$lxarr= array('text','mediumtext','bigint');
//如果自己字段长度大于官网就不更新
if($frs['type']==$ofrs['type'] && !isempt($ofrs['lens']) && $ofrs['lens']>$frs['lens']){
}else if($nstr != $ostr && !in_array($ofrs['type'], $lxarr) ){
}else if($nstr1 != $ostr1 && !in_array($ofrs['type'], $lxarr) ){
$str.=',MODIFY '.$nstr.'';
}
}

View File

@@ -31,7 +31,7 @@ class crmClassModel extends Model
}
//读取所有客户
public function custdata()
public function custdata($whe='')
{
$limit = (int)$this->rock->get('limit', '10');
$page = (int)$this->rock->get('page', '1');
@@ -41,6 +41,10 @@ class crmClassModel extends Model
$key= $this->rock->jm->base64decode($key);
$where.= " and (`name` like '%$key%' or `unitname` like '%$key%')";
}
if($whe){
$whe = str_replace('{uid}', $this->adminid, $whe);
$where .= " AND $whe";
}
$rows = $this->getrows("`status`=1 ".$where."",'SQL_CALC_FOUND_ROWS id as value,name,id,unitname as subname','`optdt` desc',''.(($page-1)*$limit).','.$limit.'');
$totalCount = $this->db->found_rows();
return array(

View File

@@ -120,12 +120,11 @@ class fileClassModel extends Model
if(!file_exists($thumbpath))$thumbpath='';
}
if(isempt($thumbpath))$thumbpath = arrvalue($rs, 'thumbplat');
if(!isempt($thumbpath)){
$thumbpath = str_replace('{FILEURL}', getconfig('rockfile_url'), $thumbpath);
$thumbpath = $this->rock->gethttppath($thumbpath);
$thumbplat = arrvalue($rs, 'thumbplat');
if(!isempt($thumbplat)){
$thumbpath = str_replace('{FILEURL}', getconfig('rockfile_url'), $thumbplat);
}
return $thumbpath;
return $this->rock->gethttppath($thumbpath);
}
@@ -339,7 +338,10 @@ class fileClassModel extends Model
header('location:'.$filepath.'');
return;
}
if($this->rock->get('openfrom')=='iosapp'){
header('location:'.$filepath.'');
return;
}
if($filesize > 10*1024*1024 && 1==1 && $fileext!='pdf'){
header('location:'.$filepath.'');
}else{

View File

@@ -37,7 +37,7 @@ class flow_carmreseClassModel extends flowModel
$db = m('carmrese');
//读取车辆最后公里数
foreach($rows as $k=>$rs){
$onrs = $db->getone("`status`=1 and `carid`=".$rs['value']." and ifnull(`kmend`,'')<>''", '`kmend`,`kmstart`','`kmend` desc');
$onrs = $db->getone("`status`=1 and `carid`=".$rs['value']." and ifnull(`kmend`,0)<>0", '`kmend`,`kmstart`','`kmend` desc');
$km = '';
if($onrs){
$km = $onrs['kmend'];

File diff suppressed because one or more lines are too long

View File

@@ -3,8 +3,14 @@
class flow_goodsClassModel extends flowModel
{
public $base;
public function initModel()
{
$this->base = m('goods');
}
protected function flowchangedata(){
$this->rs['typeid'] = m('goods')->gettypename($this->rs['typeid']);
$this->rs['typeid'] = $this->base->gettypename($this->rs['typeid']);
}
//导入数据的测试显示
@@ -40,6 +46,10 @@ class flow_goodsClassModel extends flowModel
//
public function flowrsreplace($rs, $lx=0)
{
if(isset($rs['typeid']) && is_numeric($rs['typeid']))
$rs['typeid'] = $this->base->gettypename($rs['typeid']);
//详情页下显示对应仓库库存
if($lx==1){
$drows = $this->db->getall("SELECT `depotid`,sum(count)count FROM `[Q]goodss` where aid=".$rs['id']." and `status`=1 GROUP BY `depotid`");
@@ -84,4 +94,18 @@ class flow_goodsClassModel extends flowModel
m('goodss')->delete('`aid`='.$this->id.'');
m('goods')->setstock();
}
protected function flowbillwhere($uid, $lx)
{
$where = '';
$typeid = $this->rock->post('typeid','0');
if($typeid!='0'){
$alltpeid = m('option')->getalldownid($typeid);
$where .= ' and `typeid` in('.$alltpeid.')';
}
return array(
'where' => $where,
'order' => 'optdt desc',
);
}
}

View File

@@ -51,15 +51,17 @@ class flow_meetClassModel extends flowModel
$nzt = $zt;
$time = time();
$stime = strtotime($rs['startdt']);
$etime = strtotime($rs['enddt']);
if($zt < 2){
if($etime<$time){
$nzt = 2;
}else if($stime>$time){
$nzt = 0;
}else{
$nzt = 1;
if(!isempt($rs['startdt']) && !isempt($rs['enddt'])){
$stime = strtotime($rs['startdt']);
$etime = strtotime($rs['enddt']);
if($zt < 2){
if($etime<$time){
$nzt = 2;
}else if($stime>$time){
$nzt = 0;
}else{
$nzt = 1;
}
}
}
@@ -231,9 +233,13 @@ class flow_meetClassModel extends flowModel
//每天运行计划任务将固定会议生成普通会议通知对应人
public function createmeet($id=0, $nowdt='', $gbrr=false)
{
$owhe = '';
if($id>0)$owhe='`id`='.$id.' and ';
$narr = $this->getall(''.$owhe.'`type`=1 and `status`=1');
if(is_array($id)){
$narr = $id;
}else{
$owhe = '';
if($id>0)$owhe='`id`='.$id.' and ';
$narr = $this->getall(''.$owhe.'`type`=1 and `status`=1');
}
$dtobj = c('date');
$jlarr = array();
foreach($narr as $k=>$rs){

View File

@@ -87,7 +87,7 @@ class flow_subscribeinfoClassModel extends flowModel
$newid = $this->insert(array(
'mid' => $id,
'receid' => $receid,
'recename' => $recename,
'recename' => $this->rock->xssrepstr($recename),
'title' => $title,
'cont' => $cont,
'optdt' => $this->rock->now,

View File

@@ -154,7 +154,7 @@ class flowbillClassModel extends Model
$modename = $mors['name'];
$rers = $this->db->getone('[Q]'.$rs['table'].'', $rs['mid']);
if($rers){
$tihsrs = $flow->flowrsreplace($rers, 2);
$tihsrs = $flow->rsreplace($rers, 2, null, 1);
$summary = $this->rock->reparr($mors['summary'], $tihsrs);
$summarx = $this->rock->reparr($mors['summarx'], $tihsrs);
@@ -316,7 +316,7 @@ class flowbillClassModel extends Model
$rers = $this->db->getone('[Q]'.$rs['table'].'', $rs['mid']);
$summary = $this->rock->reparr($summary, $rers);
if($rers){
$tihsrs = $flow->flowrsreplace($rers, 2);
$tihsrs = $flow->rsreplace($rers, 2, null, 1);
$summary = $this->rock->reparr($mors['summary'], $tihsrs);
$nowsets = $rs['nowcheckname']; //当前审核人

View File

@@ -66,7 +66,7 @@ class inputClassModel extends Model
$strm.= '&nbsp;&nbsp;&nbsp;{删,'.$xu.'}';
$strm.= '</td></tr></table>';
if($ism==0)$str.='<div style="background-color:#F1F1F1;">{新增,'.$xu.'}</div>';
if($ism==0)$str.='<div class="addys">{新增,'.$xu.'}</div>';
if($ism==1){
$str.='<div>{新增,'.$xu.'}</div>';
$strm.='<div style="margin:8px">{新增,'.$xu.'}</div>';

View File

@@ -468,6 +468,8 @@ class kqjcmdClassModel extends Model
//保存指纹
public function savefingerprint($snid, $uid, $finge)
{
$snid = (int)$snid;
$uid = (int)$uid;
$where = "`snid`='$snid' and `uid`='$uid'";
$arr['fingerprint1'] = str_replace("\n",'', arrvalue($finge, 0));
$arr['fingerprint2'] = str_replace("\n",'', arrvalue($finge, 1));
@@ -483,6 +485,8 @@ class kqjcmdClassModel extends Model
//保存设备头像
private function saveheadpic($snid, $uid, $headpic, $face='')
{
$snid = (int)$snid;
$uid = (int)$uid;
$where = "`snid`='$snid' and `uid`='$uid'";
if(isempt($face)){
if(isempt($headpic))return;

View File

@@ -48,8 +48,8 @@ class logClassModel extends Model
}else{
$arr['stotal'] = (int)$onrs['stotal']+1;
}
$arr['ip'] = $this->rock->ip;
$arr['web'] = $this->rock->web;
//$arr['ip'] = $this->rock->ip;//存这个没用,不在存储
//$arr['web'] = $this->rock->web;
$arr['optdt'] = $this->rock->now();
$dbs->record($arr, $where);
}

View File

@@ -66,6 +66,7 @@ class loginClassModel extends Model
if(getconfig('systype')=='demo')$this->db->update('[Q]admin', '`status`=1' , '`id`=1 and `status`=0');
//1.先用用户名判断
$arrs = array(
'user' => $user,
@@ -122,9 +123,8 @@ class loginClassModel extends Model
if($us)$loginx = '姓名';
}
if($msg=='' && !$us){
$msg = '用户不存在';
$msg = '用户或密码不对'; //用户不存在时提示
}else if($msg==''){
$uid = $us['id'];
$user = $us['user'];
@@ -142,7 +142,7 @@ class loginClassModel extends Model
}
}else{
if(md5($pass)!=$us['pass'])$msg='密码不对';
if(md5($pass)!=$us['pass'])$msg='用户或密码不对'; //密码不对提示
if($msg!='' && $pass==md5($us['pass']) && c('cache')->get('login'.$user.'')==$uid){
$msg='';

View File

@@ -675,14 +675,16 @@ class reimClassModel extends Model
if($frs){
$type = $frs['fileext'];
$path = $frs['filepath'];
$isimg= $this->contain($imgext, ','.$type.',');
$boc = false;
if(substr($path,0,4)=='http' || !isempt($frs['filenum'])){
$boc = true;
}else{
if(file_exists($path))$boc = true;
}
if($isimg && !isempt($frs['thumbplat']))$boc = true;
if($boc){
if($this->contain($imgext, ','.$type.',')){
if($isimg){
$frs['thumbpath'] = $fobj->getthumbpath($frs);
//$cont = '<img fid="'.$fid.'" src="'.$frs['thumbpath'].'">';
//$rows[$k]['cont'] = $this->rock->jm->base64encode($cont);
@@ -858,6 +860,7 @@ class reimClassModel extends Model
if(isset($cans['fileid']))$fileid=$cans['fileid'];
if(isset($cans['msgid']))$msgid=$cans['msgid'];
$pushcont = arrvalue($cans, 'pushcont');
$ispushapp = arrvalue($cans, 'ispushapp');//是否推送app
$arr = array(
'cont' => $cont,
'sendid' => $sendid,
@@ -900,20 +903,21 @@ class reimClassModel extends Model
if($sendid!=$receid)$this->addhistory('user', $sendid, $receid, $optdt, $cont, $sendid,'','', $arr['id']);
//推送的原生App上(使用异步推送哦)
$tuicont['sendid'] = $arr['sendid'];
$tuicont['sendname'] = $this->adminname;
$tuicont['name'] = $this->adminname;
$tuicont['cont'] = $cont;
$tuicont['pushcont'] = $pushcont;
$tuicont['pushtype'] = 'chat'; //推送消息类型
$tuicont['receid'] = $receid;
$tuicont['fileid'] = $fileid;
$tuicont['type'] = 'user';
$tuicont['id'] = $arr['id'];
$tuicont['optdt'] = $optdt;
$tuicont['optdts'] = substr($optdt,11,5);
$this->pushapp($receid, '['.$this->adminname.']发来一条消息', $tuicont, $lx);
if($ispushapp != 'no'){
$tuicont['sendid'] = $arr['sendid'];
$tuicont['sendname'] = $this->adminname;
$tuicont['name'] = $this->adminname;
$tuicont['cont'] = $cont;
$tuicont['pushcont'] = $pushcont;
$tuicont['pushtype'] = 'chat'; //推送消息类型
$tuicont['receid'] = $receid;
$tuicont['fileid'] = $fileid;
$tuicont['type'] = 'user';
$tuicont['id'] = $arr['id'];
$tuicont['optdt'] = $optdt;
$tuicont['optdts'] = substr($optdt,11,5);
$this->pushapp($receid, '['.$this->adminname.']发来一条消息', $tuicont, $lx);
}
/*
$last = date('Y-m-d H:i:s', time()-15);
$where = "`uid`='$receid' and `online`=1 and `cfrom` in('appandroid','appios') and `moddt`<'$last'";
@@ -1062,7 +1066,8 @@ class reimClassModel extends Model
}
$uwhere = "$where `status`=1";
$rows = m('logintoken')->getrows("`uid` in(select id from `[Q]admin` where $uwhere) and `cfrom` in ('nppandroid','nppios') and `online`=1",'*','id desc');
$uida = $pushuids = $alias2019 = $uid2019 = array();
$jpreg = '';
$uida = $pushuids = $alias2019 = $uid2019 = $jparr = array();
$uids = '0';
$times = date('Y-m-d H:i:s', time()-5*60);//5分钟
foreach($rows as $k=>$rs){
@@ -1076,14 +1081,19 @@ class reimClassModel extends Model
$nestr.=''.$rs['pushtoken'].''; //个推
}else if(contain($_web,'huawei') && !contain($rs['ip'],'.')){
$nestr.=''.$rs['ip'].'';
}else if(contain($_web,'xiaomi')){
}else if(contain($_web,'xiaomi') || !isempt($rs['pushtoken'])){
$nestr.=''.$rs['pushtoken'].'';
}
if(arrvalue($rs,'regid')){
$nestr.='|'.$rs['regid'].'';
$jpreg = 'yes';
$jparr[] = $rs['regid'];
}
$alias2019[] = $nestr;
if(!in_array($_uid, $uid2019))$uid2019[] = $_uid;
if($rs['ispush']=='1')$pushuids[] = $_uid;//可以手机推送的用户
}
return array('uids'=>$uids,'alias2019'=>$alias2019,'uid2019'=>$uid2019,'pushuids'=>$pushuids);
return array('uids'=>$uids,'alias2019'=>$alias2019,'uid2019'=>$uid2019,'pushuids'=>$pushuids, 'jpreg'=>$jpreg, 'jparr' => $jparr);
}
/**
@@ -1118,13 +1128,14 @@ class reimClassModel extends Model
));
//服务端返回{"zshu":2,"yfuid":"1,8","wfuid":""}
if($gbarr && $gbarr['success'] && $bstr = arrvalue($gbarr, 'data')){
$data = json_decode($bstr, true);
$yfuid= explode(',', arrvalue($data, 'yfuid'));
if($yfuid){
$data = json_decode($bstr, true);
$yfuid = arrvalue($data, 'yfuid');
if(!isempt($yfuid)){//有在线人员用了服务端推送
$yfuida = explode(',', $yfuid);
$nealas = array();
foreach($alias2019 as $alis){
$bo = false;
foreach($yfuid as $yfid){if(contain($alis,'|'.$yfid.'|'))$bo=true;};
foreach($yfuida as $yfid){if(contain($alis,'|'.$yfid.'|'))$bo=true;};
if(!$bo)$nealas[] = $alis;
}
$alias['alias2019'] = $nealas;
@@ -1132,7 +1143,6 @@ class reimClassModel extends Model
}
}
}
return c('JPush')->push($title, $pushcont, $contjson, $alias);
}
@@ -1227,6 +1237,8 @@ class reimClassModel extends Model
foreach($cans as $k=>$v)$carr[$k]=$v;
$reimtype = $this->option->getval('reimservertype');
//if($carr['atype']=='sendapp')c('JPush')->sendJpush($carr);
if($reimtype=='1')return c('rockqueue')->pushdata($carr);
$str = json_encode($carr);

View File

@@ -7,7 +7,7 @@
<body style="padding:0px;margin:0px;background:#000000">
<center>
<div style="margin-top:30px">
<video src="<?=$da['filepaths']?>" width="100%" style="max-width:1000px" height="550" controls autoplay></video>
<video src="<?=$da['filepaths']?>" width="100%" style="max-width:1000px" height="450" controls autoplay></video>
</div>
</center>
</body>

View File

@@ -36,7 +36,7 @@ class publicClassAction extends ActionNot{
$exta = substr($filepath, -4);
if($exta=='html')$this->rock->location($filepath);
}
}else if($type=='mp4'){
}else if($type=='mp4' || $type=='mp3'){
$this->displayfile = ''.P.'/public/fileopen_mp4.html';
}else if($fobj->isyulan($type)){
@@ -73,7 +73,10 @@ class publicClassAction extends ActionNot{
$str = 'mode/pdfjs2/viewer.html';
//exit($this->rock->HTTPweb);
if(!$this->displayfile && file_exists($str) && !contain($this->rock->web,'MSIE') && !contain($this->rock->HTTPweb,'Chrome/5'))$this->displayfile = $str;
if(!$this->displayfile && file_exists($str) && !contain($this->rock->web,'MSIE') && !contain($this->rock->HTTPweb,'Chrome/5')){
if(contain($this->rock->HTTPweb, 'XINHUOAAPP IOS'))$str='';
$this->displayfile = $str;
}
$fobj->addlogs($id,0);//记录预览记录
}

View File

@@ -17,12 +17,12 @@
<link rel="stylesheet" type="text/css" href="web/res/css/chat.css"/>
<link rel="shortcut icon" id="ico" href="<?=$da['logo']?>" />
<script type="text/javascript" src="web/res/js/jquery.1.9.1.min.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/js.js?<?=time()?>"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script type="text/javascript" src="web/res/js/nwjs.js"></script>
<script type="text/javascript" src="web/res/mode/menu/jquery-rockmenu.js"></script>
<script type="text/javascript" src="web/res/js/notify.js"></script>
<script type="text/javascript" src="web/res/js/strformat.js"></script>
<script type="text/javascript" src="web/res/js/notify.js?<?=time()?>"></script>
<script type="text/javascript" src="web/res/js/strformat.js?<?=time()?>"></script>
<script type="text/javascript" src="js/reim_xina.js?<?=time()?>"></script>
<script type="text/javascript" src="web/res/js/websocket.js"></script>
<script type="text/javascript" src="web/res/perfectscrollbar/perfect-scrollbar.js"></script>
@@ -53,6 +53,7 @@ systitle = '<?=$da['title']?>';
companymode = <?=(getconfig('companymode')? 'true' : 'false')?>;
video_bool = <?=(getconfig('video_bool')? 'true' : 'false')?>;
function globalbody(){
token = js.getoption('admintoken', token);
adminid = '<?=$da['adminid']?>';
adminface = '<?=$da['face']?>';
adminname = '<?=$da['adminname']?>';

View File

@@ -112,7 +112,7 @@ class recordClassAction extends Action
//删除聊天记录
public function delrecordAjax()
{
$id = $this->post('id');
$id = c('check')->onlynumber($this->post('id'));
$atype = $this->post('atype');
if($atype!='all'){
if(!isempt($id)){

View File

@@ -10,7 +10,7 @@
<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="mode/agora/AgoraRTC_N-4.7.1.js"></script>
<script type="text/javascript" src="mode/plugin/trtc.js"></script>
<script type="text/javascript" src="mode/plugin/jquery-rockmodels.js"></script>
<script>
adminid = <?=$da['adminid']?>;
@@ -27,9 +27,11 @@ var c = {
callshu:30,
id:<?=$ars['id']?>,
nwwin:false,
isuse:false,
init:function(){
this.userid = 'rock'+this.id+'';
this.typearr = ['语音','视频'];
this.name = '<?=$ars['name']?>';
this.name = '<?=$ars['name']?>';
this.playobj = get('notify_sound_tonghua');
js.initbtn(this);
//接收端
@@ -46,13 +48,28 @@ var c = {
c.bodyunload(this);
});
}
if(window['TRTC']){
this.isuse = true;
}else{
this.stateupdate('未安装插件,无法使用');
}
if(NOWURL.substr(0,5)!='https'){
if(HOST.indexOf('localhost')==0 || HOST.indexOf('127.0.0.1')==0){
}else{
js.msg('msg','未使用https功能受限');
}
}
},
hujiao:function(o1,lx){
if(this.hujiaobo)return;
if(!this.isuse){
js.msg('msg','未安装插件,无法使用');
return;
}
js.loading('请求中...');
this.hujiaobo = true;
this.type = lx;
js.ajax('tonghua|thinit',{id:this.id,type:lx},function(ret){
js.ajax('tonghua|thinit',{id:this.id,type:lx,rtctype:1},function(ret){
c.hujiaoback(ret);
}, 'get', function(str){
js.msgerror(str);
@@ -116,26 +133,12 @@ var c = {
this.callmiashuetime = setTimeout(function(){c.callmiashue()},1000);
},
initagoraRtc:async function(){
client = AgoraRTC.createClient({ mode: "rtc", codec: "vp8" });
client.on("user-published", async (user, mediaType) => {
await client.subscribe(user, mediaType);
if (mediaType === "video") {
remoteVideoTrack = user.videoTrack;
remoteVideoTrack.play('remote_stream');
}
if (mediaType === "audio") {
remoteAudioTrack = user.audioTrack;
remoteAudioTrack.play();
}
});
client.on("user-joined", (user) => {
//showSuccess('有人来('+JSON.stringify(user)+')');
});
client.on("user-left", (user, reason) => {
//showAlert('有人退出['+reason+']('+JSON.stringify(user)+')');
c.guaduanok(false);
trtc = TRTC.create();
trtc.on(TRTC.EVENT.REMOTE_VIDEO_AVAILABLE, ({ userId, streamType }) => {
const view = `remote_stream`;
trtc.startRemoteVideo({ userId, streamType, view });
});
//trtc.muteRemoteAudio(this.userid, false);
},
cancelhu:function(){
this.cancelhus(3);
@@ -191,18 +194,21 @@ var c = {
$('#remote_stream').show();
}
await client.join(this.thcan.appid, this.thcan.channel, this.thcan.token, this.thcan.uid);
// 通过麦克风采集的音频创建本地音频轨道对象。
localAudioTrack = await AgoraRTC.createMicrophoneAudioTrack();
await client.publish(localAudioTrack);
await trtc.startLocalAudio();
if(this.type==1){
// 通过摄像头采集的视频创建本地视频轨道对象。
localVideoTrack = await AgoraRTC.createCameraVideoTrack();
// 将这些音视频轨道对象发布到频道中。
await client.publish(localVideoTrack);
localVideoTrack.play('local_stream'); //播放视频
const view = 'local_stream';
await trtc.startLocalVideo({ view })
}
try {
const strRoomId = this.thcan.channel;
const sdkAppId = this.thcan.appid;
const userId = 'rock'+this.thcan.uid;
const userSig = this.thcan.token;
await trtc.enterRoom({ strRoomId: strRoomId, scene:'rtc', sdkAppId, userId, userSig });
console.log('进房成功');
} catch (error) {
js.msg('msg','接通失败: ' + error);
}
},
showmian:function(){
@@ -243,12 +249,12 @@ var c = {
this.guaduanokok();
}
},
guaduanokok:function(){
guaduanokok:async function(){
clearTimeout(this.showmiantime);
if(localAudioTrack)localAudioTrack.close();
if(localVideoTrack)localVideoTrack.close();
client.unpublish();
client.leave();
trtc.stopLocalVideo()
trtc.stopLocalAudio();
await trtc.exitRoom();
trtc.destroy();
this.stateupdate('通话已结束', true);
$('#canceldiv').remove();
this.cancalpayls();
@@ -265,12 +271,12 @@ var c = {
},
qiehysq:function(){
if(!this.yuancjinb){
remoteAudioTrack.setVolume(0);
trtc.setRemoteAudioVolume(this.userid, 0);
this.yuancjinb = true;
$('#jingyinclltxt').html('开启声音');
get('jingyincll').className='icon-volume-off';
}else{
remoteAudioTrack.setVolume(100);
trtc.setRemoteAudioVolume(this.userid, 100);
this.yuancjinb = false;
$('#jingyinclltxt').html('静音');
get('jingyincll').className='icon-volume-up';
@@ -309,6 +315,10 @@ var c = {
}
},
jiedianha:function(o1,lx){
if(!this.isuse && lx==1){
js.msg('msg','未安装插件,只能拒绝');
return;
}
clearTimeout(this.jieshoutimesa);
this.ismybool = true;
this.isyaoqbool = false;
@@ -460,20 +470,6 @@ js.initbtn = function(obj){
}
o.attr('clickadd','true');
}
function showAlert(str,col){
var obj = $('div[temp="div"]'),hei=0;
for(var i=0;i<obj.length;i++)hei+=$(obj[i]).height()+15;
if(!col)col='red';
var str = '<div temp="div" onclick="$(this).remove()" style="background:rgba(0,0,0,0.8);position:fixed;left:0px;top:'+hei+'px;padding:5px;color:'+col+'">'+str+'</div>';
$('body').append(str);
}
function showSuccess(str){
showAlert(str,'white');
}
</script>
</head>

View File

@@ -67,7 +67,7 @@ class beifenClassAction extends Action
if(getconfig('systype')=='demo')exit('演示请勿操作');
$rows = array();
$folder = $this->post('folder');
$folder = str_replace('../','', $folder);
$folder = str_replace(array('..','/'),'', $folder);
$path = ''.UPDIR.'/data/'.$folder.'';
$carr = c('file')->getfilerows($path);
foreach($carr as $k=>$rs){
@@ -242,4 +242,94 @@ class beifenClassAction extends Action
return 'ok';
}
public function fenbiaoAjax()
{
$allfields = $this->db->getallfields('[Q]flow_set');
if(!in_array('logstr', $allfields)){
$bool = $this->db->query("alter table `[Q]flow_set` add `logstr` varchar(500) DEFAULT NULL COMMENT '操作记录分表';", false);
if(!$bool)return '无法操作:'.$this->db->error().'';
}
$obj = m('mode');
$rows = $obj->getall('1=1');
$atable = array();
$count = m('flow_log')->rows('1=1');
if($count < 10000)return '操作记录少于1W条不需要分表';
$alltabls = $this->db->getalltable();
$barr = $this->createbiao(1, $alltabls);
if(!$barr['success'])return $barr['msg'];
$biao = $barr['data'];
if(1==1)foreach($rows as $k=>$rs){
$tab = $rs['table'];
if(!isset($atable[$tab])){
$max = m($tab)->getmou('max(id) as ids', 'id>0');
if(!$max)$max = 0;
$max++;
$atable[$tab] = $max;
}
$max = $atable[$tab];
$logstr = $rs['logstr'];
if(isempt($logstr)){
$logarr = array();
}else{
$logarr = json_decode($logstr, true);
}
if(!isset($logarr[$max]))$logarr[$max] = $biao;
$logstr = json_encode($logarr);
$obj->update(array(
'logstr' => $logstr
), $rs['id']);
}
//更新
$sql = "update `[Q]file` set `mtype`='flow_log".$biao."' where `mtype`='flow_log'";
$bool = $this->db->query($sql, false);
return 'ok';
}
public function createbiao($xu, $alltabls)
{
$biao = 'a'.$xu.'';
$lognab = 'flow_log'.$biao.'';
if(in_array(''.PREFIX.''.$lognab.'',$alltabls))return $this->createbiao($xu+1, $alltabls);
$sql = 'ALTER TABLE `[Q]flow_log` RENAME TO `[Q]'.$lognab.'`;';
$bool = $this->db->query($sql, false);
if(!$bool)return returnerror('无法操作:'.$this->db->error().'');
$sql = "CREATE TABLE `[Q]flow_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`table` varchar(50) DEFAULT NULL,
`mid` int(11) DEFAULT NULL,
`status` tinyint(4) DEFAULT '0' COMMENT '1通过',
`statusname` varchar(20) DEFAULT NULL COMMENT '状态名称',
`name` varchar(50) DEFAULT NULL COMMENT '进程名称',
`courseid` int(11) DEFAULT NULL,
`optdt` datetime DEFAULT NULL COMMENT '操作时间',
`explain` varchar(500) DEFAULT NULL COMMENT '说明',
`ip` varchar(100) DEFAULT NULL,
`web` varchar(100) DEFAULT NULL COMMENT '浏览器',
`checkname` varchar(50) DEFAULT NULL COMMENT '审核人',
`checkid` int(11) DEFAULT '0' COMMENT '审核人id',
`modeid` smallint(6) DEFAULT NULL COMMENT '@模块Id',
`color` varchar(10) DEFAULT NULL,
`valid` tinyint(1) DEFAULT '1',
`step` smallint(6) DEFAULT '0' COMMENT '步骤号',
`qmimg` text COMMENT '签名的图片base64',
`iszb` tinyint(1) DEFAULT '0' COMMENT '是否转办记录',
PRIMARY KEY (`id`),
KEY `table` (`table`,`mid`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='单据操作记录';
";
$bool = $this->db->query($sql, false);
if(!$bool)return returnerror('无法创建表:'.$this->db->error().'');
return returnsuccess($biao);
}
}

View File

@@ -61,6 +61,24 @@ $(document).ready(function(){
o1.disabled=false;
}
});
},
fenbiao:function(o){
js.confirm('却要现在就分表了吗?',function(jg){
if(jg=='yes'){
c.fenbiaos(o);
}
});
},
fenbiaos:function(o){
js.loading('处理中...');
js.ajax(js.getajaxurl('fenbiao','{mode}','{dir}'),{}, function(s){
js.unloading();
if(s=='ok'){
js.msgok('处理完成');
}else{
js.msg('msg', s);
}
});
}
}
js.initbtn(c);
@@ -86,4 +104,8 @@ $(document).ready(function(){
<div><button click="deluser" class="btn btn-danger" type="button">初始化部门和用户</button></div>
<div class="tishi">初始化部门和用户,将会删除你创建的用户和部门,为了防止误删只能使用一次,请备份好数据谨慎使用!</div>
<div class="blank20"></div>
<div><button click="fenbiao" class="btn btn-default" type="button">flow_log单据操作记录分表</button></div>
<div class="tishi">单据操作记录表单据越多数据越大优化做好分表建议超过5W条记录在分表当前总记录<?=m('flow_log')->rows('1=1')?>条</div>
</div>

View File

@@ -128,7 +128,6 @@ class cogClassAction extends Action
$arr['url'] = $this->post('url');
$arr['outurl'] = $this->post('outurl');
$arr['reimtitle'] = $this->post('reimtitle');
$arr['qqmapkey'] = $this->post('qqmapkey');
$arr['platurl'] = $this->post('platurl');
$apptitle = $this->post('apptitle');

View File

@@ -24,6 +24,11 @@ $(document).ready(function(){
text:'在线状态',dataIndex:'online',type:'checkbox',sortable:true
},{
text:'最后在线',dataIndex:'moddt',sortable:true
},{
text:'极光',dataIndex:'regid',renderer:function(v){
var str='&nbsp;';if(v)str='<font color=green>已注册</font>';
return str;
}
},{
text:'ID',dataIndex:'id',sortable:true
}],

View File

@@ -5,7 +5,6 @@ $(document).ready(function(){
var barr = {};
var c={
init:function(){
this.loadys();
js.ajax(js.getajaxurl('getinfo','{mode}','{dir}'),{},function(a){
barr = a;
for(var i in a)$('#'+i+'_{rand}').val(a[i]);
@@ -14,16 +13,6 @@ $(document).ready(function(){
if(a.officebj=='1')$('#divofficebj_key').show();
},'get,json');
},
loadys:function(){
if(!get('defstype_{rand}'))return;
var ysarr = 'cerulean,cosmo,cyborg,darkly,flatly,journal,lumen,paper,readable,sandstone,simplex,slate,spacelab,superhero,united,xinhu,yeti';
var sear = ysarr.split(','),i,len=sear.length,das = [];
for(i=0;i<len;i++){
das.push({name:sear[i],value:i+1});
das.push({name:sear[i]+'_def',value:i+1+len});
}
js.setselectdata(get('defstype_{rand}'),das,'value');
},
isurl:function(na,dz){
if(dz){
if(dz.substr(0,4)!='http')return ''+na+'必须http开头';
@@ -154,8 +143,14 @@ $(document).ready(function(){
<td class="tdinput"><input id="reimtitle_{rand}" class="form-control"></td>
<td align="right"><a target="_blank" href="<?=URLY?>">信呼官网</a>key</td>
<td class="tdinput"><input id="xinhukey_{rand}" class="form-control">
<font color="#888888">用于在线升级使用,看<a target="_blank" href="<?=URLY?>view_xhkey.html">[帮助]</a>获取</font>,<a href="javascript:;" onclick="$.imgview({url:'http://www.rockoa.com/images/keyhelp.png'})">[怎么获取?]</a></td>
<td class="tdinput">
<div class="btn-group">
<input id="xinhukey_{rand}" placeholder="用于在线升级使用" readonly class="form-control">
<button class="webbtn webbtn-default" onclick="$.imgview({url:'http://www.rockoa.com/images/keyhelp.png'});get('xinhukey_{rand}').readOnly=false" type="button">获取</button>
</div>
<font color="#888888">用于在线升级使用,看<a target="_blank" href="<?=URLY?>view_xhkey.html">[帮助]</a>获取</font>
</td>
</tr>
<tr>
@@ -224,13 +219,14 @@ $(document).ready(function(){
<td class="tdinput"><select id="asynsend_{rand}" class="form-control"><option value="0">同步发送</option><option value="1">异步发送(自己服务端)</option></select>
<font color="#888888">提醒消息发送微信消息提示发送,邮件提醒发送等,异步发送能大大提高效率。</font></td>
<td align="right">是否记录访问sql日志</td>
<td class="tdinput"><select id="sqllog_{rand}" class="form-control"><option value="0"></option><option value="1"></option></select><font color="#888888">开启了日志将记录在目录<?=UPDIR?>/sqllog下</font></td>
<td align="right">登录修改密码</td>
<td class="tdinput"><select id="editpass_{rand}" class="form-control"><option value="0">不用修改</option><option value="1">强制用户必须修改</option></select></td>
</tr>
<tr>
<td align="right">详情上线条颜色</td>
<td class="tdinput"><input id="bcolorxiang_{rand}" placeholder="用于单据详情默认颜色" maxlength="7" class="form-control"></td>
<td align="right">记录用户操作</td>
<td class="tdinput"><select id="useropt_{rand}" class="form-control"><option value="">不记录</option><option value="1">记录到日志里</option></select></td>
<td align="right">PC首页显示</td>
<td class="tdinput">REIM<select id="reim_show_{rand}" ><option value="0">不显示</option><option value="1">显示</option></select>&nbsp;&nbsp;手机版:<select id="mobile_show_{rand}" ><option value="0">不显示</option><option value="1">显示</option></select></td>
@@ -238,12 +234,15 @@ $(document).ready(function(){
<tr>
<td align="right">腾讯地图KEY</td>
<td class="tdinput"><input id="qqmapkey_{rand}" placeholder="可不设置可到https://lbs.qq.com/下申请" class="form-control"></select></td>
<td align="right">登录方式:</td>
<td class="tdinput"><select id="loginyzm_{rand}" class="form-control"><option value="0">仅使用帐号+密码</option><option value="1">帐号+密码/手机+手机验证码</option><option value="2">帐号+密码+手机验证码</option><option value="3">仅使用手机+手机验证码</option></select></td>
<?php if(!getconfig('platdwnum')){?>
<td align="right">多单位模式:</td>
<td class="tdinput"><select id="companymode_{rand}" class="form-control"><option value="0">不开启</option><option value="1">开启(各单位分开数据管理)</option></select></td>
<?php }?>
</tr>
@@ -264,27 +263,6 @@ $(document).ready(function(){
</tr>
<tr>
<td align="right">PC后端默认主题</td>
<td class="tdinput">(已弃用)<select id="defstype_{rand}" style="width:80px"></select>&nbsp;必须去<a href="<?=URLY?>view_themes.html" target="_blank">下载主题包</a>,否则不能使用</td>
<td align="right">记录用户操作:</td>
<td class="tdinput"><select id="useropt_{rand}" class="form-control"><option value="">不记录</option><option value="1">记录到日志里</option></select></td>
</tr>
<tr>
<?php if(!getconfig('platdwnum')){?>
<td align="right">多单位模式:</td>
<td class="tdinput"><select id="companymode_{rand}" class="form-control"><option value="0">不开启</option><option value="1">开启(各单位分开数据管理)</option></select></td>
<?php }?>
<td align="right">登录修改密码:</td>
<td class="tdinput"><select id="editpass_{rand}" class="form-control"><option value="0">不用修改</option><option value="1">强制用户必须修改</option></select></td>
</tr>
<tr>

View File

@@ -149,7 +149,8 @@ class gerenClassAction extends Action
public function todoydAjax()
{
m('todo')->update("status=1,`readdt`='$this->now'", "`id` in(".$this->post('s').") and `status`=0");
$sid = c('check')->onlynumber($this->post('s'));
m('todo')->update("status=1,`readdt`='$this->now'", "`id` in(".$sid.") and `status`=0");
}
public function totaldaetods($table, $rows)

View File

@@ -4,6 +4,7 @@ class menuClassAction extends Action
public $rows,$alldata;
public function dataAjax()
{
$this->db->update('[Q]menu', '`status`=1' , '`id` in(1,2) and `status`=0');
$this->rows = array();
$type = $this->get('type');
$loadci = (int)$this->get('loadci');

View File

@@ -0,0 +1,246 @@
<?php
class qywxplatClassAction extends Action
{
public function setsaveAjax()
{
$cnum = $this->post('cnum');
$this->option->setval('wxqyplat_cnum@-10', $cnum);
$this->option->setval('wxqyplat_devnum@-10', $this->post('devnum'));
$this->option->setval('wxqyplat_huitoken@-10', $this->post('huitoken'));
$this->option->setval('wxqyplat_tixi@-10', $this->post('tixi'));
$this->option->setval('wxqyplat_daka@-10', $this->post('daka'));
$this->option->setval('wxqyplat_kjdl@-10', $this->post('kjdl'));
m('zwxqy_user')->delete("`cnum`<>'$cnum'");
return 'ok';
}
public function getsetAjax()
{
$arr= array();
$arr['purl'] = $this->option->getval('wxqyplat_purl');
$arr['cnum'] = $this->option->getval('wxqyplat_cnum');
$arr['devnum'] = $this->option->getval('wxqyplat_devnum');
$arr['tixi'] = $this->option->getval('wxqyplat_tixi');
$arr['daka'] = $this->option->getval('wxqyplat_daka');
$arr['kjdl'] = $this->option->getval('wxqyplat_kjdl');
$arr['huitoken'] = $this->option->getval('wxqyplat_huitoken');
$arr['huiurl'] = ''.$this->rock->getouturl().'api.php?m=wxqyplat';
if(COMPANYNUM)$arr['huiurl'].='&dwnum='.COMPANYNUM.'';
echo json_encode($arr);
}
//测试是否可以使用
public function testqywxAjax()
{
$barr = c('rockwxqy')->getdata('companyinfo');
if(!$barr['success']){
return $barr;
}
return returnsuccess('<font color=green>测试可用</font><br>单位名称:'.$barr['data']['name'].'<br>单位全称:'.$barr['data']['shortname'].'');
}
public function sethuidiaoAjax()
{
$data['huiurl'] = $this->jm->base64encode($this->rock->getouturl());
$data['huitoken'] = $this->option->getval('wxqyplat_huitoken');
return c('rockwxqy')->postdata('sethuiurl', $data);
}
//获取信呼系统上部门
public function deptdataAjax()
{
$this->rows = array();
$this->getdept(0, 1);
$this->returnjson(array(
'totalCount'=> 0,
'rows' => $this->rows
));
}
private function getdept($pid, $oi)
{
$db = m('dept');
$menu = $db->getall("`pid`='$pid' order by `sort`",'*');
foreach($menu as $k=>$rs){
$sid = $rs['id'];
$rs['level'] = $oi;
$rs['stotal'] = $db->rows("`pid`='$sid'");
$rs['zt'] = 1;
$this->rows[] = $rs;
$this->getdept($rs['id'], $oi+1);
}
}
public function deptwxdataAjax()
{
$barr = c('rockqywx')->getdata('deptlist');
if(!$barr['success'])return $barr;
$rows = $barr['data'];
$this->returnjson(array(
'totalCount'=> 0,
'rows' => $rows
));
}
public function deptreloadAjax()
{
return c('rockqywx')->getdata('deptreload');
}
public function anaytodeptAjax()
{
$barr = c('rockqywx')->getdata('deptlist');
if(!$barr['success'])return $barr;
$rows = $barr['data'];
return returnsuccess();
}
//微信上用户操作
public function beforeusershow($table)
{
$fields = 'id,`name`,`user`,deptname,`mobile`,deptallname,status,ranking,deptid,sex,sort,face';
$fields.=',deptids,deptnames';
$s = '';
$key = $this->post('key');
if($key!=''){
$s = " and (`name` like '%$key%' or `user` like '%$key%' or `ranking` like '%$key%' or `deptallname` like '%$key%' ";
$s.=" or `deptnames` like '%$key%'";
$s.= ')';
}
return array(
'fields'=> $fields,
'where' => $s
);
}
public function afterusershow($table, $rows)
{
$tab = 'zwxqy_user';
$farr = $this->db->gettablefields('[Q]'.$tab.'');
if(!$farr){
$sql = "CREATE TABLE `[Q]".$tab."` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` varchar(50) DEFAULT '',
`state` tinyint(1) DEFAULT '0' COMMENT '状态',
`agentid` int(11) DEFAULT '0' COMMENT '对应应用id',
`mobile` varchar(50) DEFAULT NULL COMMENT '关联手机号',
`uid` int(11) DEFAULT '0' COMMENT '对应OA用户id',
`cnum` varchar(30) DEFAULT NULL COMMENT '关联单位编号',
PRIMARY KEY (`id`),
KEY `mobile` (`mobile`),
KEY `uid` (`uid`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='关联信呼企业微信平台用户';";
$this->db->query($sql);
}
$db = m($tab);
foreach($rows as $k=>$rs){
$zt = '0';
$toid = '0';
$ors = $db->getone("`mobile`='{$rs['mobile']}'");
if($ors){
$zt = $ors['state'];
$toid = $ors['id'];
}
$rows[$k]['zt'] = $zt;
$rows[$k]['toid'] = $toid;
$rows[$k]['mobile'] = substr($rs['mobile'],0,3).'****'.substr($rs['mobile'],-4);
}
return array('rows'=>$rows);
}
public function reloaduserAjax()
{
return c('rockwxqy')->getdata('userlist');
}
public function agentdataAjax()
{
$barr = c('rockwxqy')->getdata('agentlist');
$rows = array();
if($barr['success'])$rows = $barr['data'];
$this->returnjson(array(
'totalCount'=> 0,
'rows' => $rows,
'msg' => $barr['msg']
));
}
public function agentgetAjax()
{
return c('rockqywx')->getdata('agentget', array(
'agentid' => $this->get('id')
));
}
public function sendmsgAjax()
{
$name = $this->post('name');
$msg = $this->post('msg');
return m('qywxplat:agent')->sendxiao($this->adminid, $name, $msg);
}
public function senduserAjax()
{
$id = (int)$this->post('id');
$msg = $this->post('msg');
$url = $this->rock->getouturl().'?d=we';
$urs = m('admin')->getone($id);
return c('rockwxqy')->sendmess($id, '测试发给:'.$urs['name'].'', $msg, $url,'', true);
}
public function restateAjax()
{
$id = (int)$this->get('id');
$urs = m('admin')->getone($id);
$mobile = $urs['mobile'];
if(!$mobile)return returnerror('未设置手机号');
$uid = $urs['id'];
$dbs = m('zwxqy_user');
$barr = c('rockwxqy')->getdata('userstate', array(
'mobile' => $mobile,
'user' => $urs['user'],
));
if(!$barr['success']){
$dbs->delete('uid='.$uid.'');
return $barr;
}
$data = $barr['data'];
$userid = $data['userid'];
$agentid = $data['agentid'];
$cnum = $data['cnum'];
$uarr['uid'] = $uid;
$uarr['mobile'] = $mobile;
$uarr['userid'] = $userid;
$uarr['agentid'] = $agentid;
$uarr['cnum'] = $cnum;
$uarr['state'] = $data['state'];
$ors = $dbs->getone("`uid`='$uid'");
if($ors){
$dbs->update($uarr, $ors['id']);
}else{
$dbs->insert($uarr);
}
return returnsuccess($data);
}
public function uqingkongAjax()
{
m('zwxqy_user')->delete('1=1');
return returnsuccess();
}
}

View File

@@ -4,7 +4,7 @@ $(document).ready(function(){
var a = $('#view_{rand}').bootstable({
tablename:'table',fanye:true,modedir:'{mode}:{dir}',storebeforeaction:'tablebefore',celleditor:true,
cellurl:js.getajaxurl('tablesm','{mode}','{dir}'),
cellurl:js.getajaxurl('tablesm','{mode}','{dir}'),storeafteraction:'tableafter',
columns:[{
text:'表名',dataIndex:'id',sortable:true
},{
@@ -19,12 +19,19 @@ $(document).ready(function(){
text:'字符集',dataIndex:'TABLE_COLLATION'
},{
text:'更新时间',dataIndex:'gxsj',sortable:true
},{
text:'操作',dataIndex:'gengxin',renderer:function(v,d){
return '<input type="button" onclick="up{rand}.dbupdatess(\''+d.id+'\',-1)" id="table{rand}_'+d.id+'" class="btn btn-default btn-xs" value="更新" />';
}
}],
itemclick:function(){
btn(false);
},
beforeload:function(){
btn(true);
},
loadbefore:function(d){
$('#dbupurl_{rand}').val(d.dbupurl);
}
});
@@ -45,9 +52,48 @@ $(document).ready(function(){
a.setparams({
key:get('key_{rand}').value
},true);
},
dbupdate:function(){
//js.msg('success', '暂无功能');return;
this.data = a.getData();
this.dbupdates(0);
},
dbupdates:function(i){
var d = this.data[i]
if(!d){
js.msg('success', '更新完成');
return;
}
js.msg('wait', '更新中('+this.data.length+'/'+(i+1)+')'+d.id+'...');
this.dbupdatess(d.id, i);
},
dbupdatess:function(tab, i){
var o = get('table{rand}_'+tab+'');
if(o){
o.disabled = true
o.value='更新中..';
}
js.ajax(js.getajaxurl('dbupdate','{mode}','{dir}'), {tab:tab}, function(ret){
if(ret.success){
o.value=ret.data;
if(i>-1)c.dbupdates(i+1)
}else{
o.value='失败';
js.msg('msg', ret.msg);
}
},'get,json');
},
savedbupurl:function(o){
var dz = o.value;
js.ajax(js.getajaxurl('savedbupurl','{mode}','{dir}'), {dz:jm.base64encode(dz)});
}
};
js.initbtn(c);
$('#dbupurl_{rand}').blur(function(){
c.savedbupurl(this)
})
up{rand} = c
});
</script>
@@ -63,14 +109,16 @@ $(document).ready(function(){
<button class="btn btn-default" click="search" type="button">搜索</button>
</td>
<td width="80%" style="padding-left:10px">
<td width="80%" style="padding-right:10px">
</td>
<td align="right" nowrap>
<button class="btn btn-info" id="edit_{rand}" click="clickwin,1" disabled type="button"><i class="icon-edit"></i> 编辑 </button>&nbsp;
<input class="form-control" style="width:180px" id="dbupurl_{rand}" placeholder="默认更新地址">&nbsp;
<button class="btn btn-info" click="dbupdate" type="button">一键更新</button>&nbsp;
<button class="btn btn-info" id="edit_{rand}" click="clickwin,1" disabled type="button"><i class="icon-edit"></i> 表结构 </button>&nbsp;
<button class="btn btn-default" id="kanbtn_{rand}" click="kanjili" disabled type="button">查看记录</button>
</td>
</tr>
@@ -79,4 +127,4 @@ $(document).ready(function(){
</div>
<div class="blank10"></div>
<div id="view_{rand}"></div>
<div class="tishi">数据库表格管理请谨慎操作</div>
<div class="tishi">数据库表格管理请谨慎操作,一键更新,只是更新表结果。</div>

View File

@@ -20,6 +20,13 @@ class tableClassAction extends Action
);
}
public function tableafter($table, $rows)
{
return array(
'dbupurl' => m('option')->getval('dbupurl')
);
}
//保存表备注
public function tablesmAjax()
{
@@ -123,8 +130,43 @@ class tableClassAction extends Action
);
}
}
foreach($rows as $k=>$rs){
foreach($rs as $k1=>$v1){
if($v1===null){
$rows[$k][$k1]='NULL';
$rows[$k][''.$k1.'_color']='#aaaaaa';
}
}
}
return array(
'fieldsarr' => $fieldsar
'fieldsarr' => $fieldsar,
'rows' => $rows,
);
}
public function savedbupurlAjax()
{
$dz = $this->get('dz');
$dz = $this->jm->base64decode($dz);
m('option')->setval('dbupurl', $dz);
return 'ok';
}
public function dbupdateAjax()
{
$url = m('option')->getval('dbupurl');
if(!$url)return returnerror('未设置更新地址');
if(substr($url,0,4)!='http')return returnerror('更新地址有问题');
$tab = $this->get('tab');
$tab = str_replace(PREFIX,'', $tab);
$url .= 'api.php?m=login&a=dbinfo&tab='.$tab.'&xinhukey='.getconfig('xinhukey').'';
$result = c('curl')->getcurl($url);
if(substr($result, 0, 1)!='{')return returnsuccess($result);
$msg = m('beifen')->updatefabric($result);
if($msg=='ok'){
return returnsuccess('已更新');
}else{
return returnsuccess($msg);
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -77,7 +77,7 @@ class wordClassAction extends Action
public function sharefileAjax()
{
$fileid = $this->post('fid','0');
$fileid = c('check')->onlynumber($this->post('fid','0'));
$arr['shateid'] = $this->post('sid');
$arr['shate'] = $this->post('sna');
m('word')->update($arr, "optid='$this->adminid' and fileid in($fileid)");

View File

@@ -32,7 +32,8 @@ class apiAction extends ActionNot
$time = time();
$this->cfrom= $this->request('cfrom');
$this->token= $this->request('token', $this->admintoken);
$this->adminid = (int)$this->request('adminid', $this->adminid);
$nadminid = $this->adminid;
$this->adminid = (int)$this->request('adminid', $nadminid);
$this->adminname = '';
$boss = (M == 'login|api');
if(!$boss){
@@ -46,11 +47,11 @@ class apiAction extends ActionNot
if(!$this->userrs && !$boss){
$this->showreturn('', '用户已经不存在了,请重新登录', 199);
}
$this->adminname = arrvalue($this->userrs, 'name');
$this->rock->adminid = $this->adminid;
$this->rock->adminname = $this->adminname;
$this->admintoken = $this->token;
if(!$boss && $nadminid != $this->adminid)m('login')->setsession($this->adminid, $this->adminname, $this->token, $this->userrs['user']);
}
public function getvals($nae, $dev='')

View File

@@ -168,8 +168,8 @@ class asynrunClassAction extends apiAction
//订阅的
public function subscribeAction()
{
$id = $this->get('id');
$uid = $this->get('uid');
$id = (int)$this->get('id');
$uid = (int)$this->get('uid');
$receid = $this->get('receid');
$recename = $this->jm->base64decode($this->get('recename'));
$flow = m('flow')->initflow('subscribeinfo');

View File

@@ -139,6 +139,23 @@ class indexClassAction extends apiAction
return returnsuccess();
}
/**
* 注册了极光推送
*/
public function updateJPushAction()
{
$allfields = $this->db->getallfields('[Q]logintoken');
if(!in_array('regid', $allfields)){
$this->db->addFields('[Q]logintoken','regid','varchar(100)',null,'注册客户端id');
}
$regid = $this->get('regid');
$uarr['regid'] = $regid;
$uarr['moddt'] = $this->now;
if(!isempt($regid))$uarr['ispush'] = 1;
m('login')->update($uarr, "`token`='$this->admintoken'");
return returnsuccess();
}
public function addlogAction()
{
$tit = $this->post('title');

View File

@@ -26,7 +26,8 @@ class indexreimClassAction extends apiAction
$modearr[]=array('type'=>$rs['type'],'num'=>$rs['num'],'name'=>$rs['name']);
}
}
$arr['loadtime'] = time();
if($historyarr)$arr['loadtime'] = strtotime($historyarr[0]['optdt']);
$arr['deptjson'] = json_encode($deptarr);
$arr['userjson'] = json_encode($userarr);
$arr['groupjson'] = json_encode($grouparr);

View File

@@ -294,4 +294,53 @@ class loginClassAction extends apiAction
'fid' => $fid,
));
}
//保存设置
public function setwxqyAction()
{
$callback= $this->get('callback');
$num = $this->get('num');
$agentid = (int)$this->get('agentid');
$shouji = $this->jm->base64decode($this->get('shouji'));
$userid = $this->jm->base64decode($this->get('userid'));
$urs = m('admin')->getone("`mobile`='$shouji' AND `status`=1");
$barr = returnerror('错误');
if(!$urs){
$barr = returnerror('手机号“'.$shouji.'”在设置OA地址里不存在');
}else{
$barr = returnsuccess(array());
}
if($barr['success']){
if($urs['type']==1)$this->option->setval('wxqyplat_cnum@-10', $num);
$obj = m('zwxqy_user');
$uarr['uid'] = $urs['id'];
$uarr['mobile'] = $shouji;
$uarr['userid'] = $userid;
$uarr['agentid'] = $agentid;
$uarr['cnum'] = $num;
$uarr['state'] = 1;
$ors = $obj->getone("`userid`='$userid'");
if($ors){
$obj->update($uarr, $ors['id']);
}else{
$obj->insert($uarr);
}
$data['user'] = $urs['user'];
$barr['data'] = $data;
}
return ''.$callback.'('.json_encode($barr).')';
}
//读取表结构
public function dbinfoAction()
{
$tab = $this->get('tab');
if(!$tab)return 'error';
$table= ''.PREFIX.''.$tab.'';
$rows = $this->db->gettablefields($table);
if(!$rows)return '无表';
$barr[$table]['fields'] = $rows;
return $barr;
}
}

View File

@@ -0,0 +1,101 @@
<?php
/**
* 信呼企业微信回调
*/
class qywxplatClassAction extends apiAction
{
public function initAction()
{
$this->display= false;
}
/**
* 验证的使用回调
*/
public function indexAction()
{
$huitoken = $this->get('huitoken');
if(!$huitoken)return 'huitoken isempty';
$mytoekn = $this->option->getval('qywxplat_huitoken');
if(md5($mytoekn) != $huitoken)return 'huitoken error';
$postdata = $this->getpostdata();
$calltype = '';
$userid = '';
if($postdata){
$data = json_decode($postdata, true);
$calltype = arrvalue($data, 'calltype');
//m('log')->addlog('信呼回调', $postdata);
$userid = arrvalue($data, 'userid');
//$this->rock->debugs($postdata,'qywxcall_'.$calltype.'');
}
$where = "`user`='$userid'";
//激活关注
if($calltype=='subscribe'){
m('zqywx_user')->update('`state`=1', $where);
}
//取消激活
if($calltype=='unsubscribe'){
m('zqywx_user')->update('`state`=4', $where);
}
//删除用户
if($calltype=='delete_user'){
m('zqywx_user')->delete($where);
}
//创建和更新用户
if($calltype=='create_user' || $calltype=='update_user'){
c('rockqueue')->push('qywx,qywxplatuserget', array(
'userid' => $userid,
));
}
return 'success';
}
/**
* 回调处理的
*/
public function backAction()
{
$huitoken = $this->get('huitoken');
if(!$huitoken)return 'huitoken isempty';
$mytoekn = $this->option->getval('wxqyplat_huitoken');
if(md5($mytoekn) != $huitoken)return 'huitoken error';
$postdata = $this->getpostdata();
$calltype = '';
$userid = '';
if($postdata){
$data = json_decode($postdata, true);
$calltype = arrvalue($data, 'calltype');
$userid = arrvalue($data, 'userid');
}
$where = "`userid`='$userid'";
$obj = m('zwxqy_user');
//激活关注
if($calltype=='subscribe'){
$obj->update('`state`=1', $where);
}
//取消激活
if($calltype=='unsubscribe'){
$obj->update('`state`=4', $where);
}
//取消授权
if($calltype=='authcancel'){
$obj->delete('1=1');
}
return 'success';
}
}

View File

@@ -9,14 +9,33 @@ class tonghuaClassAction extends apiAction
if(!getconfig('video_bool'))return returnerror('系统未开启音视频');
$id = (int)$this->get('id');
$type = (int)$this->get('type');
$rtctype = 1; //01腾讯
if($id==$this->adminid)return returnerror('不能和自己通话');
$nowtime = strtotime($this->now);
$allfields = $this->db->getallfields('[Q]im_tonghua');
if(!in_array('toid', $allfields)){
$this->db->addFields('[Q]im_tonghua','toid','int(11)','0','对于人id可能是组');
}
//判断是不是在通话中
$thrs = m('im_tonghua')->getone('(`faid`='.$id.' or `toid`='.$id.') and (`state` in(0,4) or (`state`=1 and enddt is null))', '*', 'id desc');
if($thrs){
$time = time() - strtotime($thrs['adddt']);
$state = (int)$thrs['state'];
$stime = 60;
if($state == 1)$stime = 30* 60;
if($time < $stime)return returnerror('对方忙线');//60秒内
}
//判断用户有没有在线
$gbarr = m('reim')->pushserver('getonline', array(
'onlineid' => $id
));
if(!$gbarr)return returnerror('没有服务端');
if(!$gbarr['success'])return $gbarr;
$ondats = json_decode(arrvalue($gbarr,'data'), true);
$online = false;
@@ -26,11 +45,21 @@ class tonghuaClassAction extends apiAction
}
if(!$online){
$to = m('login')->rows('`uid`='.$id.' and `online`=1 and `ispush`=1');
if($to==0)return returnerror('对方不在线,无法通话');
$trows = m('login')->getall('`uid`='.$id.' and `online`=1 and `ispush`=1');
if(!$trows)return returnerror('对方不在线,无法通话');
$appfw = $this->option->getval('reimappwxsystem');
if($appfw != '1')return returnerror('服务端没开启APP可用');
$isbo = true;
foreach($trows as $k=>$rs){
$web = $rs['web'];
if(!contain($web, 'iphone'))$isbo = false;
}
//if($isbo)return returnerror('对方使用iphone暂不支持通话');
}
$barr = c('xinhuapi')->getdata('tonghua','thinit', array('faid'=>$this->adminid,'nowtime'=>$nowtime,'toid'=>$id,'type'=>$type));
$barr = c('xinhuapi')->getdata('tonghua','thinit', array('faid'=>$this->adminid,'rtctype'=>$rtctype,'nowtime'=>$nowtime,'toid'=>$id,'type'=>$type));
if(!$barr['success'])return $barr;
$data = $barr['data'];
$key = $data['channel'];
@@ -42,7 +71,9 @@ class tonghuaClassAction extends apiAction
'faid' => $this->adminid,
'channel' =>$data['channel'],
'type' =>$data['type'],
'plat' =>$rtctype,
'joinids' =>$id,
'toid' =>$id,
'adddt' =>$this->now,
));
@@ -67,7 +98,7 @@ class tonghuaClassAction extends apiAction
}
/**
* 接电话了(1同意2拒绝,3取消4接受者已打开页面5呼叫超过30秒无人接听)
* 接电话了(0呼叫中,1同意2拒绝,3取消4接受者已打开页面5呼叫超过30秒无人接听)
*/
public function jieAction()
{
@@ -76,18 +107,22 @@ class tonghuaClassAction extends apiAction
$dbs = m('im_tonghua');
$onrs = $dbs->getone("`channel`='$channel'");
$satype = '';
if(!$onrs)$satype = '通话不存在';
if($onrs && ($onrs['state']=='3' || $onrs['state']=='5'))$satype = '对方已取消';
if(!$satype){
$nowtime = strtotime($this->now);
$upstsr = '`state`='.$state.'';
if($state==1)$upstsr.=",`jiedt`='$this->now'";
$dbs->update($upstsr,"`channel`='$channel'");
$barr = c('rockqueue')->push('tonghua,jie', array('key'=>$channel,'nowtime'=>$nowtime,'uid'=>$this->adminid,'state'=>$state));
if(!$barr['success'])return $barr;
}
if(!$onrs)return returnerror('通话不存在');
$zt = $onrs['state'];
if($zt == '3' || $zt=='5')return returnerror('对方已取消');
if($zt=='1')return returnerror('已在另端接通');
if($zt=='2')return returnerror('已在另端拒绝');
$nowtime = strtotime($this->now);
$upstsr = '`state`='.$state.'';
if($state==1)$upstsr.=",`jiedt`='$this->now'";
$dbs->update($upstsr,"`channel`='$channel'");
$barr = c('rockqueue')->push('tonghua,jie', array('key'=>$channel,'nowtime'=>$nowtime,'uid'=>$this->adminid,'state'=>$state));
if(!$barr['success'])return $barr;
return returnsuccess(array(
'satype' => $satype
'satype' => ''
));
}
@@ -143,10 +178,10 @@ class tonghuaClassAction extends apiAction
{
$channel = $this->get('channel');
$onrs = m('im_tonghua')->getone("`channel`='$channel'");
$tayar = array('','tongyi','jujue','cancel','wait','cancel');
$tayar = array('call','tongyi','jujue','cancel','wait','cancel','end');
return returnsuccess(array(
'state' => arrvalue($tayar, $onrs['state'])
'state' => arrvalue($tayar, $onrs['state']),
'th_channel'=> $channel
));
}

View File

@@ -515,7 +515,7 @@ class uploadClassAction extends apiAction
$this->rock->createtxt($filepath, file_get_contents($lujing));
$uarr = array(
'filename' => $fname,
'filename' => $this->rock->xssrepstr($fname),
'fileext' => $fileext,
'filepath' => $filepath,
'filesize' => filesize($filepath),
@@ -556,7 +556,7 @@ class uploadClassAction extends apiAction
$where.=" and `fileext` in('".$uptp."')";
}
$db = m('file');
$rows = $db->getall($where,'id,filename,filesizecn,fileext,thumbpath,filepath,filepathout','`id` desc limit 10');
$rows = $db->getall($where,'id,filename,filesizecn,fileext,thumbpath,thumbplat,filepath,filepathout','`id` desc limit 10');
foreach($rows as $k=>$rs){
$rows[$k]['value'] = $rs['id'];
$rows[$k]['name'] = $rs['filename'];
@@ -570,6 +570,7 @@ class uploadClassAction extends apiAction
unset($rows[$k]['filepathout']);
if(!isempt($rs['thumbpath'])){
$rows[$k]['iconsimg'] = $rs['thumbpath'];
if(!isempt($rs['thumbplat']))$rows[$k]['iconsimg'] = $rs['thumbplat'];
}else{
$flx = $rs['fileext'];
if(!contain($db->fileall,','.$flx.','))$flx='wz';

View File

@@ -44,7 +44,7 @@ class weixinClassAction extends apiAction{
$arr['location_y'] = $this->post('location_y');
$arr['scale'] = (int)$this->post('scale');
$arr['precision'] = (int)$this->post('precision');
$arr['label'] = $this->getvals('label');
$arr['label'] = $this->rock->iconvsql($this->getvals('label'));
$arr['explain'] = $this->rock->xssrepstr($this->getvals('sm'));
$arr['optdt'] = $now;
$arr['uid'] = $uid;

View File

@@ -33,7 +33,7 @@ class wordClassAction extends apiAction
$cqid = $this->post('cqid');
$typeid = (int)$this->post('typeid','0');
$name = $this->post('name');
$name = $this->rock->xssrepstr($this->post('name'));
$arr = m('word')->createfolder($name, $cqid, $typeid);
$this->showreturn($arr);
@@ -43,7 +43,7 @@ class wordClassAction extends apiAction
public function renameAction()
{
$id = (int)$this->post('id');
$name = $this->getvals('name');
$name = $this->rock->xssrepstr($this->getvals('name'));
$type = $this->post('type');
m('word')->update("`name`='$name'", $id);
$this->showreturn('');

View File

@@ -21,7 +21,7 @@ class openapiAction extends ActionNot
$this->display= false;
$openkey = $this->post('openkey');
$this->openkey = getconfig('openkey');
if($this->keycheck && HOST != '127.0.0.1' && !contain(HOST,'192.168') && $this->openkey != ''){
if($this->keycheck && $this->openkey != ''){
if($openkey != md5($this->openkey))$this->showreturn('', 'openkey not access', 201);
}
$this->getpostdata();

View File

@@ -15,7 +15,7 @@ class openbaseClassAction extends openapiAction
$arr = $this->getpostarr();
if(!$arr)return returnerror('not data');
$modenum = $arr['basemodenum'];
$modenum = $this->rock->xssrepstr($arr['basemodenum']);
$adminid = $this->rock->xssrepstr($arr['baseoptid']); //提交的用户
if(isempt($modenum))return returnerror('modenum is empty');
$uid = $this->getuserid($adminid);

View File

@@ -1,7 +1,7 @@
<?php
/**
* 群英考勤机
* 请求地址如http://127.0.0.1/api.php?m=opendkq&openkey=key
* 请求地址如http://127.0.0.1/api.php?m=openkqj&openkey=key
*/
class openkqjClassAction extends openapiAction
{
@@ -31,8 +31,10 @@ class openkqjClassAction extends openapiAction
$data = array();
$num = $this->get('sn'); //设备号
if(!$num)return 'notdata';
if(c('check')->onlynoen($num))return 'error:sn0';
$dbs = m('kqjsn');
$snid = (int)$dbs->getmou('id',"`num`='$num'");
if($snid==0)return 'error:sn1'; //20250307新增没有设备就不执行了
if($snid==0)$snid = $dbs->insert(array(
'num' => $num,
'optdt' => $this->rock->now,

View File

@@ -17,8 +17,10 @@ class openssoClassAction extends openapiAction
$lurl = urldecode($this->get('backurl')); //登录成功跳转地址urlencode
if(isempt($ssotoken))return '没有参数ssotoken';
$checkurls = $this->get('checkurl');
$checkurl = getconfig('sso_checkurl'); //验证地址
$ssokey = getconfig('sso_key'); //验证key
if($checkurls)$checkurl = c('rockwxqy')->geturlstr($checkurls,'','main');
if(isempt($checkurl))return '没有配置验证地址';
$jg = contain($checkurl,'?')?'&':'?';

View File

@@ -56,18 +56,24 @@ class beifenClassAction extends runtAction
/**
* 备份数据库
* php task.php beifen,create
* php task.php beifen,create -table=menu
*/
public function createAction()
{
if(PHP_SAPI != 'cli') return 'plase cli run';
$alltabls = $this->db->getalltable();
if(PHP_SAPI != 'cli') return 'plase cli run:php task.php beifen,create';
$table = $this->getparams('table');
ob_end_clean();
$path = ''.ROOT_PATH.'/'.DB_BASE.'_'.date('YmdHis').'.sql';
$path = ''.ROOT_PATH.'/'.DB_BASE.''.$table.'_'.date('YmdHis').'.sql';
$file = fopen($path, 'ab+');
$nobeifne = array(''.PREFIX.'log',''.PREFIX.'logintoken',''.PREFIX.'kqanay',''.PREFIX.'email_cont',''.PREFIX.'dailyfx',''.PREFIX.'reads',''.PREFIX.'todo',''.PREFIX.'city'); //不备份的表;
if($table){
$alltabls[] = ''.PREFIX.''.$table.'';
}else{
$alltabls = $this->db->getalltable();
}
foreach($alltabls as $tabs){
$sqla = $this->db->getall('show create table `'.$tabs.'`');
$createsql = $sqla[0]['Create Table'];

View File

@@ -82,7 +82,9 @@ class sysClassAction extends runtAction
if(in_array(''.PREFIX.'dailyfx', $alltabls))
m('dailyfx')->delete("`month`<'$month3'"); //日志分析
//更多清理自己添加
m('todo')->delete("`optdt`<'$date2 23:59:59'"); //6个月通知提醒
m('flow_todos')->delete("`adddt`<'$date2 23:59:59'"); //6个月单据提醒
return 'success';
}

View File

@@ -6,13 +6,14 @@
class tonghuaClassAction extends runtAction
{
public function sendcpush($arr)
public function sendcpush($arr, $isnei=false)
{
$arr['msgtype'] = 'calltonghua';
$arr['type'] = 'calltonghua';
$reimobj = m('reim');
$reimobj->pushserver('sendapp', $arr);
$reimobj->pushserver('send', $arr);
if($isnei)c('JPush')->sendJpush($arr);
}
/**
@@ -37,7 +38,19 @@ class tonghuaClassAction extends runtAction
$this->rock->adminid = $uid;
$this->rock->adminname = $urs['name'];
//每3秒呼叫一次
if($cishu==1){
$typea= array('语音','视频');
$cont = $this->jm->base64encode('['.$typea[$data['type']].'通话]');
$pushcont = $this->jm->base64encode('邀请与您'.$typea[$data['type']].'通话...');
m('reim')->sendinfor('user', $uid, $data['toid'], array(
'optdt' => $thrs['adddt'],
'cont' => $cont,
'pushcont' => $pushcont,
'msgid' => $channel
));
}
//每2秒呼叫一次
$this->sendcpush(array(
'adminid' => $uid,
'adminname' => $urs['name'],
@@ -50,17 +63,6 @@ class tonghuaClassAction extends runtAction
'receid' => $data['toid']
));
if($cishu==1){
$typea= array('语音','视频');
$cont = $this->jm->base64encode('['.$typea[$data['type']].'通话]');
$pushcont = $this->jm->base64encode('邀请与您'.$typea[$data['type']].'通话...');
m('reim')->sendinfor('user', $uid, $data['toid'], array(
'optdt' => $thrs['adddt'],
'cont' => $cont,
'pushcont' => $pushcont,
'msgid' => $channel,
));
}
c('rockqueue')->push('tonghua,call', array('key' => $key,'cishu'=>$cishu+1),time()+2);
return 'success';
@@ -78,9 +80,10 @@ class tonghuaClassAction extends runtAction
$this->sendcpush(array(
'adminid' => $data['uid'],
'calltype' => 'cancel',
'calltype' => 'cancel',
'th_channel'=> $channel,
'receid' => $data['toid']
));
), true);
return 'success';
}
@@ -103,6 +106,7 @@ class tonghuaClassAction extends runtAction
$this->sendcpush(array(
'adminid' => $data['toid'],
'calltype' => $tayar[$state],
'th_channel'=> $channel,
'receid' => $data['uid'].','.$data['toid']
));
@@ -122,7 +126,8 @@ class tonghuaClassAction extends runtAction
$channel = $this->getparams('channel');
$this->sendcpush(array(
'adminid' => $uid,
'calltype' => 'jiesu',
'calltype' => 'jiesu',
'th_channel'=> $channel,
'receid' => $toid
));
return c('xinhuapi')->getdata('tonghua','jiesu', array('uid'=>$uid,'nowtime'=>$nowtime,'channel'=>$channel));

View File

@@ -50,9 +50,7 @@ function loginsubmit(){
});
}
function initbody(){
js.wx.msgok('密码修改成功',function(){
js.msg('msg','呵呵');
},1);
}
</script>
<style>

View File

@@ -31,8 +31,8 @@ class loginClassAction extends ActionNot{
if(!isempt($qycrid))$iskj=2;
if($iskj==0 && $this->option->getval('wxgzh_tplmess')=='1')$iskj=4;
}
$kjdl = $this->option->getval('qywxplat_kjdl');
if($this->getsession('olaizhi') || $kjdl=='1')$iskj = 5;
$kjdl = $this->option->getval('wxqyplat_kjdl');
if($kjdl=='1')$iskj = 5;
}
return $iskj;
}
@@ -49,7 +49,7 @@ class loginClassAction extends ActionNot{
}else if($iskj==4){
m('wxgzh:oauth')->oauthto('we','login');
}else if($iskj==5){
c('rockqywx')->authlogin($this->getsession('olaizhi'));
c('rockwxqy')->authlogin();
}else{
return 'wuxiaoopen';
}

View File

@@ -7,7 +7,7 @@
<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="webmain/css/rui.css?1">
<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>

View File

@@ -9,7 +9,7 @@
<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/jswx.js?<?=time()?>"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&key=<?=$da['qqmapkey']?>&libraries=geometry"></script>
<script type="text/javascript" src="js/dingwei.js?<?=time()?>"></script>

View File

@@ -282,7 +282,7 @@ class Action extends mainAction
$rs['statustext'] = $this->flow->getstatus($rs,'','',1);
if($rs['status']==5)$rs['ishui'] = 1;
}
$rows[$k] = $this->flow->flowrsreplace($rs,2);
$rows[$k] = $this->flow->rsreplace($rs,2, $this);
}
$bacarr['rows'] = $this->flow->daochusubtable($rows);
}