MWF.xDesktop.requireApp("Attendance", "Explorer", null, false); MWF.xDesktop.requireApp("Selector", "package", null, false); MWF.xDesktop.requireApp("Template", "Explorer", null, false); MWF.xDesktop.requireApp("Template", "MForm", null, false); MWF.xApplication.Attendance.AppealExplorer = new Class({ Extends: MWF.xApplication.Attendance.Explorer, Implements: [Options, Events], initialize: function(node, app, actions, options){ this.setOptions(options); this.app = app; this.path = "../x_component_Attendance/$AppealExplorer/"; this.cssPath = "../x_component_Attendance/$AppealExplorer/"+this.options.style+"/css.wcss"; this._loadCss(); this.actions = actions; this.node = $(node); this.preMonthDate = new Date(); this.initData(); if (!this.personActions) this.personActions = new MWF.xAction.org.express.RestActions(); }, load: function(){ this.loadConfig(); this.topWrapNode = new Element("div", {"style": "width:100%;overflow:hidden;background:rgb(240, 240, 240);"}).inject(this.node); this.topNode = new Element("div", { "styles" : this.css.topNode }).inject(this.topWrapNode); this.topNode.setStyle("width", "900px"); this.loadToolbar(); this.loadFilter(); this.loadContentNode(); this.elementContentNode.addEvent("scroll", function () { var scroll = this.elementContentNode.getScroll(); if(this.topWrapNode)this.topWrapNode.scrollTo(scroll.x); }.bind(this)); var month = (this.preMonthDate.getMonth()+1).toString(); if( month.length == 1 )month = "0"+month; var filterData = { "status" : "0", "yearString" : this.preMonthDate.getFullYear().toString(), "monthString" : month }; this.loadView( filterData ); this.setNodeScroll(); }, loadConfig : function(){ /*this.config = {}; var v; this.actions.getSettingCode( "APPEALABLE", function(json){ v = json.data ? json.data.configValue : null },null, false) if( !v ){ this.config.APPEALABLE = true; }else{ this.config.APPEALABLE = (v != "false" ) }*/ this.config = {}; var v; //需要判断申述类型listSetting2020年6月16日 by gee this.configSetting = new Object(null); this.actions.listSetting(function(json){ var data = json.data; if(!!data){ json.data.map(function(e){ this.configSetting[e.configCode]=e; }.bind(this)); v = this.configSetting.APPEALABLE.configValue; }else{ v = null; } }.bind(this),null,false); if( !v ){ this.config.APPEALABLE = true; }else{ this.config.APPEALABLE = (v != "false" ) } }, loadToolbar: function(){ this.toolbarNode = new Element("div", {"styles": this.css.toolbarNode || this.app.css.toolbarNode}); this.toolbarNode.inject(this.topNode); var toolbarUrl = this.path + "toolbar.json"; MWF.getJSON(toolbarUrl, function (json) { json.each(function (tool) { // if( !this.config.APPEALABLE && tool.condition=="onlock" ){ // this.createToolbarItemNode(tool) // }else if( this.config.APPEALABLE && tool.condition!="onlock" ){ // this.createToolbarItemNode(tool) // } if( tool.condition && tool.condition.substr( 0, "function".length ) == "function"){ eval("var fun = " + tool.condition); var flag = fun.call(this, this.configSetting); if(flag)this.createToolbarItemNode(tool) }else{ this.createToolbarItemNode(tool) } }.bind(this)); }.bind(this)); }, loadFilter : function(){ this.fileterNode = new Element("div.fileterNode", { "styles": this.css.fileterNode }).inject(this.topNode); this.loadFilterStyle(function( css ) { this.filterFormCss = css; var table = new Element("table", { "border": "0", "cellpadding": "5", "cellspacing": "0", "styles": this.app.css.filterTable, "class": "filterTable", }).inject(this.fileterNode); var tr = new Element("tr").inject(table); //var td = new Element("td", { "styles" : this.css.filterTableTitle, "text" : this.preMonthDate.format(this.app.lp.dateFormatMonth) }).inject(tr); this.createYearSelectTd(tr); this.createMonthSelectTd(tr); this.createStatusSelectTd(tr); this.createAppealReasonTd(tr); this.createUnitTd(tr); this.createPersonTd(tr); this.createActionTd(tr); }.bind(this)) }, createStatusSelectTd : function( tr ){ var _self = this; var td = new Element("td", { "styles" : this.app.css.filterTableTitle, "text" : this.app.lp.auditStatus }).inject(tr); var td = new Element("td", { "styles" : this.app.css.filterTableValue }).inject(tr); this.status = new MDomItem( td, { "name" : "status", "type" : "select", "value" : "0", "selectText" : this.app.lp.auditStatusSelectText, "selectValue" :["999","0","1","-1"] }, true, this.app, this.filterFormCss ); this.status.load(); }, createAppealReasonTd : function( tr ){ var _self = this; var td = new Element("td", { "styles" : this.app.css.filterTableTitle, "text" : this.app.lp.appealReason }).inject(tr); var td = new Element("td", { "styles" : this.app.css.filterTableValue }).inject(tr); this.appealReason = new MDomItem( td, { "name" : "appealReason", "type" : "select", "selectText" : this.app.lp.appealReasonSelectText }, true, this.app, this.filterFormCss ); this.appealReason.load(); }, createUnitTd : function(tr){ var _self = this; var td = new Element("td", { "styles" : this.app.css.filterTableTitle, "text" : this.app.lp.department }).inject(tr); var td = new Element("td", { "styles" : this.app.css.filterTableValue }).inject(tr); this.unitName = new MDomItem( td, { "name" : "unitName", "style" : {"width":"60px"}, "defaultValue" : this.app.manageUnits.length > 0 ? this.app.manageUnits[0] : "", "event" : { "click" : function(mdi){ _self.selecePerson( mdi, "unit" ); } } }, true, this.app, this.filterFormCss ); this.unitName.load(); }, createPersonTd : function(tr){ var _self = this; var td = new Element("td", { "styles" : this.app.css.filterTableTitle, "text" : this.app.lp.person }).inject(tr); var td = new Element("td", { "styles" : this.app.css.filterTableValue }).inject(tr); this.empName = new MDomItem( td, { "name" : "empName", "style" : {"width":"60px"}, "event" : { "click" : function(mdi){ _self.selecePerson( mdi, "person" ); } } }, true, this.app, this.filterFormCss ); this.empName.load(); }, createYearSelectTd : function( tr ){ var _self = this; var td = new Element("td", { "styles" : this.app.css.filterTableTitle, "text" : this.app.lp.annuaal }).inject(tr); var td = new Element("td", { "styles" : this.app.css.filterTableValue }).inject(tr); this.yearString = new MDomItem( td, { "name" : "yearString", "type" : "select", "selectValue" : function(){ var years = []; var year = new Date().getFullYear(); for(var i=0; i<6; i++ ){ years.push( year-- ); } return years; } }, true, this.app, this.filterFormCss ); this.yearString.load(); }, createMonthSelectTd : function( tr ){ var _self = this; var td = new Element("td", { "styles" : this.app.css.filterTableTitle, "text" : this.app.lp.months }).inject(tr); var td = new Element("td", { "styles" : this.app.css.filterTableValue }).inject(tr); this.monthString = new MDomItem( td, { "name" : "monthString", "type" : "select", "selectValue" :["","01","02","03","04","05","06","07","08","09","10","11","12"] }, true, this.app , this.filterFormCss); this.monthString.load(); }, createActionTd : function( tr ){ var td = new Element("td", { "styles" : this.app.css.filterTableValue }).inject(tr); var input = new Element("button",{ "text" : this.app.lp.search, "styles" : this.app.css.filterButton }).inject(td); input.addClass("mainColor_bg"); input.addEvent("click", function(){ /*var year = this.preMonthDate.getFullYear().toString(); var month = (this.preMonthDate.getMonth()+1).toString(); if( month.length == 1 )month = "0"+month;*/ var filterData = { status : this.status.getValue(), appealReason : this.appealReason.getValue(), unitName : this.unitName.getValue(), empName : this.empName.getValue(), yearString : this.yearString.getValue(), monthString : this.monthString.getValue() } this.loadView( filterData ); }.bind(this)) }, selecePerson: function( el, type ){ var text = this.app.lp.selecePerson; if( type=="topUnit") { text = this.app.lp.selectCompany; }else if( type=="unit"){ text = this.app.lp.selectDepartment; } var options = { "type": type, //topUnit unit person, "title": text, "count" : "1", "values": [ el.get("value") ] || [], "onComplete": function(items){ var arr = []; items.each(function(item){ arr.push(item.data.distinguishedName); }.bind(this)); el.set("value",arr.join(",")); }.bind(this) }; var selector = new MWF.O2Selector(this.app.content, options); }, setContentSize: function(){ var topNodeSize = this.topNode ? this.topNode.getSize() : {"x":0,"y":0}; var nodeSize = this.node.getSize(); var height = nodeSize.y - topNodeSize.y - this.getOffsetY(this.topNode) - this.getOffsetY(this.elementContentNode) - this.getOffsetY(this.node); this.elementContentNode.setStyle("height", ""+height+"px"); this.pageCount = (height/30).toInt()+5; if (this.view && this.view.items.length"+ " " + " "+ " " + ""+ " " + " "+ " " + ""+ " " + ""+ " " + ""+ " " + ""+ " " + ""+ " " + ""+ " " + ""+ " " + /*""+ " " +*/ "" this.formTableArea.set("html",html); var lp = this.app.lp; this.document = new MForm( this.formTableArea, this.data, { style : "attendance", isEdited : this.isEdited || this.isNew, itemTemplate : { empNameShow : { text: lp.employeeName, type : "innertext", value : this.data.empName.split("@")[0] }, recordDateString : { text:lp.recordDate, type : "innertext"}, onDutyTime : { text: lp.onDutyTime , type : "innertext"}, offDutyTime : { text: lp.offDutyTime, type : "innertext"}, statusShow : { text:lp.attendanceStatus , type : "innertext" }, appealStatusShow : { text:lp.appealStatus, type : "innertext"}, appealReason : { text:lp.appealReason, type : "innertext" }, address : { text: lp.address, type : "innertext" }, selfHolidayType : { text: lp.leaveType, type : "innertext" }, startTime : { text:lp.startTime, type : "innertext" }, endTime : { text:lp.endTime, type : "innertext" }, appealDescription : { text: lp.appealDescriptoin , type : "innertext" } //opinion1 : { text :"审批意见",type : "textarea" } } }, this.app,this.css); this.document.load(); _self.switchFieldByAppealReason(this.data.appealReason); // this.cancelActionNode = new Element("div", { // "styles": this.css.createCancelActionNode, // "text": lp.close // }).inject(this.createFormNode); // // // this.cancelActionNode.addEvent("click", function(e){ // this.cancelCreate(e); // }.bind(this)); // if( this.isNew || this.isEdited ){ // this.denyActionNode = new Element("div", { // "styles": this.css.createDenyActionNode, // "text": lp.disagree // }).inject(this.createFormNode); // this.createOkActionNode = new Element("div", { // "styles": this.css.createOkActionNode, // "text": lp.agree // }).inject(this.createFormNode); // // this.denyActionNode.addEvent("click", function(e){ // this.deny(e); // }.bind(this)); // this.createOkActionNode.addEvent("click", function(e){ // this.okCreate(e); // }.bind(this)); // } }, switchFieldByAppealReason : function( ar ){ var lp = this.app.lp; var tempField = ["selfHolidayType","startTime","endTime","address","appealDescription"]; var showField = []; if( ar == lp.temporaryLeave ){ showField = ["selfHolidayType","startTime","endTime"]; }else if( ar == lp.out ){ showField = ["address","startTime","endTime"]; }else if( ar == lp.businessTrip ){ showField = ["address","startTime","endTime","appealDescription"]; }else if( ar == lp.other ){ showField = ["appealDescription"]; } tempField.each( function( f ){ this.formTableArea.getElement("[contain='"+f+"']").setStyle("display", showField.contains(f) ? "" : "none" ); if( this.isNew || this.isEdited )this.document.items[f].options.notEmpty = (showField.contains(f) ? true : false ) }.bind(this)) }, deny : function(e){ var data = { 'ids' : [this.data.id], 'status':'-1', 'opinion1': this.document.items.opinion1.getValue() }; //if (data.opinion1 ){ this.process( data ); //}else{ // this.app.notice( "请填写意见", "error"); //} }, okCreate: function(e){ var data = { 'ids' : [this.data.id], 'status':'1', 'opinion1': this.document.items.opinion1.getValue() }; this.process( data ); }, process: function( data ){ this.app.restActions.processAppeal( data, function(json){ if( json.type == "ERROR" ){ this.app.notice( json.message , "error"); }else{ if( this.formMaskNode )this.formMaskNode.destroy(); if( this.formAreaNode )this.formAreaNode.destroy(); if (this.explorer && this.explorer.view)this.explorer.view.reload(); this.app.notice( this.app.lp.actionSuccess, "success"); } // this.app.processConfig(); }.bind(this)); } })