<?php include(mvc::$cfg['PATH_TPL'].'public/header.php');?>
<?php include(mvc::$cfg['PATH_TPL'].'qg/object_common.php');?>
<link href="<?php echo mvc::$cfg['URL_STATIC'];?>css/plugins/iCheck/custom.css" rel="stylesheet">
<link href="<?php echo mvc::$cfg['URL_STATIC'];?>css/plugins/datapicker/datepicker3.css" rel="stylesheet">
<!--BEGIN FROM DIV-->
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h2><span class="form_title"></span> <small></small></h2>
</div>
<div class="ibox-content">
<!-- 参考 https://jqueryvalidation.org/
required:true               必输字段
remote:"remote.php"         使用ajax方法调用remote.php验证输入值, 返回'false'验证不通过，返回'true'验证通过
email:true                  必须输入正确格式的电子邮件
url:true                    必须输入正确格式的网址
date:true                   必须输入正确格式的日期，日期校验ie6出错，慎用
dateISO:true                必须输入正确格式的日期(ISO)，例如：2009-06-23，1998/01/22 只验证格式，不验证有效性
number:true                 必须输入合法的数字(负数，小数)
digits:true                 必须输入整数
creditcard:true             必须输入合法的信用卡号
equalTo:"#password"         输入值必须和#password相同
accept:                     输入拥有合法后缀名的字符串（上传文件的后缀）
maxlength:5                 输入长度最多是5的字符串(汉字算一个字符)
minlength:10                输入长度最小是10的字符串(汉字算一个字符)
rangelength:[5,10]          输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符)
range:[5,10]                输入值必须介于 5 和 10 之间
max:5                       输入值不能大于5
min:10                      输入值不能小于10
$("#form").validate({
	messages:{
		f_username:{remote:"用户名已经被注册"},
	}
});
-->	
	<form id="form" method="post" class="form-horizontal">
		<input type="hidden" name="f_o_id" id="f_o_id" class="form-control" value="0" required minlength="0" maxlength="10" >
		<div class="editorParent hidden">
			<div class="form-group has-warning">
				<label class="col-sm-2 control-label">上级</label>
				<div class="col-sm-10">
					<div class="input-group">
						<input type="hidden" name="f_o_parent_id" id="f_o_parent_id" value="-1" class="form-control" required minlength="0" maxlength="10" >
						<input type="text" name="o_parent" id="o_parent" readonly="true" class="form-control" required minlength="0" maxlength="100" >
						<span class="input-group-btn"> <button type="button" class="btn btn-success disabled_field" id="chooseSubject"><i class="fa fa-search"></i></button> </span>
					</div>
					
				</div>
			</div>
		</div>
		<div class="form-group has-warning">
			<label class="col-sm-2 control-label">编码</label>
			<div class="col-sm-10">
				<div class="input-group">
					<input type="text" name="f_o_code" id="f_o_code" class="form-control disabled_field" required minlength="0" maxlength="32" >
					<span class="input-group-btn"> <button type="button" class="btn btn-success disabled_field" id="autocode">获取下一个 </button> </span>
				</div>
			</div>
		</div>
		<div class="form-group has-warning">
			<label class="col-sm-2 control-label">名称</label>
			<div class="col-sm-10">
				<input type="text" name="f_o_name" id="f_o_name" class="form-control" required minlength="0" maxlength="100" >
			</div>
		</div>
		<div class="editorExt hidden"></div>
		<div class="hr-line-dashed"></div>
		<div class="form-group">
			<div class="col-sm-4 col-sm-offset-2">
				<button class="btn btn-primary" type="button" tabindex=3 id="save"><i class="fa fa-save"></i> 保存</button>
				<button class="btn btn-white" type="button" tabindex=4 id="view">预览</button>
				<button class="btn btn-white" type="button" tabindex=1 id="close" onclick="javascript:parent.layer.close(parent.layer.getFrameIndex(window.name));">取消</button>
			</div>
		</div>
	</form>
</div>
</div>
</div>
</div>
<!--END FROM DIV-->
<!--BEGIN TPL-->
<script id="tpl_form_text" type="text/x-jquery-tmpl">
	<div class="form-group ${has_warning}">
		<label class="col-sm-2 control-label">${oe_name}</label>
		<div class="col-sm-10">
			<input type="text" name="oe_${oe_id}" id="oe_${oe_id}" class="disabled_field form-control" ${required} maxlength="${oe_lenght}" ${typecheck}>
		</div>
	</div>
