yuanzhi_kuang 1 năm trước cách đây
mục cha
commit
a921c9466e

+ 283 - 0
js/addon/costom/attendmanage/web/js/i18n/attendmanage_i18n_en_US.js

@@ -0,0 +1,283 @@
+;(function ($) {
+    $.attendmanageI18n = $.attendmanageI18n || {};
+    $.extend($.attendmanageI18n, {
+            atsResultDynamicCommon: {
+                title: 'Recalculate',
+                btn_text1: 'Confirm',
+                btn_text2: 'Close',
+                text1: 'Re-calculation Time Clock',
+                text2: 'Include Current In-working Attendance',
+                text3: 'Started On',
+                text4: 'End Time',
+                text5: 'Request for Leave',
+                text6: 'Business Trip Request',
+                text7: 'Overtime Records',
+                text8: 'Clock in/out Correction',
+                text9: 'Time Off Confirmation',
+                text10: 'Business Trip Change',
+                text11: 'Documents Not Involved Calculation',
+                text12: 'Calculate Attendance',
+                text13: 'Time Off Period',
+                text14: 'To',
+                text15: 'Export',
+                text16: 'Export Selected Information',
+                text17: 'Export All',
+                msg1: 'The submitted calculation exceeds 15,000 (person day). It may cause system slow down. Continue?',
+                msg2: 'You have {0} attendance computing tasks in processing. You need to queue and wait. Continue?',
+                msg3: 'You have {0} attendance computing tasks in processing. You need to queue and wait. It is recommended to submit later. Continue?',
+                msg4: 'The attendance calculation start date can not be later than the end date!',
+                msg5: 'The attendance calculation start date and end date are not within the current cycle scope!'
+            },
+            atsResultOneDayDetail: {
+                text1: 'Attendance Record',
+                text2: 'Review',
+                text3: 'De-review',
+                text4: 'Save',
+                text5: 'Cancel',
+                text6: 'Back',
+                text7: 'Current Status :',
+                text8: 'Time Card Record',
+                text9: 'No time card record',
+                text10: 'Absence without Reason Status',
+                text11: 'Early Leave Status',
+                text12: 'Time Off Information',
+                text13: 'Business Trip Information',
+                text14: 'Overtime Information',
+                text15: 'Maintain More Information',
+                text16: 'Calculate',
+                text17: 'Expected Attendance Time',
+                text18: 'Default Shift',
+                text20: 'No attendance details',
+                text21: 'None',
+                text22: 'Value:',
+                text23: 'Review',
+                text24: 'Attendance name duplicates for line {0} and {1}',
+                text25: 'Succeed',
+                text26: 'Current Status :Reviewed',
+                text27: 'Current Status :Calculated',
+                text28: 'Calculated successfully!',
+                text29: 'Calculation failed!',
+                text30: 'Item',
+                text31: 'Year',
+                text32: 'Details',
+                text33: 'Edit',
+                text34: 'Save',
+                text35: 'Cancel',
+                text36: 'Sun',
+                text37: 'Mon',
+                text38: 'Tue',
+                text39: 'Wed',
+                text40: 'Thur',
+                text41: 'Fri',
+                text42: 'Sat',
+                text43: 'Jan',
+                text44: 'Feb',
+                text45: 'Mar',
+                text46: 'Apr',
+                text47: 'May',
+                text48: 'Jun',
+                text49: 'Jul',
+                text50: 'Aug',
+                text51: 'Sep',
+                text52: 'Oct',
+                text53: 'Nov',
+                text54: 'Dec',
+                text55: 'Calculate Attendance',
+                text56: 'Late Status',
+                msg: 'Saved successfully!',
+                text57: 'Approval Failed,Employee unconfirmed Attendance!'
+            },
+            atsResultCalBill: {
+                title1: 'Request for Leave',
+                title2: 'Time Card Correction',
+                title3: 'Business Trip Request',
+                title4: 'Overtime Records',
+                msg1: 'Please select the data in the table!',
+                msg2: 'Please select an employee attendance detail in the same business organization!',
+                msg3: 'Absence organization {1} of {0} is not matched absence business organization {2} of current corrected document. You cannot request for leave. Please adjust.'
+            },
+            jqtimeline: {
+                month1: 'Jan',
+                month2: 'Feb',
+                month3: 'Mar',
+                month4: 'Apr',
+                month5: 'May',
+                month6: 'Jun',
+                month7: 'Jul',
+                month8: 'Aug',
+                month9: 'Sep',
+                month10: 'Oct',
+                month11: 'Nov',
+                month12: 'Dec',
+                text1: 'To',
+                text2: 'Time Off Description:',
+                text3: 'Status:',
+                text4: 'Applying Date:',
+                text5: 'Click Right to Close:'
+            },
+            atsBillUtil: {
+                msg1: 'You can only delete data in unsubmitted status. Please re-select!',
+                msg2: 'Please select a line!',
+                msg3: 'Please select a line!',
+                msg4: 'Can only withdraw unapproved documents',
+                msg5: 'In approval process. Do you want to withdraw?',
+                msg6: 'Withdrawing successfully'
+            },
+            atsCommonUtile: {
+                weekday1: 'Sun',
+                weekday2: 'Mon',
+                weekday3: 'Tue',
+                weekday4: 'Wed',
+                weekday5: 'Thur',
+                weekday6: 'Fri',
+                weekday7: 'Sat',
+                alias1: 'Today',
+                alias2: 'Tomorrow',
+                alias3: 'This Week',
+                alias4: 'Last 1 Week',
+                alias5: 'Last Week',
+                alias6: 'Next Week',
+                alias7: 'Coming 1 Week',
+                alias8: 'This Month',
+                alias9: 'Latest Semi-month',
+                alias10: 'Latest Month',
+                alias11: 'Latest 3 Months',
+                alias12: 'Last Month',
+                alias13: 'Next Month',
+                alias14: 'Coming 1 Month',
+                alias15: 'Coming 2 Months',
+                alias16: 'Coming 3 Months',
+                alias17: 'Latest Semi-year',
+                alias18: 'First Semi-year',
+                alias19: 'Second Semi-year',
+                alias20: 'This Year',
+                alias21: 'Previous Year',
+                alias22: 'This Quarter',
+                alias23: 'Last Quarter',
+                alias24: 'Customize',
+                alias25: 'Server Data',
+                alias26: 'Display Uncommon Data',
+                alias27: 'Postpone',
+                alias28: 'Replace',
+                alias29: 'Not Replace',
+                alias33: 'ReplaceWithShift',
+                alias30: '1-Segment Shift',
+                alias31: '2-Segments Shift',
+                alias32: '3-Segment2 Shift',
+                msg1: 'Is Empty',
+                msg2: 'Incorrect format',
+                msg3: 'The date does not exist for current month',
+                msg4: 'Illegal date value',
+                msg5: 'Not Earlier Than',
+                msg6: 'Not Later Than',
+                msg7: 'Start Date',
+                msg8: 'End Date',
+                msg9: 'The time interval between {0} and {1} cannot exceed {2} months!',
+                msg10: 'The time interval between {0} and {1} cannot exceed',
+                msg11: 'Millisecond',
+                msg12: 'Day',
+                msg13: 'Hour',
+                msg14: 'Minute',
+                msg15: 'Second',
+                msg16: 'General F7',
+                msg17: 'Please separate by commas for multi-selection',
+                msg18: 'Error by creating drop-down box parameter!',
+                msg19: 'Error Parameter:',
+                like: 'Include',
+                not_like: 'Exclude',
+                equal: 'Equal to',
+                not_equal: 'Not Equal to',
+                gt: 'Later Than',
+                lt: 'Earlier Than',
+                gt_or_eq: 'Equal to or Later Than',
+                lt_or_eq: 'Equal to or Earlier Than',
+                yes: 'Yes',
+                no: 'No',
+                text1: 'Postponed scheduling means when the holiday is over, the first work day starts from the next shift that before holiday ',
+                text2: 'Replaced scheduling means that according to the original schedule rule, the system will replace the holiday days to holiday date type, which no  shift information is set.',
+                text3: 'Non-replaced scheduling means according to the original schedule rule, that the system will schedule the holiday days to shift',
+                text4: 'Search',
+                text5: 'Replacing (associated shift) shift arrangement means that the system will arrange shifts according to the original rules, replacing the date type of the legal holidays with the legal holidays, and the associated shift of the original shift arrangement will remain unchanged. If there is no shift on the rest day before the replacement, the shift must be associated with the default shift of the file, except that the date type replaces the legal holiday'
+            },
+            calandarWorkShift: {
+                weekday1: 'Sun',
+                weekday2: 'Mon',
+                weekday3: 'Tue',
+                weekday4: 'Wed',
+                weekday5: 'Thur',
+                weekday6: 'Fri',
+                weekday7: 'Sat',
+                month1: 'Jan',
+                month2: 'Feb',
+                month3: 'Mar',
+                month4: 'Apr',
+                month5: 'May',
+                month6: 'Jun',
+                month7: 'Jul',
+                month8: 'Aug',
+                month9: 'Sep',
+                month10: 'Oct',
+                month11: 'Nov',
+                month12: 'Dec',
+                year: 'Year',
+                msg1: 'Shift Information Error:',
+                msg2: 'Loading...'
+            },
+            listWorkShift: {
+                msg1: 'Loading, please wait ...',
+                msg2: 'Scheduling data is empty!',
+                msg3: 'Deleting...',
+                col1: 'Employee Code',
+                col2: 'Name',
+                col3: 'Attendance Business Organization',
+                col4: 'Attendance Business Organization ID',
+                col5: 'Administrative Organization',
+                col6: 'Employee Relationship Status'
+            },
+            workShiftStrategy: {
+                dayType1: 'Workday',
+                dayType2: 'Rest Day',
+                dayType3: 'Public Holidays',
+                msg1: 'Please select row to operate on',
+                msg2: 'Please select employees for shift scheduling!',
+                msg3: 'Please select dates and employees for shift scheduling!',
+                msg4: 'Please select employees within the same business organization',
+                msg5: 'Check employees for shift scheduling!',
+                msg6: 'No scheduling data to be saved, please schedule first!',
+                msg7: 'Scheduled successfully!',
+                msg8: 'Scheduling failed: Schedule Type {0}, Schedule Mode: {1}',
+                msg9: 'Schedule in processing! Please wait...',
+                title1: 'Turnover Rule',
+                title2: 'Copy Shift Schedule',
+                title3: 'Select Date Type & Shift',
+                text: 'To',
+                label1: 'Name',
+                label2: 'Attendance Date',
+                label3: 'Error Details'
+            },
+            atsHolidayFileHISMultiRow: {
+                msg1: 'Note: Adding or modifying attendance file history will not update the completed business data. Example: An employee has been scheduled. When the attendance organization file history is modified, if you want to apply the modified attendance organization to shift scheduling, you need to re-schedule the employee’s shift.',
+                msg2: 'All fields of file history cannot be empty!',
+                msg3: 'The effective and expired dates must be continuous and not overlapped!',
+                msg4: 'The effective date can not be later than the current date!',
+                msg5: 'The effective and expired dates of the file history cannot be later than those of previous file history!',
+                msg6: 'The effective and the expired date cannot overlap!'
+            },
+            attendanceFileHISMultiRow: {
+                msg1: 'Note: Adding or modifying attendance file history will not update the completed business data. Example: An employee has been scheduled. When the attendance organization file history is modified, if you want to apply the modified attendance organization to shift scheduling, you need to re-schedule the employee’s shift.',
+                msg2: 'All fields of file history cannot be empty!',
+                msg3: 'The effective and expired dates must be continuous and not overlapped!',
+                msg4: 'The effective date can not be later than the current date!',
+                msg5: 'The effective and expired dates of the file history cannot be later than those of previous file history!',
+                msg6: 'The effective and the expired date cannot overlap!'
+            },
+            dateYearMonthPicker: {
+                year: 'Year',
+                month: 'Month'
+            },
+	    	commonRes:{
+	    		calendar:"Work Calendar"
+	    	}
+        }
+    )
+})(jQuery);	

