MWF.xDesktop.requireApp("Attendance", "Explorer", null, false);
MWF.xDesktop.requireApp("Organization", "Selector.package", null, false);
MWF.xDesktop.requireApp("Template", "Explorer", null, false);
MWF.xApplication.Attendance.SelfHolidayExplorer = 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/$SelfHolidayExplorer/";
this.cssPath = "/x_component_Attendance/$SelfHolidayExplorer/"+this.options.style+"/css.wcss";
this._loadCss();
this.actions = actions;
this.node = $(node);
this.initData();
if (!this.personActions) this.personActions = new MWF.xAction.org.express.RestActions();
},
load: function(){
this.loadToolbar();
this.loadFilter();
this.loadContentNode();
this.loadView();
this.setNodeScroll();
},
loadFilter : function(){
this.fileterNode = new Element("div.fileterNode", {
"styles" : this.css.fileterNode
}).inject(this.node)
this._loadFilterContent();
},
exportExcel : function(){
var exportForm = new MWF.xApplication.Attendance.SelfHolidayExplorer.ExportExcelForm( this );
exportForm.edit();
},
_loadFilterContent : function(){
var _self = this;
var html = "
"+
"" +
" | "+
" | "+
" | "+
" | "+
" | "+
" | "+
" | "+
"
" +
"
"
this.fileterNode.set("html",html);
MWF.xDesktop.requireApp("Template", "MForm", function(){
this.filter = new MForm( this.fileterNode, {}, {
style : "filter",
isEdited : true,
itemTemplate : {
q_companyName : { "text" : "选择公司", "tType" : "company" },
q_departmentName : { "text" : "选择部门", "tType" : "department" },
q_empName : { "text" : "选择人员", "tType" : "person" },
action : {
"type" : "button",
"value" : "查询",
"event" : { "click" : function(){
var filterData = _self.filter.getResult( true,",",true,true,true);
this.loadView( filterData );
}.bind(this)}
}
}
}, this.app, this.css);
this.filter.load();
}.bind(this), true);
},
loadView : function( filterData ){
this.elementContentNode.empty();
this.view = new MWF.xApplication.Attendance.SelfHolidayExplorer.View(this.elementContentNode, this.app,this, this.viewData, this.options.searchKey );
this.view.filterData = filterData;
this.view.load();
this.setContentSize();
},
createDocument: function(){
if(this.view)this.view._createDocument();
}
});
MWF.xApplication.Attendance.SelfHolidayExplorer.View = new Class({
Extends: MWF.xApplication.Attendance.Explorer.View,
_createItem: function(data){
return new MWF.xApplication.Attendance.SelfHolidayExplorer.Document(this.table, data, this.explorer, this);
},
_getCurrentPageData: function(callback, count){
//this.actions.listSelfHoliday(function(json){
// if (callback) callback(json);
//});
if(!count )count=20;
var id = (this.items.length) ? this.items[this.items.length-1].data.id : "(0)";
var filter = this.filterData || {};
this.actions.listSelfHolidayFilterNext(id, count, filter, function(json){
if (callback) callback(json);
});
},
_removeDocument: function(documentData, all){
this.actions.deleteSelfHoliday(documentData.id, function(json){
this.explorer.view.reload();
this.app.notice(this.app.lp.deleteDocumentOK, "success");
}.bind(this));
},
_createDocument: function(){
var selfHoliday = new MWF.xApplication.Attendance.SelfHolidayExplorer.SelfHoliday(this.explorer);
selfHoliday.create();
},
_openDocument: function( documentData ){
var selfHoliday = new MWF.xApplication.Attendance.SelfHolidayExplorer.SelfHoliday(this.explorer, documentData );
selfHoliday.open();
}
})
MWF.xApplication.Attendance.SelfHolidayExplorer.Document = new Class({
Extends: MWF.xApplication.Attendance.Explorer.Document
})
MWF.xApplication.Attendance.SelfHolidayExplorer.ExportExcelForm = new Class({
Extends: MWF.xApplication.Attendance.Explorer.PopupForm,
_createTableContent: function(){
var html = ""+
"| 导出员工休假记录 |
" +
"" +
" | "+
" | "+
"
" +
"" +
" | "+
" | "+
//" | "+
"
" +
"
"
this.formTableArea.set("html",html);
MWF.xDesktop.requireApp("Template", "MForm", function(){
this.form = new MForm( this.formTableArea, {q_empName : layout.desktop.session.user.name }, {
isEdited : true,
itemTemplate : {
startDate : { "text" : "开始日期", "tType" : "date" },
endDate : { "text" : "结束日期", "tType" : "date" }
}
}, this.app );
this.form.load();
}.bind(this), true);
},
_ok: function( data, callback ){
this.app.restActions.exportSelfHoliday( data.startDate, data.endDate, function(json){
if( callback )callback(json);
}.bind(this) );
this.close();
}
})
MWF.xApplication.Attendance.SelfHolidayExplorer.SelfHoliday = new Class({
Extends: MWF.widget.Common,
Implements: [Options, Events],
options: {
"width": "500",
"height": "400"
},
initialize: function( explorer, data ){
this.explorer = explorer;
this.app = explorer.app;
this.data = data || {};
this.css = this.explorer.css;
this.load();
},
load: function(){
},
open: function(){
this.isNew = false;
this.isEdited = false;
this._open();
},
create: function(){
this.isNew = true;
this._open();
},
edit: function(){
this.isEdited = true;
this._open();
},
_open : function(){
this.createMarkNode = new Element("div", {
"styles": this.css.createMarkNode,
"events": {
"mouseover": function(e){e.stopPropagation();},
"mouseout": function(e){e.stopPropagation();}
}
}).inject(this.app.content, "after");
this.createAreaNode = new Element("div", {
"styles": this.css.createAreaNode
});
this.createNode();
this.createAreaNode.inject(this.createMarkNode, "after");
this.createAreaNode.fade("in");
this.setCreateNodeSize();
this.setCreateNodeSizeFun = this.setCreateNodeSize.bind(this);
this.addEvent("resize", this.setCreateNodeSizeFun);
},
createNode: function(){
var _self = this;
var d = this.data;
this.createNode = new Element("div", {
"styles": this.css.createNode
}).inject(this.createAreaNode);
this.createIconNode = new Element("div", {
"styles": this.isNew ? this.css.createNewNode : this.css.createIconNode
}).inject(this.createNode);
this.createFormNode = new Element("div", {
"styles": this.css.createFormNode
}).inject(this.createNode);
var table = new Element("table", {
"width" : "100%", "border" : "0", "cellpadding" : "0", "cellspacing" : "0"
}).inject( this.createFormNode );
var tr = new Element("tr").inject(table);
var td = new Element("td", { "colspan":'2', "styles" : this.css.editTableHead, "text" : "员工休假记录" }).inject(tr);
var tr = new Element("tr").inject(table);
var td = new Element("td", { "styles" : this.css.editTableTitle, "text" : "部门:" }).inject(tr);
var td = new Element("td", { "styles" : this.css.editTableValue }).inject(tr);
if( !this.isNew && !this.isEdited ){
td.set("text", d.organizationName )
}else{
this.organizationName = new MDomItem( td, {
"name" : "organizationName",
"value" : d.organizationName,
"style" : this.css.inputPersonStyle,
"event" : {
"click" : function( mdi){ _self.selectPeople(this, "department", mdi.get("value").split(",") ) }
}
}, true, this.app );
this.organizationName.load();
}
var tr = new Element("tr").inject(table);
var td = new Element("td", { "styles" : this.css.editTableTitle, "text" : "员工姓名:" }).inject(tr);
var td = new Element("td", { "styles" : this.css.editTableValue }).inject(tr);
if( !this.isNew && !this.isEdited ){
td.set("text", d.employeeName )
}else{
this.employeeName = new MDomItem( td, {
"name" : "employeeName",
"value" : d.employeeName,
"style" : this.css.inputPersonStyle,
"event" : {
"click" : function( mdi){ _self.selectPeople(this, "person", mdi.get("value").split(",") ) }
}
}, true, this.app );
this.employeeName.load();
}
var tr = new Element("tr").inject(table);
var td = new Element("td", { "styles" : this.css.editTableTitle, "text" : "休假类型:" }).inject(tr);
var td = new Element("td", { "styles" : this.css.editTableValue }).inject(tr);
if( !this.isNew && !this.isEdited ){
td.set("text", d.leaveType )
}else{
this.leaveType = new MDomItem( td, {
"name" : "leaveType",
"type" : "select",
"value" : d.leaveType,
"selectValue" : "带薪年休假,带薪病假,带薪福利假,扣薪事假,其他".split(",")
}, true, this.app );
this.leaveType.load();
}
var tr = new Element("tr").inject(table);
var td = new Element("td", { "styles" : this.css.editTableTitle, "text" : "开始时间:" }).inject(tr);
var td = new Element("td", { "styles" : this.css.editTableValue }).inject(tr);
if( !this.isNew && !this.isEdited ){
td.set("text", d.startTime )
}else{
this.startTime = new MDomItem( td, {
"name" : "startTime",
"value" : d.startTime,
"style" : this.css.inputTimeStyle,
"event" : {
"click" : function( mdi){ _self.selectDateTime(this, false, true ) }
}
}, true, this.app );
this.startTime.load();
}
var tr = new Element("tr").inject(table);
var td = new Element("td", { "styles" : this.css.editTableTitle, "text" : "结束时间:" }).inject(tr);
var td = new Element("td", { "styles" : this.css.editTableValue} ).inject(tr);
if( !this.isNew && !this.isEdited ){
td.set("text", d.endTime )
}else{
this.endTime = new MDomItem( td, {
"name" : "endTime",
"value" : d.endTime,
"style" : this.css.inputTimeStyle,
"event" : {
"click" : function( mdi){ _self.selectDateTime(this, false, true ) }
}
}, true, this.app );
this.endTime.load();
}
var tr = new Element("tr").inject(table);
var td = new Element("td", { "styles" : this.css.editTableTitle, "text" : "休假天数:" }).inject(tr);
var td = new Element("td", { "styles" : this.css.editTableValue}).inject(tr);
if( !this.isNew && !this.isEdited ){
td.set("text", d.leaveDayNumber )
}else{
this.leaveDayNumber = new MDomItem( td, {
"name" : "leaveDayNumber",
"value" : d.leaveDayNumber,
"style" : this.css.inputStyle,
"event" : {
"keyup" : function(){ this.value=this.value.replace(/[^\d.]/g,'') }
}
}, true, this.app );
this.leaveDayNumber.load();
}
if( this.isNew || this.isEdited ){
this.createOkActionNode = new Element("div", {
"styles": this.css.createOkActionNode,
"text": this.app.lp.ok
}).inject(this.createFormNode);
this.createOkActionNode.addEvent("click", function(e){
this.okCreate(e);
}.bind(this));
}
this.cancelActionNode = new Element("div", {
"styles": this.css.createCancelActionNode,
"text": this.app.lp.cancel
}).inject(this.createFormNode);
this.cancelActionNode.addEvent("click", function(e){
this.cancelCreate(e);
}.bind(this));
},
setCreateNodeSize: function (width, height, top, left) {
if (!width)width = this.options && this.options.width ? this.options.width : "50%"
if (!height)height = this.options && this.options.height ? this.options.height : "50%"
if (!top) top = this.options && this.options.top ? this.options.top : 0;
if (!left) left = this.options && this.options.left ? this.options.left : 0;
var allSize = this.app.content.getSize();
var limitWidth = allSize.x; //window.screen.width
var limitHeight = allSize.y; //window.screen.height
"string" == typeof width && (1 < width.length && "%" == width.substr(width.length - 1, 1)) && (width = parseInt(limitWidth * parseInt(width, 10) / 100, 10));
"string" == typeof height && (1 < height.length && "%" == height.substr(height.length - 1, 1)) && (height = parseInt(limitHeight * parseInt(height, 10) / 100, 10));
300 > width && (width = 300);
220 > height && (height = 220);
top = top || parseInt((limitHeight - height) / 2, 10);
left = left || parseInt((limitWidth - width) / 2, 10);
this.createAreaNode.setStyles({
"width": "" + width + "px",
"height": "" + height + "px",
"top": "" + top + "px",
"left": "" + left + "px"
});
this.createNode.setStyles({
"width": "" + width + "px",
"height": "" + height + "px"
});
var iconSize = this.createIconNode ? this.createIconNode.getSize() : {x: 0, y: 0};
var topSize = this.formTopNode ? this.formTopNode.getSize() : {x: 0, y: 0};
var bottomSize = this.formBottomNode ? this.formBottomNode.getSize() : {x: 0, y: 0};
var contentHeight = height - iconSize.y - topSize.y - bottomSize.y;
//var formMargin = formHeight -iconSize.y;
this.createFormNode.setStyles({
"height": "" + contentHeight + "px"
});
},
//setCreateNodeSize: function(){
// var size = this.app.node.getSize();
// var allSize = this.app.content.getSize();
//
// this.createAreaNode.setStyles({
// "width": ""+size.x+"px",
// "height": ""+size.y+"px"
// });
// var hY = size.y*0.8;
// var mY = size.y*0.2/2;
// this.createNode.setStyles({
// "height": ""+hY+"px",
// "margin-top": ""+mY+"px"
// });
//
// var iconSize = this.createIconNode.getSize();
// var formHeight = hY*0.9;
// if (formHeight>250) formHeight = 250;
// var formMargin = hY*0.3/2-iconSize.y;
// this.createFormNode.setStyles({
// "height": ""+formHeight+"px",
// "margin-top": ""+formMargin+"px"
// });
//},
cancelCreate: function(e){
var _self = this;
if( this.organizationName )var organizationName = this.organizationName.get("value");
if ( this.isNew && organizationName!="" && organizationName!="default" ){
this.app.confirm("warn", e,
this.app.lp.create_cancel_title,
this.app.lp.create_cancel, "320px", "100px",
function(){
_self.createMarkNode.destroy();
_self.createAreaNode.destroy();
this.close();
},function(){
this.close();
}
);
}else{
this.createMarkNode.destroy();
this.createAreaNode.destroy();
delete _self;
}
},
okCreate: function(e){
var data = {
"id" : (this.data && this.data.id) ? this.data.id : null,
"organizationName": this.organizationName.get("value"),
"employeeName": this.employeeName.get("value"),
"leaveType": this.leaveType.get("value"),
"startTime": this.startTime.get("value"),
"endTime": this.endTime.get("value"),
"leaveDayNumber": this.leaveDayNumber.get("value")
};
//alert(JSON.stringify(data))
if (data.organizationName && data.employeeName && data.leaveType && data.startTime && data.endTime && data.leaveDayNumber){
this.app.restActions.saveSelfHoliday(data, function(json){
if( json.type == "ERROR" ){
this.app.notice( json.message , "error");
}else{
this.createMarkNode.destroy();
this.createAreaNode.destroy();
if(this.explorer.view)this.explorer.view.reload();
this.app.notice( this.isNew ? this.app.lp.createSuccess : this.app.lp.updateSuccess , "success");
}
// this.app.processConfig();
}.bind(this));
}else{
this.app.notice( this.app.lp.selfHoliday.inputVaild, "error");
}
},
selectDateTime : function( el, timeOnly, isTme ){
MWF.require("MWF.widget.Calendar", function(){
var calendar = new MWF.widget.Calendar( el, {
"style": "xform",
"timeOnly": timeOnly,
"isTime": isTme,
"target": this.app.content
});
calendar.show();
}.bind(this));
},
selectPeople: function(el, type, value ){
var title
if( type == "department" ){
title = "选择部门"
}else if( type == "company" ){
title = "选择公司"
}else{
title = "选择个人"
}
var options = {
"type": type,
"title": title,
"count" : "1",
"names": value || [],
"onComplete": function(items){
var vs = [];
items.each(function(item){
vs.push(item.data.name);
}.bind(this));
el.set("value",vs.join( "," ));
}.bind(this)
};
var selector = new MWF.OrgSelector(this.app.content, options);
}
});