|
|
|
|
/*确定保存时调用的方式*/
|
|
|
|
|
function saveAttribute(data)
|
|
|
|
|
{
|
|
|
|
|
try{
|
|
|
|
|
if(data.status!=1)
|
|
|
|
|
{
|
|
|
|
|
alert(data.msg);//失败时不关闭 attributeModal 所以用 alert
|
|
|
|
|
}else
|
|
|
|
|
{
|
|
|
|
|
$("#attributeModal").modal("hide");
|
|
|
|
|
mAlert(data.msg);
|
|
|
|
|
//刷新加载样式,体验不太好 万一未保存设计
|
|
|
|
|
//location.reload();
|
|
|
|
|
}
|
|
|
|
|
}catch(e)
|
|
|
|
|
{
|
|
|
|
|
alert(data.msg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//-----条件设置--strat----------------
|
|
|
|
|
function _id(id) {
|
|
|
|
|
return !id ? null : document.getElementById(id);
|
|
|
|
|
}
|
|
|
|
|
function trim(str) {
|
|
|
|
|
return (str + '').replace(/(\s+)$/g, '').replace(/^\s+/g, '');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function fnCheckExp(text){
|
|
|
|
|
//检查公式
|
|
|
|
|
if( text.indexOf("(")>=0 ){
|
|
|
|
|
var num1 = text.split("(").length;
|
|
|
|
|
var num2 = text.split(")").length;
|
|
|
|
|
if( num1!=num2 ) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 增加左括号表达式,会断行
|
|
|
|
|
*/
|
|
|
|
|
function fnAddLeftParenthesis(id){
|
|
|
|
|
var oObj = _id('conList_' + id);
|
|
|
|
|
var current = 0;
|
|
|
|
|
if(oObj.options.length>0){ //检查是否有条件
|
|
|
|
|
for ( var i = 0;i < oObj.options.length;i++ ){
|
|
|
|
|
if( oObj.options[i].selected ) {
|
|
|
|
|
current = oObj.selectedIndex;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(current==0){
|
|
|
|
|
current = oObj.options.length-1;
|
|
|
|
|
}
|
|
|
|
|
} else { //有条件才能添加左括号表达式
|
|
|
|
|
alert("请先添加条件,再选择括号");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var sText = oObj.options[current].text,sValue = oObj.options[current].value;
|
|
|
|
|
//已经有条件的话
|
|
|
|
|
if( (trim(sValue).substr(-3,3) == 'AND') || (trim(sValue).substr(-2,2) == 'OR') ){
|
|
|
|
|
alert("无法编辑已经存在关系的条件");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var sRelation = _id('relation_'+id).value;
|
|
|
|
|
if( sValue.indexOf('(')>=0 ){
|
|
|
|
|
if( !fnCheckExp(sValue) ){
|
|
|
|
|
alert("条件表达式书写错误,请检查括号匹配");
|
|
|
|
|
return;
|
|
|
|
|
} else {
|
|
|
|
|
sValue = sValue + " " + sRelation;
|
|
|
|
|
sText = sText + " " + sRelation;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
sValue = sValue + " " + sRelation;
|
|
|
|
|
sText = sText + " " + sRelation;
|
|
|
|
|
}
|
|
|
|
|
oObj.options[current].value = sValue;
|
|
|
|
|
oObj.options[current].text = sText;
|
|
|
|
|
// $('#conList_'+id+' option').eq(current).text(sText)
|
|
|
|
|
$('#conList_'+id).append('<option value="( ">( </option>');
|
|
|
|
|
|
|
|
|
|
/* var oMyop = document.createElement('option');
|
|
|
|
|
oMyop.text = "( ";
|
|
|
|
|
var nPos = oObj.options.length;
|
|
|
|
|
oObj.appendChild(oMyop,nPos);*/
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 增加右括号表达式
|
|
|
|
|
*/
|
|
|
|
|
function fnAddRightParenthesis(id){
|
|
|
|
|
var oObj = _id('conList_' + id);
|
|
|
|
|
var current = 0;
|
|
|
|
|
if( oObj.options.length>0 ){
|
|
|
|
|
for ( var i = 0;i < oObj.options.length;i++ ){
|
|
|
|
|
if( oObj.options[i].selected ) {
|
|
|
|
|
current = oObj.selectedIndex;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if( current == 0 ){
|
|
|
|
|
current = oObj.options.length-1;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
alert("请先添加条件,再选择括号");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var sText = oObj.options[current].text,sValue = oObj.options[current].value;
|
|
|
|
|
if( (trim(sValue).substr(-3,3)=='AND') || (trim(sValue).substr(-2,2)=='OR') ){
|
|
|
|
|
alert("无法编辑已经存在关系的条件");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if( (trim(sValue).length==1) ){
|
|
|
|
|
alert("请添加条件");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if( !fnCheckExp(sValue) ){
|
|
|
|
|
sValue = sValue + ")";
|
|
|
|
|
sText = sText + ")";
|
|
|
|
|
}
|
|
|
|
|
oObj.options[current].value = sValue;
|
|
|
|
|
oObj.options[current].text = sText;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
function fnAddConditions(id){
|
|
|
|
|
var sField = $('#field_'+id).val(),sField_text = $('#field_'+id).find('option:selected').text(),sCon = $('#condition_'+id).val(),sValue = $('#item_value_'+id).val();
|
|
|
|
|
|
|
|
|
|
var bAdd = true;
|
|
|
|
|
if( sField!=='' && sCon!=='' && sValue!=='' ){
|
|
|
|
|
var oObj = _id('conList_'+id);
|
|
|
|
|
|
|
|
|
|
if( oObj.length>0 ){
|
|
|
|
|
var sLength = oObj.options.length;
|
|
|
|
|
var sText = oObj.options[sLength-1].text;
|
|
|
|
|
if(!fnCheckExp(sText)){
|
|
|
|
|
bAdd = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if( sValue.indexOf("'")>=0 ){
|
|
|
|
|
alert("值中不能含有'号");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var sNewText = "'" + sField + "' " + sCon + " '" + sValue + "'";
|
|
|
|
|
var sNewText_text = "'" + sField_text + "' " + sCon + " '" + sValue + "'";
|
|
|
|
|
for( var i=0;i<oObj.options.length;i++ ){
|
|
|
|
|
if( oObj.options[i].value.indexOf(sNewText)>=0 ){
|
|
|
|
|
alert("条件重复");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var sRelation = $('#relation_'+id).val();
|
|
|
|
|
|
|
|
|
|
if( bAdd ){
|
|
|
|
|
//var oMyop = document.createElement('option');
|
|
|
|
|
var nPos = oObj.options.length;
|
|
|
|
|
//oMyop.text = sNewText_text;
|
|
|
|
|
// oMyop.value = sNewText;
|
|
|
|
|
//oObj.appendChild(oMyop,nPos);
|
|
|
|
|
$('#conList_'+id).append('<option value="'+sNewText+'">'+sNewText_text+'</option>');
|
|
|
|
|
if( nPos>0 ){
|
|
|
|
|
oObj.options[nPos-1].text += " " + sRelation;
|
|
|
|
|
oObj.options[nPos-1].value += " " + sRelation;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
if( trim(oObj.options[sLength-1].text).length==1 ){
|
|
|
|
|
oObj.options[sLength-1].text += sNewText_text;
|
|
|
|
|
oObj.options[sLength-1].value += sNewText;
|
|
|
|
|
} else {
|
|
|
|
|
oObj.options[sLength-1].text += " " + sRelation + " " + sNewText_text;
|
|
|
|
|
oObj.options[sLength-1].value += " " + sRelation + " " + sNewText;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
alert("请补充完整条件");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function fnDelCon(id){
|
|
|
|
|
var oObj = _id('conList_'+id);
|
|
|
|
|
var maxOpt = oObj.options.length;
|
|
|
|
|
if(maxOpt<0) maxOpt = 0;
|
|
|
|
|
|
|
|
|
|
for (var i = 0;i < oObj.options.length;i++ ){
|
|
|
|
|
if( oObj.options[i].selected ) {
|
|
|
|
|
if((i+1)==maxOpt){
|
|
|
|
|
if(typeof oObj.options[i-1] !== 'undefined'){
|
|
|
|
|
oObj.options[i-1].text = oObj.options[i-1].text.replace(/(AND|OR)$/,'');
|
|
|
|
|
oObj.options[i-1].value = oObj.options[i-1].value.replace(/(AND|OR)$/,'');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
oObj.removeChild(oObj.options[i]);
|
|
|
|
|
i--;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function fnClearCon(id){
|
|
|
|
|
$('#conList_' + id).html('');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//根据基本信息的下一步骤,设置《条件设置》tab的条件列表
|
|
|
|
|
function fnSetCondition(){
|
|
|
|
|
if($("#process_multiple option:selected").length<=0)
|
|
|
|
|
{
|
|
|
|
|
$('#tab_attrJudge').hide();
|
|
|
|
|
}else
|
|
|
|
|
{
|
|
|
|
|
var ids = '';
|
|
|
|
|
$('#ctbody').html('');
|
|
|
|
|
$('#tab_attrJudge').show();
|
|
|
|
|
$("#process_multiple option").each(function(){
|
|
|
|
|
if($(this).val()>0 && $(this).attr("selected"))
|
|
|
|
|
{
|
|
|
|
|
var id = $(this).val(),
|
|
|
|
|
text=$(this).text(),
|
|
|
|
|
node = $('#tpl').html();
|
|
|
|
|
|
|
|
|
|
var s = node.replace(/\@a/g,id);
|
|
|
|
|
if(id!=0){
|
|
|
|
|
text = '<span class="badge badge-inverse">' +id+'</span><br/>' +text;
|
|
|
|
|
}
|
|
|
|
|
s = s.replace(/\@text/g,text);
|
|
|
|
|
s = "<tr>"+s+"<tr>";
|
|
|
|
|
$('#ctbody').append(s);
|
|
|
|
|
ids += id +',';
|
|
|
|
|
|
|
|
|
|
if(_out_condition_data)
|
|
|
|
|
{
|
|
|
|
|
$.each(_out_condition_data,function(i,n){
|
|
|
|
|
if(i==id && _id('conList_'+i )){
|
|
|
|
|
$('#conList_'+i).append(n.condition);
|
|
|
|
|
$('#process_in_desc_'+i).val(n.condition_desc);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
if(ids)
|
|
|
|
|
{
|
|
|
|
|
$("#process_condition").val(ids);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//-----条件设置--end----------------
|
|
|
|
|
|
|
|
|
|
$(function(){
|
|
|
|
|
//TAB
|
|
|
|
|
$('#attributeTab a').click(function (e) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
$(this).tab('show');
|
|
|
|
|
if($(this).attr("href")=='#attrJudge')
|
|
|
|
|
{
|
|
|
|
|
//加载下一步数据 处理 决策项目
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
//步骤类型
|
|
|
|
|
$('input[name="process_type"]').on('click',function(){
|
|
|
|
|
|
|
|
|
|
if($(this).val()=='is_child')
|
|
|
|
|
{
|
|
|
|
|
$('#current_flow').hide();
|
|
|
|
|
$('#child_flow').show();
|
|
|
|
|
}else
|
|
|
|
|
{
|
|
|
|
|
$('#current_flow').show();
|
|
|
|
|
$('#child_flow').hide();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//返回步骤
|
|
|
|
|
$('input[name="child_after"]').on('click',function(){
|
|
|
|
|
|
|
|
|
|
if($(this).val()==2)
|
|
|
|
|
{
|
|
|
|
|
$("#child_back_id").show();
|
|
|
|
|
}else
|
|
|
|
|
{
|
|
|
|
|
$("#child_back_id").hide();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//步骤select 2
|
|
|
|
|
$('#process_multiple').multiselect2side({
|
|
|
|
|
selectedPosition: 'left',
|
|
|
|
|
moveOptions: true,
|
|
|
|
|
labelTop: '最顶',
|
|
|
|
|
labelBottom: '最底',
|
|
|
|
|
labelUp: '上移',
|
|
|
|
|
labelDown: '下移',
|
|
|
|
|
labelSort: '排序',
|
|
|
|
|
labelsx: '<i class="icon-ok"></i> 下一步步骤',
|
|
|
|
|
labeldx: '<i class="icon-list"></i> 备选步骤',
|
|
|
|
|
autoSort: false,
|
|
|
|
|
autoSortAvailable: true,
|
|
|
|
|
minSize: 7
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//选人方式
|
|
|
|
|
$("#auto_person_id").on('change',function(){
|
|
|
|
|
var apid = $(this).val();
|
|
|
|
|
if(apid>0)
|
|
|
|
|
{
|
|
|
|
|
$('#auto_unlock_id').show();
|
|
|
|
|
}else
|
|
|
|
|
{
|
|
|
|
|
$('#auto_unlock_id').hide();
|
|
|
|
|
}
|
|
|
|
|
if(apid==4)//指定用户
|
|
|
|
|
{
|
|
|
|
|
$("#auto_person_4").show();
|
|
|
|
|
}else
|
|
|
|
|
{
|
|
|
|
|
$("#auto_person_4").hide();
|
|
|
|
|
}
|
|
|
|
|
if(apid==5)//指定角色
|
|
|
|
|
{
|
|
|
|
|
$("#auto_person_5").show();
|
|
|
|
|
}else
|
|
|
|
|
{
|
|
|
|
|
$("#auto_person_5").hide();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*---------表单字段 start---------*/
|
|
|
|
|
//可写字段
|
|
|
|
|
function write_click(e){
|
|
|
|
|
var id = $(e).attr('key');
|
|
|
|
|
if(!$(e).attr('disabled')){
|
|
|
|
|
if($(e).attr('checked')){
|
|
|
|
|
$('#secret_'+id).attr({'disabled':true,'checked':false});
|
|
|
|
|
} else {
|
|
|
|
|
$('#secret_'+id).removeAttr('disabled').attr('checked',false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//保密字段
|
|
|
|
|
function secret_click(e){
|
|
|
|
|
var id = $(e).attr('key');
|
|
|
|
|
|
|
|
|
|
if(!$(e).attr('disabled')){
|
|
|
|
|
if($(e).attr('checked')){
|
|
|
|
|
$('#write_'+id).attr({'disabled':true,'checked':false});
|
|
|
|
|
} else {
|
|
|
|
|
$('#write_'+id).removeAttr('disabled').attr('checked',false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//checkbox全选及反选操作
|
|
|
|
|
function icheck(ac,op){
|
|
|
|
|
if(ac=='write'){
|
|
|
|
|
$("input[name='write_fields[]']").each(function(){
|
|
|
|
|
if(this.disabled !== true){
|
|
|
|
|
this.checked = op;
|
|
|
|
|
}
|
|
|
|
|
write_click(this);
|
|
|
|
|
})
|
|
|
|
|
} else if(ac == 'secret') {
|
|
|
|
|
$("input[name='secret_fields[]']").each(function(){
|
|
|
|
|
if(this.disabled !== true){
|
|
|
|
|
this.checked = op;
|
|
|
|
|
}
|
|
|
|
|
secret_click(this);
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$('#write').click(function(){
|
|
|
|
|
if($(this).attr('checked')){
|
|
|
|
|
icheck('write',true);
|
|
|
|
|
$('#secret').attr({'disabled':true,'checked':false});
|
|
|
|
|
$('#check').attr('checked',false).removeAttr('disabled');
|
|
|
|
|
} else {
|
|
|
|
|
icheck('write',false);
|
|
|
|
|
$('#secret').attr('checked',false).removeAttr('disabled');
|
|
|
|
|
$('#check').attr({'disabled':true,'checked':false});
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
$('#secret').click(function(){
|
|
|
|
|
if($(this).attr('checked')){
|
|
|
|
|
icheck('secret',true)
|
|
|
|
|
$('#write').attr({'disabled':true,'checked':false});
|
|
|
|
|
} else {
|
|
|
|
|
icheck('secret',false);
|
|
|
|
|
$('#write').attr('checked',false).removeAttr('disabled');
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
$("input[name='write_fields[]']").click(function(){
|
|
|
|
|
write_click(this);
|
|
|
|
|
$('#write').removeAttr('disabled');
|
|
|
|
|
if($('#write').attr('checked')==true){
|
|
|
|
|
$('#write').attr('checked',false)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
$("input[name='secret_fields[]']").click(function(){
|
|
|
|
|
secret_click(this);
|
|
|
|
|
$('#secret').removeAttr('disabled');
|
|
|
|
|
if($('#secret').attr('checked')==true){
|
|
|
|
|
$('#secret').attr('checked',false)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
/*---------表单字段 end---------*/
|
|
|
|
|
|
|
|
|
|
/*样式*/
|
|
|
|
|
$('.colors li').click(function() {
|
|
|
|
|
var self = $(this);
|
|
|
|
|
if (!self.hasClass('active')) {
|
|
|
|
|
self.siblings().removeClass('active');
|
|
|
|
|
}
|
|
|
|
|
var color = self.attr('org-data') ? self.attr('org-data') : '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var parentDiv = self.parents(".colors");
|
|
|
|
|
var orgBind = parentDiv.attr("org-bind");
|
|
|
|
|
if(orgBind == 'style_icon')
|
|
|
|
|
{
|
|
|
|
|
/*$("#"+orgBind).css({ color:'#fff',background: color });*/
|
|
|
|
|
$("#"+orgBind).val(color);
|
|
|
|
|
$("#style_icon_preview").attr("class",color + " icon-white");
|
|
|
|
|
}else//颜色
|
|
|
|
|
{
|
|
|
|
|
$("#"+orgBind).css({ color:'#fff',background: color });
|
|
|
|
|
$("#"+orgBind).val(color);
|
|
|
|
|
}
|
|
|
|
|
self.addClass('active');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//表单提交前检测
|
|
|
|
|
$("#flow_attribute").submit(function(){
|
|
|
|
|
//条件检测
|
|
|
|
|
var cond_data = $("#process_condition").val();
|
|
|
|
|
if( cond_data !== ''){
|
|
|
|
|
var pcarr = cond_data.split(',');
|
|
|
|
|
for( var i = 0;i < pcarr.length;i++ ){
|
|
|
|
|
if( pcarr[i]!=='' ){
|
|
|
|
|
var obj = _id('conList_'+pcarr[i]);
|
|
|
|
|
if(obj.length>0){
|
|
|
|
|
var constr = '';
|
|
|
|
|
for( var j=0;j<obj.options.length;j++){
|
|
|
|
|
constr += obj.options[j].value+'@leipi@';
|
|
|
|
|
if(!fnCheckExp(constr)){
|
|
|
|
|
alert("条件表达式书写错误,请检查括号匹配");
|
|
|
|
|
$('#condition').click();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
_id('process_in_set_'+pcarr[i]).value = constr;
|
|
|
|
|
} else {
|
|
|
|
|
_id('process_in_set_'+pcarr[i]).value = '';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//条件设置
|
|
|
|
|
fnSetCondition();
|
|
|
|
|
|
|
|
|
|
});
|