//验证名称不可重复
$("#columnName").blur(function(){
	var id = $("#id").val();
	var parentId = $("#parentId1").val();
	var columnName = $("#columnName").val();
	if(columnName != '' && id == ''){
		$.ajax({
			type:'post',
			url:path+'/template/checkName',
			data:{parentId:parentId,columnName:columnName},
			dataType:'json',
			success:function(data){
				//错误编号500，表示有重复
				if(data.code == 500){
					$("#columnName").val('');
					$("#columnName").focus();
					toastr.warning("字段名/模板名不能重复！");
					setFormToken();
				}
			}
		})
	}
});
//选择关联字典级联typeCode输入框
$("#columnType").change(function(){
	$("#block").empty();
	if($(this).val() == 4){
		$(this).prop('name','');
		var html = '<label  class="col-sm-4 control-label">字典表typeCode：</label>'
			+ '<div class="col-sm-8">'
			+ '<input type="text" class="form-control input" name="columnType" id="columnType1">'
			+ '</div>';
		$("#block").append(html);
		$("#block").show();
	}else{
		$(this).prop('name','columnType');
		$("#block").hide();
	}
})
//保存
function save(){
	var columnName = $("#columnName").val();
	var columnValue = $("#columnValue").val();
    var columnType = $("#columnType").val();
	var tableValue = $("#tableValue").val();
	var tableName = $("#tableName").val();
	var parentId = $("#parentId1").val();
	var level = $("#level").val();
    if(columnValue != '' || parentId == 0){
        if(columnName!= ''){
            if(columnType != '' || parentId == 0){
                if(tableValue != '' || parentId == 0){
                    if(tableName != '' || parentId == 0){
                        var id = $("#id").val();
                        if(parentId == 0){
                            addMethod(id);
                        }else{
                            //验证字段值+表值是否存在
                            $.ajax({
                                type:'post',
                                url:path+'/template/checkColumnExist',
                                data:{columnValue:columnValue,tableValue:tableValue,id:id},
                                dataType:'json',
                                success:function(data){
                                    //错误编号500，表示有重复
                                    if(data.code == 500){
                                        $("#columnValue").val('');
                                        $("#columnValue").focus();
                                        toastr.warning("该字段已添加！");
                                    }else{
                                        addMethod(id);
                                    }
                                }
                            })
                        }
                    }else{
                        $("#tableName").focus();
                        toastr.warning("表名不能为空！");
                    }
                }else{
                    $("#tableValue").focus();
                    toastr.warning("表值不能为空！");
                }
            }else{
                $("#columnType").focus();
                toastr.warning("请选择字段类型!");
            }
		}else{
            $("#columnName").focus();
            toastr.warning("字段名/模板名不能为空！");
		}
	}else{
        $("#columnValue").focus();
        toastr.warning("字段值不能为空！");
	}
}

//封装添加操作
function  addMethod(id){
	//id为空则新增，存在则修改
	if(id == '' || id == null){
		//最新父集id
		var newIdByparentId = '';
		$.ajax({
			type:'post',
			url:path+'/template/addTemplate',
			data:$("#form").serialize(),
			dataType:'json',
			success:function(data){
				if(data.code == 0){
					toastr.success("添加成功");
					freshTree();
					newIdByparentId = data.data;
				}else{
					toastr.error(data.msg);
				}
			}
		})
		//如果添加的是父集是根目录，添加完选中最新节点
		setTimeout(function(){
			if(newIdByparentId != ''){
				$("#treeId").val(newIdByparentId);
				var zTree = $.fn.zTree.getZTreeObj("ztree");
				var node = zTree.getNodeByParam("id",newIdByparentId);
				zTree.selectNode(node);
				if($("#parentId").val() == 0){
					//追加父集
					var columnName= $("#columnName").val();
					var html = '<option value="'+newIdByparentId+'">'+columnName+'</option>';
					$("#parentId").append(html);
					$("#parentId").prop("disabled","disabled");
				}
				$("#id").val(newIdByparentId);
				$("#level").val($("#level").val()+1);
			}
		},1000)
	}else {
		$.ajax({
			type:'post',
			url:path+'/template/updateTemplate',
			data:$("#form").serialize(),
			dataType:'json',
			success:function(data){
				if(data.code == 0){
					toastr.success("修改成功");
					freshTree();
				}else{
					toastr.error(data.msg);
				}
			}
		})
	}
}
//删除
function del(){
	var childNode = $("#childNode").val();
	if (childNode != '') {
		toastr.warning("存在子节点，先从子节点开始删！");
	} else {
		var id = $("#id").val();
		if (id != '') {
			Common.confirm({
				title: "提示",
				message: "删除后，已建模板将不提供该字段，确认是否删除?",
				operate: function (reselt) {
					if (reselt) {
						$.ajax({
							type: 'post',
							url: path + '/template/deleteTemplate',
							data: {id: id},
							dataType: 'json',
							success: function (data) {
								//错误编号500，表示有重复
								if (data.code == 0) {
									toastr.success("删除成功！");
								} else {
									toastr.error("删除失败！");
								}
							}
						})
						setTimeout(function () {
							window.location.reload();
						}, 1000);
					}
				}
			})
		} else {
			toastr.warning("未选中，删除无效!");
		}
	}
}
//封装刷新父集列表
function refrashParentSelect(){
    $.ajax({
        type:'get',
        url:path+'/template/getParentSelect',
        dataType:'json',
        async:false,
        success:function(data){
            if(data.code == 100){
                var list = data.extend.list;
                $("#parentId").empty();
                var html = '<option value="0">模板列表</option>';
                for (var i = 0; i < list.length; i++) {
                    html += '<option value="'+list[i].id+'">'+list[i].columnName+'</option>';
                }
                $("#parentId").append(html);
            }else{
                toastr.error(data.msg);
            }
        }
    })
}
//添加
function add(){
	setFormToken();
	$("#parentId").removeAttr("disabled");
	var level = $("#level").val();
	if(level != '' && level < 2){
		$("#contentDiv").show();
		$("#id").val("");
		document.forms[0].reset();
		$("#columnType").attr('name','columnType');
		$("#block").empty();
        refrashParentSelect();
		$("#parentId").val($("#treeId").val());
		$("#parentId1").val($("#treeId").val());
	}else{
		toastr.warning("请选中节点添加或已经到底了!");
	}
	//如果是父集就不能更改
	if(level == 0){
		$('#parentId').prop('disabled',true);
		$('#parentId option:eq(0)').prop('disabled',false);
	}else{
		$('#parentId option:eq(0)').prop('disabled',true);
	}
}