</script>
<script id="tpl_form_select" type="text/x-jquery-tmpl">
	<div class="form-group ${has_warning}">
		<label class="col-sm-2 control-label">${oe_name}</label>
		<div class="col-sm-10">
			<select class="form-control m-b" name="oe_${oe_id}" id="oe_${oe_id}" class="disabled_field" ${required}></select>
		</div>
	</div>
</script>
<script id="tpl_form_checkbox" type="text/x-jquery-tmpl">
	<div class="form-group ${has_warning}">
		<label class="col-sm-2 control-label">${oe_name}</label>
		<div class="col-sm-10">
		{{each(i,v) items}}
			<label class="checkbox-inline i-checks"><input type="checkbox" name="oe_${oe_id}" value="${v.value}" class="disabled_field" ${required} ${v.checked}>${v.text}</label>
		{{/each}}
		</div>
	</div>
</script>
<script id="tpl_form_radio" type="text/x-jquery-tmpl">
	<div class="form-group ${has_warning}">
		<label class="col-sm-2 control-label">${oe_name}</label>
		<div class="col-sm-10">
		{{each(i,v) items}}
			<label class="radio-inline i-checks"><input type="radio" name="oe_${oe_id}" value="${v.value}" class="disabled_field" ${v.checked} ${required}>${v.text}</label>
		{{/each}}
		</div>
	</div>
</script>
<script id="tpl_form_textarea" type="text/x-jquery-tmpl">
	<div class="form-group ${has_warning}">
		<label class="col-sm-2 control-label">${oe_name}</label>
		<div class="col-sm-10">
			<textarea name="oe_${oe_id}" id="oe_${oe_id}" ${required} maxlength="${oe_lenght}" rows="5" class="disabled_field" style="width:100%"></textarea>
		</div>
	</div>
</script>
<script id="tpl_form_date" type="text/x-jquery-tmpl">
	<div class="form-group ${has_warning}">
		<label class="col-sm-2 control-label">${oe_name}</label>
		<div class="col-sm-10">
			<div class="input-group date">
				<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
				<input type="text" class="form-control" name="oe_${oe_id}" id="oe_${oe_id}" class="disabled_field form-control" ${required} ${typecheck}>
			</div>
		</div>
	</div>
</script>
<!--END TPL-->
<script src="<?php echo mvc::$cfg['URL_STATIC'];?>js/plugins/iCheck/icheck.min.js"></script>
<script src="<?php echo mvc::$cfg['URL_STATIC'];?>js/plugins/validate/jquery.validate.min.js"></script>
<script src="<?php echo mvc::$cfg['URL_STATIC'];?>js/plugins/validate/messages_zh.min.js"></script>
<script src="<?php echo mvc::$cfg['URL_STATIC'];?>js/qg/qgUi.tree.js?v=1.0.0"></script>
<script src="<?php echo mvc::$cfg['URL_STATIC'];?>js/plugins/datapicker/bootstrap-datepicker.js"></script>
<script type="text/javascript" defer>
var op            = "<?php echo $_REQUEST['op']?>";
var key           = "<?php echo $_REQUEST['key']?>";
var parentId      = "<?php echo $_REQUEST['parentId']?>";
var level      = "<?php echo $_REQUEST['level']?>";
var validator     = null; //验证
//获取上级页面
var ele = (window.top).document.querySelectorAll('[data-id="' + urls.list+'?parentId='+parentId + '"]')[1];
var listIframe = parent;
if(ele && ele.contentWindow) listIframe = ele.contentWindow;
</script>

