SegControl_wev8.js 13.4 KB
if(typeof(MEC_NS) == 'undefined'){
	MEC_NS = {};
}

MEC_NS.SegControl = function(type, id, mecJson){
	this.type = type;
	if(!id){
		id = new UUID().toString();
	}
	this.id = id;
	if(!mecJson){
		mecJson = this.getDefaultMecJson();
	}
	this.mecJson = mecJson;
};

/*获取id。 必需的方法*/
MEC_NS.SegControl.prototype.getID = function(){
	return this.id;
};

/*获取设计的html, 页面上怎么显示控件完全依赖于此方法。 必需的方法*/
MEC_NS.SegControl.prototype.getDesignHtml = function(){
	return getDesignHtml(this);
};

/*获取构建属性编辑窗体的html,添加和单击控件后会调用此方法,由此方法去构建属性编辑窗体。 必需的方法*/
MEC_NS.SegControl.prototype.getAttrDlgHtml = function(){
	var theId = this.id;
	
	var htm = "<div id=\"MADSegControl_"+theId+"\">";
	/*
	htm += "<div class=\"title\">";
	htm += SystemEnv.getHtmlNoteName(5087);  //分段信息
	htm += "<div class=\"add-before\" data-autobind data-scroll=\"bottom\" onclick=\"SegControl_AddBtn('"+theId+"');\">"+SystemEnv.getHtmlNoteName(3518)+"</div>";  //添加
	htm += "</div>";
	*/
	htm += "<div id=\"MADSegControl_Btn_"+theId+"\" class=\"form-group SegControl_Btn_Container\">";
	
	htm += "<table class=\"table\">";
	htm += "<thead>";
	htm += "<tr>";
	htm += "<td width='20px'></td>";
	htm += "<td width='calc(100% - 190px)'>"+SystemEnv.getHtmlNoteName(4141)+"</td>"; //名称

	htm += "<td width='73px' style=\"position:relative;\">"+SystemEnv.getHtmlNoteName(6021)+"<div class=\"helper sqlhelper\" style=\"top:7px;right:10px\" for=\"default\">?</div></td>";//默认激活
	htm += "<td width='42px'>"+SystemEnv.getHtmlNoteName(3621)+"</td>";//提示
	htm += "<td width='35px'>"+SystemEnv.getHtmlNoteName(4634)+"</td>"; //脚本
	htm += "</tr>";
	htm += "</thead>";
	htm += "</table>" ;
	
	htm += "<ul ></ul>";

	htm += "</div>";
	htm += "<div class=\"bottom\"><div class=\"save-btn\" onclick=\"refreshMecDesign('"+theId+"');\">"+SystemEnv.getHtmlNoteName(3451)+"</div></div>";  //确定
	htm += "</div>";
	htm += "<div class=\"MAD_Warn\" style=\"display: none;\">"+SystemEnv.getHtmlNoteName(4397)+"</div>";  //按钮配置项不得少于1个
	htm += "<div class=\"MAD_Alert\">"+SystemEnv.getHtmlNoteName(4115)+"</div>";  //已生成到布局 

	htm += "<div class=\"row bottom MADNP_Bottom\">";
	htm += "<div class=\"col-12 tr\"><span class=\"add-before add-item\" data-scroll=\"bottom\" onclick=\"SegControl_AddBtn('"+theId+"');\">"+SystemEnv.getHtmlNoteName(3518)+"</span></div>" ; //添加
	htm += "</div>";
	return htm;
};

MEC_NS.SegControl.prototype.afterDesignHtmlBuild = function () {
	var $con = $("#NMEC_" + this.id);
	
	$con.find(".wev-numremind").html("N");
};