+ 282 - 0
js/addon/costom/attendmanage/web/js/i18n/attendmanage_i18n_zh_CN.js

@@ -0,0 +1,282 @@
+; (function ($) {
+    $.attendmanageI18n = $.attendmanageI18n || {};
+    $.extend($.attendmanageI18n, {
+    	atsResultDynamicCommon: {
+    		title: '重新计算',
+    		btn_text1: '确认',
+        	btn_text2: '关闭',
+        	text1: '是否重新取卡',
+        	text2: '计算当前时间未下班的考勤',
+        	text3: '开始时间',
+        	text4: '结束时间',
+        	text5: '请假单',
+        	text6: '出差单',
+        	text7: '加班单',
+        	text8: '补签卡',
+        	text9: '请假变更单',
+        	text10: '出差变更单',
+        	text11: '未参与计算单据',
+        	text12: '考勤计算',
+        	text13: '请假时段',
+        	text14: '至',
+        	text15: '导出',
+        	text16: '导出选中',
+        	text17: '导出全部',
+        	msg1: '您提交的计算量超过了15000人天,计算时间可能会较长,是否继续?',
+        	msg2: '您已有{0}个考勤计算任务正在运行,如果继续操作需要排队等待上一个任务完成后开始运行,是否继续?',
+        	msg3: '您已有{0}个考勤计算任务正在运行,如果继续操作需要排队等待前面的任务完成后开始运行,建议您稍后再提交,是否继续?',
+        	msg4: '考勤计算开始日期不能大于结束日期!',
+        	msg5: '考勤计算开始日期和结束日期不在当前周期范围内!'
+    	},
+    	atsResultOneDayDetail: {
+    		text1: '考勤记录',
+    		text2: '审核',
+    		text3: '反审核',
+    		text4: '保存',
+    		text5: '取消',
+    		text6: '返回',
+    		text7: '当前状态 :',
+    		text8: '打卡记录',
+    		text9: '没有打卡记录',
+    		text10: '旷工情况',
+    		text11: '早退情况',
+    		text12: '请假信息',
+    		text13: '出差信息',
+    		text14: '加班信息',
+    		text15: '维护更多信息',
+    		text16: '计算',
+    		text17: '应出勤时间',
+    		text18: '默认班次',
+    		text20: '当前没有考勤明细',
+    		text21: '无',
+    		text22: '值:',
+    		text23: '审核',
+    		text24: '第 {0} 行与第 {1} 考勤名称相同',
+    		text25: '成功',
+    		text26: '当前状态:已审核',
+    		text27: '当前状态:已计算',
+    		text28: '计算成功!',
+    		text29: '计算失败!',
+    		text30: '项目',
+    		text31: '年',
+    		text32: '明细',
+    		text33: '编辑',
+    		text34: '保存',
+    		text35: '取消',
+    		text36: '周日',
+    		text37: '周一',
+    		text38: '周二',
+    		text39: '周三',
+    		text40: '周四',
+    		text41: '周五',
+    		text42: '周六',
+    		text43: '1月',
+    		text44: '2月',
+    		text45: '3月',
+    		text46: '4月',
+    		text47: '5月',
+    		text48: '6月',
+    		text49: '7月',
+    		text50: '8月',
+    		text51: '9月',
+    		text52: '10月',
+    		text53: '11月',
+    		text54: '12月',
+    		text55: '考勤计算',
+    		text56: '迟到情况',
+    		msg:'保存成功!',
+    		text57: '员工未确认考勤,审核失败!'
+    	},
+    	atsResultCalBill: {
+    		title1: '请假单',
+    		title2: '补签卡',
+    		title3: '出差单',
+    		title4: '加班单',
+    		msg1: '请先选中表格中的数据!',
+    		msg2: '请选择同一个业务组织的人员考勤明细进行操作!',
+    		msg3: '{0}在{1}的假期业务组织与当前补提单据的假期业务组织【{2}】不一致,不能请假,请到请假单中单独处理!'
+    	},
+    	jqtimeline: {
+    		month1: '1月',
+    		month2: '2月',
+    		month3: '3月',
+    		month4: '4月',
+    		month5: '5月',
+    		month6: '6月',
+    		month7: '7月',
+    		month8: '8月',
+    		month9: '9月',
+    		month10: '10月',
+    		month11: '11月',
+    		month12: '12月',
+    		text1: '至',
+    		text2: '请假说明:',
+    		text3: '状态:',
+    		text4: '申请日期:',
+    		text5: '点击右侧关闭 :'
+    	},
+    	atsBillUtil: {
+    		msg1: '只能删除未提交状态的数据,请选中表格中未提交的数据!',
+    		msg2: '请先选中行!',
+    		msg3: '请选中一行!',
+    		msg4: '只能撤回未审批的单据',
+    		msg5: '已经进入审批流程,是否确认要撤回?',
+    		msg6: '撤回成功' 		
+    	},
+    	atsCommonUtile: {
+    		weekday1: '日',
+    		weekday2: '一',
+    		weekday3: '二',
+    		weekday4: '三',
+    		weekday5: '四',
+    		weekday6: '五',
+    		weekday7: '六',
+    		alias1: '当天',
+    		alias2: '明天',
+    		alias3: '本周',
+    		alias4: '最近一周',
+    		alias5: '上周',
+    		alias6: '下周',
+    		alias7: '未来一周',
+    		alias8: '本月',
+    		alias9: '最近半月',
+    		alias10: '最近一月',
+    		alias11: '最近三月',
+    		alias12: '上月',
+    		alias13: '下月',
+    		alias14: '未来一月',
+    		alias15: '未来两月',
+    		alias16: '未来三月',
+    		alias17: '最近半年',
+    		alias18: '上半年',
+    		alias19: '下半年',
+    		alias20: '本年度',
+    		alias21: '上年度',
+    		alias22: '本季度',
+    		alias23: '上季度',
+    		alias24: '自定义',
+    		alias25: '服务端数据',
+    		alias26: '显示不常用数据',
+    		alias27: '顺延',
+    		alias28: '替换',
+    		alias29: '不替换',
+            alias33: '替换(关联班次)',
+    		alias30: '一段班',
+    		alias31: '两段班',
+    		alias32: '三段班',
+    		msg1: '为空',
+    		msg2: '格式错误',
+    		msg3: '当月不存在这一天',
+    		msg4: '日期非法',
+    		msg5: '不能小于',
+    		msg6: '不能大于',
+    		msg7: '开始日期',
+    		msg8: '结束日期',
+    		msg9: '{0}和{1}之间的时间间隔不能超过{2}个月!',
+    		msg10: '{0}和{1}之间的时间间隔不能超过',
+    		msg11: '毫秒',
+    		msg12: '天',
+    		msg13: '小时',
+    		msg14: '分钟',
+    		msg15: '秒',
+    		msg16: '通用F7',
+    		msg17: '多选请使用用逗号分隔',
+    		msg18: '创建下拉框参数有误!',
+    		msg19: '错误参数:',
+    		like: '包含',
+    		not_like: '不包含',
+    		equal: '等于',
+    		not_equal: '不等于',
+    		gt: '大于',
+    		lt: '小于',
+    		gt_or_eq: '大于等于',
+    		lt_or_eq: '小于等于',
+    		yes: '是',
+    		no: '否',
+    		text1: '顺延排班指法定节假日结束后的第一天排班将从法定节假日开始的前一天的班次的下一个班次开始',
+    		text2: '替换排班指系统将按原有规则排班,将法定节假日那几天的日期类型替换成法定节假日,不设置班次信息。',
+    		text3: '不替换排班指系统将按原有规则排班,而且法定节假日当天仍然按原规则排班',
+    		text4: '搜索',
+            text5: '替换(关联班次)排班指系统将按原有规则排班,将法定节假日那几天的日期类型替换成法定节假日,原排班关联班次不变。如果替换前是休息日没有班次,除了日期类型替换出法定假日外,班次要关联上档案的默认班次。'
+    	},
+    	calandarWorkShift: {
+    		weekday1: '周日',
+    		weekday2: '周一',
+    		weekday3: '周二',
+    		weekday4: '周三',
+    		weekday5: '周四',
+    		weekday6: '周五',
+    		weekday7: '周六',
+    		month1: '1月',
+    		month2: '2月',
+    		month3: '3月',
+    		month4: '4月',
+    		month5: '5月',
+    		month6: '6月',
+    		month7: '7月',
+    		month8: '8月',
+    		month9: '9月',
+    		month10: '10月',
+    		month11: '11月',
+    		month12: '12月',
+    		year: '年',
+    		msg1: '班次信息错误:',
+    		msg2: '加载中...'
+    	},
+    	listWorkShift: {
+    		msg1: '读取中,请耐心等待...',
+    		msg2: '排班数据为空!',
+    		msg3: '删除中...',
+    		col1: '员工编码',
+    		col2: '姓名',
+    		col3: '考勤业务组织',
+    		col4: '考勤业务组织Id',
+    		col5: '行政组织',
+    		col6: '员工关系状态'
+    	},
+    	workShiftStrategy: {
+    		dayType1: '工作日',
+    		dayType2: '休息日',
+    		dayType3: '法定假日',
+    		msg1: '请选择行进行操作',
+    		msg2: '请选择要排班的人员!',
+    		msg3: '请选择要排班的员工及日期!',
+    		msg4: '请选择同一个业务组织的员工',
+    		msg5: '请勾选要排班的员工!',
+    		msg6: '没有要保存的排班数据,请先排班!',
+    		msg7: '排班成功!',
+    		msg8: '排班失败:排班类型 {0},排班方式:{1}',
+    		msg9: '排班进行中!请稍等...',
+    		title1: '轮班规则',
+    		title2: '复制排班',
+    		title3: '选择日期类型和班次',
+    		text: '至',
+    		label1: '姓名',
+    		label2: '考勤日期',
+    		label3: '错误详情'
+    	},
+    	atsHolidayFileHISMultiRow: {
+    		msg1: '温馨提示:新增或修改考勤档案历史不会更新已完成的业务数据。如:员工已排班,当修改了档案历史的考勤组织,如需将修改后的考勤组织用到排班中,则需要对员工重新排班。',
+    		msg2: '档案历史所有字段不能为空!',
+    		msg3: '档案历史之间的生效日期和失效日期必须连续且不重叠!',
+    		msg4: '生效日期不能大于当前日期!',
+    		msg5: '档案历史的生效失效时间不能大于前面档案的生效失效时间!',
+    		msg6: '档案历史之间的生效日期和失效日期不能有重叠!'
+    	},
+    	attendanceFileHISMultiRow: {
+    		msg1: '温馨提示:新增或修改考勤档案历史不会更新已完成的业务数据。如:员工已排班,当修改了档案历史的考勤组织,如需将修改后的考勤组织用到排班中,则需要对员工重新排班。',
+    		msg2: '档案历史所有字段不能为空!',
+    		msg3: '档案历史之间的生效日期和失效日期必须连续且不重叠!',
+    		msg4: '生效日期不能大于当前日期!',
+    		msg5: '档案历史的生效失效时间不能大于前面档案的生效失效时间!',
+    		msg6: '档案历史之间的生效日期和失效日期不能有重叠!'
+    	},
+    	dateYearMonthPicker: {
+    		year: '年',
+    		month: '月'
+    	},
+    	commonRes:{
+    		calendar:"工作日历"
+    	}
+    })
+})(jQuery);	

