123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507 |
- var colstree;
- /**
- * 根据表获取字段构建树。
- *
- * @param tableId
- */
- function loadTree(tableId) {
- var iconFolder = __ctx + '/styles/tree/';
- $.post(__ctx
- + '/platform/form/bpmFormTable/getAllFieldsByTableId.ht?tableId='
- + tableId, function(data) {
- var json = eval("(" + data + ")"), treeData = [];
-
- json.icon = iconFolder + 'table.png';
- json.name = "(主表)" +json.tableDesc;
- json.id = json.tableId;
- json.pId = 0;
- json.type = 0;
- json.open=true;
- json.collapse = false;
- treeData.push(json);
-
- // 主表字段
- for ( var i = 0, c; c = json.fieldList[i++];) {
- c.icon = iconFolder + c.fieldType + '.png';
- c.name = c.fieldDesc;
- c.id = c.fieldId;
- c.pId = json.tableId;
- c.type = 1;
- treeData.push(c);
- }
- // 子表
- for ( var i = 0, c; c = json.subTableList[i++];) {
- c.icon = iconFolder + 'table.png';
- c.id = c.tableId;
- c.pId = 0;
- c.name = "(子表)" + c.tableDesc;
- c.type = 2;
- c.open=true;
- c.collapse = false;
- treeData.push(c);
- for(var j = 0,m;m=c.fieldList[j++];){
- m.pId = c.tableId;
- m.name = m.fieldDesc;
- m.icon = iconFolder + m.fieldType + '.png';
- m.type = 3;
- m.tableName = c.tableName;
- treeData.push(m);
- }
- }
- var setting = {
- view : {
- fontCss : setFontCss
- },
- data : {
- key : {
- name : "name"
- },
- simpleData : {
- enable : true,
- idKey : "id",
- pIdKey : "pId",
- rootPId : 0
- }
- },
- callback : {
- onDblClick : function(event, treeId, treeNode) {
- // 增加字段
- if (treeNode.type == 1){
- addField(treeNode);
- }else if (treeNode.type == 2){
- addSubTable(treeNode,true);
- }else if (treeNode.type == 3){
- addSubField(treeNode);
- }
- },
- beforeCollapse: function(treeId, treeNode){
- return (treeNode.collapse !== false);
- }
-
- }
- };
- colstree = $.fn.zTree.init($("#colstree"), setting, treeData);
- });
- };
- //展开收起
- function treeExpandAll(type){
- colstree.expandAll(type);
- };
- // 添加分组
- function addTeam(isAdd, o) {
- var table = $($("#cloneTemplate [zone='team']")[0]).clone(true, true);
- if (!isAdd) {
- $("[name='name']", table).val(o.teamName);
- var option = [];
- for ( var i = 0, c; c = o.teamField[i++];) {
- option.push('<option value="' + c.fieldName + '">' + c.fieldDesc
- + '</option>');
- }
- $("[name='field']", table).append(option.join(''));
- }
- // 绑定删除的分组
- // $("[var=del]", table).live('click',function() {
- // delTeam(table);
- // });
- $("#formItem").append(table);
- $(table).each(function() {
- selectTeam(this);
- });
- }
- // 设置选择的分组
- function selectTeam(obj) {
- var formItem = $("#formItem");
- $(".validError", formItem).each(function() {
- $(this).removeClass('validError');
- });
- $(obj).closest("fieldset").addClass('validError');
- }
- /**
- * 增加字段
- */
- function addField(treeNode) {
- var fieldName = treeNode.fieldName, name = treeNode.name, selectTeam = $(".validError select"), flag = false;
- if (!selectTeam || selectTeam.length == 0) {
- alert($lang_form.bpmFormTableTeam.selectAddTeam);
- return;
- }
- $("#formItem select[name='field'] option").each(function() {
- if (fieldName == $(this).val())
- flag = true;
- });
- if (flag) {
- alert($lang_form.bpmFormTableTeam.moveAdd);
- return;
- }
- __SelectOption__.add(selectTeam.get(0), name, fieldName);
- setCss(treeNode.tId, "red");
- }
- function delTeam(obj) {
- var me = $(obj);
- var objFieldset=me.closest('fieldset');
- $.ligerDialog.confirm($lang_form.bpmFormTableTeam.delTeam, $lang.tip.msg,
- function(rtn) {
- if (rtn) {
- objFieldset.fadeOut(500, function() {
- $("select[name='field'] option", objFieldset).each(
- function() {
- removeColsTree($(this).val(), 1);
- });
- // 查找最近的分组
- $("fieldset[zone='team']", $(objFieldset).parent())
- .siblings().each(function() {
- if ($(this).attr('zone') == 'sub')
- return true;
- if (!$(this).hasClass('validError')) {
- $(this).addClass("validError");
- return false;
- }
- });
- $(this).remove();
- });
- }
- });
- }
- function getSubFieldset(obj){
- var d = [];
- obj.each(function() {
- var me = $(this), data = {}, fieldList = [];
- data.tableName = $("input[name='tableName']", me).val();
- data.tableDesc = $("input[name='tableDesc']", me).val();
- me.find("select[name='field'] option").each(function() {
- var o = {};
- o.fieldName = $(this).val();
- o.fieldDesc = $(this).text();
- fieldList.push(o);
- });
- data.fieldList = fieldList;
- d.push(data);
- });
- return d ;
- }
- // 增加子表
- function addSubTable(o,isInit) {
- var table = $($("#cloneSubTemplate [zone='sub']")[0]).clone(true, true), tableName = o.tableName, flag = false;
- //设置子表的Option
- setSubOption(table,o);
- // 查找该子表是否增加
- $("#formItem [zone='sub'] [name='tableName'] ").each(function() {
- if (tableName == $(this).val())
- flag = true;
- });
- if (flag) {
- alert('该子表已经添加了,请移出再添加!');
- return;
- }
- // 绑定删除的分组
- // $("[var=del]", table).click(function() {
- // delSubTable(table, o);
- // });
- $("#formItem").append(table);
- // 设置样式
- if(!$.isEmpty(isInit)){
- setCss(o.tId, "red");
- }
- }
- function setSubOption(table,o){
- if(!$.isEmpty(o)){
- $("[name='tableName']", table).val(o.tableName);
- $("[name='tableDesc']", table).val(o.tableDesc);
- if (!$.isEmpty(o.fieldList)) {
- var option = [];
- for ( var i = 0, c; c = o.fieldList[i++];) {
- option.push('<option value="' + c.fieldName + '">' + c.fieldDesc
- + '</option>');
- }
- var seletField = $("[name='field']", table);
- seletField.attr("subtable",o.tableName);
- seletField.append(option.join(''));
- }
- }
- }
- /**
- * 删除子表
- * @param table
- * @param o
- */
- function delSubTable(obj) {
- var me = $(obj);
- var objFieldset=me.closest('fieldset');
- $.ligerDialog.confirm('是否删除该子表?', $lang.tip.msg, function(rtn) {
- if (rtn) {
- var data = getSubFieldset(objFieldset);
- objFieldset.fadeOut(500, function() {
- // 处理样式
- removeColsTree(data.tableName, 2);
- for ( var i = 0, c; c = data.fieldList[i++];) {
- removeColsTree(c.fieldName, 3);
- }
- // 删除节点
- $(this).remove();
- });
- }
- });
- }
- function getSubFieldset(obj){
- var me = obj, data = {}, fieldList = [];
- data.tableName = $("input[name='tableName']", me).val();
- data.tableDesc = $("input[name='tableDesc']", me).val();
- me.find("select[name='field'] option").each(function() {
- var o = {};
- o.fieldName = $(this).val();
- o.fieldDesc = $(this).text();
- fieldList.push(o);
- });
- data.fieldList = fieldList;
- return data ;
- }
- /**
- * 增加子表字段
- * @param treeNode
- */
- function addSubField(treeNode){
- var fieldName = treeNode.fieldName,
- name = treeNode.name,
- tableName = treeNode.tableName,
- selectSub = $("select[subtable='"+tableName+"']"),
- flag = false;
- if (!selectSub || selectSub.length == 0) {
- alert("该子表未添加,请添加子表再向该表添加该字段!");
- return;
- }
- $("option",selectSub).each(function() {
- if (fieldName == $(this).val()){
- flag = true;
- return false;
- }
- });
- if (flag) {
- alert($lang_form.bpmFormTableTeam.moveAdd);
- return;
- }
- __SelectOption__.add(selectSub.get(0), name, fieldName);
- setCss(treeNode.tId, "red");
- }
- /**
- * 初始化设置样式
- */
- function setFontCss(treeId, treeNode) {
- var json = $('#formJson').val();
- if ($.isEmpty(json))
- return;
- var data = $.parseJSON(json);
- // 解析字段
- if (treeNode.type == 1) {
- for ( var i = 0, c; c = data.team[i++];) {
- for ( var j = 0, o; o = c.teamField[j++];) {
- if (treeNode.fieldName == o.fieldName)
- return {
- color : "red"
- };
- }
- }
- }
- //子表
- else if (treeNode.type == 2) {
- for ( var i = 0, c; c = data.sub[i++];) {
- if (treeNode.tableName == c.tableName)
- return {
- color : "red"
- };
- }
- }else if(treeNode.type == 3){
- for ( var i = 0, c; c = data.sub[i++];) {
- for ( var j = 0, o; o = c.fieldList[j++];) {
- if (treeNode.fieldName == o.fieldName)
- return {
- color : "red"
- };
- }
- }
- }
- return '';
- };
- // 移除已选字段
- function removeOpt(e,type) {
- var me = $(e);
- var optId = me.val();
- if ($.isEmpty(optId))
- return;
- e.remove(e.selectedIndex);
- // $("option[value='"+optId+"']",me).remove();
- removeColsTree(optId, type);
- }
- function removeColsTree(optId, type) {
- if ($.isEmpty(optId))
- return;
- if (colstree) {
- var node = colstree.getNodesByFilter(function(node) {
- if (type == 1 || type == 3 ) {
- return (node.fieldName == optId) ? true : false;
- }else if (type == 2) {
- return (node.tableName == optId) ? true : false;
- }
- }, true);
- if(!$.isEmpty(node))
- setCss(node.tId, "");
- }
- }
- // 设置样式
- function setCss(o, t) {
- if ($.isEmpty(o))
- return;
- $('#' + o + '_a').css("color", t);
- }
- function getJsonData() {
- var rtn = valid.valid();
- if (!rtn) {
- alert('有子表名称未填写!');
- return false;
- }
- var team = [], sub = [], json = {};
- // 分组字段
- $("#formItem [zone='team']").each(function() {
- var me = $(this), data = {}, field = [];
- data.teamName = $("input[name='name']", me).val();
- me.find("select[name='field'] option").each(function() {
- var o = {};
- o.fieldName = $(this).val();
- o.fieldDesc = $(this).text();
- field.push(o);
- });
- if (!field || field.length == 0)
- rtn = false;
- data.teamField = field;
- team.push(data);
- });
- if (!rtn) {
- alert("有分组没有字段");
- return false;
- }
- // 子表字段
- $("#formItem [zone='sub']").each(function() {
- var me = $(this), data = {}, fieldList = [];
- data.tableName = $("input[name='tableName']", me).val();
- data.tableDesc = $("input[name='tableDesc']", me).val();
- me.find("select[name='field'] option").each(function() {
- var o = {};
- o.fieldName = $(this).val();
- o.fieldDesc = $(this).text();
- fieldList.push(o);
- });
- if (!fieldList || fieldList.length == 0)
- rtn = false;
- data.fieldList = fieldList;
- sub.push(data);
- });
- if (!rtn) {
- alert("有子表没有字段");
- return false;
- }
- json.title = $("#title").val();
- json.team = team;
- json.sub = sub;
- json = JSON.stringify(json);
- return json;
- }
- /**
- * 预览
- */
- function preview() {
- if (typeof (Worker) === "undefined") {
- alert("不支持预览的浏览器,请使用支持的浏览器。");
- return;
- }
- var json = getJsonData();
- if (!json)
- return;
- var frm = new com.hotent.form.Form();
- frm.creatForm("mobilePreview", __ctx
- + '/mobile/form/bpmMobileForm/preview.ht');
- frm.addFormEl("formJson", json);
- frm.addFormEl("formId", $('#formId').val());
- frm.addFormEl("formKey", $('#formKey').val());
- frm.setTarget("_blank");
- frm.setMethod("post");
- frm.submit();
- frm.clearFormEl();
- }
- /**
- * 保存数据
- */
- function saveData() {
- var json = getJsonData();
- if (!json)
- return;
- $('#formJson').val(json);
- var options = {};
- if (showResponse) {
- options.success = showResponse;
- }
- var frm = $('#mobileForm').form();
- frm.ajaxForm(options);
- frm.submit();
- }
- function showResponse(responseText) {
- $.ligerDialog.closeWaitting();
- var obj = new com.hotent.form.ResultMessage(responseText);
- if (obj.isSuccess()) {
- $.ligerDialog.confirm(obj.getMessage() + ","
- + $lang.operateTip.continueOp, $lang.tip.msg, function(rtn) {
- if (rtn) {
- window.location.href = location.href.getNewUrl();
- } else {
- window.close();
- }
- });
- } else {
- $.ligerDialog.err($lang.tip.msg, '', obj.getMessage());
- }
- }
|