/*构建属性编辑窗体完成后调用此方法,主要用于一些必须要使用js对页面进行后置操作时,无需要此方法可至空。 不必需的方法,有此方法系统自动调用*/
MEC_NS.SegControl.prototype.afterAttrDlgBuild = function(){
	var theId = this.id;
	var mecHandler = MECHandlerPool.getHandler(theId);
	
	var btn_datas = this.mecJson["btn_datas"];
	for(var i = 0; i < btn_datas.length; i++){
		SegControl_AddBtnToPage(theId, btn_datas[i]);
	}
	
	$("#MADSegControl_"+theId).checkbox();
	var activeIndex = this.mecJson['activeIndex'];
	if(activeIndex>=0){
		$("#MADSegControl_"+theId).find("input[type='checkbox'][name='isdefault']:eq("+this.mecJson['activeIndex']+")").checked();
	}
	$("#MADSegControl_Btn_"+theId + " > ul").sortable({
		revert: false,
		axis: "y",
		items: "li",
		handle: ".bemove",
		update: function(){
			mecHandler.autobind.update();
		}
	});

	var $attrContainer = $("#MAD_"+theId);
	require(["modal"], function(modal) {
		var sqlTip = SystemEnv.getHtmlNoteName(6020);//默认激活勾选会在页面加载后执行相应脚本,如果都不勾选则不执行
		var indexArr = [];
		$(".helper", $attrContainer).on("click", function(e) {
			indexArr.push(modal.tips(sqlTip, $(this), {
				area: ['250px', ''],
				placement: "left"
			}));
			e.stopPropagation();
		});

		$("body").on("click", function(e) {
			var $target = $(e.target);
			var layero = $target.parents(".layui-layer-tips");

			if(layero.length) return;
			
			indexArr.map(function (v) {
				modal.close(v);
			});
		});
	});
};

/*获取JSON*/
MEC_NS.SegControl.prototype.getMecJson = function(){
	var theId = this.id;
	var $attrContainer = $("#MAD_" + theId);
	
	this.mecJson["id"] = theId;
	this.mecJson["mectype"] = this.type;
	
	if($attrContainer.length > 0){
		var btn_datas = [];
		var $defaultCheckboxs = $attrContainer.find("input[type='checkbox'][name='isdefault']");

		this.mecJson["activeIndex"] = -1;

		for (var i = 0; i < $defaultCheckboxs.size(); i++) {
			if ($defaultCheckboxs[i].checked) {
				this.mecJson["activeIndex"] = i;
				break;
			}
		}
		
		var $li = $(".SegControl_Btn_Container > ul > li", $attrContainer);
		$li.each(function(){
			var liId = $(this).attr("id");
			if(liId && liId != ""){
				var btnId = liId.substring("li_".length);
				var segName = MLanguage.getValue($("input[name='segName']", $(this)));
				var segScript = $("input[name='segScript']", $(this)).val();
				
				var btn_item = {};
				btn_item["segId"] = btnId;
				btn_item["segName"] = segName;
				btn_item["segScript"] = segScript;
				
				btn_item["isremind"] = $("input[name='isremind']", $(this)).is(':checked') ? "1" : "0";
				btn_item["remindtype"] = $("input[name='remindtype']", $(this)).val();
				btn_item["remindsql"] = $("input[name='remindsql']", $(this)).val();
				btn_item["reminddatasource"] = $("input[name='reminddatasource']", $(this)).val();
				btn_item["remindjavafilename"] = $("input[name='remindjavafilename']", $(this)).val();
				btn_item["remindapiconfig"] = $("input[name='remindapiconfig']", $(this)).val();
				
				btn_datas.push(btn_item);
			}
		});
		
		this.mecJson["btn_datas"] = btn_datas;
	}
	return this.mecJson;
};

MEC_NS.SegControl.prototype.getCopyMecJson = function (mecJson) {
	if (mecJson.btn_datas) {
		mecJson.btn_datas.forEach(function (data) {
			data.segId = new UUID().toString();
		});
	}  
};

MEC_NS.SegControl.prototype.getDefaultMecJson = function(){
	return {
		id: this.id,
		mectype: this.type,
		btn_datas: [{
			segId: new UUID().toString(),
			segName: SystemEnv.getHtmlNoteName(5214), // 所有
			segScript: ''
		}, {
			segId: new UUID().toString(),
			segName: SystemEnv.getHtmlNoteName(3615), // 未完成
			segScript: ''
		}, {
			segId: new UUID().toString(),
			segName: SystemEnv.getHtmlNoteName(3616), // 已完成
			segScript: ''
		}]
	};
};

function SegControl_AddBtn(mec_id){
	
	var btn_data = {};
	btn_data["segId"] = new UUID().toString();
	btn_data["segName"] = "";
	btn_data["segScript"] = "";
	
	SegControl_AddBtnToPage(mec_id, btn_data);
	
	var mecHandler = MECHandlerPool.getHandler(mec_id);
	var btn_datas = mecHandler.mecJson["btn_datas"];
	btn_datas.push(btn_data);
	mecHandler.autobind.update();
}

