fieldTriggerHelper_wev8.js 6.39 KB
define(["mUtil"],function(F){var I={getFInstance:function(e){var a=$("[fieldid='"+e+"']",this.$page);if(a.length){var t=a.closest("[class^='wev-comp-']")[0].id.replace("NMEC_","");return F.getInstance(t)}return F.console.error("Not found instance of "+e),null},canConcat:function(e){if(!e)return!1;var a=e.type;return!!("FBrowser"==a&&!e.viewModel.browser.isSingle||"FTextarea"==a||"FInputText"==a&&"text"==e.viewModel.field.type||"DetailTable"==a||"FCheckbox"==a&&e.viewModel.multiselect)},delDuplication:function(e){if(!e||-1==e.indexOf(","))return e;for(var a=e.split(","),t="",i=0;i<a.length;i++)0==i?t+=a[0]:-1==t.indexOf(a[i])&&(t+=","+a[i]);return t}};function i(e,a,t){var f=this;for(var i in this.$page=t,this.$field=a,this.triggerFieldValue=a.val(),e){var l=f.getValueByKey(e[i],"dataInputs"),r=f.getValueByKey(e[i],"isDel");if(l){var n=function(){for(var e in l){var a=l[e],t=f.getValueByKey(a,"datasourceName"),i=f.getValueByKey(a,"whereClause"),r=f.getValueByKey(a,"dataInputTables");f.setEachTriggerDetail(r,i,t)}},g=[],y=!1;l.forEach(function(e){var u=!1,s=!0,d=[],a=f.getValueByKey(e,"dataInputTables");a&&(a.forEach(function(e){(f.getValueByKey(e,"dataInputTableFields")||[]).every(function(e){var a=f.getValueByKey(e,"pagefieldindex"),t=f.getValueByKey(e,"pageFieldName"),i=$("*[fieldid='"+t.substring(5)+"']",f.$page);if(0<i.length){var r=i.val(),l=f.getValueByKey(e,"treenodeid");if(l&&r){var n=l+"_";if(r.slice(0,n.length)!=n)return s=!1}}if("1"==f.getValueByKey(e,"type"))0===a&&(u=!0);else{var g=f.getValueByKey(e,"pageDetailtable");if(0<a&&-1==d.indexOf(g)){var o=F.getDetailTableInstance(g);o&&!y&&0<$('tr[data-id=""]',o.$comp).length&&(y=!0),-1===d.indexOf(g)&&d.push(g)}}return!0})}),u&&s&&g.push.apply(g,d))}),"1"==r&&0<g.length&&y?F.getLabel("390243","即将执行主表字段联动明细字段,要删除暂未保存的明细表联动数据吗?",function(e){Mobile_NS.confirm(e,function(){g.forEach(function(e){var a=F.getDetailTableInstance(e);a&&$('tr[data-id=""]',a.$comp).each(function(){$(this).remove(),delete a.uploadDatas[$(this).data("rowindex")]})}),n()},n)}):n()}}}i.prototype.setEachTriggerDetail=function(e,a,t){var i=this,r=!1,l=!1;if(e){var n=[],g=[],o="",u=!0;for(var s in e){var d=e[s],f=i.getValueByKey(d,"tableName"),y=i.getValueByKey(d,"alias"),c=i.getValueByKey(d,"formId"),p=i.getValueByKey(d,"dataInputTableFields");if(""!=o&&(o+=","),o+=f+" "+y,p){for(var v in p){var V=p[v],b=i.getValueByKey(V,"pagefieldindex");if("1"==i.getValueByKey(V,"type")){r=0===b;var h={},m=i.getValueByKey(V,"dbFieldName");h.alias=y,h.name=m;var B=i.getValueByKey(V,"pageFieldName");h.fieldid=B;var K=i.getValueByKey(V,"conditions");h.conditions=K,h.value="";var T=$("*[fieldid='"+B.substring(5)+"']",i.$page);if(0<T.length){var N=T.val()||"",F=i.getValueByKey(V,"treenodeid");if(F&&N){var I=F+"_";if(N.slice(0,I.length)!=I){u=!1;break}N=N.replace(I,"")}h.value=N}g.push(h)}else{0!=b&&(l=!0);var D={};D.pageDetailtable=i.getValueByKey(V,"pageDetailtable"),D.searchFieldName=i.getValueByKey(V,"dbFieldName"),D.beTriggerName=i.getValueByKey(V,"pageFieldName"),D.pagefieldindex=b,D.formId=c,D.alias=y,n.push(D)}}if(!u)break}}u&&i.setTriggerDetail(o,a,n,t,g,r,l)}},i.prototype.satrtTriggerByValue=function(e,a){var t=this,i="",r="",l=[],n="",g=[],o=!1,u=!1,s=t.getValueByKey(e,"dataInputs");for(var d in s){var f=s[d];n=t.getValueByKey(f,"datasourceName"),r=t.getValueByKey(f,"whereClause");var y=t.getValueByKey(f,"dataInputTables");if(y)for(var c in i="",y){var p=y[c],v=t.getValueByKey(p,"tableName"),V=t.getValueByKey(p,"alias"),b=t.getValueByKey(p,"formId"),h=t.getValueByKey(p,"dataInputTableFields");if(i+=v+" "+V,h)for(var m in h){var B=h[m],K=t.getValueByKey(B,"pagefieldindex");if("1"==t.getValueByKey(B,"type")){o=0===K;var T={},N=t.getValueByKey(B,"dbFieldName");T.alias=V,T.name=N;var F=t.getValueByKey(B,"pageFieldName");T.fieldid=F;var I=t.getValueByKey(B,"conditions");T.conditions=I,T.value=a,g.push(T)}else{0!=K&&(u=!0);var D={};D.pageDetailtable=t.getValueByKey(B,"pageDetailtable"),D.searchFieldName=t.getValueByKey(B,"dbFieldName"),D.beTriggerName=t.getValueByKey(B,"pageFieldName"),D.pagefieldindex=K,D.formId=b,D.alias=V,l.push(D)}}}}t.setTriggerDetail(i,r,l,n,g,o,u)},i.prototype.setTriggerDetail=function(e,a,B,t,i,K,T){var N=this,r=[];B.forEach(function(e){r.push({id:e.beTriggerName,name:e.searchFieldName,alias:e.alias})});var l=F.jionActionUrl("com.api.mobilemode.web.mobile.service.MobileCommonAction","action=getFieldTriggerValue&triggerJsonArr="+encodeURIComponent(JSON.stringify(r))+"&fromTable="+e+"&whereClause="+encodeURIComponent(a)+"&triggerConditionjsonArr="+encodeURIComponent(JSON.stringify(i)));F.ajax(l,{datasourcename:t},function(e){if("1"==(e=$.parseJSON(e)).status){var a=e.data||[],t=!T||!K,i=!K&&T;if(t&&0==a.length&&a.push({}),!t&&0==a.length)for(var r in B)0==B[r].pagefieldindex&&N.setTriggerValue("",B[r].beTriggerName.substring(5));if(t)for(var r in B){var l=(h=B[r]).pageDetailtable,n=h.pagefieldindex,g=h.beTriggerName.substring(5),o="",u=I.getFInstance(g);i&&!u&&(u=F.getDetailTableInstance(l));var s=I.canConcat(u);if(u){if(N.triggerFieldValue){for(var d=0;d<a.length;d++){if(o&&!s){o="";break}var f=N.getValueByKey(a[d],h.beTriggerName);f&&(o&&(o+=","),o+=f)}o=I.delDuplication(o)}if(i&&"DetailTable"===u.type){var y=u.getLastRowIndex();u.setValue(g,o,y-1);var c=u.viewModel.triggers;for(prop in c)if(prop=="field"+g){N.triggerFieldValue=o;for(var p=c[prop],v=0;v<p.length;v++)N.satrtTriggerByValue(p[v],o)}}u.setValue(o)}}else for(d=0;d<a.length;d++){var V=a[d],b={};for(var r in B){var h;l=(h=B[r]).pageDetailtable,n=h.pagefieldindex,o=""!=N.triggerFieldValue?N.getValueByKey(V,h.beTriggerName):"",g=h.beTriggerName.substring(5);if(T&&K&&0<n){if(""!=N.triggerFieldValue){var m=b[l]||{};m[g]=o,b[l]=m}}else N.setTriggerValue(o,g)}Object.keys(b).forEach(function(e){var l=b[e],n=F.getDetailTableInstance(e);n&&n.addRowData(function(r){Object.keys(l).forEach(function(e){n.setValue(e,l[e],r);var a=n.viewModel.triggers;for(prop in a)if(prop=="field"+e){N.triggerFieldValue=l[e];for(var t=a[prop],i=0;i<t.length;i++)N.satrtTriggerByValue(t[i],l[e])}})})})}}})},i.prototype.setTriggerValue=function(e,a){var t=$("[fieldid='"+a+"']",this.$page);if(t[0])try{var i=t.closest("[class^='wev-comp-']")[0].id.replace("NMEC_","");F.getInstance(i).setValue(e)}catch(e){F.console.error(e)}},i.prototype.getValueByKey=function(e,a){var t="";for(var i in e)i.toLowerCase()==a.toLowerCase()&&(t=e[i]);return t},Mobile_NS.readyToTrigger=function(e,a,t){new i(e,a,t)}});