service.topsearch_wev8.js 21.1 KB
define("mService/topsearch_html",function(){return'<div class="page-content">    <div class="wev-topsearch-innermask"></div>    <div class="wev-content wev-topsearch-content">        <div class="page-scroller">            <form disabledEnterSubmit class="wev-form" action="javascript: void(0)"></form>        </div>    </div>    <div class="wev-footer wev-topsearch-footer">        <div class="wev-btn-wrapper wev-btn-block">            <div class="wev-btn wev-btn-reset">$i18n{RESET}</div>            <div class="wev-btn wev-btn-search">$i18n{SURE}</div>        </div>    </div></div>'}),define("mService/topsearch",["mUtil","mService"],function(mUtil,mService){var datetimeTmpl='    <div id="${id}" class="wev-field wev-vertical wev-muti-field" data-fieldType="${fieldTypeFace}" data-fieldid="${fieldid}">        <div class="wev-field-label">${showname}</div>        <div>            <div class="wev-select-list">                <ul class="wev-clearfix">                    {@each quickItems as item}                        {@if (!item.custom || item.isShow == 1) && quickItems.length > 1}                            <li {@if item.custom}data-custom="1"{@/if} class="{@if item.custom}custom {@/if}{@if (item.custom && showCustomWrapper) || (!item.custom && (item.start == defVal.val1 && item.end == defVal.val2))}checked{@/if}" data-start="${item.start}" data-end="${item.end}">                                <div class="wev-ellipsis">$${item.name}</div>                            </li>                        {@/if}                    {@/each}                </ul>            </div>            <div class="custom-condition-wrapper" {@if quickItems && quickItems.length > 1 && !showCustomWrapper}style="display: none;"{@/if}>                <div class="input-wrapper{@if defVal.val1} wev-has-value{@/if}" style="width: 45%;">                    <input type="hidden" data-prevoffset="${prevOffset}" data-nextoffset="${nextOffset}" name="${fieldname}" value="${defVal.val1}"/>                    <span class="wev-field-view-span{@if !defVal.val1} wev-field-view-tip{@/if}" showname="#START#">{@if defVal.val1}${defVal.val1}{@else}#START#{@/if}</span>                    <div class="wev-clear-btn"></div>                </div>                <div style="width: 10%;color:#999;">~</div>                <div class="input-wrapper{@if defVal.val2} wev-has-value{@/if}" style="width: 45%;">                    <input type="hidden" data-prevoffset="${prevOffset}" data-nextoffset="${nextOffset}" name="${fieldname}" value="${defVal.val2}"/>                    <span class="wev-field-view-span{@if !defVal.val2} wev-field-view-tip{@/if}" showname="#END#">{@if defVal.val2}${defVal.val2}{@else}#END#{@/if}</span>                    <div class="wev-clear-btn"></div>                </div>            </div>        </div>    </div>',templateHtml={select:'            <div id="${id}" class="wev-field wev-vertical wev-select-field open" data-fieldType="${fieldTypeFace}" data-fieldid="${fieldid}" data-type="${type}">                <div class="wev-field-label toggle">${showname}</div>                <div class="wev-field-content">                    <div class="wev-select-list">                        <input type="hidden" name="${fieldname}" value="${defVal.val1}"/>                        <ul class="wev-clearfix">                            {@each data as item}                            <li class="{@if defVal.val1 == item.selectvalue}checked{@/if}" data-value="${item.selectvalue}">                                <div class="wev-ellipsis">$${item.selectname}</div>                            </li>                            {@/each}                        </ul>                    </div>                </div>            </div>',"select-menu":'            <div id="${id}" class="wev-field wev-vertical wev-menu-field" data-fieldType="${fieldTypeFace}" data-fieldid="${fieldid}" data-type="${type}">                <div class="wev-field-label"></div>                <div>                    <ul class="wev-select-menu ${customCls}">                        <input type="hidden" name="${fieldname}" value="${defVal.val1}"/>                        {@each data as item}                        <li class="{@if defVal.valArr && ~defVal.valArr.indexOf(item.selectvalue)}checked{@/if}" data-value="${item.selectvalue}">                            <i class="wev-css-icon {@if type==2}wev-multi-check{@else}wev-single-check{@/if}"></i>                            <div>$${item.selectname}</div>                        </li>                        {@/each}                    </ul>                </div>            </div>',checkbox:'            <div id="${id}" class="wev-field wev-vertical wev-checkbox-field" data-fieldType="${fieldTypeFace}" data-fieldid="${fieldid}" data-type="${type}">                <div class="wev-field-label">${showname}</div>                <div>                    <div class="wev-select-list">                        <input type="hidden" name="${fieldname}" value="${defVal.val1}"/>                        <ul class="wev-clearfix">                            {@each data as item}                            <li class="{@if defVal.valArr && ~defVal.valArr.indexOf(item.selectvalue)}checked{@/if}" data-value="${item.selectvalue}">                            <div class="wev-ellipsis">$${item.selectname}</div>                            </li>                            {@/each}                        </ul>                    </div>                </div>            </div>',date:datetimeTmpl.replace(/START/g,"740").replace(/END/g,"741"),time:datetimeTmpl.replace(/START/g,"742").replace(/END/g,"743"),datetime:datetimeTmpl.replace(/START/g,"389164").replace(/END/g,"389165"),browser:'            <div id="${id}" class="wev-field wev-vertical wev-browser-field" data-fieldType="${fieldTypeFace}" data-fieldid="${fieldid}" data-viewtype="${viewtype}">                <div class="wev-field-label">${showname}</div>                <div>                    <a class="input-wrapper" href="javascript:void(0);">                        <div class="text">${defVal.name}</div>                        <div class="hiddenText">${defVal.name}</div>                        <div class="wev-field-tip"{@if defVal.val1} style="display:none"{@/if}>${placeholder}</div>                        <i class="search"></i>                        <input type="hidden" name="${fieldname}" bid="${browserId}" bname="${browserName}" isMulti="${isMulti}" value="${defVal.val1}"/>                    </a>                    <div class="wev-clear-btn"{@if defVal.val1} style="display:block;"{@/if}></div>                </div>            </div>',text:'            <div id="${id}" class="wev-field wev-vertical" data-fieldType="${fieldTypeFace}" data-fieldid="${fieldid}">                <div class="wev-field-label">${showname}</div>                <div>                    <div class="input-wrapper{@if defVal.val1} wev-has-value{@/if}">                        <input type="text" name="${fieldname}" placeholder="${placeholder}" value="${defVal.val1}"/>                        <div class="wev-clear-btn"></div>                    </div>                </div>            </div>',number:'            <div id="${id}" class="wev-field wev-vertical wev-muti-field" data-fieldType="${fieldTypeFace}" data-fieldid="${fieldid}">                <div class="wev-field-label">${showname}</div>                <div>                    <div class="wev-select-list">                        <ul class="wev-clearfix">                            {@each quickItems as item}                                {@if (!item.custom || item.isShow == 1) && quickItems.length > 1}        \t\t\t\t\t\t\t<li {@if item.custom}data-custom="1"{@/if} class="{@if item.custom}custom {@/if}{@if (item.custom && showCustomWrapper) || (!item.custom && (String(item.start) === String(defVal.val1) || (!defVal.val1 && item.start == undefined)) && (item.end == defVal.val2 || (!defVal.val2 && item.end == undefined)))}checked{@/if}"        \t\t\t\t\t\t\tdata-start="${item.start}" data-end="${item.end}">                                        <div class="wev-ellipsis">$${item.name}</div>                                    </li>                                {@/if}                            {@/each}                        </ul>                    </div>                    <div class="custom-condition-wrapper" {@if quickItems && quickItems.length > 1 && !showCustomWrapper}style="display: none;"{@/if}>                        <div class="input-wrapper{@if defVal.val1} wev-has-value{@/if}" style="width: 45%;">                            <input type="number" name="${fieldname}" onblur="if(this.value)this.value=Number(this.value)" placeholder="#383810#" value="${defVal.val1}"/>                            <div class="wev-clear-btn"></div>                        </div>                        <div style="width: 10%;color:#999;">~</div>                        <div class="input-wrapper{@if defVal.val2} wev-has-value{@/if}" style="width: 45%;">                            <input type="number" name="${fieldname}" onblur="if(this.value)this.value=Number(this.value)" placeholder="#383811#" value="${defVal.val2}"/>                            <div class="wev-clear-btn"></div>                        </div>                    </div>                </div>            </div>'},labelCache={83869:"请输入",386382:"请选择",740:"开始日期",741:"结束日期",742:"开始时间",743:"结束时间",389164:"开始日期时间",389165:"结束日期时间",383810:"大于等于",383811:"小于等于",3408:"今天",4886:"明天",3409:"本周",3410:"本月",3412:"本季",3413:"本年",6204:"上午",6205:"下午",6206:"全天",3916:"自定义"},replaceTempi18nLabel=function(tmpl){for(var index in labelCache)tmpl=tmpl.replace(eval("/#"+index+"#/g"),labelCache[index]);return tmpl},getSearchParam=function(e,o,f){var u=[];return e.find(".wev-field").each(function(){var e,t=$(this),a=t.attr("id"),i=t.attr("data-fieldType"),l=t.attr("data-fieldid"),n=(e="textarea"==i?$("textarea",t):$("input",t)).attr("name"),d="",s={val1:"",val2:"",name:""};if(1<e.length){var r=e.eq(0).val(),v=e.eq(1).val();""==r&&""==v||(d=r+","+v),s.val1=r,s.val2=v}else d=e.val(),s.val1=d;"browser"==i?s.name=t.find(".text").html():"checkbox"!=i&&"select"!=i||(s.valArr=d.split(","));var c={fieldname:n,fieldvalue:d,fieldtype:i,fieldid:l};(o&&""!=d||!o)&&u.push(c),o&&f&&f.every(function(e){return e.id!==a||(e.defVal=s,!1)})}),u},initBrowser=function(e,m,w){e.each(function(){var r=$(this),v=r.closest(".wev-field"),c=r.parent(),o=r.siblings(".text"),f=r.siblings(".hiddenText"),e=r.parent().siblings(".wev-clear-btn"),t=r.siblings(".wev-field-tip"),u=!1;r.siblings("i.search").on("click",function(){var e=r.attr("bid"),t=r.attr("bname"),a="1"==r.attr("ismulti"),i=v.data("fieldid"),l=v.data("viewtype"),n="",d={selectedIds:r.val(),requestParams:{fieldid:i,viewtype:l},success:function(e,t){r.val(e).triggerHandler("change"),o.html(t),f.html(t),setTimeout(function(){o[0].clientWidth-64<f[0].scrollWidth?u=!0:(u=!1,c.removeClass("showall"))},100)}};if(1==e||17==e)$.extend(d,{browserType:e,isMulti:a}),n="hrmbrowser";else if(256==e||257==e)$.extend(d,{browserId:e,browserName:t,isMulti:a}),n="treebrowser";else if(-1<["4","57","167","168","164","194","169","170"].indexOf(e))n="deptbrowser",$.extend(d,{browserId:e,isMulti:a});else if(22==e)n="fnabrowser",$.extend(d,{browserId:e,isMulti:a});else{var s={};getSearchParam(w,!1).forEach(function(e){var t=e.fieldname.toLowerCase(),a=e.fieldtype,i=e.fieldvalue;"browser"!=a&&30<i.length&&(i=""),s["fieldname_"+t]=i}),$.extend(d,{browserId:e,browserName:t,relateParam:s,advancedSearch:m[t],isMulti:a}),m[t]&&$.extend(d,{timestamp:(new Date).valueOf()}),n="commonbrowser"}mService.show(n,d)}),r.change(function(){r.val()?(e.show(),t.hide()):(e.hide(),t.show())}),e.click(function(){r.val("").triggerHandler("change"),o.html(""),f.html(""),c.removeClass("showall"),u=!1}),o.click(function(){u&&(c.hasClass("showall")?c.removeClass("showall"):c.addClass("showall"))})})},nowDate=new Date,nowDayOfWeek=nowDate.getDay(),nowDay=nowDate.getDate(),nowMonth=nowDate.getMonth(),nowYear=nowDate.getYear();nowYear+=nowYear<2e3?1900:0;var timeUtil={getMonthDays:function(e){var t=new Date(nowYear,e,1);return(new Date(nowYear,e+1,1)-t)/864e5},getYestodayDate:function(e){var t=new Date;return t.setTime(t.getTime()-864e5),mUtil.dateToStr(t,e)},getTomorrowDate:function(e){var t=new Date;return t.setTime(t.getTime()+864e5),mUtil.dateToStr(t,e)},getPrevWeekStartDate:function(e){var t=new Date(nowYear,nowMonth,nowDay-7-nowDayOfWeek);return mUtil.dateToStr(t,e)},getPrevWeekEndDate:function(e){var t=new Date(nowYear,nowMonth,nowDay-1-nowDayOfWeek);return mUtil.dateToStr(t,e)},getCurrWeekStartDate:function(e){var t=new Date(nowYear,nowMonth,nowDay-nowDayOfWeek);return mUtil.dateToStr(t,e)},getCurrWeekEndDate:function(e){var t=new Date(nowYear,nowMonth,nowDay+(6-nowDayOfWeek));return mUtil.dateToStr(t,e)},getNextWeekStartDate:function(e){var t=new Date(nowYear,nowMonth,nowDay+7-nowDayOfWeek);return mUtil.dateToStr(t,e)},getNextWeekEndDate:function(e){var t=new Date(nowYear,nowMonth,nowDay+(13-nowDayOfWeek));return mUtil.dateToStr(t,e)},getPrevMonthStartDate:function(e){var t=new Date(nowYear,nowMonth-1,1);return mUtil.dateToStr(t,e)},getPrevMonthEndDate:function(e){var t=new Date(nowYear,nowMonth-1,this.getMonthDays(nowMonth-1));return mUtil.dateToStr(t,e)},getCurrMonthStartDate:function(e){var t=new Date(nowYear,nowMonth,1);return mUtil.dateToStr(t,e)},getCurrMonthEndDate:function(e){var t=new Date(nowYear,nowMonth,this.getMonthDays(nowMonth));return mUtil.dateToStr(t,e)},getCurrSeasonStartMonth:function(){var e=0;return nowMonth<3&&(e=0),2<nowMonth&&nowMonth<6&&(e=3),5<nowMonth&&nowMonth<9&&(e=6),8<nowMonth&&(e=9),e},getCurrSeasonStartDate:function(e){var t=new Date(nowYear,this.getCurrSeasonStartMonth(),1);return mUtil.dateToStr(t,e)},getCurrSeasonEndDate:function(e){var t=this.getCurrSeasonStartMonth()+2,a=new Date(nowYear,t,this.getMonthDays(t));return mUtil.dateToStr(a,e)},getPrevYearStartDate:function(e){var t=new Date(nowYear-1,0,1);return mUtil.dateToStr(t,e)},getPrevYearEndDate:function(e){var t=new Date(nowYear-1,11,this.getMonthDays(11));return mUtil.dateToStr(t,e)},getCurrYearStartDate:function(e){var t=new Date(nowYear,0,1);return mUtil.dateToStr(t,e)},getCurrYearEndDate:function(e){var t=new Date(nowYear,11,this.getMonthDays(11));return mUtil.dateToStr(t,e)}},getDateQuickItems=function(e,t){t=t||[];var a="yyyy-MM-dd",i=e?" 00:00:00":"",l=e?" 23:59:59":"",n={YESTODAY:{start:timeUtil.getYestodayDate(a)+i,end:timeUtil.getYestodayDate(a)+l},TODAY:{start:mUtil.getCurrDate()+i,end:mUtil.getCurrDate()+l},TOMMOROW:{start:timeUtil.getTomorrowDate(a)+i,end:timeUtil.getTomorrowDate(a)+l},PREVWEEK:{start:timeUtil.getPrevWeekStartDate(a)+i,end:timeUtil.getPrevWeekEndDate(a)+l},CURRWEEK:{start:timeUtil.getCurrWeekStartDate(a)+i,end:timeUtil.getCurrWeekEndDate(a)+l},NEXTWEEK:{start:timeUtil.getNextWeekStartDate(a)+i,end:timeUtil.getNextWeekEndDate(a)+l},CURRMONTH:{start:timeUtil.getCurrMonthStartDate(a)+i,end:timeUtil.getCurrMonthEndDate(a)+l},CURRSEASON:{start:timeUtil.getCurrSeasonStartDate(a)+i,end:timeUtil.getCurrSeasonEndDate(a)+l},CURRYEAR:{start:timeUtil.getCurrYearStartDate(a)+i,end:timeUtil.getCurrYearEndDate(a)+l},PREVMONTH:{start:timeUtil.getPrevMonthStartDate(a)+i,end:timeUtil.getPrevMonthEndDate(a)+l},PREVYEAR:{start:timeUtil.getPrevYearStartDate(a)+i,end:timeUtil.getPrevYearEndDate(a)+l}};return t.map(function(e){var t=n[e.value];return!e.custom&&t&&(e=$.extend(e,t)),e})},getDefaultDateQuickItems=function(){return[{name:labelCache[3408],value:"TODAY"},{name:labelCache[4886],value:"TOMMOROW"},{name:labelCache[3409],value:"CURRWEEK"},{name:labelCache[3410],value:"CURRMONTH"},{name:labelCache[3412],value:"CURRSEASON"},{name:labelCache[3413],value:"CURRYEAR"}]},getTimeQuickItems=function(e){var a={AM:{start:"00:00",end:"11:59"},PM:{start:"12:00",end:"23:59"},ALL:{start:"00:00",end:"23:59"}};return(e=e||[]).map(function(e){var t=a[e.value];return!e.custom&&t&&(e=$.extend(e,t)),e})},getDefaultTimeQuickItems=function(){return[{name:labelCache[6204],value:"AM"},{name:labelCache[6205],value:"PM"},{name:labelCache[6206],value:"ALL"}]},render=function(e,t,a){for(var i="",l={},n=!0,d=0;d<t.length;d++){var s=t[d],r=s.htmltype,v=s.fieldtype,c=s.fieldTypeFace,o="";if(s.defVal=s.defVal||{val1:"",val2:"",name:""},1==t.length&&("select"==c||"checkbox"==c))c="select-menu",2==s.type?o="wev-select-list":n=!1,s.customCls=o;if(6!=r&&7!=r){if(s.hasOwnProperty("placeholder")||(1==r&&(s.placeholder=labelCache[83869]),3==r&&(s.placeholder=labelCache[386382])),9==r&&(1==v||3==v)){var f=s.yearOffset||{};s.prevOffset=f.prev||100,s.nextOffset=f.next||1}var u,m=s.quickItems||[];if("date"==c?(m.length||(m=getDefaultDateQuickItems()),m=getDateQuickItems(!1,m)):"datetime"==c?(m.length||(m=getDefaultDateQuickItems()),m=getDateQuickItems(!0,m)):"time"==c&&(m.length||(m=getDefaultTimeQuickItems()),m=getTimeQuickItems(m)),s.quickItems=m,("number"==c||"date"==c||"datetime"==c||"time"==c)&&s.quickItems.length){u=s.quickItems.filter(function(e){return e.custom})[0];var w=s.defVal,h=!1,p=w.val1,g=w.val2;u||(u={custom:!0,isShow:1,name:labelCache[3916]},s.quickItems.push(u)),(p||g)&&(s.quickItems.every(function(e){return e.custom||String(e.start)!==String(w.val1)&&(w.val1||null!=e.start)||e.end!=w.val2&&(w.val2||null!=e.end)||(h=!0),!h}),h||(u.start=p,u.end=g,s.showCustomWrapper=!0))}var D=templateHtml[c];D&&(i+=mUtil.parseTemplate(replaceTempi18nLabel(D),s),u&&(delete u.start,delete u.end,delete s.showCustomWrapper,u=null),s.advancedSearch&&(l[s.browserName]=s.advancedSearch))}}e.find("form.wev-form").html(i),Mobile_NS.datePicker(e.find(".wev-field[data-fieldType='date'] input"),"date"),Mobile_NS.datePicker(e.find(".wev-field[data-fieldType='time'] input"),"time"),Mobile_NS.datePicker(e.find(".wev-field[data-fieldType='datetime'] input"),"datetime"),initBrowser(e.find(".wev-field[data-fieldType='browser'] input"),l,e),a&&a(n)},pageInit=function(d,t){mUtil.getMultiLabel(labelCache,function(e){$.extend(labelCache,e),render(d,t.conditions,function(i){var m=function(e,t){e.val(t).closest(".input-wrapper").toggleClass("wev-has-value",!!t);var a=e.siblings(".wev-field-view-span");a.length&&a[t?"removeClass":"addClass"]("wev-field-view-tip").html(t||a.attr("showname"))},l=function(){var e=getSearchParam(d,!0,t.conditions);t.onSearch(e)},n=function(a){t.conditions.every(function(e){var t={val1:"",val2:"",name:""};if(a){if(a===e.id)return e.defVal=t,!1}else e.defVal=t;return!0})},e=d.find("form.wev-form");e.find(".wev-select-list").on("click","li",function(){var e=$(this),t=e.parents(".wev-field"),a=e.parents(".wev-select-list"),i=e.hasClass("checked"),l=t.data("type"),n=e.data("custom"),d=t.data("fieldtype");(3==l||1==l||"number"===d||"date"===d||"datetime"===d||"time"===d)&&e.siblings("li").removeClass("checked"),e.toggleClass("checked",!i);var s=t.find(".custom-condition-wrapper");if(s.hide(),n&&(s[i?"hide":"show"](),e.data("start","").data("end","")),t.hasClass("wev-muti-field")){var r=e.attr("data-start"),v=e.attr("data-end"),c=t.find("input");if(!e.hasClass("checked")){var o=c[0]&&c.eq(0).val()||"",f=c[1]&&c.eq(1).val()||"";o==r&&f==v&&(v=r="")}c[0]&&m(c.eq(0),r),c[1]&&m(c.eq(1),v)}else{var u=[];t.find(".checked").each(function(){u.push($(this).attr("data-value"))}),$("input",a).val(u.join(","))}}),e.find(".wev-menu-field .wev-select-menu:not(.wev-select-list)").on("click","li",function(){var e=$(this),t=e.data("value"),a=e.closest(".wev-field"),i="checked";e.siblings("li").removeClass(i),e[e.hasClass(i)?"removeClass":"addClass"](i),a.find("input").val(e.hasClass(i)?t:""),n(),l()}),e.find(".wev-field.wev-select-field .wev-field-label").on("click",function(){$(this).parent().toggleClass("open")}),e.find("input").on("input change",function(){var e=$(this),t=e.val();e.closest(".input-wrapper").toggleClass("wev-has-value",!!t),$(this).closest(".wev-field").find(".wev-select-list>ul>li.checked:not(.custom)").removeClass("checked")}).on("keyup",function(e){13===e.keyCode&&(l(),this.blur())}),e.find(".wev-clear-btn").on("click",function(){$(this).closest(".input-wrapper").removeClass("wev-has-value").find("input").val("").trigger("change")}),d.find(".wev-btn-reset").click(function(){e[0].reset(),$("input",e).val("").triggerHandler("change"),$(".wev-field .text, .wev-field .hiddenText",d).html("").parent().removeClass("showall"),$(".wev-field .wev-field-view-span",d).each(function(){var e=$(this);e.html(e.attr("showname")).addClass("wev-field-view-tip")}),e.find(".wev-field li.checked").each(function(){var e=$(this);e.removeClass("checked"),e.hasClass("custom")&&e.closest(".wev-field").find(".custom-condition-wrapper").hide()}),n()}),d.find(".wev-btn-search").click(function(){l()});setTimeout(function(){var e,t,a;e=i,t=d.find(".wev-topsearch-content"),a=d.find(".wev-topsearch-footer"),e?a.css("top",t.height()).show():a.hide(),t.css("max-height",t.height()),d.find(".page-scroller").css("min-height",t.height()+1)},30)})})};return{mounted:function(l,n,e){if(!e.preload){var d={closeCallback:function(){mUtil.back()},onSearch:function(){}};$.extend(d,e);var t=l.find(".wev-topsearch-innermask");l.find(".page-scroller");t.on("click",function(){d.closeCallback()}).on("touchmove",function(e){e.stopPropagation(),e.preventDefault()}),setTimeout(function(){var e=d.target,t=e.offset(),a=d.container,i=t.top+e.height()-a.offset().top;l.css("top",i),n.css("top",i),pageInit(l,d)},50)}}}});