function SegControl_AddBtnToPage(mec_id, btn_data){
	var mecHandler = MECHandlerPool.getHandler(mec_id);
	var $btnContainer = $("#MADSegControl_Btn_"+mec_id);
	
	var $ul = $("ul", $btnContainer);
	var $li = $("<li id=\"li_"+btn_data["segId"]+"\"></li>");
	var htm = "<table class=\"table\" style=\"margin:0\">";
	    htm += "<tbody>";
	    	htm += "<tr>";
	    		htm += "<td class=\"bemove\" width=\"20px\"></td>";
			    htm += "<td width=\"calc(100% - 140px)\" valign=\"middle\">";
			    htm += "<input name=\"segName\" type=\"text\" data-autobind class=\"form-control\" style=\"width:calc(100% - 10px);\" placeholder=\""+SystemEnv.getHtmlNoteName(4177)+"\" "+MLanguage.ATTR+"/>";  //按钮名称
			    htm += "</td>";
			    
			    htm += "<td width=\"70px\" style=\"padding-left:10px\">"
			    htm += "<input name=\"isdefault\" type=\"checkbox\" value=\"1\" id=\"defaultcheck_"+btn_data["segId"]+"\" onclick=\"SegControl_DefaultChange(this);\"/>"
			    htm += "</td>"
			    
			    /*
			    htm += "<td width=\"90px\">";
					htm += "<div class=\"segbtn_click_desc click-control\">";
						htm += "<input name=\"segScript\" type=\"hidden\" value=\"\"/>";
						htm += SystemEnv.getHtmlNoteName(4178);  //单击事件
					htm += "</div>";
				htm += "</td>";
				*/
				
				htm += "<td width=\"30px\" style=\"position: relative;\">";
				htm += "<input name=\"isremind\" type=\"checkbox\" value=\"1\" onclick=\"SegControl_IsremindChange(this);\"/>" ;
				htm += "<input type=\"hidden\" name=\"remindtype\"/>";
				htm += "<input type=\"hidden\" name=\"remindsql\"/>";
				htm += "<input type=\"hidden\" name=\"reminddatasource\"/>";
				htm += "<input type=\"hidden\" name=\"remindjavafilename\"/>";
				htm += "<input type=\"hidden\" name=\"remindapiconfig\"/>";
				htm += "<div class=\"numremindEditFlag right\" onclick=\"SegControl_NumremindEdit(this);\"></div>";
				//htm += "</td><td width=\"22px\" ></td>";
					
				htm += "<td width=\"30px\" style=\"position:relative;\">"
				htm += "<div class='segbtn_click_desc click-control active' style='border:0;height: 29px'>"
				htm += "<input name='segScript' id='segScript"+ btn_data["segId"] +"' type='hidden' />"
				htm += "</div>"
				htm += "<span class='del-before delFlag'  style='right: 10px;' onclick=\"SegControl_deleteOneBtnOnPage('" + mec_id + "', '"+btn_data["segId"]+"')\"></span>"
				+ "</td>"
				
				/*
				htm += "<td width=\"24px\" align=\"right\">";
					htm += "<span class=\"del-after2\" onclick=\"SegControl_deleteOneBtnOnPage('"+mec_id+"','"+btn_data["segId"]+"');\"></span>";
				htm += "</td>";
				*/
				
			htm += "</tr>";
		htm += "</tbody>";
	htm += "</table>";
	$li.html(htm);
	$ul.append($li);
	
	MLanguage.setValue($("input[name='segName']", $li), btn_data["segName"]);
	$("input[name='segScript']", $li)[0].value = btn_data["segScript"];
	SL_ChangeStyle($(".click-control", $li), btn_data["segScript"]);

	var isremind = Mec_FiexdUndefinedVal(btn_data["isremind"]);
	if(isremind == "1"){
		var $isremind = $("input[name='isremind']", $li);
		$isremind.attr("checked","checked");
		SegControl_IsremindChange($isremind[0]);
	}
	$("input[name='remindtype']", $li).val(Mec_FiexdUndefinedVal(btn_data["remindtype"]));
	$("input[name='remindsql']", $li).val(Mec_FiexdUndefinedVal(btn_data["remindsql"]));
	$("input[name='reminddatasource']", $li).val(Mec_FiexdUndefinedVal(btn_data["reminddatasource"]));
	$("input[name='remindjavafilename']", $li).val(Mec_FiexdUndefinedVal(btn_data["remindjavafilename"]));
	$("input[name='remindapiconfig']", $li).val(Mec_FiexdUndefinedVal(btn_data["remindapiconfig"]));
	
	$(".segbtn_click_desc", $li).click(function(){
		var $this = $(this);
		var $segScript = $("input[name='segScript']", $this);
		SL_AddScriptToField($segScript);
	});
	
	$li.checkbox({
		onClick: function () { 
			mecHandler.autobind && mecHandler.autobind.update();
		}
	}).MLanguage();
}