<script type="text/javascript" defer> 
$(document).ready(function () {
	$('#close').focus(); //初始焦点
	iCheck();//美化 单选与复选框
	if(op=='add') $('#view').hide(); //添加模式时，隐藏预览功能
	$('#save').on("click", gotoSave);
	$('#view').on("click", gotoView);
	$('#chooseSubject').on("click", gotoChooseSubject);
	$('#autocode').on("click", autocode);
	if(key){
		editInit(key); //给表单赋值
	}else{
		addInit(parentId); 
	}
	//BEGIN 表单验证
	validator = $("#form").validate({
		ignore:":hidden:not(select)",
		rules:{
			f_o_code: {
				required: true,
				remote:{
					url: urls.remote,
					type:'post',
					data:{
						field:'o_code',
						parentId:parentId,
						key:function(){ return $("input[name='f_o_id']").val(); },
						value:function(){ return $("input[name='f_o_code']").val(); },
					}
				}
			},
			/*
			f_o_name: {
				required: true,
				remote:{
					url: urls.remote,
					type:'post',
					data:{
						field:'o_name',
						parentId:parentId,
						key:function(){ return $("input[name='f_o_id']").val(); },
						value:function(){ return $("input[name='f_o_name']").val(); },
					}
				}
			},*/
		},//rules
		messages:{
			f_o_code: {remote:'编码已被使用'},
			f_o_name: {remote:'名称已被使用'}
		},
		errorPlacement : function(error, element) {
			if(error[0].innerText!='')
				layer.tips(error[0].innerText+'&nbsp;', $(element).closest('.form-group').find('.col-sm-10'),{tips: 4,tipsMore: true});
		},
	});//END 表单验证
});
//按键处理
$(document).keydown(function(e){
	if(e.keyCode=='27'){ //Esc
		parent.layer.close(parent.layer.getFrameIndex(window.name)); //关闭当前弹层
	}else if(e.shiftKey && e.keyCode=='86'){ //shift + V
		gotoView();
	}else if(e.shiftKey && e.keyCode=='83'){ //shift + S
		gotoSave();
	}
}); 
/**方法******************************************/
//编辑时 初始化
function editInit(key){
	createExt(key,'edit');
}
//添加时 初始化
function addInit(key){
	$('#f_o_parent_id').on("blur", function(e){
		//根据选择的上级类别，判断有没有扩展参数
		$('.editorExt').addClass('hidden').hide();
		qg.ajax.get(urls.rowByKey,{"key":$('#f_o_parent_id').val(),"type":"add"},function(data){
			if(data.o_level==level) $('.editorExt').removeClass('hidden').show();
		});
	});
	createExt(parentId,'add');
}
//创建扩展编辑
//type:add:edit
var createExt = function(key,type){
	qg.ajax.get(urls.rowByKey,{'key':key,'type':type},function(data){
		if(type=='add'){
			$('.form_title').text('添加');
			if(data.root.o_children_level>0){
				$('.editorParent').removeClass('hidden').show();
				//添加时，默认上一次选择
				var cache = qg.local.get('chooseWindow'+parentId);
				if(cache){
					$('#f_o_parent_id').val(cache.key);
					$('#o_parent').val(cache.name);
				}else{
					$('#f_o_parent_id').val(data.o_id);
					$('#o_parent').val(data.o_name);
				}
				$('#f_o_parent_id').blur();//去触发blur事件
			}else{ //如果配置中没有子树
				//添加时，默认当前子树根节点
				$('#f_o_parent_id').val(data.o_id);
				$('#o_parent').val(data.o_name);
				$('.editorExt').removeClass('hidden').show();
			}
		}else if(type=='edit'){
			qgui.form.setValues('#form',data,'f_'); 
			$('.form_title').text(data.o_name);
			if(!data.o_parent) data.o_parent = '根';
			//子节点才可以编辑扩展内容
			if(data.o_rgt*1-data.o_lft*1==1) $('.editorExt').removeClass('hidden').show();
			$("#form input[name='o_parent']").val(data.o_parent);
		}
		//BEGIN 存在子树根
		if(data.root){
			//当前子树如果配置了层级，则显示选择父节点
			if(data.root.o_children_level>0){
				$('.editorParent').removeClass('hidden').show();
			}
			//BEGIN 创建表单
			$.each(data.root.ext,function(i,ext){
				ext.required = (ext.oe_required=='1') ? 'required' : '';
				ext.has_warning = (ext.oe_required=='1') ? 'has-warning' : '';
				if(ext.oe_type=='int'){
					ext.typecheck = "digits='true'";
				}else if(ext.oe_type=='decimal'){
					ext.typecheck = "number='true'";
				}else if(ext.oe_type=='date'){
					ext.typecheck = "dateISO='true'";
				}
				if(ext.oe_editor == 'text'){
					$("#tpl_form_text").tmpl(ext).appendTo(".editorExt");
				}else if(ext.oe_editor == 'textarea'){
					$("#tpl_form_textarea").tmpl(ext).appendTo(".editorExt");
				}else if(ext.oe_editor == 'select'){
					$("#tpl_form_select").tmpl(ext).appendTo(".editorExt");
					if(ext.oe_editor_sche){
						qg.ajax.get(urls.getChildrens,{"key":ext.oe_editor_sche,"level":ext.oe_editor_sche_level},function(sche){
							$('#oe_'+ext.oe_id).append(new Option(sche.o_name, ''));
							$.each(sche.childres,function(i,v){
								//$(id).append(new Option(res.data[i].ur_name,res.data[i].ur_id,true,true));
								$('#oe_'+ext.oe_id).append(new Option(v.o_name, v.o_id));
							});
						});
					}
				}else if(ext.oe_editor == 'checkbox'){
					if(ext.oe_editor_sche){
						qg.ajax.get(urls.getChildrens,{"key":ext.oe_editor_sche,"level":ext.oe_editor_sche_level},function(sche){
							ext.items = [];
							$.each(sche.childres,function(i,v){
								ext.items.push({value:v.o_id, text:v.o_name});
							});
							$("#tpl_form_checkbox").tmpl(ext).appendTo(".editorExt");
							if(type== 'edit' && data.extvals) qgui.form.setValues('#form',data.extvals,'oe_'); //创建不同步，需要即时调用
							if(data.voucher_used==1 && data.root.o_id==200){
								$('.disabled_field').attr("disabled",true);
							}
							iCheck();
						});
					}
				}else if(ext.oe_editor == 'radio'){
					if(ext.oe_editor_sche){
						qg.ajax.get(urls.getChildrens,{"key":ext.oe_editor_sche,"level":ext.oe_editor_sche_level},function(sche){
							ext.items = [];
							$.each(sche.childres,function(i,v){
								ext.items.push({value:v.o_id, text:v.o_name});
							});
							$("#tpl_form_radio").tmpl(ext).appendTo(".editorExt");
							if(type== 'edit' && data.extvals) qgui.form.setValues('#form',data.extvals,'oe_'); //创建不同步，需要即时调用
							if(data.voucher_used==1 && data.root.o_id==200){
								$('.disabled_field').attr("disabled",true);
							}
							iCheck();
						});
					}
				}else if(ext.oe_editor == 'date'){
					$("#tpl_form_date").tmpl(ext).appendTo(".editorExt");
					$('#oe_'+ext.oe_id).parent().datepicker({format: "yyyy-mm-dd", todayBtn: 'linked',todayHighlight: true, autoclose: true});
				}
			});//END 创建表单
			//BEGIN 扩展信息赋值
			if(type== 'edit' && data.extvals){
				qgui.form.setValues('#form',data.extvals,'oe_');
				if(data.voucher_used==1 && data.root.o_id==200){
					$('.disabled_field').attr("disabled",true);
				}
			}
			//END扩展信息赋值
			}//END 存在子树根
	});
};
var gotoSave = function(that){
	if(!$("#form").valid()) return false; //有未通过验证的发生时，终止提交
	//$('#save').attr("disabled",true);
	//序列化表单
	var params = {
		'base':qgui.form.getValues('#form','f_'),
		'exts' :qgui.form.getValues('#form','oe_')
	};
	var url = (op=='add') ? urls.addPost : urls.editPost;
	qg.ajax.post(url,params,function(data){
		$('#save').removeAttr("disabled");
		if(op=='add'){
			qgui.box.yesno('保存成功，是否添加下一条记录?',function(btn){
				if(btn=='yes'){
					qgui.form.reset('#form'); //重置表单
				}else{ //从添加模式转化成修改模式
					op = 'edit';
					key = res.data.key;
					$('#view').show(); //编辑模式时，显示预览功能
					editInit(key); 
				}
			});
		}else{
			qgui.box.ok('保存成功',1000);
		}
		listIframe.gridReload(); //刷新数据表
	});
}
var gotoView = function(){
	window.location.href = urls.view+'?key='+key+'&parentId='+parentId;
};
//美化 单选与复选框
var iCheck = function(){
	$(".i-checks").iCheck({checkboxClass:"icheckbox_square-green",radioClass:"iradio_square-green"});
};
var gotoChooseSubject = function(){
	var config = {
		title:'科目',
		isSelectRoot:true,
		isSelectChildrenOnly:false,
		params:{
			rootKey:200,
			level:1,
			noid:$('#f_o_id').val()
		}
	};
	qgui.object.chooseWindow(config,function(data,key,name,pathkey,pathname){
		$('#f_o_parent_id').val(key);
		$('#o_parent').val(name);
		qg.win.reload();
	});
};

var autocode = function(){
	var parentId = $('#f_o_parent_id').val();
	qg.ajax.get(urls.autocode,{'parentId':parentId},function(data){
		$('#f_o_code').val(data);
	});
}
</script>
<?php include(mvc::$cfg['PATH_TPL'].'public/footer.php');?>