//树操作
var zNodes;
var menu = {
	setting: {
		view:{
			fontCss : {"font-family": "微软雅黑","color":"blue"}
		},
		data:{
			key:{
				name:"columnName"
			},
			simpleData: {
				enable: true,
				idKey: "id",
				pIdKey: "parentId",
			}
		},
		callback: { //回调函数
			onClick: zTreeOnClick }
	},
	loadMenuTree:function(){
		$.ajax({
			type: "post",
			url:path+"/template/getTemplateTree",
			dataType:"json",
			success:function(data){
				$.fn.zTree.init($("#ztree"), menu.setting, data);
				zTree = $.fn.zTree.getZTreeObj("ztree");
				var nodes = zTree.getNodes();
				for (var i = 0; i < nodes.length; i++) { //设置节点展开
					zTree.expandNode(nodes[i], true, false, true);
				}
				zNodes = data;
			}
		})
	}
};
//加载树
$().ready(function(data){
	menu.loadMenuTree();
	fuzzySearch('ztree','#key',null,true,menu.setting,zNodes);
});

//树点击事件
function zTreeOnClick(event, treeId, treeNode) {
	$("#level").val(treeNode.level);
	$("#treeId").val(treeNode.id);
	if(treeNode.id != 0){
		$("#contentDiv").show();
		//赋值当前节点id
		$("#parentId1").val(treeNode.selfParentId);
		$("#parentId").removeAttr("disabled");
		$('#parentId option:eq(0)').prop('disabled',false);
		document.forms[0].reset();
		$("#block").empty();
		$("#id").val("");
		$("#id").val(treeNode.id);
		$("#childNode").val("");
		$("#childNode").val(treeNode.children);
		$("#columnValue").val(treeNode.columnValue);
		$("#columnName").val(treeNode.newName);
		var type = treeNode.columnType;
		if(type != '' && type != '1' && type != '2' && type != '3'){
			$("#columnType").attr('name','');
			$("#columnType").val(4);
			var html = '<label  class="col-sm-5 control-label">字典表typeCode：</label>'
				+ '<div class="col-sm-7">'
				+ '<input type="text" class="form-control input" name="columnType" id="columnType1" value="'+type+'">'
				+ '</div>';
			$("#block").append(html);
		}else{
			$("#columnType").val(type);
			$("#columnType").attr('name','columnType');
		}
		$("#columnType").val();
		$("#tableValue").val(treeNode.tableValue);
		$("#tableName").val(treeNode.tableName);
		$("#selectValue").val(treeNode.selectValue);
		$("#effective").val(treeNode.effective);
		$("#customizeSort").val(treeNode.customizeSort);
		$("#remark").val(treeNode.remark);
		//禁止操作模板列表
		if(treeNode.level > 1){
			refrashParentSelect();
			$('#parentId option:eq(0)').prop('disabled',true);
		}else{
			$('#parentId').prop('disabled',true);
		}
		$("#parentId").val(treeNode.selfParentId);
	}else{
		$("#contentDiv").hide();
	}
};

function freshTree(){
	//初始化模糊搜索方法
	menu.loadMenuTree();
	setTimeout(function(){
		var currentId = $("#treeId").val();
		var zTree = $.fn.zTree.getZTreeObj("ztree");
		var node = zTree.getNodeByParam("id",currentId);
		zTree.selectNode(node);
	},1000)
}

//树全部展开
function expandAll(){
	var treeObj=$.fn.zTree.getZTreeObj("ztree");
	treeObj.expandAll(true);
}
//树全部关闭
function collapseAll(){
	var treeObj=$.fn.zTree.getZTreeObj("ztree");
	treeObj.expandAll(false);
}