| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762 |
- formrun = {
- getValidateType: function (valueType)//得到验证类型
- {
- valueType = valueType || "";
- var vtype = "empty";
- if (!valueType || $.trim(valueType).length == 0)
- {
- return vtype;
- }
- switch (parseInt(valueType))
- {
- case 0:
- vtype = "empty";
- break;
- case 1:
- vtype = "int";
- break;
- case 2:
- vtype = "decimal";
- break;
- case 3:
- vtype = "positiveint";
- break;
- case 4:
- vtype = "positivefloat";
- break;
- case 5:
- vtype = "negativeint";
- break;
- case 6:
- vtype = "negativefloat";
- break;
- case 7:
- vtype = "mobile";
- break;
- }
- return vtype;
- },
- initData: function (jsonData, dbtable, jsonStatus, displayModel)
- {
- if (!jsonData || !dbtable)
- {
- return;
- }
-
- if ("1" == $("#Form_HasUEditor").val())
- {
- $(".edui-default[id^='" + dbtable + "'],[type1='flow_html']").each(function ()
- {
- var id = $(this).attr("id");
- var filed = id.split('.')[1];
- var filedshow = 1;//字段显示状态
- var filedcheck = 0;//字段检查方式
- if ("1" != displayModel)
- {
- var fieldstatus = '';
- try { fieldstatus = eval("jsonStatus." + dbtable + "_" + filed); } catch (e) { }
- if (fieldstatus.length > 0)
- {
- var fieldstatusArray = fieldstatus.split('_');
- if (fieldstatusArray.length == 2)
- {
- filedshow = parseInt(fieldstatusArray[0]);
- filedcheck = parseInt(fieldstatusArray[1]);
- }
- }
- }
-
- if (1 == filedcheck)
- {
- }
- else if (2 == filedcheck)
- {
- $(this).attr("validate", "editor");
- }
- if (filedshow == 0)
- {
- }
- else if (filedshow == 1)
- {
- var value = '';
- try { value = eval("jsonData." + dbtable + "_" + filed); } catch (e) { }
- $(this).after(value).remove();
- }
- else if (filedshow == 2)
- {
- $(this).remove();
- }
- });
- }
- $("[isflow='1']").each(function ()
- {
- var $control = $(this);
- var type1 = ($control.attr("type1") || "").toLowerCase();
- var name = $control.attr("name");
- if (type1 == "flow_org" || type1 == "flow_dict" || type1 == "flow_files")//某些特定控件在原控件name上加了 _text
- {
- name = name.substr(0, name.lastIndexOf("_text"));
- }
- var field = (name || "").split('.');
- if (field.length != 2)
- {
- return true;
- }
- var fieldName = field[1];
-
- var fieldstatus = "1" != displayModel ? eval("jsonStatus." + dbtable + "_" + fieldName) : "";
- var validatetype = formrun.getValidateType($control.attr("valuetype"));
- var initValue = eval("jsonData." + dbtable + "_" + fieldName);
-
- //验证类型
- var validate = formrun.initFlowControl(type1, $control, initValue, validatetype, fieldstatus);
- if (validate && $.trim(validate).length > 0)
- {
- $control.attr("validate", validate);
- }
- });
- $("[issubflowtable='1']").each(function ()
- {
- var $table = $(this);
- var id = $("input[name='flowsubtable_id']", $table).val();
- var secondtable = $("input[name='flowsubtable_" + id + "_secondtable']", $table).val();
- var primarytablefiled = $("input[name='flowsubtable_" + id + "_primarytablefiled']", $table).val();
- var secondtableprimarykey = $("input[name='flowsubtable_" + id + "_secondtableprimarykey']", $table).val();
- var secondtablerelationfield = $("input[name='flowsubtable_" + id + "_secondtablerelationfield']", $table).val();
- var dbconnid = $("#Form_DBConnID").val();
- var primarytablefiledvalue = eval("jsonData." + dbtable + "_" + primarytablefiled);
- if (!primarytablefiledvalue)
- {
- var $ctls = $("tbody tr[type1='listtr'] [issubflow='1']", $table);
- for (var i = 0; i < $ctls.size() ; i++)
- {
- var $ctl = $ctls.eq(i);
- var subtype = $ctl.attr("type1");
- var colname = $ctl.attr("colname");
- var valtype = formrun.getValidateType($ctl.attr("valuetype"));
- var subfieldstatus = "1" != displayModel ? eval("jsonStatus." + colname) : "";
- var ctlvalue = $ctl.val();
- if (subtype == "subflow_radio" || subtype == "subflow_checkbox")
- {
- ctlvalue = $ctl.prop("checked") ? $ctl.val() : "";
- }
- var subvalidate = formrun.initFlowControl(subtype, $ctl, ctlvalue, valtype, subfieldstatus);
- if (subvalidate && $.trim(subvalidate).length > 0)
- {
- $ctl.attr("validate", subvalidate);
- }
- }
- }
- else
- {
- var ajaxUrl = top.rootdir + "/Platform/WorkFlowRun/Scripts/Forms/GetSubTableData.aspx?secondtable=" + secondtable + "&primarytablefiled=" + primarytablefiled +
- "&secondtableprimarykey=" + secondtableprimarykey + "&secondtablerelationfield=" + secondtablerelationfield +
- "&primarytablefiledvalue=" + primarytablefiledvalue + "&dbconnid=" + dbconnid;
- $.ajax({
- url: ajaxUrl, cache: false, async: false, dataType: "JSON", success: function (json)
- {
- var isReadonly = "1" == displayModel;//从表里只要有一个字段为只读,则隐藏最后一列添加删除行按钮
- var countCols = [];//要计算合计的列
-
- for (var i = 0; i < json.length; i++)
- {
- var secondtableprimarykeyvalue = eval("json[i]." + secondtable + "_" + secondtableprimarykey);
- var $newtr = formrun.subtableNewRow($("tbody tr:first td:last input[type='button']:first", $table), secondtableprimarykeyvalue, 1, true);
- var $tds = $("td[colname]", $newtr);
- for (var j = 0; j < $tds.length; j++)
- {
- var colname = $tds.eq(j).attr("colname");
- var colvalue = eval("json[i]." + colname);
- var subfieldstatus = "1" != displayModel ? eval("jsonStatus." + colname) : "";
- if (!isReadonly)
- {
- var subfieldstatusArray = (subfieldstatus || "").split('_');
- if (subfieldstatusArray.length == 2 && subfieldstatusArray[0] == "1")
- {
- isReadonly = true;
- }
- }
- $("[issubflow='1']", $tds.eq(j)).each(function ()
- {
- var $ctl = $(this);
- if (!colvalue || $.trim(colvalue).length == 0)
- {
- colvalue = $ctl.val();
- }
- var subtype = $ctl.attr("type1");
- var subvalidate = formrun.initFlowControl(subtype, $ctl, colvalue, "", subfieldstatus);
- if ("1" == $ctl.attr("iscount"))
- {
- countCols.push(colname);
- }
- if (subvalidate && $.trim(subvalidate).length > 0)
- {
- $ctl.attr("validate", subvalidate);
- }
- });
- }
- }
- //计算列合计
- countCols = countCols.unique();
- for (var i = 0; i < countCols.length; i++)
- {
- formrun.subtableCount(id, countCols[i], null, isReadonly);
- }
- //从表里只要有一个字段为只读,则隐藏最后一列添加删除行按钮
- if (isReadonly)
- {
- $("thead tr td:last", $table).remove();
- $("td:last", $("tbody tr[type1='listtr']", $table)).remove();
- }
- if (json.length > 0)
- {
- $("tbody tr[type1='listtr']:first", $table).remove();
- }
- }
- });
- }
- });
- },
- initFlowControl: function (type, $control, initValue, validatetype, fieldstatus)
- {
- var validate = "";
- var filedshow = 1;//字段显示状态
- var filedcheck = 0;//字段检查方式
- if (fieldstatus && fieldstatus.length > 0)
- {
- var fieldstatusArray = fieldstatus.split('_');
- if (fieldstatusArray.length == 2)
- {
- filedshow = parseInt(fieldstatusArray[0]);
- filedcheck = parseInt(fieldstatusArray[1]);
- }
- }
- if (!initValue || $.trim(initValue).length == 0 || initValue.toLowerCase() == "null")
- {
- if (type == "flow_org" || type == "flow_dict" || type == "flow_files")//某些特定控件取值要值前一个对象的值
- {
- initValue = $control.prev().val();
- }
- else if (type == "flow_checkbox" || type == "flow_radio" || type == "subflow_checkbox" || type == "subflow_radio")
- {
- initValue = $control.prop("checked") ? $control.val() : "";
- }
- else
- {
- initValue = $control.val();
- }
- if (!initValue || $.trim(initValue).length == 0 || initValue.toLowerCase() == "null")
- {
- initValue = "";
- }
-
- }
- switch (type)
- {
- case "flow_text":
- case "flow_hidden":
- case "subflow_text":
- if (filedshow == 0)
- {
- $control.val(initValue);
- }
- else if (filedshow == 1)
- {
- $control.after(initValue).remove();
- }
- else if (filedshow == 2)
- {
- $control.remove();
- }
-
- if (1 == filedcheck)
- {
- validate = "canempty," + (validatetype || "empty");
- }
- else if (2 == filedcheck)
- {
- validate = validatetype || "empty";
- }
- break;
- case "flow_textarea":
- case "subflow_textarea":
- if (filedshow == 0)
- {
- $control.html(initValue);
- }
- else if (filedshow == 1)
- {
- $control.after('<span>' + initValue + '</span>').remove();
- }
- else if (filedshow == 2)
- {
- $control.remove();
- }
- if (1 == filedcheck)
- {
- validate = "canempty," + (validatetype || "empty");
- }
- else if (2 == filedcheck)
- {
- validate = validatetype || "empty";
- }
- break;
- case "flow_html":
- if (filedshow == 0)
- {
- $control.html(initValue);
- }
- else if (filedshow == 1)
- {
- $control.after('<span>' + initValue + '</span>').remove();
- }
- else if (filedshow == 2)
- {
- $control.remove();
- }
- if (1 == filedcheck)
- {
- validate = "canempty," + (validatetype || "empty");
- }
- else if (2 == filedcheck)
- {
- validate = validatetype || "empty";
- }
- break;
- case "flow_datetime":
- case "subflow_datetime":
- var value1 = "";
- if (initValue && initValue.trim().length > 0)
- {
- var format = $control.attr("format");
- if (!format || format.length == 0)
- {
- if ("1" == $control.attr("istime"))
- {
- value1 = RoadUI.Core.formatDate(initValue, "yyyy-MM-dd hh:mm");
- }
- else
- {
- value1 = RoadUI.Core.formatDate(initValue, "yyyy-MM-dd");
- }
- }
- else
- {
- value1 = RoadUI.Core.formatDate(initValue, format);
- }
- }
- if (filedshow == 0)
- {
- $control.val(value1);
- }
- else if (filedshow == 1)
- {
- $control.after('<span>' + value1 + '</span>').remove();
- }
- else if (filedshow == 2)
- {
- $control.remove();
- }
-
- if (1 == filedcheck)
- {
- validate = "canempty," + (validatetype || "empty");
- }
- else if (2 == filedcheck)
- {
- validate = validatetype || "empty";
- }
- break;
- case "flow_combox":
- if (filedshow == 0)
- {
- $control.val(initValue);
- if (initValue.length > 0)
- {
- new RoadUI.Combox().initValue($control.attr('id'), initValue);
- }
- }
- else if (filedshow == 1)
- {
- $control.val(initValue);
- if (initValue.length > 0)
- {
- new RoadUI.Combox().initValue($control.attr('id'), initValue);
- }
- var text = $control.next().val();
- $control.before('<span>' + text + '</span>');
- $control.next().remove();
- $control.remove();
- }
- else if (filedshow == 2)
- {
- $control.next().remove();
- $control.remove();
- }
- if (1 == filedcheck)
- {
- validate = "canempty,empty";
- }
- else if (2 == filedcheck)
- {
- validate = "empty";
- }
- break;
- case "flow_org":
- case "subflow_org":
- if (filedshow == 0)
- {
- $control.prev().val(initValue);
- if (initValue.length > 0)
- {
- new RoadUI.Member().setValue($control.prev());
- }
- }
- else if (filedshow == 1)
- {
- $control.prev().val(initValue);
- if (initValue.length > 0)
- {
- new RoadUI.Member().setValue($control.prev());
- }
- $control.prev().remove();
- $control.next().remove();
- $control.after('<span>' + $control.val() + '</span>');
- $control.remove();
- }
- else if (filedshow == 2)
- {
- $control.prev().remove();
- $control.next().remove();
- $control.remove();
- }
-
- if (1 == filedcheck)
- {
- validate = "canempty,empty";
- }
- else if (2 == filedcheck)
- {
- validate = "empty";
- }
- break;
- case "flow_dict":
- case "subflow_dict":
- if (filedshow == 0)
- {
- $control.prev().val(initValue);
- new RoadUI.Dict().setValue($control.prev());
- }
- else if (filedshow == 1)
- {
- $control.prev().val(initValue);
- new RoadUI.Dict().setValue($control.prev());
- $control.prev().remove();
- $control.next().remove();
- $control.after('<span>' + $control.val() + '</span>');
- $control.remove();
- }
- else if (filedshow == 2)
- {
- $control.prev().remove();
- $control.next().remove();
- $control.remove();
- }
-
- if (1 == filedcheck)
- {
- validate = "canempty,empty";
- }
- else if (2 == filedcheck)
- {
- validate = "empty";
- }
- break;
- case "flow_radio":
- case "subflow_radio":
- if (filedshow == 0)
- {
- if (initValue.toLowerCase() == ($control.val() || "").toLowerCase())
- {
- $control.prop("checked", true);
- }
- }
- else if (filedshow == 1)
- {
- if (initValue == $control.val())
- {
- $control.remove();
- }
- else
- {
- $control.next("label").remove();
- $control.remove();
- }
- }
- else if (filedshow == 2)
- {
- $control.next("label").remove();
- $control.remove();
- }
-
- if (1 == filedcheck)
- {
- validate = "canempty,radio";
- }
- else if (2 == filedcheck)
- {
- validate = "radio";
- }
- break;
- case "flow_checkbox":
- case "subflow_checkbox":
- if (filedshow == 0)
- {
- if (("," + initValue.toLowerCase() + ",").indexOf("," + ($control.val() || "").toLowerCase() + ",") != -1)
- {
- $control.prop("checked", true);
- }
- }
- else if (filedshow == 1)
- {
- if (("," + initValue + ",").indexOf("," + $control.val() + ",") != -1)
- {
- $control.next("label").after(" ");
- $control.remove();
- }
- else
- {
- $control.next("label").remove();
- $control.remove();
- }
- }
- else if (filedshow == 2)
- {
- $control.next("label").remove();
- $control.remove();
- }
-
- if (1 == filedcheck)
- {
- validate = "canempty,checkbox";
- }
- else if (2 == filedcheck)
- {
- validate = "checkbox";
- }
- break;
- case "flow_select":
- case "subflow_select":
- if (filedshow == 0)
- {
- $control.val(initValue);
- }
- else if (filedshow == 1)
- {
- var $opts = $control.children();
- for (var i = 0; i < $opts.size() ; i++)
- {
- if ($opts.eq(i).val() == initValue)
- {
- $control.after($opts.eq(i).text());
- $control.remove();
- break;
- }
- }
- }
- else if (filedshow == 2)
- {
- $control.remove();
- }
-
- if (1 == filedcheck)
- {
- validate = "canempty,empty";
- }
- else if (2 == filedcheck)
- {
- validate = "empty";
- }
- break;
- case "flow_files":
- case "subflow_files":
- if (filedshow == 0)
- {
- if ($.trim(initValue).length > 0)
- {
- $control.val('共' + initValue.split('|').length + '个文件');
- }
- $control.prev().val(initValue);
- }
- else if (filedshow == 1)
- {
- var links = '';
- if ($.trim(initValue).length > 0)
- {
- var filesArray = initValue.split('|');
- for (var i = 0; i < filesArray.length; i++)
- {
- var extName = (filesArray[i].substr(filesArray[i].lastIndexOf('.') + 1) || "").toLowerCase();
- if ("jpg" == extName || "png" == extName || "gif" == extName)
- {
- links += '<span style="margin-right:5px;"><img src="' + filesArray[i] + '" /></sapn>';
- }
- else
- {
- links += '<span style="margin-right:5px;"><a target="_blank" href="' + filesArray[i] + '" class="blue">' + filesArray[i].substr(filesArray[i].lastIndexOf('/') + 1) + '</a></sapn>';
- }
- }
- }
- else
- {
- links = "无";
- }
- $control.next().remove();
- $control.prev().remove();
- $control.after(links);
- $control.remove();
- }
- else if (filedshow == 2)
- {
- $control.prev().remove();
- $control.next().remove();
- $control.remove();
- }
-
- if (1 == filedcheck)
- {
- validate = "canempty,empty";
- }
- else if (2 == filedcheck)
- {
- validate = "empty";
- }
-
- break;
- }
- return validate;
- },
- subtableNewRow: function (but, pkValue, isAppend, isLoad)//pkValue:主键值 isAppend 0:为在当前行后增加 1:为在最后一行增加 isLoad:是否为二次加载
- {
- var $tr = $(but).parent().parent();
- var $newtr = $tr.clone();
- var guid = pkValue || RoadUI.Core.newid(false);
- var id = $("input[name='flowsubid']", $tr).val();
- $("[type1='subflow_text']", $newtr).each(function ()
- {
- var colname = $(this).attr("colname");
- $(this).attr("name", id + "_" + guid + "_" + colname).attr("id", id + "_" + guid + "_" + colname).val("");
- });
- $("[type1='subflow_textarea']", $newtr).each(function ()
- {
- var colname = $(this).attr("colname");
- $(this).attr("name", id + "_" + guid + "_" + colname).attr("id", id + "_" + guid + "_" + colname).html("");
- });
- $("[type1='subflow_select']", $newtr).each(function ()
- {
- var colname = $(this).attr("colname");
- $(this).attr("name", id + "_" + guid + "_" + colname).attr("id", id + "_" + guid + "_" + colname).val("");
- });
- $("[type1='subflow_checkbox']", $newtr).each(function ()
- {
- var colname = $(this).attr("colname");
- $(this).attr("name", id + "_" + guid + "_" + colname).attr("id", id + "_" + guid + "_" + colname).prop("checked", false);
- });
- $("[type1='subflow_radio']", $newtr).each(function ()
- {
- var colname = $(this).attr("colname");
- $(this).attr("name", id + "_" + guid + "_" + colname).attr("id", id + "_" + guid + "_" + colname).prop("checked", false);
- });
- $("[type1='subflow_datetime']", $newtr).each(function ()
- {
- var colname = $(this).attr("colname");
- $(this).attr("name", id + "_" + guid + "_" + colname).attr("id", id + "_" + guid + "_" + colname).val("");
- new RoadUI.Calendar().init($(this));
- });
- $("[type1='subflow_dict']", $newtr).each(function ()
- {
- $(this).prev().remove();
- $(this).next().remove();
- $(this).removeClass().addClass("mydict");
- var colname = $(this).attr("colname");
- $(this).attr("name", id + "_" + guid + "_" + colname).attr("id", id + "_" + guid + "_" + colname).val("");
- new RoadUI.Dict().init($(this));
- });
- $("[type1='subflow_org']", $newtr).each(function ()
- {
- var colname = $(this).attr("colname");
- $(this).attr("name", id + "_" + guid + "_" + colname).attr("id", id + "_" + guid + "_" + colname).val("");
- $(this).prev().remove();
- $(this).next().remove();
- $(this).removeClass().addClass("mymember");
- new RoadUI.Member().init($(this));
- });
- $("[type1='subflow_files']", $newtr).each(function ()
- {
- var colname = $(this).attr("colname");
- $(this).attr("name", id + "_" + guid + "_" + colname).attr("id", id + "_" + guid + "_" + colname).attr("value1", "");
- $(this).prev().remove();
- $(this).next().remove();
- $(this).removeClass().addClass("myfile");
- new RoadUI.File().init($(this));
- });
- $("input[name^='hidden_guid_']", $newtr).val(guid);
- new RoadUI.Text().init($(".mytext", $newtr));
- new RoadUI.Button().init($("input[type='button']", $newtr));
-
- if (1 == isAppend)
- {
- var $table = $(but).parent().parent().parent().parent();
- $("tr[type1='listtr']:last", $table).after($newtr);
- }
- else
- {
- $tr.after($newtr);
- }
- return $newtr;
- },
- subtableDeleteRow: function (but)
- {
- var $table = $(but).parent().parent().parent().parent();
- var $tr = $(but).parent().parent();
- var $tds = $("td[iscount='1']", $tr);
- if ($("tbody tr[type1='listtr']", $table).size() > 1)
- {
- $tr.remove();
- }
- //重新计算合计
- if ($tds.size() > 0)
- {
- var id = $("input[name='flowsubtable_id']", $table).val();
- for (var i = 0; i < $tds.size() ; i++)
- {
- formrun.subtableCount(id, $tds.eq(i).attr("colname"));
- }
- }
- },
- subtableCount: function (id, colname, showid, isReadonly)//从表计算合计 id:从表ID, colname:列, showid:显示合计值的label id, isReadonly:是否为只读状态
- {
- var $table = $("#subtable_" + id);
- var $tds = $("tbody td[colname='" + colname + "']", $table);
- var count = 0;
- for (var i = 0; i < $tds.size() ; i++)
- {
- var val = isReadonly ? $.trim($tds.eq(i).text()) : $("input[type1='subflow_text']", $tds.eq(i)).val();
- if (val && !isNaN(val))
- {
- count = RoadUI.Core.accAdd(count, parseFloat(val));
- }
- }
- showid = showid || "countspan_" + id + "_" + colname;
- $("#" + showid).text(count);
- }
- };
|