+ 283 - 0
js/addon/costom/attendmanage/web/js/i18n/attendmanage_i18n_zh_TW.js

@@ -0,0 +1,283 @@
+; (function ($) {
+    $.attendmanageI18n = $.attendmanageI18n || {};
+    $.extend($.attendmanageI18n, {
+    	atsResultDynamicCommon: {
+    		title: '重新計算',
+    		btn_text1: '確認',
+        	btn_text2: '關閉',
+        	text1: '是否重新取卡',
+        	text2: '計算當前時間未下班的考勤',
+        	text3: '開始時間',
+        	text4: '結束時間',
+        	text5: '請假單',
+        	text6: '出差單',
+        	text7: '加班單',
+        	text8: '補簽卡',
+        	text9: '请假確認单',
+        	text10: '出差變更单',
+        	text11: '未參與計算單據',
+        	text12: '考勤計算',
+        	text13: '請假時段',
+        	text14: '至',
+        	text15: '導出',
+        	text16: '導出选中',
+        	text17: '導出全部',
+        	msg1: '您提交的計算量超過了15000人天,計算時間可能會較長,是否繼續?',
+        	msg2: '您已有{0}个考勤計算任务正在运行,如果继续操作需要排队等待上一个任务完成后开始运行,是否继续?',
+        	msg3: '您已有{0}个考勤計算任务正在运行,如果继续操作需要排队等待前面的任务完成后开始运行,建议您稍后再提交,是否继续?',
+        	msg4: '考勤計算開始日期不能大於結束日期!',
+        	msg5: '考勤計算開始日期和結束日期不在当前周期范围内!'
+    	},
+    	atsResultOneDayDetail: {
+    		text1: '考勤記錄',
+    		text2: '審核',
+    		text3: '反審核',
+    		text4: '保存',
+    		text5: '取消',
+    		text6: '返回',
+    		text7: '當前狀態 :',
+    		text8: '打卡記錄',
+    		text9: '没有打卡記錄',
+    		text10: '曠工情況',
+    		text11: '早退情況',
+    		text12: '請假信息',
+    		text13: '出差信息',
+    		text14: '加班信息',
+    		text15: '維護更多信息',
+    		text16: '計算',
+    		text17: '應出勤時間',
+    		text18: '默認班次',
+    		text20: '當前沒有考勤明細',
+    		text21: '無',
+    		text22: '值:',
+    		text23: '審核',
+    		text24: '第 {0} 行與第 {1} 考勤名稱相同',
+    		text25: '成功',
+    		text26: '当前狀態:已審核',
+    		text27: '当前狀態:已計算',
+    		text28: '計算成功!',
+    		text29: '計算失败!',
+    		text30: '項目',
+    		text31: '年',
+    		text32: '明細',
+    		text33: '編輯',
+    		text34: '保存',
+    		text35: '取消',
+    		text36: '周日',
+    		text37: '周一',
+    		text38: '周二',
+    		text39: '周三',
+    		text40: '周四',
+    		text41: '周五',
+    		text42: '周六',
+    		text43: '1月',
+    		text44: '2月',
+    		text45: '3月',
+    		text46: '4月',
+    		text47: '5月',
+    		text48: '6月',
+    		text49: '7月',
+    		text50: '8月',
+    		text51: '9月',
+    		text52: '10月',
+    		text53: '11月',
+    		text54: '12月',
+    		text55: '考勤計算',
+    		text56: '遲到情況',
+    		msg:'保存成功!',
+    		text57: '員工未確認考勤,審核失敗!'
+    	},
+    	atsResultCalBill: {
+    		title1: '請假單',
+    		title2: '補簽卡',
+    		title3: '出差單',
+    		title4: '加班單',
+    		msg1: '請先選中表格中的數據!',
+    		msg2: '请选择同一个业务组织的人员考勤明細进行操作!',
+    		msg3: '{0}在{1}的假期业务组织与当前补提单据的假期业务组织【{2}】不一致,不能请假,请到請假單中单独处理!'
+    	},
+    	jqtimeline: {
+    		month1: '1月',
+    		month2: '2月',
+    		month3: '3月',
+    		month4: '4月',
+    		month5: '5月',
+    		month6: '6月',
+    		month7: '7月',
+    		month8: '8月',
+    		month9: '9月',
+    		month10: '10月',
+    		month11: '11月',
+    		month12: '12月',
+    		text1: '至',
+    		text2: '請假說明:',
+    		text3: '狀態:',
+    		text4: '申請日期:',
+    		text5: '点击右侧關閉 :'
+    	},
+    	atsBillUtil: {
+    		msg1: '只能刪除未提交狀態的數據,請選中表格中未提交的數據!',
+    		msg2: '請先選中行!',
+    		msg3: '請選中一行!',
+    		msg4: '只能撤回未審批的單據',
+    		msg5: '已经进入审批流程,是否確認要撤回?',
+    		msg6: '撤回成功' 		
+    	},
+    	atsCommonUtile: {
+    		weekday1: '日',
+    		weekday2: '一',
+    		weekday3: '二',
+    		weekday4: '三',
+    		weekday5: '四',
+    		weekday6: '五',
+    		weekday7: '六',
+    		alias1: '當天',
+    		alias2: '明天',
+    		alias3: '本周',
+    		alias4: '最近一周',
+    		alias5: '上周',
+    		alias6: '下周',
+    		alias7: '未來一周',
+    		alias8: '本月',
+    		alias9: '最近半月',
+    		alias10: '最近一月',
+    		alias11: '最近三月',
+    		alias12: '上月',
+    		alias13: '下月',
+    		alias14: '未來一月',
+    		alias15: '未來兩月',
+    		alias16: '未來三月',
+    		alias17: '最近半年',
+    		alias18: '上半年',
+    		alias19: '下半年',
+    		alias20: '本年度',
+    		alias21: '上年度',
+    		alias22: '本季度',
+    		alias23: '上季度',
+    		alias24: '自定義',
+    		alias25: '服務端數據',
+    		alias26: '顯示不常用數據',
+    		alias27: '順延',
+    		alias28: '替換',
+    		alias29: '不替換',
+    		alias30: '一段班',
+    		alias31: '兩段班',
+    		alias32: '三段班',
+            alias33: '替換(關聯班次)',
+    		msg1: '為空',
+    		msg2: '格式錯誤',
+    		msg3: '當月不存在這一天',
+    		msg4: '日期非法',
+    		msg5: '不能小於',
+    		msg6: '不能大於',
+    		msg7: '開始日期',
+    		msg8: '結束日期',
+    		msg9: '{0}和{1}之間的時間間隔不能超過{2}個月!',
+    		msg10: '{0}和{1}之間的時間間隔不能超過',
+    		msg11: '毫秒',
+    		msg12: '天',
+    		msg13: '小時',
+    		msg14: '分鐘',
+    		msg15: '秒',
+    		msg16: '通用F7',
+    		msg17: '多選請使用用逗號分隔',
+    		msg18: '創建下拉框參數有誤!',
+    		msg19: '錯誤參數:',
+    		like: '包含',
+    		not_like: '不包含',
+    		equal: '等於',
+    		not_equal: '不等於',
+    		gt: '大於',
+    		lt: '小於',
+    		gt_or_eq: '大於等於',
+    		lt_or_eq: '小於等於',
+    		yes: '是',
+    		no: '否',
+    		text1: '順延排班指法定节假日结束后的第一天排班将从法定节假日开始的前一天的班次的下一个班次开始',
+    		text2: '替換排班指系统将按原有规则排班,将法定节假日那几天的日期类型替換成法定节假日,不设置班次信息。',
+    		text3: '不替換排班指系统将按原有规则排班,而且法定节假日當天仍然按原规则排班',
+    		text4: '搜索',
+            text5: '替換(關聯班次)排班指系統將按原有規則排班,將法定節假日那幾天的日期類型替換成法定節假日,原排班關聯班次不變。如果替換前是休息日沒有班次,除了日期類型替換出法定假日外,班次要關聯上檔案的默認班次。'
+    	},
+    	calandarWorkShift: {
+    		weekday1: '周日',
+    		weekday2: '周一',
+    		weekday3: '周二',
+    		weekday4: '周三',
+    		weekday5: '周四',
+    		weekday6: '周五',
+    		weekday7: '周六',
+    		month1: '1月',
+    		month2: '2月',
+    		month3: '3月',
+    		month4: '4月',
+    		month5: '5月',
+    		month6: '6月',
+    		month7: '7月',
+    		month8: '8月',
+    		month9: '9月',
+    		month10: '10月',
+    		month11: '11月',
+    		month12: '12月',
+    		year: '年',
+    		msg1: '班次信息錯誤:',
+    		msg2: '加載中...'
+    	},
+    	listWorkShift: {
+    		msg1: '讀取中,請耐心等待...',
+    		msg2: '排班数据為空!',
+    		msg3: '刪除中...',
+    		col1: '員工編碼',
+    		col2: '姓名',
+    		col3: '考勤業務組織',
+    		col4: '考勤業務組織Id',
+    		col5: '行政組織',
+    		col6: '員工關係狀態'
+    	},
+    	workShiftStrategy: {
+    		dayType1: '工作日',
+    		dayType2: '休息日',
+    		dayType3: '法定假日',
+    		msg1: '請選擇行進行操作',
+    		msg2: '請選擇要排班的人員!',
+    		msg3: '請選擇要排班的員工及日期!',
+    		msg4: '請選擇同一個業務組織的員工',
+    		msg5: '請勾選要排班的員工!',
+    		msg6: '沒有要保存的排班數據,請先排班!',
+    		msg7: '排班成功!',
+    		msg8: '排班失敗:排班類型 {0},排班方式:{1}',
+    		msg9: '排班進行中!請稍等...',
+    		title1: '輪班規則',
+    		title2: '複製排班',
+    		title3: '選擇日期類型和班次',
+    		text: '至',
+    		label1: '姓名',
+    		label2: '考勤日期',
+    		label3: '錯誤詳情'
+    	},
+    	atsHolidayFileHISMultiRow: {
+    		msg1: '溫馨提示:新增或修改考勤檔案歷史不會更新已完成的業務數據。如:員工已排班,當修改了檔案歷史的考勤組織,如需將修改後的考勤組織用到排班中,則需要對員工重新排班。',
+    		msg2: '档案历史所有字段不能為空!',
+    		msg3: '檔案歷史之間的生效日期和失效日期必須連續且不重疊!',
+    		msg4: '生效日期不能大於当前日期!',
+    		msg5: '档案历史的生效失效时间不能大於前面档案的生效失效时间!',
+    		msg6: '檔案歷史之間的生效日期和失效日期不能有重疊!'
+    	},
+    	attendanceFileHISMultiRow: {
+    		msg1: '溫馨提示:新增或修改考勤檔案歷史不會更新已完成的業務數據。如:員工已排班,當修改了檔案歷史的考勤組織,如需將修改後的考勤組織用到排班中,則需要對員工重新排班。',
+    		msg2: '档案历史所有字段不能為空!',
+    		msg3: '檔案歷史之間的生效日期和失效日期必須連續且不重疊!',
+    		msg4: '生效日期不能大於当前日期!',
+    		msg5: '档案历史的生效失效时间不能大於前面档案的生效失效时间!',
+    		msg6: '檔案歷史之間的生效日期和失效日期不能有重疊!'
+    	},
+    	dateYearMonthPicker: {
+    		year: '年',
+    		month: '月'
+    	},
+    	commonRes:{
+    		calendar:"工作日歷"
+    	}
+    	
+    })
+})(jQuery);	

