Form_wev8.js
14.5 KB
define("Form_html",function(){return'<div id="NMEC_${id}" class="wev-comp-${compType}" >\t<form class="wev-form">\t\t<input type="hidden" name="datasource" value="${table.datasource}" />\t\t<input type="hidden" name="tablename" value="${table.name}" />\t\t<input type="hidden" name="keyname" value="${table.key}" />\t\t<input type="hidden" name="billid" value="${billid}" />\t\t<input type="hidden" name="workflowid" value="${relate.wfid}" />\t\t<input type="hidden" name="workflowtitle" value="${relate.wftitle}" />\t\t<input type="hidden" name="modelid" value="${relate.modeid}" />\t\t<input type="hidden" name="empowmentType" value="${relate.empowmentType}" />\t</form></div>'}),define(["mUtil","Component","i18n","mApi/form"],function(u,a,r){var e=function(e){var d,s={},n={},t={},l={};a.super(this,e),this.type="Form",this.tpl=this.type+"_html",this.css=this.type+"_css";var c=this.viewModel={table:{datasource:"$ECOLOGY_SYS_LOCAL_POOLNAME",name:"",key:""},submit:{action:"",validate:function(){}},relate:{formid:-1,modeid:-1,wfid:-1,wftitle:""},detailtable:{isA:!1},repeatField:{}};for(var i in this.beforeMount=function(){c.billid=$p("billid"),c.layoutType=c.billid?0:1;var e=c.submit.action;"save"!=e&&"createWf"!=e||("save"==e&&(c.table.datasource=c.table.datasource||"$ECOLOGY_SYS_LOCAL_POOLNAME"),c.submit.action=u.getActionUrl("service.FormComponent",{action:e}),c.submit.type=e)},this.mounted=function(){var e=this;d=this.$el.find(".wev-form"),s.fillFormData().then(function(){u.trigger("dataload",e.pageid,e.id),$load(function(){s.initFieldTrigger()})}),c.pageExtend&&s.initPageExpand(),$load(function(){s.issetModeDocCategory(),s.getRepeatVerifyFields()}),require(["formExtHelper"])},this.getFormFieldsAttr=function(){return l},s.issetModeDocCategory=function(){var e=Number(c.relate.modeid),t=function(i){s.getFormMecIDList().forEach(function(e){var t=u.getInstance(e);t&&u.isFunction(t.checkModeDocCategory)&&t.checkModeDocCategory(i)})};if(isNaN(e)||-1===e)t(!0);else{var i=u.getActionUrl(this.type,{action:"issetModeDocCategory",modeid:e},this.pageid);u.getJSON(i,function(e){t(e.data)})}},s.getRepeatVerifyFields=function(){var e=Number(c.relate.formid);if(isNaN(e)||-1===e)c.repeatField={};else{var t=u.getActionUrl(this.type,{action:"getRepeatVerifyFields",formid:e},this.pageid);u.getJSON(t,function(e){e.data&&(c.repeatField=e.data)})}},s.fillFormData=function(){var d=$.Deferred();if(!c.billid&&!c.detailtable.isA||c.detailtable.add)return d.resolve(),d;var i=function(o){var r="||||",e=s.getFormMecIDList(!1),l=e.length;e.forEach(function(e){var t,i=u.getInstance(e);t=u.isFunction(i.getFieldNameOfDB)?i.getFieldNameOfDB():i.viewModel.field.name;var a=[];t.split(r).forEach(function(e){for(var t in o)if(t.toLocaleLowerCase()==e.toLocaleLowerCase()){a.push(o[t]);break}});var n=a.join(r);u.isFunction(i.initComponentData)?i.initComponentData().then(function(){i.setValueByDB(n),--l||d.resolve()}):(i.setValueByDB(n),--l||d.resolve())})};if(c.detailtable.datas)return $load(function(){i(c.detailtable.datas)}),d;var e=u.getActionUrl(this.type,{action:"getData",datasource:c.table.datasource,tablename:c.table.name,key:c.table.key,billid:c.billid},this.pageid);return u.getJSON(e,function(e){var t=e.data;$load(function(){i(t)})},function(e){Mobile_NS.alert(e),d.resolve()}),d},s.initPageExpand=function(){var l=this,e=u.getActionUrl(l.type,{action:"parsePageExpand",appid:u.getAppid()||-1,modeid:c.relate.modeid,billid:c.billid},l.pageid);u.getJSON(e,function(o){var r=o.data.tabs||[];r.length&&require(["css!commonTab_css"],function(){var d=l.$container,s=l.$container.children(".page-tip"),e=l.$container.children(".page-header"),c=l.$container.children(".page-content"),t=c.children(".page-scroller");t.addClass("tabpanel in").attr("data-form","show_hide").show().siblings(".tabpanel").remove(),e.length||(e=$('<div class="page-header"></div>'),c.before(e));var i=e.children(".wev-page-extend");i.length||(i=$('<div class="wev-page-extend wev-tab-title"></div>'),e.prepend(i)),d.children(".page-footer").show();var a='<li class="wev-tab-nav wev-tab-selected" data-loaded="true" data-href="#'+t.attr("id")+'">'+o.data.modename+"</li>",n="/mobilemode/appHomepageView.jsp";r.forEach(function(e){e.href&&~e.href.indexOf(n)&&(e.href=e.href.replace(n,"/mobilemode/mobile/page.jsp"),e.href+=(0<e.href.indexOf("?")?"&":"?")+"istab=1"),a+='<li class="wev-tab-nav" data-url="'+e.href+'">'+e.text+"</li>"}),i.html("<ul>"+a+"</ul>"),i[0].scrollLeft=0,e.height()?(e.attr("header-height",e.height()),c.css("top",e.height()+"px")):e.attr("header-height")?c.css("top",e.attr("header-height")+"px"):c.css("top","0px");var f="";$(".wev-tab-nav",i).on("click",function(){s.length||(s=$("<div class='page-tip'></div>"),d.prepend(s)),s.removeClass("page-tip-show page-warn");var i=$(this),e=i.index();if(!i.hasClass("wev-tab-selected")){i.addClass("wev-tab-selected").siblings("li.wev-tab-selected").removeClass("wev-tab-selected"),$(".wev-tab-panel").addClass("wev-tabpanel-hidden").eq(e).removeClass("wev-tabpanel-hidden"),f=f||c.css("bottom"),0===e?(d.children(".page-footer").show(),c.css("bottom",f)):(d.children(".page-footer").hide(),c.css("bottom","0px"));var t=i.data("url"),a=i.data("href"),n=require("mobilebone");if(t&&!i.data("loaded"))if(~t.indexOf("/mobilemode/mobile/page.jsp"))/(appHomepageId|appid)=\d+/i.test(t)?n.ajax({url:t,type:"GET",container:c[0],classPage:"tabpanel",form:"show_hide",success:function(e){var t=$(e).attr("id");t&&i.data("loaded",!0).data("href","#"+t)}}):-1!=t.indexOf("layout=list")?u.getLabel(5463,"查询列表不存在",function(e){s.addClass("page-tip-show page-warn").attr("data-title",e)}):-1!=t.indexOf("layout=add")?u.getLabel(5464,"默认新建布局不存在",function(e){s.addClass("page-tip-show page-warn").attr("data-title",e)}):-1!=t.indexOf("layout=view")?u.getLabel(5465,"默认显示布局不存在",function(e){s.addClass("page-tip-show page-warn").attr("data-title",e)}):u.getLabel(5308,"页面(布局)id不存在",function(e){s.addClass("page-tip-show page-warn").attr("data-title",e)});else{var o=u.UUID();n.createPage('<iframe id="frame_'+o+'" src="'+t+'" class="wev-page-frame tabpanel" frameborder="0" scrolling="auto" data-form="show_hide"></iframe>',{container:c[0],classPage:"tabpanel"}),c.find("#frame_"+o)[0].onload=function(){i.data("loaded",!0).data("href","#frame_"+o)}}else{var r=c.find(a)[0],l=c.children(".tabpanel.in")[0];n.transition(r,l,!1,{classPage:"tabpanel",history:!1,reload:!1,title:!1})}}})})})},s.initFieldTrigger=function(){var t=this,e=Number(c.relate.modeid);isNaN(e)||-1===e||require(["fieldTriggerHelper"],function(){var e=u.getActionUrl(t.type,{action:"parseFieldTrigger",modeid:c.relate.modeid,formid:c.relate.formid},t.pageid);u.getJSON(e,function(i){var a=!1,n={};s.getFormMecIDList().forEach(function(e){var t=u.getInstance(e);t&&(u.isFunction(t.bindTrigger)&&t.bindTrigger(i.data,c.detailtable.add),!1===a&&"FSelect"===t.type&&(a=!0),c.billid&&void 0!==t.viewModel.readonly&&!1===t.viewModel.readonly&&(c.layoutType=2),t.viewModel.field&&(n[t.viewModel.field.id]=e),t.viewModel.readonly?l[e]=3:t.viewModel.required?l[e]=2:l[e]=1)}),a&&0<c.layoutType&&s.initFieldAttrLinkage(n)})})},s.initFieldAttrLinkage=function(r){var e=u.getActionUrl(this.type,{action:"getFieldAttrLinkage",modeid:c.relate.modeid,type:c.layoutType},this.pageid);u.getJSON(e,function(e){var n=new Set,o=e.data;o&&Object.keys(o).forEach(function(e){var t=r[e];if(t){var i=u.getInstance(t);if(i&&u.isFunction(i.bindAttrLinkage)){var a=o[e];Object.keys(a).forEach(function(e){a[e].forEach(function(e){e.changeFields.forEach(function(e,t,i){var a=r[e]||-1;-1!==(i[t]=a)&&n.add(a)})})}),i.bindAttrLinkage(a,2==c.layoutType)}}}),Object.keys(l).forEach(function(e){!n.has(e)&&delete l[e]})})},s.submiting=!1,s.checkDetailTableDataLoaded=function(){var t=!0;return s.getFormMecIDList(!0).some(function(e){if(!u.getInstance(e).dataloaded)return!(t=!1)}),t},this.checkRequired=function(){var a=this,e=function(e){var i=[];return e.forEach(function(e){var t=u.getInstance(e,a.pageid).checkRequired();t&&i.push(t)}),i},t=e(s.getFormMecIDList(!1)),i=e(s.getFormMecIDList(!0)),n="";return(t.length||i.length)&&(n='<div style="text-align:left;">'+r.FIELDS_MUST_FILLED+"</div>"),t.length&&(n+='<div style="text-align:left;">'+(i.length?r.MAIN_FIELD:"")+t.join(",")+"</div>"),i.length&&(n+='<div style="text-align:left;">'+r.DETAIL_FIELD+i.join(",")+"</div>"),n},this.submit=function(t){if(!s.submiting){if(!s.checkDetailTableDataLoaded())return s.info(r.LOADING_DATA);var e,i,a,n=this,o=!1;if(u.isObject(t)&&(t=(e=t).onsuccess||function(){},i=e.isSkipCheck,o=!0),i||(a=this.checkRequired()),a)return Mobile_NS.msg(""+a,3);s.disableFbuttons(),s.submiting=!0,$.when(u.eval(c.submit.validate,n.pageid)).then(function(e){if(!1===e)return s.activeFbuttons(),void(s.submiting=!1);$.isEmptyObject(c.repeatField)?s.send(t,null,o):require(["formExtHelper"],function(e){e.formFieldRepeatVerify(n,function(){s.send(t,null,o)},function(){s.activeFbuttons(),s.submiting=!1})})})}},this.reset=function(){d[0].reset(),s.getFormMecIDList().forEach(function(e){u.getInstance(e).reset()})},this.edit=function(){n.url?$u_r_replace(n.url):Mobile_NS.alert(n.errMsg)},this.preloadEditUrl=function(e){var t=u.getActionUrl("service.FormComponent",{action:"getLayoutUrl"}),i={billid:c.billid,modelid:c.relate.modeid,appid:u.getAppid()||-1,uitype:2},a=function(){u.isFunction(e)&&e()};n={},u.getJSON(t,i,function(e){n.url=e.data,a()},function(e){n.errMsg=e,a()})},this.deleteData=function(n){Mobile_NS.confirm(r.CONFIRM_DEL_DATA,function(){s.disableFbuttons(),s.submiting=!0;var e=u.getActionUrl("service.FormComponent",{action:"delete"}),i="mainid",a=[],t={billid:c.billid,modelid:c.relate.modeid,tablename:c.table.name,datasource:c.table.datasource,mainkey:c.table.key};s.getFormMecIDList(!0).forEach(function(e){var t=u.getInstance(e).viewModel;i=t.relatekey||"mainid",a.push(t.tablename)}),t.relatekey=i,t.detailTables=a.join(","),u.getJSON(e,t,function(e){u.isFunction(n)&&n()},function(e){s.activeFbuttons(),s.submiting=!1,s.info(e)})})},this.getRepeatVerifyInfo=function(e){u.isFunction(e)&&e(c.repeatField)},this.getFormData=function(){var i={};return s.getFormMecIDList().forEach(function(e){var t=u.getInstance(e).getData();u.isObject(t)&&(i=$.extend(i,t))}),i},this.getFormShowData=function(){var a={};return s.getFormMecIDList().forEach(function(e){var t=u.getInstance(e).getShowData();if(u.isObject(t))for(var i in t)a[i.toLowerCase()]=t[i]}),a},this.hasDraftOperation=function(i){if(-1==c.relate.modeid)return i&&i(!1);var e=u.getActionUrl("Form",{action:"checkModelHasDraftStatus",modelid:c.relate.modeid});u.getJSON(e,function(e){if(1==e.data){if(!c.billid)return i&&i(!0);var t=u.getActionUrl("Form",{action:"checkFormDataIsDraftStatus",billid:c.billid,modelid:c.relate.modeid});u.getJSON(t,function(e){i&&i(e.data)})}else i&&i(!1)})},s.error=function(e){Mobile_NS.alert(e)},s.info=function(e){Mobile_NS.msg(e)},s.send=function(r,l,e){u.isString(r)&&(l=r);var t=s.getFormData();e&&t.append("isDraftOperation","1"),u.ajax(c.submit.action,t,function(e,t){if(e){var i=$.parseJSON(e),a=i.status,n=i.data;if(u.isFunction(Mobile_NS.formResponse))return Mobile_NS.formResponse($.extend(!0,{status:i.status},i.data));if("1"==a){var o=n.id;if(l&&s.info(l),o&&(c.billid=o,d.find("input[type='hidden'][name='billid']").val(o)),s.getFormMecIDList(!0).forEach(function(e){u.getInstance(e,this.pageid).afterSubmit(n.detailidsList||[])}),u.isFunction(r))try{r(o)}catch(e){console.error(e)}}else"0"==a&&u.getMultiLabel({5310:"表单保存出现异常:",5311:"流程创建异常:"},function(e){var t=e[5310];"createWf"==c.submit.type&&(t=e[5311]),t+=decodeURIComponent(i.errMsg),s.error(t)});s.activeFbuttons(),s.submiting=!1}else u.getLabel(5309,"表单提交后服务端返回值为空",function(e){s.error(e)})},{type:"POST",processData:!1,contentType:!1,error:function(e){u.getLabel(5360,"网络请求失败,建议到网速良好区域或连接室内wifi再次进行提交操作!",function(e){Mobile_NS.alert(e)})}})},s.disableFbuttons=function(){$(".wev-comp-FButton[target-form='"+c.id+"'] .wev-btn-wrapper",this.$container).addClass("disabled")},s.activeFbuttons=function(){$(".wev-comp-FButton[target-form='"+c.id+"'] .wev-btn-wrapper",this.$container).removeClass("disabled")},s.getFormMecIDList=function(i){if(!0===i&&t.detailtable)return t.detailtable;if(!1===i&&t.maintable)return t.maintable;if(void 0===i&&t.all)return t.all;var a=[],e=i?".wev-comp-DetailTable[data-form='"+c.id+"']":"[data-form='"+c.id+"']";return $(e,this.$container).forEach(function(e){var t=e.id;t&&(!1===i&&!e.classList.contains("wev-comp-DetailTable")||!0===i||void 0===i)&&(t=t.replace("NMEC_",""),a.push(t))}),!0===i?t.detailtable=a:!1===i?t.maintable=a:t.all=a,a},s.getFormData=function(){var a=this,n=new FormData(d[0]);return s.getFormMecIDList().forEach(function(e){var t=u.getInstance(e,a.pageid).getData();if(u.isObject(t))for(var i in t)n.append(i,t[i])}),n},s)u.isFunction(s[i])&&(s[i]=s[i].bind(this))};function t(i){return function(){var e=[].slice.call(arguments),t=e.slice(1);return u.getInstance(e[0])[i].apply(null,t)}}return e.utils={defSqlPrefix:"__SQL__",containsSQL:function(e){return e&&e.indexOf&&0==e.indexOf(this.defSqlPrefix)},getUIType:function(e){var t=$("#"+e),i=t.data("uitype");if(i)return i;var a=t.data("pageoptions")||"";return i=(a=a.split(":"))[1]||"",t.data("uitype",i),i},setDefaultValue:function(e,t){var i=this.getUIType(e),a=!($p("billid")&&"2"!=i||t.detailtable.isA),n=t.detailtable.add;if((a||n)&&""==t.field.value&&""!=t.field.defaultValue){var o=t.field.defaultValue,r=this.containsSQL(o);t.field.value=r?"":o,t.field.needParseSqlValue=r}},parseDefaultSqlValue:function(e,t,i){if(this.containsSQL(e)){e=e.replace(this.defSqlPrefix,"");var a=u.getActionUrl("Form",{action:"parseDefaultValue",content:e},t);return u.getJSON(a,function(e){i&&i(e.data)})}}},Mobile_NS.checkRequired=t("checkRequired"),Mobile_NS.formReset=t("reset"),Mobile_NS.formEdit=t("edit"),Mobile_NS.getFormData=t("getFormData"),Mobile_NS.getFormShowData=t("getFormShowData"),Mobile_NS.dateDiff=function(e,t){var i=new Date(Date.parse(e.replace(/-/g,"/"))).getTime();return(new Date(Date.parse(t.replace(/-/g,"/"))).getTime()-i)/864e5||0},Mobile_NS.doPageExpand=function(e,t){if(e){var i=u.getActionUrl("service.FormComponent",{action:"doPageExpand"});u.ajax(i,e,function(){},{processData:!1,dataType:"text"})}t&&(~t.indexOf("javascript:")?u.eval(t):~t.indexOf("/mobilemode/appHomepageView.jsp")&&!/(appHomepageId|appid)=\d+/i.test(t)?-1!=t.indexOf("layout=list")?u.getLabel(5463,"查询列表不存在",function(e){Mobile_NS.alert(e)}):-1!=t.indexOf("layout=add")?u.getLabel(5464,"默认新建布局不存在",function(e){Mobile_NS.alert(e)}):u.getLabel(5308,"页面(布局)id不存在",function(e){Mobile_NS.alert(e)}):$u(t))},a.init(e)});