123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969 |
- $(function() {
- CustomForm = {
- onEditCallBack:null,
- tables: {},
- init : function() {
- var self=this;
- self.initUI();
- self.initComdify();
- self.validate();
- },
-
- //处理添加和删除按钮。
- handButton:function(table,canWrite){
- var self=this;
- if(!canWrite) {
- $(".add",table).addClass("disabled");
- $(".del",table).addClass("disabled");
- return;
- };
-
- $(".add",table).click(function(){
- self.add(table);
- //TODO
- self.initSubQuery();
- self.subSelectorInit();
-
- });
-
- table.delegate(".del", "click", function(){
- var t = $(this).closest('[formtype]'),
- brother = t.next('[formtype]').length?t.next('[formtype]'):t.prev('[formtype]');
- t.remove();
- if(brother)
- FormUtil.InitMathfunction(brother);
- });
- },
-
-
- //处理块模式和表内编译模式下千分位
- initComdify:function(){
- $("div[type='custform']").delegate('[showtype]', 'blur',function (){
- CustomForm.delaComdify($(this));
- });
- },
-
- //处理弹出框模式下千分位
- initComdifyForWindow:function(){
- $("[formtype='window']").delegate('[showtype]', 'blur',function(){
- CustomForm.delaComdify($(this));
- });
- },
-
- //处理千分位
- delaComdify:function(varObj){
- var me=$(varObj);
- var value = me.val();
- var json=null;
- try{
- var jsonStr=me.attr("showtype");
- json=eval('('+jsonStr+')');
- }
- catch(err){}
- if(json!=null){
- var coinvalue=json.coinValue;
- var iscomdify=json.isShowComdify;
- var decimallen=json.decimalValue;
- //去除货币标签
- if (coinvalue && value.split(coinvalue) != -1) {
- var ary = value.split(coinvalue);
- value = ary.join("");
- }
-
- if (value.indexOf(',') != -1) {
- value = $.toNumber(value);
- }
- if(iscomdify && iscomdify=='1'){
- var value = $.comdify(value);
- }
-
- // 小数处理
- if (decimallen > 0 && value) {
- var zeroLen = '';
- if (value.indexOf('.') != -1) {
- var ary = value.split('.');
- var temp = ary[ary.length - 1];
- if (temp.length > 0 && temp.length < decimallen) {
- for (var i = 0; i < decimallen- temp.length; i++) {
- zeroLen = zeroLen + '0';
- }
- value = value + zeroLen;
- }
- } else {
- for (var i = 0; i < decimallen; i++) {
- zeroLen = zeroLen + '0';
- }
- value = value + '.' + zeroLen;
- }
- }
- //添加货币标签
- if (coinvalue && value) {
- value = coinvalue + value;
- }
- }
- me.val(value);
- },
-
-
- /**
- * 初始化表单界面。
- *
- * @param parent
- */
- initUI : function(parent) {
- $('input[type="checkbox"]').each(function() {
- var value=$(this).val();
- var data=$(this).attr('data');
- if(!data||data==''||data=='null')return;
- var ary=data.split(",");
- for(var i=0;i<ary.length;i++){
- if(value!=ary[i]) continue;
- $(this).attr("checked","checked");
- }
- });
-
- var filter='input,textarea,.dicComboTree,.dicComboBox,.dicCombo';
- if (parent==undefined) {
- parent = $('body div[type=custform]');
- if(!parent||parent.length==0)parent = $("body");
- }else{
- //处理初始化附件的bug
- AttachMent.init($("div[name='div_attachment_container']",parent));
- }
- //下拉框默认选中,在下拉框定义一个val属性,使用脚本选中。
- $("select[name][val]",parent).each(function(){
- var obj=$(this),val= obj.attr("val");
- if($.isEmpty(val))
- val= obj.val();
- obj.val(val);
- });
-
- parent.find(filter).each(function() {
- if ($(this).is('.dicComboTree,.dicComboBox,.dicCombo')) {
- if($(this).closest('[type=append]').length<=0){//是模板的也不用初始化
- $(this).htDicCombo();
- }
- }
- //处理默认日期
- if ($(this).is('.Wdate[displayDate=1]')){
- var me = $(this);
- if($.isEmpty(me.val())){
- var datefmt = me.attr("datefmt");
- var nowDate=new Date().Format(datefmt);
- me.val(nowDate);
- }
- }
- });
- if (parent.is('form')) {
-
- parent.data('validate', this.getValidate(parent));
- } else {
- var v = parent.closest('form');
- this.valid = this.getValidate(v);
- }
- $('div[type=subtable]').each(function() {
- var subTable=$(this);
- CustomForm.handRow('edit',subTable);
- });
- },
- //添加一行数据
- //参数,子表区域,在那个地方插入。
- add : function(table, beforeElement) {
- var self=this;
- var right=table.attr('right');
- if(right!="w" && right!="b"){
- return;
- }
- //判断是否是使用窗口方式编辑数据。
- var frm=table.data('form');
- if (frm) {
- self.openWin('添加', $(frm), table, beforeElement, function(form, table, beforeElement) {
- //校验数据
- var v = form.data('validate');
- if (!v.valid()) {
- return false;
- }
- var row = $(table.data('row'));
- //添加行数据
- self.addRow(row, form);
-
- self._add(table, row, beforeElement);
- self.handRow('add',table);
- return true;
- });
- //弹窗模式下初始化千分位货币处理函数
- self.initComdifyForWindow();
- }
- //使用的行内编辑。
- else {
- var row = $(table.data('row'));
- this._add(table, row, beforeElement);
- row.find('.dicComboBox,.dicComboTree,.dicCombo').each(function() {
- $(this).htDicCombo();
- });
- }
- self.handRow('add',table);
- },
-
- handRow:function(type,table){
- if(typeof(handRowEvent)=="function"){
- handRowEvent(type,table);
- }
- },
- //添加一行数据往行数据中添加隐藏域,同时设置显示的数据。
- addRow:function(row,form){
- form.find('input:text[name],input:hidden[name], textarea[name],select[name]').each(function() {
- var name=$(this).attr('name');
- var val=$(this).val();
- //添加隐藏表单。
- row.append($('<input type="hidden"/>').attr('name', name).val(val));
- //修改表格的文本显示。
- var filter="[fieldName='"+name+"']";
- var objTd=$(filter,row);
- if(objTd.length>0){
- var controltype = $(this).attr('controltype');
- if(!$.isEmpty(controltype) && controltype=='attachment'){
- AttachMent.insertHtml(objTd,val);
- }else if(!$.isEmpty(controltype) && controltype=='select'){
- var text = $(this).find("option:selected").text();
- objTd.text(text);
- }else{
- objTd.text(val);
- }
- }
- $(this).val('');
- });
-
-
- //回填checkbox的值。
- form.find('input:checkbox,input:radio').each(function() {
- var name=$(this).attr('name');
- var value=$(this).val();
-
- var filterHidden="input[name='"+ name +"']";
- var isChecked=($(this).attr("checked")!=undefined);
- var obj=$(filterHidden,row);
-
- var filter="[fieldName='"+name+"']";
- var objTd=$(filter,row);
-
-
-
- var val=(isChecked)?value:"";
- if(obj.length==0){
- row.append($('<input type="hidden"/>').attr('name', name).val(val));
- }
- else{
- var existVal = obj.val()=="" ? val : obj.val() ;
- if(existVal!="" && val!=""){
- existVal += "," +val;
- }
- obj.val(existVal);
- val = existVal;
- }
- if(objTd.length>0){
- objTd.text(val);
- }
- });
- },
- _add : function(table, newRow, beforeElement) {
- //处理newRow的字段的必填
- $("input,textarea,select",newRow).each(function(){
- var me=$(this);
- //处理默认日期
- if (me.is('.Wdate[displayDate=1]') && $.isEmpty(me.val())){
- var datefmt = me.attr("datefmt");
- var nowDate=new Date().Format(datefmt);
- me.val(nowDate);
- }
- var validRule = me.attr("validate");
- if ( validRule != null && 'undefined' != validRule.toLowerCase() && validRule.length>2 ){
- var json = eval('(' + validRule + ')');
- if(json.required){
- me.addClass("validError");
- }
- }
- });
- if (beforeElement) {
- $(beforeElement).before(newRow);
- }
- //在最后面加入
- else {
- table.find('[formtype]:last').after(newRow);
- }
- //初始化界面
- this.initUI(newRow);
- //添加右键绑定
- this.addBind(newRow, table);
- FormUtil.triggerChoice(newRow);
- //删除必填样式
- if(table.hasClass('validError')){
- table.removeClass('validError');
- }
-
- },
-
- /**
- * 添加行数据的右键事件绑定。
- * @param row
- * @param table
- */
- addBind: function(row, table) {
- //是否需要编辑菜单项目
- //如果该表弹出窗口定义,那么就不需要编辑菜单项目。
- var needEdit = (this.tables[table.attr('tableName')].data('form') != null);
- var menu = this.getMenu(needEdit);
- row.bind("contextmenu", function(e) {
- menu.target = e.target;
- menu.show({top : e.pageY,left : e.pageX});
- return false;
- });
- },
- /**
- * 编辑行数据。
- * @param table
- * @param row
- */
- edit : function(table, row) {
- var self=this;
- var tableName = table.attr('tableName');
- //获取表单
- var form = $(this.tables[tableName].data('form'));
-
-
- //对表单数据进行初始化
- self.initFormData(form,row);
-
- form.data('row', row);
- this.openWin('编辑', form, table, null, function(form, table) {
- var v = form.data('validate');
- var rtn=v.valid();
- if(!rtn) return false;
-
- var row = form.data('row');
- //对表单进行遍历
- self.setRowData(form,row);
- return true;
-
- });
- },
- initFormData:function(form,row){
- form.find('input:text,textarea,select,input[type="hidden"]').each(function() {
- var name= $(this).attr('name');
- var value = row.find('[name="' + name+ '"]').val();
- $(this).val(value);
- });
- form.find('input:checkbox,input:radio').each(function(){
- var name=$(this).attr("name");
- var chkValue=$(this).val();
- var value=row.find('[name="' + name+ '"]').val();
-
- if(value.indexOf(chkValue)!=-1){
- $(this).attr("checked","checked");
- }
- });
- },
- setRowData:function(form,row){
- var self=this;
- //对表单进行遍历
- form.find('input:text, textarea,input[type="hidden"],select').each(function() {
- var name=$(this).attr('name');
- var val=$(this).val();
- //修改隐藏域的数据值
- var objHidden=$("input[name='"+name+"']",row);
- objHidden.val(val);
- //修改表格的文本显示。
- var filter="[fieldName='"+name+"']";
- var objTd=$(filter,row);
- if(objTd.length<=0) return true;
- //处理附件
- var controltype = $(this).attr('controltype');
- if(!$.isEmpty(controltype) && controltype=='attachment'){
- AttachMent.insertHtml(objTd,val);
- }else{
- objTd.text(val);
- }
- });
-
- form.find('input:checkbox,input:radio').each(function(){
- var name=$(this).attr('name');
- var objHidden=$("input[name='"+name+"']",row);
- objHidden.val("");
- //修改表格的文本显示。
- var filter="[fieldName='"+name+"']";
- var objTd=$(filter,row);
- if(objTd.length>0){
- objTd.text("");
- }
- });
-
- form.find('input:checkbox:checked,input:radio:checked').each(function(){
- var name=$(this).attr('name');
- var value=$(this).val();
- var objHidden=$("input[name='"+name+"']",row);
- var filter="[fieldName='"+name+"']";
- var objTd=$(filter,row);
-
- var hidValue=objHidden.val();
- if(hidValue){
- objHidden.val(hidValue +"," +value);
- objTd.text(hidValue +"," +value);
- } else{
- objHidden.val(value);
- objTd.text(value);
- }
-
- });
-
- },
-
- /**
- * 获取验证器。
- * @param target 为一个表单。
- * @returns
- */
- getValidate : function(target) {
- return target.form({
- /**
- * 错误消息处理
- */
- errorPlacement : function(el, msg) {
- var element=$(el),corners =['right center','left center'],flipIt= element.parents('span.right').length > 0;
- element.addClass('validError');
-
- //添加必填样式
- var parentTd = element.closest("td");
- if(parentTd){
- var formTitle = parentTd.prev("td.formTitle");
- if(formTitle){
- var span = $("span.red", formTitle);
- if(!span || span.length==0){
- formTitle.append($("<span class='red'>*</span>"));
- }
- }
- }
-
- if(element.hasClass("myeditor")){
- setTimeout(function(){
- element = element.next();
- element.css("border","1px solid red");
- },1000);
- }else if(element.hasClass("Wdate")||element.is('textarea')){
- element.css("border","1px solid red");
- }else if(element.is("select")||element.attr('type')&&(element.attr('type')=='checkbox'||element.attr('type')=='radio')){
- var name = element.attr('name');
- if(!name)return;
- var priElement = $("*[name='"+name+"']",$("span.select_contain_span"));
- if(priElement.length>0)return;
- element.removeClass('validError');
- var errorSpan = $('<span></span>').css({"border":"1px solid red","padding":"1px"}).addClass("select_contain_span");
- element.before(errorSpan);
- errorSpan.append(element);
- }
-
- if(!$(msg).is(':empty')){
- element.qtip({
- overwrite:false,
- content : msg,
- position:{
- my:corners[flipIt?0:1],
- at:corners[flipIt?1:0],
- viewport:$(window)
- },
- show:{
- effect: function(offset) {
- $(this).slideDown(100);
- }
- },
- hide:{
- event:'click mouseleave',
- leave: false,
- fixed:true,
- delay:200
- },
- style:{
- classes:'ui-tooltip-red'
- }
- });
- }else{
- element.qtip("destroy");
- }
- },
- /**
- * 成错误消息
- */
- success : function(el) {
- var element=$(el);
- if(element.hasClass("myeditor")){
- element = element.next();
- element.css("border","");
- }else if(element.hasClass("Wdate")||element.is('textarea')){
- element.css("border","1px solid #999");
- }else if(element.is("select")||element.attr('type')&&(element.attr('type')=='checkbox'||element.attr('type')=='radio')){
- var selectSpan = element.parents("span.select_contain_span");
- if(!selectSpan||selectSpan.length==0){
- var name = element.attr('name');
- if(!name)return;
- var priElement = $("*[name='"+name+"']",$("span.select_contain_span"));
- if(!priElement||priElement.length==0)return;
- var tipSpan = priElement.parents("span.select_contain_span");
- var formtype = priElement.parents("[formtype]");
- if(formtype&&formtype.length>0){
- $("[name='"+name+"']",formtype).each(function(){
- $(this).removeClass('validError');
- $(this).qtip("destroy");
- $(this).unbind('mouseover');
- });
- }
- else{
- $("[name='"+name+"']").each(function(){
- $(this).removeClass('validError');
- $(this).qtip("destroy");
- $(this).unbind('mouseover');
- });
- }
- tipSpan.before(priElement);
- tipSpan.remove();
- }
- else{
- selectSpan.before(element);
- selectSpan.remove();
- }
- }else if(element.attr('type')=='subtable'){
-
- }
- element.removeClass('validError');
- element.qtip("destroy");
- element.unbind('mouseover');
- }
- ,rules:com.hotent.form.rule.CustomRules
- });
- },
- validate:function(conf){
- return this.valid.valid(conf);
- },
- //处理有数据格式定义的数据。
- handNumberData:function(obj){
- var value=$(obj).val();
- var showType=$(obj).attr("showtype");
- if(!showType) return value;
- try{
- showType=showType.replaceAll("'","\"");
- var json=jQuery.parseJSON(showType);
- var coinvalue = json.coinValue;
- var isShowComdify = json.isShowComdify;
- if (coinvalue != null && coinvalue != '' && value.split(coinvalue) != -1) {
- var ary = value.split(coinvalue);
- value = ary.join("");
- }
- if (isShowComdify && value.split(",") != -1) {
- var temp = value.split(",");
- value = temp.join("");
- }
- }
- catch(err){}
- return value;
- },
- /**
- * 获取数据。
- * 返回json数据。
- */
- getData: function() {
- var self=this;
- // 主表数据
- var main = {
- fields:{}
- };
- //取主表的字段。
- $("input:text[name^='m:'],input:hidden[name^='m:'],textarea[name^='m:'],select[name^='m:']").each(function() {
- var name = $(this).attr('name');
- var value=self.handNumberData(this);
- main.fields[name.replace(/.*:/, '')] = value;
- });
-
- $("textarea[name^='m:'].myeditor").each(function(num) {
- var name = $(this).attr('name');
- var data=getEditorData(editor[num]);
- main.fields[name.replace(/.*:/, '')] =data;
- $(this).val(data);
- });
- //设置单选按钮。
- self.setMainRadioData(main.fields);
- //设置复选框。
- self.setMainCheckBoxData(main.fields);
-
- //子表数据
- var sub = [];
- $('div[type=subtable][right=w || right=b][show=true||undefined]').each(function() {
- var table = {
- tableName: $(this).attr('tableName'),
- fields: []
- };
- $(this).find('[formtype]:visible').each(function() {
- var row = {};
- var objRow=$(this);
- $("input:text[name^='s:'],input[type='hidden'][name^='s:'],textarea[name^='s:'],select[name^='s:']",objRow).each(function() {
- var name = $(this).attr('name').replace(/.*:/, '');
- var value=self.handNumberData(this);
- row[name] = value;
- });
- //设置复选框按钮的数据。
- self.setSubCheckBoxData(objRow,row);
-
- //设置单选按钮的数据
- self.setSubRadioData(objRow, row);
-
- table.fields.push(row);
- });
- sub.push(table);
-
- JSON2.stringify(sub);
- });
-
- //意见
- var opinion = [];
- $('textarea[name^=opinion]').each(function() {
- opinion.push({
- name: $(this).attr('name').split(':')[1],
- value: $(this).val()
- });
- });
-
- var data = {main: main, sub: sub, opinion: opinion};
-
- return JSON2.stringify(data);
- },
- /**
- * 设置子表的radio单选按钮字段。
- * @param dataObj
- */
- setSubRadioData:function(objParent,dataObj){
- var operatorObj = $('input:radio', objParent);
- this.setRadioData(dataObj, operatorObj);
- },
- /**
- * 设置主表的radio单选按钮字段。
- * @param dataObj
- */
- setMainRadioData:function(dataObj){
- var operatorObj = $('input[name^=m]:radio');
- this.setRadioData(dataObj, operatorObj);
- },
- setRadioData:function(dataObj, operatorObj){
- $(operatorObj).each(function() {
- var name = $(this).attr('name').replace(/.*:/, '');
- var value= $(this).val();
-
- if($(this).attr("checked")!=undefined){
- dataObj[name]=value;
- }
- });
- },
- setCheckBoxData:function(dataObj, operatorObj, checkedObj){
- //将所有复选框选址清空。
- $(operatorObj).each(function() {
- var name = $(this).attr('name').replace(/.*:/, '');
- dataObj[name]="";
- });
-
- //复选框取值。
- $(checkedObj).each(function() {
- var name = $(this).attr('name').replace(/.*:/, '');
- var value= $(this).val();
- if(dataObj[name]==""){
- dataObj[name]=value;
- } else{
- dataObj[name]+="," + value;
- }
- });
- },
- /**
- * 设置子表复选框的数据
- * @param objParent
- * @param dataObj
- */
- setSubCheckBoxData:function(objParent,dataObj){
- var operatorObj = $('input:checkbox',objParent);
- var checkedObj = $('input:checkbox:checked',objParent);
- this.setCheckBoxData(dataObj, operatorObj, checkedObj);
- },
- setMainCheckBoxData:function(dataObj){
- var operatorObj = $('input[name^=m]:checkbox');
- var checkedObj = $('input[name^=m]:checkbox:checked');
- this.setCheckBoxData(dataObj, operatorObj, checkedObj);
- },
-
- /**
- * 打开操作数据窗口。
- * @param title 窗口标题
- * @param form 窗口对象。
- * @param table 表
- * @param beforeElement
- * @param callback 回调函数
- */
- openWin : function(title, form, table, beforeElement, callback) {
- var formProperty=table.data("formProperty");
- var width=formProperty.width+20;
- var height=formProperty.height+100;
- var self=this;
-
- form.data('beforeElement', beforeElement);
- var win = $.ligerDialog({target:form,
- width:width,
- height:height,
- title : title,
- showMax : true,
- showToggle : true,
- onClose : true,
- showButton : true,
- buttons : [ {
- text : "确定",
- onclick: function (item, dialog) {
- var result = callback(form, table, form.data('beforeElement'));
- if(!result) return;
- if(self.onEditCallBack!=null){
- self.onEditCallBack(title);
- }
- dialog.close();
- }
- } ]
- });
- //初始化表单界面
- this.initUI(form);
- win.show();
-
- },
- /**
- * 获取右键菜单。
- * @param needEdit
- * @returns
- */
- getMenu : function(needEdit) {
- var self=this;
- //判断菜单是否存在,不存在则新建菜单。
- if ((needEdit && this.menuWithEdit) || (!needEdit && this.menu)) {
- return needEdit ? this.menuWithEdit : this.menu;
- } else {
- var menu;
- var items = [ {
- text : '在前面插入记录',
- click : function() {
- var row = $(menu.target).closest('[formtype]');
- var table = row.closest('div[type=subtable]');
- self.add(table, row);
- //TODO
- self.subSelectorInit();
- self.initSubQuery();
- self.handRow('add',table);
- }
- }, {
- text : '在后面插入记录',
- click : function() {
- var row = $(menu.target).closest('[formtype]');
- var table = row.closest('div[type=subtable]');
- row = row.next('[formtype]:visible');
- if (row.length == 0) {
- row = null;
- }
- self.add(table, row);
- //TODO
- self.subSelectorInit();
- self.initSubQuery();
- self.handRow('add',table);
- }
- }, {
- line : true
- }, {
- text : '编辑',
- click : function() {
- var row = $(menu.target).closest('[formtype]');
- var table = row.closest('div[type=subtable]');
- self.edit(table, row);
- }
- }, {
- text : '删除此记录',
- click : function() {
- var t = $(menu.target).closest('[formtype]'),
- table = t.closest('div[type=subtable]'),
- brother = t.next('[formtype]').length?t.next('[formtype]'):t.prev('[formtype]');
- t.remove();
-
- self.handRow('del',table);
- if(brother)
- FormUtil.InitMathfunction(brother);
- }
- }, {
- line : true
- }, {
- text : '向上移动',
- click : function() {
- var t = $(menu.target).closest('[formtype]');
- var prev = t.prev('[formtype]:visible');
- if (prev.length > 0) {
- prev.before(t);
- }
- var table = t.closest('div[type=subtable]');
- self.handRow('add',table);
- }
- }, {
- text : '向下移动',
- click : function() {
- var t = $(menu.target).closest('[formtype]');
- var next = t.next('[formtype]:visible');
- if (next.length > 0) {
- next.after(t);
- }
- var table = t.closest('div[type=subtable]');
- self.handRow('add',table);
- }
- } ];
- //如果不需要编辑,删除编辑菜单。
- if (!needEdit) {
- items.splice(3, 1);
- }
- menu = $.ligerMenu({top : 100,left : 100,width : 130,items : items});
- if (needEdit) {
- this.menuWithEdit = menu;
- }
- else{
- this.menu = menu;
- }
- return menu;
- }
- },
-
-
- /**
- * 从数据库加载子表权限。
- */
- loadSubTablePermission:function(){
- var defId = $(':hidden[name=defId]').val();
- var actDefId = $(':hidden[name=actDefId]').val();
- var formKey = $(':hidden[name=formKey]').val();
- var nodeId = $(':hidden[name=nodeId]').val();
- var params={defId:defId,actDefId:actDefId,formKey:formKey,nodeId:nodeId};
- var url = "getSubTablePermission.ht";
- var map = null;
- $.ajaxSetup({async:false}); //修改成同步
- $.post(url, params,function(data){
- map = data;
- });
- $.ajaxSetup({async:true}); //改为原来的异步
- return map;
- },
-
- selectValue:function(select){
- var html='';
- var query=select.attr("selectquery")
- var queryJson;
- if(query!=undefined && query!=null ){
- query=query.replaceAll("'","\"");
- queryJson = JSON2.parse(query);
- }else{
- queryJson = "";
- query = "";
- }
- var sValue=select.attr("val"); //select中有一个属性是保存选中的值的(初始化时用这个)
- if(sValue==undefined || sValue==null && sValue.length<=0){
- sValue = "";
- }
- if(query){
- html="<span selectvalue="+sValue+" selectquery="+query+"><lable></lable></span>"
- }else{
- if(sValue==""){
- html=select.find("option:selected").text(); //获取Select选择的Text 选中(不可编辑时或者没有值时,是默认的)
- }else{
- html += select.find("option[value='"+sValue+"']").text(); //和值相对应的显示
- }
- }
- return html;
- },
-
- /**
- * 主表的权限补充(必埴)
- */
- isMainTableRequest:function(){
- //主表的附件必埴验证问题
- $("div[name=div_attachment_container]").each(function() {
- var div_me=$(this);
- if(div_me.attr("right")!='b') return true;
- $("a.link",div_me).each(function(){
- var me=$(this);
- var validRule = me.attr("validate");
- if ( validRule != null && 'undefined' != validRule.toLowerCase() && validRule.length>2 ){
- var json = eval('(' + validRule + ')');
- if(!json.required){
- var jsonStr = validRule.substring(0, validRule.lastIndexOf('}'));
- jsonStr +=",'required':true}"; //加上必填
- me.attr("validate",jsonStr);
- }
- }else{
- me.attr("validate","{'required':true}"); //必填
- }
- });
- });
- },
-
- //初始化子表级联
- initSubQuery:function(){
-
- $("select[selectquery]",$("[type=subtable],[formtype='window']")).each(function(){
- var me = $(this);
- var selected=me.attr("selectqueryed");
- //selectqueryed标识这个子表是否已经执行过了change绑定,存在就是已经绑定了,不存在就是没用被绑定过
- if(selected)return true;
- var selectquery = me.attr("selectquery");
- if (!selectquery)
- return true;
- selectquery = selectquery.replaceAll("'", "\"");
- var queryJson = JSON2.parse(selectquery);
- var query = queryJson.query;
- for (var i = 0; i < query.length; i++) {
- var field;
- // isMain是true 就是绑定主表的字段
- if (query[i].isMain=="true") {
- field = $(".formTable [name$=':" + query[i].trigger + "']");
- } else {
- field = me.parents('table.listTable,[formtype="window"]').find("[name='" + query[i].trigger + "']");
- //添加新一个子表时,执行了多次绑定change事件,把之前的change事件都解绑
- field.unbind("change");
- }
- if (field != "")
- QueryUI.change(field, me, queryJson);
- }
- //添加一个属性,标识已经被绑定过,
- me.attr("selectqueryed","selectqueryed");
- QueryUI.getvalue(me, queryJson);
- });
- },
- //初始化子表选择器
- subSelectorInit:function(){
- $('[ctlType="selector"]','.listTable,[formtype="window"]').each(function(){
- var me =$(this);
- var nameID=me.attr('name')+'ID';
- var isHidden=me.siblings("input[name='"+nameID+"']");
- //如果存在隐藏域,则是已经添加了
- if(isHidden.length!=0) return;
- var type = me.attr('class');
- //方法在SelectotInit.js
- buildSelector(me, type);
- });
- },
- // 验证子表是否必填(至少要有一条记录)
- isSubTableRequest:function(){
- var result = {success : true}
- $('div[right="b"][type="subtable"]').each(function(){
- var subtable = $(this);
- var listRows = $('tr.listRow', subtable);
- if(listRows.length > 1) return true;
- var tableDesc = subtable.attr('tabledesc');
- result.success = false;
- result.errorMsg = tableDesc;
- return false;
- });
- return result;
- }
- };
- //对表单初始化。
- CustomForm.init();
- });
|