信呼OA版本v2.3.8

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

View File

@@ -0,0 +1,113 @@
<?php if(!defined('HOST'))die('not access');?>
<script >
$(document).ready(function(){
var bools=false,mid=0;
var a = $('#view_{rand}').bootstable({
tablename:'flow_extent',celleditor:true,fanye:true,sort:'id',dir:'desc',
url:publicstore('{mode}','{dir}'),storeafteraction:'afterstroesss',
columns:[{
text:'针对对象',dataIndex:'recename'
},{
text:'模块',dataIndex:'modename',sortable:true
},{
text:'类型',dataIndex:'type',sortable:true,renderer:function(oi){
var as=['可查看','可添加','可编辑','可删除','可导入','可导出','禁看字段','流程监控'];
return ''+as[oi]+'';
}
},{
text:'条件',dataIndex:'whereid'
},{
text:'并条件',dataIndex:'wherestr',align:'left',renderer:function(v){
return jm.base64decode(v);
}
},{
text:'说明',dataIndex:'explain',editor:true
},{
text:'状态',dataIndex:'status',type:'checkbox',editor:true,sortable:true
},{
text:'ID',dataIndex:'id'
}],
itemclick:function(d){
mid=d.modeid;
btn(false, d);
},
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){
get('edit_{rand}').disabled = bo;
get('del_{rand}').disabled = bo;
}
var c = {
del:function(){
a.del();
},
reload:function(){
a.reload();
},
clickwin:function(o1,lx){
if(mid==0){
js.msg('msg','请先选择模块');
return;
}
var icon='plus',name='新增流程模块权限',id=0;
if(lx==1){
id = a.changeid;
icon='edit';
name='编辑流程模块权限';
};
guanflowviewlist = a;
addtabs({num:'flowview'+id+'',url:'main,view,edit,id='+id+',mid='+mid+'',icons:icon,name:name});
},
changemode:function(){
var v=this.value;
mid=v;
a.search('and modeid='+v+'');
}
};
js.initbtn(c);
$('#mode_{rand}').change(c.changemode);
});
</script>
<div>
<table width="100%">
<tr>
<td align="left">
<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>
</td>
<td width="90%">
</td>
<td nowrap>
<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-danger" click="del" disabled id="del_{rand}" type="button"><i class="icon-trash"></i> 删除</button>
</td>
</tr>
</table>
</div>
<div class="blank10"></div>
<div id="view_{rand}"></div>
<div class="tishi">提示:多条将是或者的关系<div>

View File

@@ -0,0 +1,171 @@
<?php if(!defined('HOST'))die('not access');?>
<script >
$(document).ready(function(){
{params};
var id = params.id,mid=params.mid,fieldsarr=[];
if(!id)id = 0;
var h = $.bootsform({
window:false,rand:'{rand}',tablename:'flow_extent',
url:publicsave('{mode}','{dir}'),
submitfields:'recename,receid,modeid,type,whereid,wherestr,explain,status,fieldstr',
requiredfields:'recename,type,modeid',beforesaveaction:'flowview_savebefore',
success:function(){
closenowtabs();
try{guanflowviewlist.reload();}catch(e){}
},
load:function(a){
js.setselectdata(h.form.whereid,a.wherelist,'id');
fieldsarr = a.fieldsarr;
c.showfields(a.data.fieldstr);
if(a.data.type=='6')$('#jinfiile{rand}').show();
},
loadafter:function(a){
if(a.data){
h.form.wherestr.value=jm.base64decode(a.data.wherestr);
}
},
submitcheck:function(d){
if(d.type!='1' && d.type!='4' && d.type!='5' && d.wherestr=='' && d.whereid=='0')return '必须设置输入相应条件';
var fieldstr = '';
if(d.type=='6'){
fieldstr=js.getchecked('fieldstr{rand}');
if(fieldstr=='')return '请选择禁看字段';
}
return {wherestr:jm.base64encode(d.wherestr),fieldstr:fieldstr}
}
});
h.forminit();
h.load(js.getajaxurl('loaddata','{mode}','{dir}',{id:id,mid:mid}));
h.setValue('modeid',mid);
$(h.form.type).change(function(){
var val = this.value;
if(val=='6'){
$('#jinfiile{rand}').show();
}else{
$('#jinfiile{rand}').hide();
}
});
var c = {
showfields:function(st1){
var i,len=fieldsarr.length,d1,str='',sel;
st1 = ','+st1+',';
for(i=0;i<len;i++){
d1 = fieldsarr[i];
sel= '';
if(st1.indexOf(','+d1.fields+',')>=0)sel='checked';
str+='<label><input type="checkbox" '+sel+' name="fieldstr{rand}" value="'+d1.fields+'">'+d1.name+'</label>&nbsp;&nbsp;';
}
$('#viewjinkan{rand}').html(str);
},
getdist:function(o1, lx){
var cans = {
nameobj:h.form.recename,
idobj:h.form.receid,
type:'deptusercheck',
title:'选择针对人员'
};
js.getuser(cans);
},
allqt:function(){
h.form.recename.value='全体人员';
h.form.receid.value='all';
h.form.recename.focus();
},
hanrenss:function(o,lx){
if(lx==0)h.form.wherestr.value='{receid}';
if(lx==1)h.form.wherestr.value='{allsuper}';
if(lx==2)h.form.wherestr.value='{super}';
if(lx==4)h.form.wherestr.value='{dept}';
if(lx==3)h.form.wherestr.value='all';
if(lx==5)h.form.wherestr.value='{company}';
if(lx==6)h.form.wherestr.value='{deptall}';
}
,
reloadhweil:function(){
h.form.whereid.length = 1;
h.load(js.getajaxurl('loaddata','{mode}','{dir}',{id:id,mid:mid}));
}
};
js.initbtn(c);
});
</script>
<div align="center">
<div style="padding:10px;width:700px">
<form name="form_{rand}">
<input name="id" value="0" type="hidden" />
<input name="modeid" value="0" type="hidden" />
<table cellspacing="0" border="0" width="100%" align="center" cellpadding="0">
<tr>
<td align="right" ><font color=red>*</font> 针对对象:</td>
<td class="tdinput" colspan="3">
<div class="input-group" style="width:100%">
<input readonly class="form-control" name="recename" >
<input type="hidden" name="receid" >
<span class="input-group-btn">
<button class="btn btn-default" click="allqt" type="button">全体人员</button>
<button class="btn btn-default" click="getdist,1" type="button"><i class="icon-search"></i></button>
</span>
</div>
</td>
</tr>
<tr>
<td align="right" width="15%" ><font color=red>*</font> 类型:</td>
<td class="tdinput" width="35%" ><select name="type" class="form-control"><option value="0">查看(只针对详情页)</option><option value="1">添加</option><option value="2">编辑</option><option value="3">删除</option><option value="4">导入</option><option value="5">导出</option><option value="6">禁看字段(条件满足时针对对象就不能查看相应的字段)</option><option value="7">流程监控(条件满足时针对对象就可监控流程)</option></select></td>
<td align="right" width="15%"></td>
<td class="tdinput" width="35%" ></td>
</tr>
<tr id="jinfiile{rand}" style="display:none">
<td align="right" >选择禁看字段:</td>
<td class="tdinput" colspan="3" id="viewjinkan{rand}"></td>
</tr>
<tr>
<td align="right" >选择条件:</td>
<td class="tdinput"><select class="form-control" name="whereid"><option value="0">无条件</option></select></td>
<td colspan="2"><a click="reloadhweil" href="javascript:;">[刷新]</a></td>
</tr>
<tr>
<td align="right" ></td>
<td colspan="3" style="padding-bottom:10px"><font color=#888888>在【流程模块条件】上添加</font></td>
</tr>
<tr>
<td align="right" >相应条件:</td>
<td class="tdinput" colspan="3"><textarea placeholder="不会设置不要瞎写就写1=1" name="wherestr" style="height:60px" class="form-control"></textarea><br>如:<a click="hanrenss,0" href="javascript:;">[receid中包含我]</a>,<a click="hanrenss,1" href="javascript:;">[所有下属人员]</a>,<a click="hanrenss,2" href="javascript:;">[直属下属人员]</a>,<a click="hanrenss,4" href="javascript:;">[同级本部门]</a>,<a click="hanrenss,6" href="javascript:;">[同级本部门(含子部门)]</a>,<a click="hanrenss,5" href="javascript:;">[所在单位]</a>,<a click="hanrenss,3" href="javascript:;">[所有数据]</a></td>
</tr>
<tr>
<td align="right" >条件说明:</td>
<td class="tdinput" colspan="3"><textarea name="explain" style="height:60px" class="form-control"></textarea></td>
</tr>
<tr>
<td align="right" ></td>
<td class="tdinput" colspan="3">
<label><input name="status" value="1" checked type="checkbox"> 启用?</label>&nbsp; &nbsp;
</td>
</tr>
<tr>
<td align="right"></td>
<td style="padding:15px 0px" colspan="3" align="left"><button disabled class="btn btn-success" id="save_{rand}" type="button"><i class="icon-save"></i>&nbsp;保存</button>&nbsp; <span id="msgview_{rand}"></span>
</td>
</tr>
</table>
</form>
</div>
</div>

View File

@@ -0,0 +1,42 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>签名</title>
<link rel="stylesheet" href="webmain/css/css.css" />
<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/base64-min.js"></script>
<script type="text/javascript" src="mode/plugin/jquery-signature.js"></script>
<script>
var qianmingbo = false;
function initbody(){
ismobile = js.request('ism');
var hei = winHb()-22,
wei = winWb()-22;
$('#qianmingdiv').attr('data-height',hei);
$('#qianmingdiv').attr('data-width',wei);
$('#qianmingdiv').jqSignature().on('jq.signature.changed', function() {
qianmingbo = true;
});
if(ismobile==1)get('qianmingdiv').addEventListener('touchmove',function(e){
e.preventDefault();
},false);
}
//返回签名内容
autographok=function(){
if(!qianmingbo)return '';
return $('#qianmingdiv').jqSignature('getDataURL');
}
//重写
autographre=function(){
$('#qianmingdiv').jqSignature('clearCanvas');
qianmingbo = false;
}
</script>
</head>
<body style="background:white">
<div data-width="280" data-height="120" data-border="1px dashed #cccccc" data-line-color="#000000" data-auto-fit="true" id="qianmingdiv" style="margin:10px;height:120px;cursor:default"></div>
</body>
</html>

View File

@@ -0,0 +1,36 @@
<?php
class viewClassAction extends Action
{
public function loaddataAjax()
{
$id = (int)$this->get('id');
$setid = (int)$this->get('mid');
$arr['data'] = m('flow_extent')->getone($id);
$arr['wherelist'] = m('flow_where')->getall('setid='.$setid.'','id,name','sort');
$arr['fieldsarr'] = m('flow_element')->getrows('mid='.$setid.' and `iszb`=0','name,fields','`sort`');
echo json_encode($arr);
}
public function afterstroesss($table,$rows)
{
foreach($rows as $k=>$rs){
$rows[$k]['modename'] = $this->db->getmou('[Q]flow_set','name',$rs['modeid']);
$rows[$k]['whereid'] = $this->db->getmou('[Q]flow_where','name',$rs['whereid']);
}
return array(
'rows'=>$rows,
'modearr' => m('mode')->getmodearr(),
);
}
public function flowview_savebefore($table, $das)
{
$str = m('where')->checkwhere($das['modeid'], $das['wherestr']);
if($str)return $str;
}
public function autographAction()
{
}
}