+ 617 - 0
js/addon/costom/attendmanage/web/js/shr/ats/atteExeMsgStatusList.js

@@ -0,0 +1,617 @@
+shr.defineClass("shr.ats.atteExeMsgStatusList", shr.framework.List, {
+	self : null,
+	editViewDisable: true,
+	initalizeDOM : function () {
+		shr.ats.atteExeMsgStatusList.superClass.initalizeDOM.call(this);
+		_self = this;
+		_self.reportConstantsUtils = new shr.report.reportConstantsUtils;
+		$(".template_list").find(".text-tag").live("click", function () {
+			if (!$(this).hasClass("template_pressed")) {
+				$(".template_list .text-tag").removeClass("template_pressed");
+				$(".template_list .text-label").removeClass("text_label_pressed");
+				$(this).addClass("template_pressed");
+				$(this).find(".text-label").addClass("text_label_pressed");
+			} else {
+				$(".template_list .text-tag").removeClass("template_pressed");
+				$(".template_list .text-label").removeClass("text_label_pressed");
+			}
+
+		});
+         setTimeout(function(){
+			$('#grid tr').hover(function(){
+				this.style.cursor = 'pointer';
+			})
+		}, 500);
+	},	
+
+	 
+	
+	initQueryDataParamRealValue:function(queryData, allParam){
+		for (var i = 0; i < queryData.length; i++) {
+			if (queryData[i].inputState != 2) {
+				if (queryData[i].inputType && queryData[i].inputType == 4) {
+					var _obj = $("input[id='"+queryData[i].name+"']").shrPromptBox("getValue");
+					if(queryData[i].name == 'hrOrg'){
+						if(!_obj){
+							queryData[i].curentValue = null;
+							queryData[i].curentValueAlias = null;
+						}else{
+							queryData[i].curentValue = _obj['id'];
+							queryData[i].curentValueAlias = _obj['name'];
+						}
+					}else if(queryData[i].name == 'adminOrg'){
+						if(!_obj){
+							queryData[i].curentValue = null;
+							queryData[i].curentValueAlias = null;
+						}else{
+							queryData[i].curentValue = _obj['longNumber'];
+							queryData[i].curentValueAlias = _obj['name'];
+						}
+					}else{
+						queryData[i].curentValue = $("input[id='"+queryData[i].name+"']").prev().val() == "null"?"":$("input[id='"+queryData[i].name+"']").prev().val()||$("input[id='"+queryData[i].name+"']").shrPromptBox("getValue").number;
+						queryData[i].curentValueAlias = $("input[id='"+queryData[i].name+"']").val() == "null"?"":$("input[id='"+queryData[i].name+"']").val();
+					}
+				}else if(queryData[i].inputType && queryData[i].inputType == 1) {
+					var _obj = $("input[id='"+queryData[i].name+"']").shrSelect("getValue");
+					if(_obj){
+						queryData[i].curentValue = _obj['value'];
+						queryData[i].curentValueAlias = _obj["alias"];
+					}else{
+						queryData[i].curentValue = '';
+						queryData[i].curentValueAlias = null;
+					}
+				}else if (queryData[i].inputType && queryData[i].inputType == 2){
+					//queryData[i].curentValue = $("input[id='"+queryData[i].name+"']").val().replace(/\//g,"-");
+					queryData[i].curentValue = $("input[id='"+queryData[i].name+"']").shrDateTimePicker("getValue");
+					queryData[i].curentValueAlias = null;
+				} else {
+					queryData[i].curentValue = $("input[id='"+queryData[i].name+"']").val();
+					queryData[i].curentValueAlias = null;
+				}
+			}
+			var alias = {
+				alias : queryData[i].properties.alias_zh_CN
+			};
+			allParam[i] = {
+				curentValue : queryData[i].curentValue,
+				curentValueAlias : queryData[i].curentValueAlias,
+				dataType : queryData[i].dataType,
+				defaultValue : queryData[i].defaultValue,
+				designDataType : queryData[i].designDataType,
+				inputState : queryData[i].inputState,
+				inputType : queryData[i].inputType,
+				isAllowNull : queryData[i].isAllowNull,
+				properties : JSON.stringify(alias),
+				name : queryData[i].name
+			}
+		}
+	},
+	
+	openPlugView : function(){
+		window.open(shr.getContextPath() + "/weboffice7/plugView.html");
+	},
+	
+	checkNullValue : function (queryData, isAdminOrgRequired) {
+		var currentValue;
+		for (var i = 0; i < queryData.length; i++) {
+			if (queryData[i].inputState != 2) {
+				//F7
+				if (queryData[i].inputType && queryData[i].inputType == 4) {
+					var _obj = $("input[id='"+queryData[i].name+"']").shrPromptBox("getValue");
+					if(queryData[i].name == 'hrOrg'){
+						if(_obj){
+							currentValue = _obj['id'];
+						}
+					}else if(queryData[i].name == 'adminOrg'){
+						if(_obj && _obj['longNumber']){
+							currentValue = _obj['longNumber'];
+						}else{
+							if(isAdminOrgRequired){
+								shr.showError({message : jsBizMultLan.shrreport_reportquery_i18n_1});
+								return false;
+							}
+						}
+					}else{
+						currentValue = $("input[id^='"+queryData[i].name+"']").prev().val()||$("input[id='"+queryData[i].name+"']").shrPromptBox("getValue").number;
+					}
+					
+				}else if(queryData[i].inputType && queryData[i].inputType == 1){
+					var _obj = $("input[id='"+queryData[i].name+"']").shrSelect("getValue");
+					if(_obj){
+						currentValue = _obj['value'];
+					}else{
+						currentValue = '';
+					}
+				} else {
+					currentValue = $("input[id^='"+queryData[i].name+"']").val();
+				}
+				if(!queryData[i].isAllowNull && (currentValue == null || currentValue == undefined || currentValue == "null" || currentValue == "")){
+					shr.showError({message : jsBizMultLan.shrreport_reportquery_i18n_7+queryData[i].properties.alias_zh_CN});
+					return false;
+				}
+				
+				// 日期型控件要保证输入的日期合法
+				if((queryData[i].designDataType == 2 || queryData[i].designDataType == "2") && !queryData[i].isAllowNull){
+					currentValue = $("input[id^='"+queryData[i].name+"']").shrDateTimePicker("getValue");
+					var date = new Date(currentValue);
+					if(!date.getFullYear() || date.getFullYear() > 9999){
+						shr.showError({message : queryData[i].properties.alias_zh_CN + jsBizMultLan.shrreport_reportquery_i18n_0});
+						return false;
+					}
+					if(date.getMonth() >11 || date.getMonth() < 0){
+						shr.showError({message : queryData[i].properties.alias_zh_CN + jsBizMultLan.shrreport_reportquery_i18n_0});
+						return false;
+					}
+					if(date.getDate() > 31 || date.getDate() < 1){
+						shr.showError({message : queryData[i].properties.alias_zh_CN + jsBizMultLan.shrreport_reportquery_i18n_0});
+						return false;
+					}
+				}				
+			}
+		}
+		return true;
+	},
+
+	CheckSelectedIds : function () {
+		var selectedIds = $("#tempTab").jqGrid("getSelectedRows")
+			if (selectedIds.length > 0) {
+				return true;
+			} else {
+				return false;
+			}
+	},
+
+	CheckTabSelectedIds : function () {
+		var selectedIds = $("#tempTab").jqGrid("getSelectedRows");
+		if (selectedIds.length > 0) {
+			return true;
+		} else {
+			return false;
+		}
+	},	
+
+	addFilterComponent : function (data) {
+		var _self = this;
+		var router = 0;
+		var xml;
+		/////////////////////////////////////////////////////////////////
+
+		$(".report_filter").empty();
+		/*
+		$(".report_filter").append('<div class="row-fluid row-block " id=""><div data-ctrlrole="labelContainer" ><div class="span2">'
+		+'<div class="field_label" title="'+"模板"+'">'+"模板"+'</div></div><div class="span3 field-ctrl">'
+		+'<input class="block-father input-height" id="selectTemplate" name="selectTemplate" validate="" placeholder="" type="text"  dataExtenal="" />'
+		+'</div><div class="span1 field-desc"></div></div></div>');
+		 */
+
+		if (data.length == 0) {
+			$(".report_filter").append('<div id="no"><span id="ui-id-1" class="ui-dialog-title" style="color:#FA0610;margin-left: 40px;">' 
+					+ jsBizMultLan.shrreport_reportquery_i18n_12 
+					+ '</span></div>');
+		}
+
+		for (var i = 0; i < data.length; i++) {
+			if (data[i].inputState != 2) {
+				router++;
+				var isneed = 'false';
+				if (!data[i].isAllowNull) {
+					isneed = 'true';
+				}
+				if (data[i].designDataType == 0 && data[i].inputType == 4) {
+					if (router % 2 == 1) {
+						xml = '<div class="row-fluid row-block " id=""><div data-ctrlrole="labelContainer" ><div class="span2" style="margin-left: 20px;">'
+							 + '<div class="field_label" title="' + data[i].ins + '">' + data[i].properties.alias_zh_CN + '</div></div><div class="span3 field-ctrl" style="margin-right: 0;">'
+							 + '<input id="' + data[i].name + '" name="' + data[i].name + '" class="block-father input-height" type="text" validate="{required:' + isneed + '}" />'
+							 + '</div><div class="span1 field-desc"></div></div>';
+					} else {
+						$(".report_filter").append(xml + '<div data-ctrlrole="labelContainer" ><div class="span2">'
+							 + '<div class="field_label" title="' + data[i].ins + '">' + data[i].properties.alias_zh_CN + '</div></div><div class="span3 field-ctrl" style="margin-right: 0;">'
+							 + '<input id="' + data[i].name + '" name="' + data[i].name + '" class="block-father input-height" type="text" validate="{required:' + isneed + '}" />'
+							 + '</div><div class="span1 field-desc"></div></div></div>');
+					}
+				} else if (data[i].designDataType == 0) {
+					if (router % 2 == 1) {
+						xml = '<div class="row-fluid row-block " id=""><div data-ctrlrole="labelContainer" ><div class="span2" style="margin-left: 20px;">'
+							 + '<div class="field_label" title="' + data[i].ins + '">' + data[i].properties.alias_zh_CN + '</div></div><div class="span3 field-ctrl" style="margin-right: 0;">'
+							 + '<input id="' + data[i].name + '" class="block-father input-height" type="text" name="' + data[i].name + '" validate="{maxlength:255,required:' + isneed + '}" value="" placeholder=""  dataExtenal="" style="width:180px !important"/>'
+							 + '</div><div class="span1 field-desc"></div></div>';
+					} else {
+						$(".report_filter").append(xml + '<div data-ctrlrole="labelContainer" ><div class="span2">'
+							 + '<div class="field_label" title="' + data[i].ins + '">' + data[i].properties.alias_zh_CN + '</div></div><div class="span3 field-ctrl" style="margin-right: 0;">'
+							 + '<input id="' + data[i].name + '" class="block-father input-height" type="text" name="' + data[i].name + '" validate="{maxlength:255,required:' + isneed + '}" value="" placeholder=""  dataExtenal="" style="width:180px !important"/>'
+							 + '</div><div class="span1 field-desc"></div></div></div>');
+					}
+				} else if (data[i].designDataType == 1) {
+					if (router % 2 == 1) {
+						xml = '<div class="row-fluid row-block " id=""><div data-ctrlrole="labelContainer" ><div class="span2" style="margin-left: 20px;">'
+							 + '<div class="field_label" title="' + data[i].ins + '">' + data[i].properties.alias_zh_CN + '</div></div><div class="span3 field-ctrl" style="margin-right: 0;">'
+							 + '<input id="' + data[i].name + '" class="block-father input-height" type="text" name="' + data[i].name + '" validate="{maxlength:9,digits:true,required:' + isneed + '}" value="0" placeholder=""  dataExtenal=""/>'
+							 + '</div><div class="span1 field-desc"></div></div>';
+					} else {
+						$(".report_filter").append(xml + '<div data-ctrlrole="labelContainer" ><div class="span2">'
+							 + '<div class="field_label" title="' + data[i].ins + '">' + data[i].properties.alias_zh_CN + '</div></div><div class="span3 field-ctrl" style="margin-right: 0;">'
+							 + '<input id="' + data[i].name + '" class="block-father input-height" type="text" name="' + data[i].name + '" validate="{maxlength:9,digits:true,required:' + isneed + '}" value="0" placeholder=""  dataExtenal=""/>'
+							 + '</div><div class="span1 field-desc"></div></div></div>');
+					}
+				} else if (data[i].designDataType == 2) {
+					if (router % 2 == 1) {
+						xml = '<div class="row-fluid row-block " id=""><div data-ctrlrole="labelContainer" ><div class="span2" style="margin-left: 20px;">'
+							 + '<div class="field_label" title="' + data[i].ins + '">' + data[i].properties.alias_zh_CN + '</div></div><div class="span3 field-ctrl" style="margin-right: 0;">'
+							 + '<input id="' + data[i].name + '" name="' + data[i].name + '" value="" validate="{dateISO:true,required:' + isneed + '}" placeholder="" type="text"  dataExtenal="">'
+							 + '</div><div class="span1 field-desc"></div></div>';
+					} else {
+						$(".report_filter").append(xml + '<div data-ctrlrole="labelContainer" ><div class="span2">'
+							 + '<div class="field_label" title="' + data[i].ins + '">' + data[i].properties.alias_zh_CN + '</div></div><div class="span3 field-ctrl" style="margin-right: 0;">'
+							 + '<input id="' + data[i].name + '" name="' + data[i].name + '" value="" validate="{dateISO:true,required:' + isneed + '}" placeholder="" type="text"  dataExtenal="">'
+							 + '</div><div class="span1 field-desc"></div></div></div>');
+					}
+				} else if (data[i].designDataType == 3) {
+					if (router % 2 == 1) {
+						xml = '<div class="row-fluid row-block " id=""><div data-ctrlrole="labelContainer" ><div class="span2" style="margin-left: 20px;">'
+								 + '<div class="field_label" title="' + data[i].ins + '">' + data[i].properties.alias_zh_CN + '</div></div><div class="span3 field-ctrl" style="margin-right: 0;">'
+								 + '<input id="' + data[i].name + '" name="' + data[i].name + '" class="block-father input-height" type="text" validate="{required:' + isneed + '}" />'
+								 + '</div><div class="span1 field-desc"></div></div>';
+					} else {
+						$(".report_filter").append(xml + '<div data-ctrlrole="labelContainer" ><div class="span2">'
+								 + '<div class="field_label" title="' + data[i].ins + '">' + data[i].properties.alias_zh_CN + '</div></div><div class="span3 field-ctrl" style="margin-right: 0;">'
+								 + '<input id="' + data[i].name + '" name="' + data[i].name + '" class="block-father input-height" type="text" validate="{required:' + isneed + '}" />'
+								 + '</div><div class="span1 field-desc"></div></div></div>');
+					}
+				}
+			}
+		}
+
+		if (router % 2 == 1 && xml != null) {
+			$(".report_filter").append(xml + '</div>');
+		}
+		_self.reportConstantsUtils.addTips('adminOrg', _self.reportConstantsUtils.REPORT_TIPS_DESC.ADMINORG);
+		_self.reportConstantsUtils.addTips('hrOrg', _self.reportConstantsUtils.REPORT_TIPS_DESC.HRORG);
+		_self.reportConstantsUtils.addPlaceholder('adminOrg', _self.reportConstantsUtils.REPORT_PLACEHOLDER_DESC.ADMINORG);
+		_self.reportConstantsUtils.addPlaceholder('hrOrg', _self.reportConstantsUtils.REPORT_PLACEHOLDER_DESC.HRORG);
+		///////////////////////////////////////////////
+	},
+	getdate : function (date) {
+		var now = new Date(); //当前日期  
+		var nowYear = now.getFullYear(); //当前年  
+		switch(date){
+			case "today" : 
+				return now.format("yyyy-MM-dd");
+				break;
+			case "current_month_star" : 
+				return this.getMonthStartDate();
+				break;
+			case "current_month_end" :
+				return this.getMonthEndDate();
+				break;
+			case "current_quarter_star" :
+				return this.getQuarterStartDate();
+				break;
+			case "current_quarter_end" :
+				return this.getQuarterEndDate();
+				break;
+			case "current_annual_star" :
+				return this.getAnnualStartDate();
+				break;
+			case "current_annual_end" :
+				return this.getAnnualEndDate();
+				break;
+			case "last_month_star" :
+				return this.getLastMonthStartDate();
+				break;
+			case "last_month_end" : 
+				return this.getLastMonthEndDate();
+				break;
+			case "last_quarter_star" :
+				var t_date = new Date(this.getQuarterStartDate()); 
+				return this.getPriorSeasonFirstDay(nowYear,t_date.getMonth());
+				break;
+			case "last_quarter_end" :
+				var t_date = new Date(this.getQuarterStartDate()); 
+				return this.getPriorSeasonEndDay(nowYear,t_date.getMonth());
+				break;
+			case "last_annual_star" :
+				return this.getLastAnnualStartDate();
+				break;
+			case "last_annual_end" :
+				return this.getLastAnnualEndDate();
+				break;
+			default:
+				return date;
+				break;
+		}
+	},	
+	
+	
+	formatDate :function (date) {  
+		var myyear = date.getFullYear();  
+		var mymonth = date.getMonth()+1;  
+		var myweekday = date.getDate();  
+		  
+		if(mymonth < 10){  
+		mymonth = "0" + mymonth;  
+		}  
+		if(myweekday < 10){  
+		myweekday = "0" + myweekday;  
+		}  
+		return (myyear+"-"+mymonth + "-" + myweekday);  
+	},  
+  
+	//获得某月的天数  
+	getMonthDays :function (myMonth){
+		var now = new Date(); //当前日期  
+		var nowDayOfWeek = now.getDay(); //今天本周的第几天  
+		var nowDay = now.getDate(); //当前日  
+		var nowMonth = now.getMonth(); //当前月  
+		var nowYear = now.getFullYear(); //当前年  
+		
+		var lastMonthDate = new Date(); //上月日期  
+		lastMonthDate.setDate(1);  
+		lastMonthDate.setMonth(lastMonthDate.getMonth()-1);  
+		var lastYear = lastMonthDate.getYear();  
+		var lastMonth = lastMonthDate.getMonth(); 
+		
+		var monthStartDate = new Date(nowYear, myMonth, 1);  
+		var monthEndDate = new Date(nowYear, myMonth + 1, 1);  
+		var days = (monthEndDate - monthStartDate)/(1000 * 60 * 60 * 24);  
+		return days;  
+	},  
+  
+	//获得本季度的开端月份  
+	getQuarterStartMonth :function (){
+		var now = new Date(); //当前日期  
+		var nowDayOfWeek = now.getDay(); //今天本周的第几天  
+		var nowDay = now.getDate(); //当前日  
+		var nowMonth = now.getMonth(); //当前月  
+		var nowYear = now.getFullYear(); //当前年  
+		
+		var lastMonthDate = new Date(); //上月日期  
+		lastMonthDate.setDate(1);  
+		lastMonthDate.setMonth(lastMonthDate.getMonth()-1);  
+		var lastYear = lastMonthDate.getYear();  
+		var lastMonth = lastMonthDate.getMonth();  	
+		var quarterStartMonth = 0;  
+		if(nowMonth<3){  
+		quarterStartMonth = 0;  
+		}  
+		if(2<nowMonth && nowMonth<6){  
+		quarterStartMonth = 3;  
+		}  
+		if(5<nowMonth && nowMonth<9){  
+		quarterStartMonth = 6;  
+		}  
+		if(nowMonth>8){  
+		quarterStartMonth = 9;  
+		}  
+		return quarterStartMonth;  
+	},  
+	  
+	
+	//获得本月的开端日期  
+	getMonthStartDate :function (){  
+		var now = new Date(); //当前日期  
+		var nowDayOfWeek = now.getDay(); //今天本周的第几天  
+		var nowDay = now.getDate(); //当前日  
+		var nowMonth = now.getMonth(); //当前月  
+		var nowYear = now.getFullYear(); //当前年  
+		
+		var monthStartDate = new Date(nowYear, nowMonth, 1);  
+		return monthStartDate.format("yyyy-MM-dd")	
+	},  
+	 
+	//获得上月的开端日期  
+	getLastMonthStartDate :function (){  
+		var now = new Date(); //当前日期  
+		var nowDayOfWeek = now.getDay(); //今天本周的第几天  
+		var nowDay = now.getDate(); //当前日  
+		var nowMonth = now.getMonth(); //当前月  
+		var nowYear = now.getFullYear(); //当前年  
+		var monthStartDate = new Date(nowYear, nowMonth-1, 1);  
+		return monthStartDate.format("yyyy-MM-dd")	
+	},  
+	 
+	//获得本月的停止日期  
+	getMonthEndDate :function (){  
+		var now = new Date(); //当前日期  
+		var nowDayOfWeek = now.getDay(); //今天本周的第几天  
+		var nowDay = now.getDate(); //当前日  
+		var nowMonth = now.getMonth(); //当前月  
+		var nowYear = now.getFullYear(); //当前年  
+		
+		var monthEndDate = new Date(nowYear, nowMonth, this.getMonthDays(nowMonth));  
+		return monthEndDate.format("yyyy-MM-dd");	
+	}, 
+	
+	//获得上月的停止日期  
+	getLastMonthEndDate :function (){  
+		var now = new Date(); //当前日期  
+		var nowDayOfWeek = now.getDay(); //今天本周的第几天  
+		var nowDay = now.getDate(); //当前日  
+		var nowMonth = now.getMonth(); //当前月  
+		var nowYear = now.getFullYear(); //当前年  
+		var monthEndDate = new Date(nowYear, nowMonth-1, this.getMonthDays(nowMonth));  
+		return monthEndDate.format("yyyy-MM-dd");	
+	},  	
+	  
+	//获得上月开端时候  
+	getLastMonthStartDate :function (){  
+		var now = new Date(); //当前日期  
+		var nowYear = now.getFullYear(); //当前年  
+		var lastMonthDate = new Date(); //上月日期  
+		lastMonthDate.setDate(1);  
+		lastMonthDate.setMonth(lastMonthDate.getMonth()-1);  
+		var lastYear = lastMonthDate.getFullYear();  
+		var lastMonth = lastMonthDate.getMonth();  	
+		var lastMonthStartDate = new Date(lastYear, lastMonth, 1);  
+		return lastMonthStartDate.format("yyyy-MM-dd");	
+	},  
+	  
+	//获得上月停止时候  
+	getLastMonthEndDate :function (){  
+		var now = new Date(); //当前日期  
+		var nowYear = now.getFullYear(); //当前年  
+		var lastMonthDate = new Date(); //上月日期  
+		lastMonthDate.setDate(1);  
+		lastMonthDate.setMonth(lastMonthDate.getMonth()-1);  
+		var lastYear = lastMonthDate.getFullYear();  
+		var lastMonth = lastMonthDate.getMonth();  	
+		var lastMonthEndDate = new Date(lastYear, lastMonth, this.getMonthDays(lastMonth));  
+		return lastMonthEndDate.format("yyyy-MM-dd");	
+		
+	}, 
+	  
+	//获得本季度的开端日期  
+	getQuarterStartDate :function (){  
+		var now = new Date(); //当前日期   
+		var nowYear = now.getFullYear(); //当前年  
+		var quarterStartDate = new Date(nowYear, this.getQuarterStartMonth(), 1);  
+		return quarterStartDate.format("yyyy-MM-dd");	
+		
+	}, 
+	
+	
+	//获得上季度季度的开端日期  
+	getLastQuarterStartDate :function (){  
+		var now = new Date(); //当前日期  
+		var nowYear = now.getFullYear(); //当前年  
+		var quarterStartDate = new Date(nowYear, this.getQuarterStartMonth(), 1);  
+		return quarterStartDate.format("yyyy-MM-dd");	
+	}, 
+	
+	  
+	//获的本季度的停止日期  
+	getQuarterEndDate :function (){  
+		var now = new Date(); //当前日期  
+		var nowYear = now.getFullYear(); //当前年  
+		var quarterEndMonth = this.getQuarterStartMonth() + 2;  
+		var quarterStartDate = new Date(nowYear, quarterEndMonth, this.getMonthDays(quarterEndMonth));  
+		return quarterStartDate.format("yyyy-MM-dd");	
+	}, 
+
+	//获取本年度初
+	getAnnualStartDate : function(){
+		var now = new Date(); //当前日期  
+		var nowYear = now.getFullYear(); //当前年  
+		var AnnualStartDate = new Date(nowYear, 0, 1);  
+		return AnnualStartDate.format("yyyy-MM-dd");
+	},
+	
+	//获取本年度初
+	getLastAnnualStartDate : function(){
+		var now = new Date(); //当前日期  
+		var nowYear = now.getFullYear(); //当前年  
+		var AnnualStartDate = new Date(nowYear-1, 0, 1);  
+		return AnnualStartDate.format("yyyy-MM-dd");
+	},
+	
+	//获取本年度末
+	getAnnualEndDate : function(){
+		var now = new Date(); //当前日期  
+		var nowYear = now.getFullYear(); //当前年  
+		var AnnualStartDate = new Date(nowYear, 11, 31);  
+		return AnnualStartDate.format("yyyy-MM-dd");
+	},
+	
+	
+	//获取上年度末
+	getLastAnnualEndDate : function(){
+		var now = new Date(); //当前日期  
+		var nowYear = now.getFullYear(); //当前年  
+		var AnnualStartDate = new Date(nowYear-1, 11, 31);  
+		return AnnualStartDate.format("yyyy-MM-dd");
+	},
+	
+	 /**
+     * 得到上季度的起始日期
+     * year 这个年应该是运算后得到的当前本季度的年份
+     * month 这个应该是运算后得到的当前季度的开始月份
+     * */ 
+   getPriorSeasonFirstDay : function(year,month){ 
+        var quarterMonthStart=0; 
+        var spring=0; //春  
+        var summer=3; //夏  
+        var fall=6;   //秋  
+        var winter=9;//冬  
+        //月份从0-11  
+        switch(month){//季度的其实月份  
+        case spring: 
+            //如果是第一季度则应该到去年的冬季  
+              year--; 
+              month=winter; 
+            break; 
+        case summer: 
+            month=spring; 
+            break; 
+        case fall: 
+            month=summer; 
+            break; 
+        case winter: 
+            month=fall; 
+            break; 
+             
+        };  
+        return (new Date(year,month,1)).format("yyyy-MM-dd"); 
+    },
+	
+	 /**
+     * 得到上季度的结束日期
+     * year 这个年应该是运算后得到的当前本季度的年份
+     * month 这个应该是运算后得到的当前季度的开始月份
+     * */ 
+   getPriorSeasonEndDay : function(year,month){ 
+        var quarterMonthStart=0; 
+        var spring=0; //春  
+        var summer=3; //夏  
+        var fall=6;   //秋  
+        var winter=9;//冬  
+        //月份从0-11  
+        switch(month){//季度的其实月份  
+        case spring: 
+            //如果是第一季度则应该到去年的冬季  
+              year--; 
+              month=winter; 
+            break; 
+        case summer: 
+            month=spring; 
+            break; 
+        case fall: 
+            month=summer; 
+            break; 
+        case winter: 
+            month=fall; 
+            break; 
+             
+        };  
+        return (new Date(year,month+2,this.getMonthDays(month))).format("yyyy-MM-dd"); 
+    },
+   getJSessionCookie : function () {
+   	var array = document.cookie.split(";");
+		for (var i = 0; i < array.length; i++) {
+			if (array[i].indexOf("JSESSIONID") >= 0) {
+				return array[i].trim().substring('JSESSIONID'.length + 1);
+			}
+		}
+	 return "";
+   },
+  
+	// 检查报表完整性
+	checkReportIntegrity : function(reportId){
+		var checkresult ;
+		$.ajax({
+			url : shr.getContextPath() + "/dynamic.do?method=checkReportIntegrity",
+			async : false,
+			data : {
+				uipk : shr.getUipk(),
+				reportId : reportId,
+				permItemId:shr.getCurrentPagePermItemId(),
+				serviceId:shr.getUrlRequestParam('serviceId')
+			},
+			success : function (data) {
+				checkresult = data;	
+			},
+			error : function(data){
+				checkresult =  data;
+			}
+		});
+		return checkresult;
+	},
+});