function SegControl_IsremindChange(cbObj){
	setTimeout(function(){	//checkbox用了插件,不延时checkbox的checked状态获取不准确
		var $numremindEditFlag = $(cbObj).closest("td").find(".numremindEditFlag");
		if(cbObj.checked){
			$numremindEditFlag.show();
		}else{
			$numremindEditFlag.hide();
		}
	},100);
}

function SegControl_DefaultChange(cbObj){
	if(cbObj.checked){
		var $defaultCheckboxs = $(cbObj).closest("ul").find("input[type='checkbox'][name='isdefault']");
		for(var i = 0;i < $defaultCheckboxs.size();i++ ){
			if($defaultCheckboxs[i].id != cbObj.id){
				$($defaultCheckboxs[i]).attr('checked',false);
			}
		}
	}
}

function SegControl_NumremindEdit(obj){
	var $remindtype = $(obj).siblings("input[name='remindtype']");
	var $remindsql = $(obj).siblings("input[name='remindsql']");
	var $reminddatasource = $(obj).siblings("input[name='reminddatasource']");
	var $remindjavafilename = $(obj).siblings("input[name='remindjavafilename']");
	var $remindapiconfig = $(obj).siblings("input[name='remindapiconfig']");
	
	var remindtypeV = $remindtype.val();
	
	var remindsqlV = $remindsql.val();
	remindsqlV = $m_encrypt(remindsqlV);// 系统安全编码
	
	var reminddatasourceV = $reminddatasource.val();
	var remindjavafilenameV = $remindjavafilename.val();
	var remindapiconfigV = compressByLZ($remindapiconfig.val());
	
	var url = "/mobilemode/admin/dialog/numremind.jsp?remindtype="+remindtypeV+"&remindsql="+remindsqlV+"&reminddatasource="+reminddatasourceV+"&remindjavafilename="+remindjavafilenameV+"&remindapiconfig="+remindapiconfigV;
	var dlg = top.createTopDialog();//获取Dialog对象
	dlg.Model = true;
	dlg.Width = 500;//定义长度
	dlg.normalDialog = false;
	dlg.Height = 255;
	dlg.URL = url;
	dlg.Title = SystemEnv.getHtmlNoteName(4116);  //数字提醒
	dlg.show();
	dlg.hookFn = function(result){
		$remindtype.val(result["remindtype"]);
		$remindsql.val(result["remindsql"]);
		$reminddatasource.val(result["reminddatasource"]);
		$remindjavafilename.val(result["remindjavafilename"]);
		$remindapiconfig.val(result["remindapiconfig"]);
	};
}

function SegControl_deleteOneBtnOnPage(mec_id, segId){
	var mecHandler = MECHandlerPool.getHandler(mec_id);
	var $btnContainer = $("#MADSegControl_Btn_"+mec_id);
	
	var $li = $("li", $btnContainer);
	if($li.length <= 1){
		$("#MAD_"+mec_id+" .MAD_Warn").fadeIn(1000, function(){
			$(this).fadeOut(2000);
		});
		return;
	}
	
	var msg = SystemEnv.getHtmlNoteName(4175);  //确定删除吗?
	confirm(msg, function() {
		var mecHandler = MECHandlerPool.getHandler(mec_id);
		var btn_datas = mecHandler.mecJson["btn_datas"];
		
		var index = -1;
		for(var i = 0; i < btn_datas.length; i++){
			var data = btn_datas[i];
			if(data["segId"] == segId){
				index = i;
				break;
			}
		}
		if(index != -1){
			btn_datas.splice(index, 1);
		}
		
		$("#li_" + segId).remove();
		
		mecHandler.autobind.update();
	});
}