Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
浙江兰德纵横网络技术股份有限公司
o2oa
提交
329c6e9b
o2oa
项目概览
浙江兰德纵横网络技术股份有限公司
/
o2oa
通知
339
Star
10
Fork
6
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
o2oa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
329c6e9b
编写于
6月 22, 2021
作者:
F
fancy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
考勤新增从企业微信同步下来的数据查询,jira问题处理
上级
a82f1b68
变更
11
显示空白变更内容
内联
并排
Showing
11 changed file
with
1647 addition
and
1 deletion
+1647
-1
o2web/source/x_component_Attendance/$Main/navi.json
o2web/source/x_component_Attendance/$Main/navi.json
+18
-0
o2web/source/x_component_Attendance/$PeopleDetail/listItem_qywx.json
...e/x_component_Attendance/$PeopleDetail/listItem_qywx.json
+42
-0
o2web/source/x_component_Attendance/$PeopleDetail/listItem_qywx_detailStatic.json
..._Attendance/$PeopleDetail/listItem_qywx_detailStatic.json
+83
-0
o2web/source/x_component_Attendance/$UnitDetail/listItem_qywx.json
...rce/x_component_Attendance/$UnitDetail/listItem_qywx.json
+42
-0
o2web/source/x_component_Attendance/$UnitDetail/listItem_qywx_detailStatic.json
...nt_Attendance/$UnitDetail/listItem_qywx_detailStatic.json
+83
-0
o2web/source/x_component_Attendance/Main.js
o2web/source/x_component_Attendance/Main.js
+34
-0
o2web/source/x_component_Attendance/PeopleQywxDetail.js
o2web/source/x_component_Attendance/PeopleQywxDetail.js
+457
-0
o2web/source/x_component_Attendance/UnitQywxDetail.js
o2web/source/x_component_Attendance/UnitQywxDetail.js
+374
-0
o2web/source/x_component_Attendance/UnitQywxIndex.js
o2web/source/x_component_Attendance/UnitQywxIndex.js
+501
-0
o2web/source/x_component_Attendance/lp/en.js
o2web/source/x_component_Attendance/lp/en.js
+7
-1
o2web/source/x_component_Attendance/lp/zh-cn.js
o2web/source/x_component_Attendance/lp/zh-cn.js
+6
-0
未找到文件。
o2web/source/x_component_Attendance/$Main/navi.json
浏览文件 @
329c6e9b
...
...
@@ -53,18 +53,36 @@
"id"
:
"151"
,
"action"
:
"openUnitDingdingIndex"
},
{
"access"
:
"qywx"
,
"title"
:
MWF.xApplication.Attendance.LP.navi.unitQywxIndex
,
"id"
:
"152"
,
"action"
:
"openUnitQywxIndex"
},
{
"access"
:
"dingding"
,
"title"
:
MWF.xApplication.Attendance.LP.navi.dingdingPeopleDetail
,
"id"
:
"161"
,
"action"
:
"openDingdingPeopleDetail"
},
{
"access"
:
"qywx"
,
"title"
:
MWF.xApplication.Attendance.LP.navi.qywxPeopleDetail
,
"id"
:
"162"
,
"action"
:
"openQywxPeopleDetail"
},
{
"access"
:
"dingding"
,
"title"
:
MWF.xApplication.Attendance.LP.navi.dingdingUnitDetail
,
"id"
:
"171"
,
"action"
:
"openDingdingUnitDetail"
},
{
"access"
:
"qywx"
,
"title"
:
MWF.xApplication.Attendance.LP.navi.qywxUnitDetail
,
"id"
:
"172"
,
"action"
:
"openQywxUnitDetail"
},
{
"access"
:
"admin"
,
"type"
:
"sep"
...
...
o2web/source/x_component_Attendance/$PeopleDetail/listItem_qywx.json
0 → 100644
浏览文件 @
329c6e9b
[
{
"title"
:
MWF.xApplication.Attendance.LP.name
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function( d ){ return d.o2User.split('@')[0] }"
,
"name"
:
"o2User"
,
"width"
:
"20%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.date
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function(d){ var date = new Date(d.userCheckTime); return date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate();}"
,
"name"
:
"userCheckTime"
,
"width"
:
"20%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.signinType
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function( data ){ return data.checkType; }"
,
"name"
:
"checkType"
,
"width"
:
"20%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.signinResult
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function( data ){ return data.exceptionType; }"
,
"name"
:
"exceptionType"
,
"width"
:
"20%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.signTime
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function(d){ var date = new Date(d.userCheckTime); return date.getHours()+':'+date.getMinutes()+':'+date.getSeconds();}"
,
"name"
:
"userCheckTime"
,
"width"
:
"20%"
}
]
\ No newline at end of file
o2web/source/x_component_Attendance/$PeopleDetail/listItem_qywx_detailStatic.json
0 → 100644
浏览文件 @
329c6e9b
[
{
"title"
:
MWF.xApplication.Attendance.LP.person
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function( d ){ return d.o2User.split('@')[0] }"
,
"name"
:
"o2User"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.months
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function( data ){ return data.statisticYear + '-' + data.statisticMonth }"
,
"name"
:
"statisticMonth"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.onDutyTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"onDutyTimes"
,
"name"
:
"onDutyTimes"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.offDutyTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"offDutyTimes"
,
"name"
:
"offDutyTimes"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.onDutyDayCount
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"workDayCount"
,
"name"
:
"workDayCount"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.lateTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"lateTimes"
,
"name"
:
"lateTimes"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.leaveEarlyTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"leaveEarlyTimes"
,
"name"
:
"leaveEarlyTimes"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.notSignedCount
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"notSignedCount"
,
"name"
:
"notSignedCount"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.outsideDutyTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"outsideDutyTimes"
,
"name"
:
"outsideDutyTimes"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.absenteeismTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"absenteeismTimes"
,
"name"
:
"absenteeismTimes"
,
"width"
:
"9%"
}
]
\ No newline at end of file
o2web/source/x_component_Attendance/$UnitDetail/listItem_qywx.json
0 → 100644
浏览文件 @
329c6e9b
[
{
"title"
:
MWF.xApplication.Attendance.LP.name
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function( d ){ return d.o2User.split('@')[0] }"
,
"name"
:
"o2User"
,
"width"
:
"20%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.date
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function(d){ var date = new Date(d.userCheckTime); return date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate();}"
,
"name"
:
"userCheckTime"
,
"width"
:
"20%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.signinType
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function( data ){ return data.checkType; }"
,
"name"
:
"checkType"
,
"width"
:
"20%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.signinResult
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function( data ){ return data.exceptionType; }"
,
"name"
:
"exceptionType"
,
"width"
:
"20%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.signTime
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function(d){ var date = new Date(d.userCheckTime); return date.getHours()+':'+date.getMinutes()+':'+date.getSeconds();}"
,
"name"
:
"userCheckTime"
,
"width"
:
"20%"
}
]
\ No newline at end of file
o2web/source/x_component_Attendance/$UnitDetail/listItem_qywx_detailStatic.json
0 → 100644
浏览文件 @
329c6e9b
[
{
"title"
:
MWF.xApplication.Attendance.LP.person
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function( d ){ return d.o2User.split('@')[0] }"
,
"name"
:
"o2User"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.months
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"function( data ){ return data.statisticYear + '-' + data.statisticMonth }"
,
"name"
:
"statisticMonth"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.onDutyTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"onDutyTimes"
,
"name"
:
"onDutyTimes"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.offDutyTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"offDutyTimes"
,
"name"
:
"offDutyTimes"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.onDutyDayCount
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"workDayCount"
,
"name"
:
"workDayCount"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.lateTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"lateTimes"
,
"name"
:
"lateTimes"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.leaveEarlyTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"leaveEarlyTimes"
,
"name"
:
"leaveEarlyTimes"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.notSignedCount
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"notSignedCount"
,
"name"
:
"notSignedCount"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.outsideDutyTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"outsideDutyTimes"
,
"name"
:
"outsideDutyTimes"
,
"width"
:
"9%"
},
{
"title"
:
MWF.xApplication.Attendance.LP.absenteeismTimes
,
"headStyles"
:
"normalThNode"
,
"contentStyles"
:
"normalTdNode"
,
"item"
:
"absenteeismTimes"
,
"name"
:
"absenteeismTimes"
,
"width"
:
"9%"
}
]
\ No newline at end of file
o2web/source/x_component_Attendance/Main.js
浏览文件 @
329c6e9b
...
...
@@ -168,6 +168,16 @@ MWF.xApplication.Attendance.Main = new Class({
this
.
explorer
.
load
();
}.
bind
(
this
));
},
openUnitQywxIndex
:
function
()
{
MWF
.
xDesktop
.
requireApp
(
"
Attendance
"
,
"
UnitQywxIndex
"
,
function
()
{
this
.
clearContent
();
this
.
explorerContent
=
new
Element
(
"
div
"
,
{
"
styles
"
:
this
.
css
.
rightContentNode
}).
inject
(
this
.
node
);
this
.
explorer
=
new
MWF
.
xApplication
.
Attendance
.
UnitQywxIndex
(
this
.
explorerContent
,
this
,
this
.
restActions
,
{
"
isAdmin
"
:
this
.
isAdmin
()
});
this
.
explorer
.
load
();
}.
bind
(
this
));
},
openUnitDetail
:
function
()
{
MWF
.
xDesktop
.
requireApp
(
"
Attendance
"
,
"
UnitDetail
"
,
function
()
{
this
.
clearContent
();
...
...
@@ -178,6 +188,7 @@ MWF.xApplication.Attendance.Main = new Class({
this
.
explorer
.
load
();
}.
bind
(
this
));
},
openDingdingUnitDetail
:
function
()
{
MWF
.
xDesktop
.
requireApp
(
"
Attendance
"
,
"
UnitDingdingDetail
"
,
function
()
{
this
.
clearContent
();
...
...
@@ -188,6 +199,16 @@ MWF.xApplication.Attendance.Main = new Class({
this
.
explorer
.
load
();
}.
bind
(
this
));
},
openQywxUnitDetail
:
function
()
{
MWF
.
xDesktop
.
requireApp
(
"
Attendance
"
,
"
UnitQywxDetail
"
,
function
()
{
this
.
clearContent
();
this
.
explorerContent
=
new
Element
(
"
div
"
,
{
"
styles
"
:
this
.
css
.
rightContentNode
}).
inject
(
this
.
node
);
this
.
explorer
=
new
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
(
this
.
explorerContent
,
this
,
this
.
restActions
,
{
"
isAdmin
"
:
this
.
isAdmin
()
});
this
.
explorer
.
load
();
}.
bind
(
this
));
},
openPeopleDetail
:
function
()
{
MWF
.
xDesktop
.
requireApp
(
"
Attendance
"
,
"
PeopleDetail
"
,
function
()
{
this
.
clearContent
();
...
...
@@ -208,6 +229,16 @@ MWF.xApplication.Attendance.Main = new Class({
this
.
explorer
.
load
();
}.
bind
(
this
));
},
openQywxPeopleDetail
:
function
()
{
MWF
.
xDesktop
.
requireApp
(
"
Attendance
"
,
"
PeopleQywxDetail
"
,
function
()
{
this
.
clearContent
();
this
.
explorerContent
=
new
Element
(
"
div
"
,
{
"
styles
"
:
this
.
css
.
rightContentNode
}).
inject
(
this
.
node
);
this
.
explorer
=
new
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
(
this
.
explorerContent
,
this
,
this
.
restActions
,
{
"
isAdmin
"
:
this
.
isAdmin
()
});
this
.
explorer
.
load
();
}.
bind
(
this
));
},
openTopUnitDetail
:
function
()
{
MWF
.
xDesktop
.
requireApp
(
"
Attendance
"
,
"
TopUnitDetail
"
,
function
()
{
this
.
clearContent
();
...
...
@@ -390,6 +421,9 @@ MWF.xApplication.Attendance.Navi = new Class({
}
else
if
(
navi
.
access
&&
navi
.
access
==
"
dingding
"
)
{
//启用钉钉考勤同步后
debugger
;
if
((
this
.
app
.
isUnitManager
()
||
this
.
app
.
isAdmin
())
&&
(
this
.
app
.
enableType
==
"
dingding
"
))
this
.
createNaviNode
(
navi
);
}
else
if
(
navi
.
access
&&
navi
.
access
==
"
qywx
"
)
{
// 启用企业微信考勤同步后
debugger
;
if
((
this
.
app
.
isUnitManager
()
||
this
.
app
.
isAdmin
())
&&
(
this
.
app
.
enableType
==
"
qywx
"
))
this
.
createNaviNode
(
navi
);
}
else
{
this
.
createNaviNode
(
navi
);
}
...
...
o2web/source/x_component_Attendance/PeopleQywxDetail.js
0 → 100644
浏览文件 @
329c6e9b
MWF
.
xDesktop
.
requireApp
(
"
Attendance
"
,
"
Explorer
"
,
null
,
false
);
MWF
.
xDesktop
.
requireApp
(
"
Selector
"
,
"
package
"
,
null
,
false
);
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
=
new
Class
({
Extends
:
MWF
.
widget
.
Common
,
Implements
:
[
Options
,
Events
],
options
:
{
"
style
"
:
"
default
"
},
initialize
:
function
(
node
,
app
,
actions
,
options
)
{
this
.
setOptions
(
options
);
this
.
app
=
app
;
this
.
path
=
"
../x_component_Attendance/$PeopleDetail/
"
;
this
.
cssPath
=
"
../x_component_Attendance/$PeopleDetail/
"
+
this
.
options
.
style
+
"
/css.wcss
"
;
this
.
_loadCss
();
this
.
actions
=
actions
;
this
.
node
=
$
(
node
);
},
load
:
function
()
{
this
.
loadTab
();
},
loadTab
:
function
()
{
this
.
tabNode
=
new
Element
(
"
div
"
,
{
"
styles
"
:
this
.
css
.
tabNode
}).
inject
(
this
.
node
);
this
.
detailArea
=
new
Element
(
"
div
"
,
{
"
styles
"
:
this
.
css
.
tabPageContainer
}).
inject
(
this
.
tabNode
);
//this.selfHolidayArea = new Element("div",{"styles" : this.css.tabPageContainer }).inject(this.tabNode)
this
.
detailStaticArea
=
new
Element
(
"
div
"
,
{
"
styles
"
:
this
.
css
.
tabPageContainer
}).
inject
(
this
.
tabNode
);
//this.selfHolidayStaticArea = new Element("div",{"styles" : this.css.tabPageContainer }).inject(this.tabNode)
MWF
.
require
(
"
MWF.widget.Tab
"
,
function
()
{
this
.
tabs
=
new
MWF
.
widget
.
Tab
(
this
.
tabNode
,
{
"
style
"
:
"
attendance
"
});
this
.
tabs
.
load
();
this
.
detailPage
=
this
.
tabs
.
addTab
(
this
.
detailArea
,
this
.
app
.
lp
.
personSigninDetail
,
false
);
this
.
detailPage
.
contentNodeArea
.
set
(
"
class
"
,
"
detailPage
"
);
this
.
detailPage
.
addEvent
(
"
show
"
,
function
()
{
if
(
!
this
.
detailExplorer
)
{
this
.
detailExplorer
=
new
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
Explorer
(
this
.
detailArea
,
this
);
this
.
detailExplorer
.
load
();
}
}.
bind
(
this
));
this
.
detailStaticPage
=
this
.
tabs
.
addTab
(
this
.
detailStaticArea
,
this
.
app
.
lp
.
personSigninStatic
,
false
);
this
.
detailStaticPage
.
contentNodeArea
.
set
(
"
class
"
,
"
detailStaticPage
"
);
this
.
detailStaticPage
.
addEvent
(
"
show
"
,
function
()
{
if
(
!
this
.
detailStaticExplorer
)
{
this
.
detailStaticExplorer
=
new
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
DetailStaticExplorer
(
this
.
detailStaticArea
,
this
);
this
.
detailStaticExplorer
.
load
();
}
}.
bind
(
this
));
this
.
tabs
.
pages
[
0
].
showTab
();
}.
bind
(
this
));
}
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
Explorer
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
,
Implements
:
[
Options
,
Events
],
initialize
:
function
(
node
,
parent
,
options
)
{
this
.
setOptions
(
options
);
this
.
parent
=
parent
;
this
.
app
=
parent
.
app
;
this
.
css
=
parent
.
css
;
this
.
path
=
parent
.
path
;
this
.
actions
=
parent
.
actions
;
this
.
node
=
$
(
node
);
this
.
initData
();
if
(
!
this
.
peopleActions
)
this
.
peopleActions
=
new
MWF
.
xAction
.
org
.
express
.
RestActions
();
},
initData
:
function
()
{
this
.
toolItemNodes
=
[];
},
reload
:
function
()
{
this
.
node
.
empty
();
this
.
load
();
},
load
:
function
()
{
this
.
loadFilter
();
this
.
loadContentNode
();
this
.
setNodeScroll
();
},
loadFilter
:
function
()
{
var
lp
=
MWF
.
xApplication
.
Attendance
.
LP
;
this
.
fileterNode
=
new
Element
(
"
div.fileterNode
"
,
{
"
styles
"
:
this
.
css
.
fileterNode
}).
inject
(
this
.
node
);
var
html
=
"
<table width='100%' bordr='0' cellpadding='5' cellspacing='0' styles='filterTable'>
"
+
"
<tr>
"
+
"
<td styles='filterTableValue' lable='person'></td>
"
+
"
<td styles='filterTableTitle' item='person'></td>
"
+
"
<td styles='filterTableTitle' lable='year'></td>
"
+
"
<td styles='filterTableValue' item='year'></td>
"
+
"
<td styles='filterTableTitle' lable='month'></td>
"
+
"
<td styles='filterTableValue' item='month'></td>
"
+
"
<td styles='filterTableTitle' lable='day'></td>
"
+
"
<td styles='filterTableValue' item='day'></td>
"
+
"
<td styles='filterTableTitle' lable='checkType'></td>
"
+
"
<td styles='filterTableValue' item='checkType'></td>
"
+
"
<td styles='filterTableTitle' lable='exceptionType'></td>
"
+
"
<td styles='filterTableValue' item='exceptionType'></td>
"
+
"
<td styles='filterTableValue' item='action'></td>
"
+
"
</tr>
"
+
"
</table>
"
;
this
.
fileterNode
.
set
(
"
html
"
,
html
);
MWF
.
xDesktop
.
requireApp
(
"
Template
"
,
"
MForm
"
,
function
()
{
this
.
form
=
new
MForm
(
this
.
fileterNode
,
{},
{
isEdited
:
true
,
itemTemplate
:
{
person
:
{
text
:
lp
.
person
,
type
:
"
org
"
,
orgType
:
"
person
"
,
notEmpty
:
true
,
style
:
{
"
min-width
"
:
"
100px
"
}
},
year
:
{
text
:
lp
.
annuaal
,
"
type
"
:
"
select
"
,
"
selectValue
"
:
function
()
{
var
years
=
[];
var
year
=
new
Date
().
getFullYear
();
for
(
var
i
=
0
;
i
<
6
;
i
++
)
{
years
.
push
(
year
--
);
}
return
years
;
},
"
event
"
:
{
"
change
"
:
function
(
item
,
ev
)
{
var
values
=
this
.
getDateSelectValue
();
item
.
form
.
getItem
(
"
day
"
).
resetItemOptions
(
values
,
values
)
}.
bind
(
this
)
}
},
month
:
{
text
:
lp
.
months
,
"
type
"
:
"
select
"
,
"
defaultValue
"
:
function
()
{
var
month
=
(
new
Date
().
getMonth
()
+
1
).
toString
();
return
month
.
length
==
1
?
"
0
"
+
month
:
month
;
},
"
selectValue
"
:
[
""
,
"
01
"
,
"
02
"
,
"
03
"
,
"
04
"
,
"
05
"
,
"
06
"
,
"
07
"
,
"
08
"
,
"
09
"
,
"
10
"
,
"
11
"
,
"
12
"
],
"
event
"
:
{
"
change
"
:
function
(
item
,
ev
)
{
var
values
=
this
.
getDateSelectValue
();
item
.
form
.
getItem
(
"
day
"
).
resetItemOptions
(
values
,
values
)
}.
bind
(
this
)
}
},
day
:
{
text
:
lp
.
date
,
"
type
"
:
"
select
"
,
"
selectValue
"
:
this
.
getDateSelectValue
.
bind
(
this
)
},
checkType
:
{
text
:
lp
.
signinType
,
"
type
"
:
"
select
"
,
"
selectValue
"
:
lp
.
signinQywxTypeSelectText
,
"
selectText
"
:
lp
.
signinQywxTypeSelectText
},
exceptionType
:
{
text
:
lp
.
signinResult
,
"
type
"
:
"
select
"
,
"
selectValue
"
:
lp
.
signinQywxResultSelectText
,
"
selectText
"
:
lp
.
signinQywxResultSelectText
},
action
:
{
"
value
"
:
lp
.
query
,
type
:
"
button
"
,
className
:
"
filterButton
"
,
event
:
{
click
:
function
()
{
var
result
=
this
.
form
.
getResult
(
true
,
"
,
"
,
true
,
true
,
false
);
if
(
!
result
)
return
;
if
(
result
.
day
&&
result
.
day
!=
""
)
{
result
.
q_date
=
result
.
year
+
"
-
"
+
result
.
month
+
"
-
"
+
result
.
day
;
}
this
.
loadView
(
result
);
}.
bind
(
this
)
}
}
}
},
this
.
app
,
this
.
css
);
this
.
form
.
load
();
}.
bind
(
this
),
true
);
},
getDateSelectValue
:
function
()
{
if
(
this
.
form
)
{
var
year
=
parseInt
(
this
.
form
.
getItem
(
"
year
"
).
getValue
());
var
month
=
parseInt
(
this
.
form
.
getItem
(
"
month
"
).
getValue
())
-
1
;
}
else
{
var
year
=
(
new
Date
()).
getFullYear
();
var
month
=
(
new
Date
()).
getMonth
();
}
var
date
=
new
Date
(
year
,
month
,
1
);
var
days
=
[];
days
.
push
(
""
);
while
(
date
.
getMonth
()
===
month
)
{
var
d
=
date
.
getDate
().
toString
();
if
(
d
.
length
==
1
)
d
=
"
0
"
+
d
;
days
.
push
(
d
);
date
.
setDate
(
date
.
getDate
()
+
1
);
}
return
days
;
},
loadContentNode
:
function
()
{
this
.
elementContentNode
=
new
Element
(
"
div
"
,
{
"
styles
"
:
this
.
css
.
elementContentNode
}).
inject
(
this
.
node
);
this
.
app
.
addEvent
(
"
resize
"
,
function
()
{
this
.
setContentSize
();
}.
bind
(
this
));
},
loadView
:
function
(
filterData
)
{
this
.
elementContentNode
.
empty
();
if
(
this
.
view
)
delete
this
.
view
;
this
.
view
=
new
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
View
(
this
.
elementContentNode
,
this
.
app
,
this
);
this
.
view
.
filterData
=
filterData
;
this
.
view
.
listItemUrl
=
this
.
path
+
"
listItem_qywx.json
"
;
this
.
view
.
load
();
this
.
setContentSize
();
},
setContentSize
:
function
()
{
var
tabNodeSize
=
this
.
parent
.
tabs
?
this
.
parent
.
tabs
.
tabNodeContainer
.
getSize
()
:
{
"
x
"
:
0
,
"
y
"
:
0
};
var
fileterNodeSize
=
this
.
fileterNode
?
this
.
fileterNode
.
getSize
()
:
{
"
x
"
:
0
,
"
y
"
:
0
};
var
nodeSize
=
this
.
parent
.
node
.
getSize
();
var
pt
=
this
.
elementContentNode
.
getStyle
(
"
padding-top
"
).
toFloat
();
var
pb
=
this
.
elementContentNode
.
getStyle
(
"
padding-bottom
"
).
toFloat
();
//var filterSize = this.filterNode.getSize();
var
height
=
nodeSize
.
y
-
tabNodeSize
.
y
-
pt
-
pb
-
fileterNodeSize
.
y
-
20
;
this
.
elementContentNode
.
setStyle
(
"
height
"
,
""
+
height
+
"
px
"
);
this
.
pageCount
=
(
height
/
40
).
toInt
()
+
5
;
if
(
this
.
view
&&
this
.
view
.
items
.
length
<
this
.
pageCount
)
{
this
.
view
.
loadElementList
(
this
.
pageCount
-
this
.
view
.
items
.
length
);
}
}
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
SelfHoliday
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
Explorer
,
loadView
:
function
(
filterData
)
{
this
.
elementContentNode
.
empty
();
if
(
this
.
view
)
delete
this
.
view
;
this
.
view
=
new
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
SelfHolidayView
(
this
.
elementContentNode
,
this
.
app
,
this
);
this
.
view
.
filterData
=
filterData
;
this
.
view
.
load
();
this
.
setContentSize
();
}
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
DetailStaticExplorer
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
Explorer
,
loadFilter
:
function
()
{
var
lp
=
MWF
.
xApplication
.
Attendance
.
LP
;
this
.
fileterNode
=
new
Element
(
"
div.fileterNode
"
,
{
"
styles
"
:
this
.
css
.
fileterNode
}).
inject
(
this
.
node
);
var
html
=
"
<table width='100%' bordr='0' cellpadding='5' cellspacing='0' style='width: 460px;font-size: 14px;color:#666'>
"
+
"
<tr>
"
+
"
<td styles='filterTableValue' lable='q_empName'></td>
"
+
"
<td styles='filterTableTitle' item='q_empName'></td>
"
+
"
<td styles='filterTableTitle' lable='cycleYear'></td>
"
+
"
<td styles='filterTableValue' item='cycleYear'></td>
"
+
"
<td styles='filterTableTitle' lable='cycleMonth'></td>
"
+
"
<td styles='filterTableValue' item='cycleMonth'></td>
"
+
"
<td styles='filterTableValue' item='action'></td>
"
+
"
</tr>
"
+
"
</table>
"
;
this
.
fileterNode
.
set
(
"
html
"
,
html
);
MWF
.
xDesktop
.
requireApp
(
"
Template
"
,
"
MForm
"
,
function
()
{
this
.
form
=
new
MForm
(
this
.
fileterNode
,
{},
{
isEdited
:
true
,
itemTemplate
:
{
q_empName
:
{
text
:
lp
.
person
,
type
:
"
org
"
,
orgType
:
"
person
"
,
notEmpty
:
true
,
style
:
{
"
min-width
"
:
"
100px
"
}
},
cycleYear
:
{
text
:
lp
.
annuaal
,
"
type
"
:
"
select
"
,
"
selectValue
"
:
function
()
{
var
years
=
[];
var
year
=
new
Date
().
getFullYear
();
for
(
var
i
=
0
;
i
<
6
;
i
++
)
{
years
.
push
(
year
--
);
}
return
years
;
}
},
cycleMonth
:
{
text
:
lp
.
months
,
"
type
"
:
"
select
"
,
"
defaultValue
"
:
function
()
{
var
month
=
(
new
Date
().
getMonth
()
+
1
).
toString
();
return
month
.
length
==
1
?
"
0
"
+
month
:
month
;
},
"
selectValue
"
:
[
""
,
"
01
"
,
"
02
"
,
"
03
"
,
"
04
"
,
"
05
"
,
"
06
"
,
"
07
"
,
"
08
"
,
"
09
"
,
"
10
"
,
"
11
"
,
"
12
"
]
},
action
:
{
"
value
"
:
lp
.
query
,
type
:
"
button
"
,
className
:
"
filterButton
"
,
event
:
{
click
:
function
()
{
var
result
=
this
.
form
.
getResult
(
true
,
"
,
"
,
true
,
true
,
false
);
if
(
!
result
)
return
;
this
.
loadView
(
result
);
}.
bind
(
this
)
}
}
}
},
this
.
app
,
this
.
css
);
this
.
form
.
load
();
}.
bind
(
this
),
true
);
},
loadView
:
function
(
filterData
)
{
this
.
elementContentNode
.
empty
();
if
(
this
.
view
)
delete
this
.
view
;
this
.
view
=
new
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
DetailStaticView
(
this
.
elementContentNode
,
this
.
app
,
this
);
this
.
view
.
filterData
=
filterData
;
this
.
view
.
listItemUrl
=
this
.
path
+
"
listItem_qywx_detailStatic.json
"
;
this
.
view
.
load
();
this
.
setContentSize
();
}
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
SelfHolidayStaticExplorer
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
Explorer
,
loadView
:
function
(
filterData
)
{
this
.
elementContentNode
.
empty
();
if
(
this
.
view
)
delete
this
.
view
;
this
.
view
=
new
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
SelfHolidayStaticView
(
this
.
elementContentNode
,
this
.
app
,
this
);
this
.
view
.
filterData
=
filterData
;
this
.
view
.
load
();
this
.
setContentSize
();
}
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
View
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
View
,
_createItem
:
function
(
data
)
{
return
new
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
Document
(
this
.
table
,
data
,
this
.
explorer
,
this
);
},
_getCurrentPageData
:
function
(
callback
,
count
)
{
if
(
!
count
)
count
=
20
;
var
id
=
(
this
.
items
.
length
)
?
this
.
items
[
this
.
items
.
length
-
1
].
data
.
id
:
"
(0)
"
;
var
filter
=
this
.
filterData
||
{};
var
action
=
o2
.
Actions
.
load
(
"
x_attendance_assemble_control
"
);
action
.
QywxAttendanceAction
.
listDingdingAttendance
(
id
,
count
,
filter
,
function
(
json
)
{
if
(
callback
)
callback
(
json
);
}.
bind
(
this
));
},
_removeDocument
:
function
(
documentData
,
all
)
{
},
_createDocument
:
function
()
{
},
_openDocument
:
function
(
documentData
)
{
}
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
SelfHolidayView
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
View
,
_createItem
:
function
(
data
)
{
return
new
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
SelfHolidayDocument
(
this
.
table
,
data
,
this
.
explorer
,
this
);
},
_getCurrentPageData
:
function
(
callback
,
count
)
{
var
filter
=
this
.
filterData
||
{};
this
.
actions
.
listDetailFilter
(
filter
,
function
(
json
)
{
if
(
callback
)
callback
(
json
);
}.
bind
(
this
))
},
_removeDocument
:
function
(
documentData
,
all
)
{
},
_createDocument
:
function
()
{
},
_openDocument
:
function
(
documentData
)
{
}
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
DetailStaticView
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
View
,
_createItem
:
function
(
data
)
{
return
new
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
DetailStaticDocument
(
this
.
table
,
data
,
this
.
explorer
,
this
);
},
_getCurrentPageData
:
function
(
callback
,
count
)
{
var
filter
=
this
.
filterData
||
{};
var
action
=
o2
.
Actions
.
load
(
"
x_attendance_assemble_control
"
);
action
.
QywxAttendanceStatisticAction
.
personMonth
(
filter
.
q_empName
,
filter
.
cycleYear
,
filter
.
cycleMonth
,
function
(
json
)
{
// var data = json.data;
// data.sort(function (a, b) {
// return parseInt(b.statisticYear + b.statisticMonth) - parseInt(a.statisticYear + a.statisticMonth)
// });
// json.data = data;
if
(
callback
)
callback
(
json
);
}.
bind
(
this
))
},
_removeDocument
:
function
(
documentData
,
all
)
{
},
_createDocument
:
function
()
{
},
_openDocument
:
function
(
documentData
)
{
}
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
SelfHolidayStaticView
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
View
,
_createItem
:
function
(
data
)
{
return
new
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
SelfHolidayStaticDocument
(
this
.
table
,
data
,
this
.
explorer
,
this
);
},
_getCurrentPageData
:
function
(
callback
,
count
)
{
var
filter
=
this
.
filterData
||
{};
this
.
actions
.
listDetailFilter
(
filter
,
function
(
json
)
{
if
(
callback
)
callback
(
json
);
}.
bind
(
this
))
},
_removeDocument
:
function
(
documentData
,
all
)
{
},
_createDocument
:
function
()
{
},
_openDocument
:
function
(
documentData
)
{
}
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
Document
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
Document
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
SelfHolidayDocument
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
Document
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
DetailStaticDocument
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
Document
});
MWF
.
xApplication
.
Attendance
.
PeopleQywxDetail
.
SelfHolidayStaticDocument
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
Document
});
o2web/source/x_component_Attendance/UnitQywxDetail.js
0 → 100644
浏览文件 @
329c6e9b
MWF
.
xDesktop
.
requireApp
(
"
Attendance
"
,
"
Explorer
"
,
null
,
false
);
MWF
.
xDesktop
.
requireApp
(
"
Selector
"
,
"
package
"
,
null
,
false
);
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
=
new
Class
({
Extends
:
MWF
.
widget
.
Common
,
Implements
:
[
Options
,
Events
],
options
:
{
"
style
"
:
"
default
"
},
initialize
:
function
(
node
,
app
,
actions
,
options
)
{
this
.
setOptions
(
options
);
this
.
app
=
app
;
this
.
path
=
"
../x_component_Attendance/$UnitDetail/
"
;
this
.
cssPath
=
"
../x_component_Attendance/$UnitDetail/
"
+
this
.
options
.
style
+
"
/css.wcss
"
;
this
.
_loadCss
();
this
.
actions
=
actions
;
this
.
node
=
$
(
node
);
},
load
:
function
()
{
this
.
loadTab
();
},
loadTab
:
function
()
{
this
.
tabNode
=
new
Element
(
"
div
"
,
{
"
styles
"
:
this
.
css
.
tabNode
}).
inject
(
this
.
node
);
this
.
detailArea
=
new
Element
(
"
div
"
,
{
"
styles
"
:
this
.
css
.
tabPageContainer
}).
inject
(
this
.
tabNode
);
//this.selfHolidayArea = new Element("div",{"styles" : this.css.tabPageContainer }).inject(this.tabNode)
this
.
detailStaticArea
=
new
Element
(
"
div
"
,
{
"
styles
"
:
this
.
css
.
tabPageContainer
}).
inject
(
this
.
tabNode
);
//this.selfHolidayStaticArea = new Element("div",{"styles" : this.css.tabPageContainer }).inject(this.tabNode)
MWF
.
require
(
"
MWF.widget.Tab
"
,
function
()
{
this
.
tabs
=
new
MWF
.
widget
.
Tab
(
this
.
tabNode
,
{
"
style
"
:
"
attendance
"
});
this
.
tabs
.
load
();
this
.
detailPage
=
this
.
tabs
.
addTab
(
this
.
detailArea
,
this
.
app
.
lp
.
unitSigninDetail
,
false
);
this
.
detailPage
.
contentNodeArea
.
set
(
"
class
"
,
"
detailPage
"
);
this
.
detailPage
.
addEvent
(
"
show
"
,
function
()
{
if
(
!
this
.
detailExplorer
)
{
this
.
detailExplorer
=
new
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
Explorer
(
this
.
detailArea
,
this
);
this
.
detailExplorer
.
load
();
}
}.
bind
(
this
));
this
.
detailStaticPage
=
this
.
tabs
.
addTab
(
this
.
detailStaticArea
,
this
.
app
.
lp
.
unitSigninStatic
,
false
);
this
.
detailStaticPage
.
contentNodeArea
.
set
(
"
class
"
,
"
detailStaticPage
"
);
this
.
detailStaticPage
.
addEvent
(
"
show
"
,
function
()
{
if
(
!
this
.
detailStaticExplorer
)
{
this
.
detailStaticExplorer
=
new
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
DetailStaticExplorer
(
this
.
detailStaticArea
,
this
);
this
.
detailStaticExplorer
.
load
();
}
}.
bind
(
this
));
this
.
tabs
.
pages
[
0
].
showTab
();
}.
bind
(
this
));
}
});
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
Explorer
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
,
Implements
:
[
Options
,
Events
],
initialize
:
function
(
node
,
parent
,
options
)
{
this
.
setOptions
(
options
);
this
.
parent
=
parent
;
this
.
app
=
parent
.
app
;
this
.
lp
=
this
.
app
.
lp
;
this
.
css
=
parent
.
css
;
this
.
path
=
parent
.
path
;
this
.
actions
=
parent
.
actions
;
this
.
node
=
$
(
node
);
this
.
initData
();
if
(
!
this
.
peopleActions
)
this
.
peopleActions
=
new
MWF
.
xAction
.
org
.
express
.
RestActions
();
},
initData
:
function
()
{
this
.
toolItemNodes
=
[];
},
reload
:
function
()
{
this
.
node
.
empty
();
this
.
load
();
},
load
:
function
()
{
this
.
loadFilter
();
this
.
loadContentNode
();
this
.
setNodeScroll
();
},
loadFilter
:
function
()
{
var
lp
=
MWF
.
xApplication
.
Attendance
.
LP
;
this
.
fileterNode
=
new
Element
(
"
div.fileterNode
"
,
{
"
styles
"
:
this
.
css
.
fileterNode
}).
inject
(
this
.
node
);
var
html
=
"
<table width='100%' bordr='0' cellpadding='5' cellspacing='0' styles='filterTable'>
"
+
"
<tr>
"
+
"
<td styles='filterTableValue' lable='unit'></td>
"
+
"
<td styles='filterTableTitle' item='unit'></td>
"
+
"
<td styles='filterTableTitle' lable='year'></td>
"
+
"
<td styles='filterTableValue' item='year'></td>
"
+
"
<td styles='filterTableTitle' lable='month'></td>
"
+
"
<td styles='filterTableValue' item='month'></td>
"
+
"
<td styles='filterTableTitle' lable='day'></td>
"
+
"
<td styles='filterTableValue' item='day'></td>
"
+
"
<td styles='filterTableTitle' lable='checkType'></td>
"
+
"
<td styles='filterTableValue' item='checkType'></td>
"
+
"
<td styles='filterTableTitle' lable='exceptionType'></td>
"
+
"
<td styles='filterTableValue' item='exceptionType'></td>
"
+
"
<td styles='filterTableValue' item='action'></td>
"
+
"
</tr>
"
+
"
</table>
"
;
this
.
fileterNode
.
set
(
"
html
"
,
html
);
MWF
.
xDesktop
.
requireApp
(
"
Template
"
,
"
MForm
"
,
function
()
{
this
.
form
=
new
MForm
(
this
.
fileterNode
,
{},
{
isEdited
:
true
,
itemTemplate
:
{
unit
:
{
text
:
lp
.
unit
,
type
:
"
org
"
,
orgType
:
"
unit
"
,
notEmpty
:
true
,
style
:
{
"
min-width
"
:
"
200px
"
}
},
year
:
{
text
:
lp
.
annuaal
,
"
type
"
:
"
select
"
,
"
selectValue
"
:
function
()
{
var
years
=
[];
var
year
=
new
Date
().
getFullYear
();
for
(
var
i
=
0
;
i
<
6
;
i
++
)
{
years
.
push
(
year
--
);
}
return
years
;
},
"
event
"
:
{
"
change
"
:
function
(
item
,
ev
)
{
var
values
=
this
.
getDateSelectValue
();
item
.
form
.
getItem
(
"
day
"
).
resetItemOptions
(
values
,
values
)
}.
bind
(
this
)
}
},
month
:
{
text
:
lp
.
months
,
"
type
"
:
"
select
"
,
"
defaultValue
"
:
function
()
{
var
month
=
(
new
Date
().
getMonth
()
+
1
).
toString
();
return
month
.
length
==
1
?
"
0
"
+
month
:
month
;
},
"
selectValue
"
:
[
""
,
"
01
"
,
"
02
"
,
"
03
"
,
"
04
"
,
"
05
"
,
"
06
"
,
"
07
"
,
"
08
"
,
"
09
"
,
"
10
"
,
"
11
"
,
"
12
"
],
"
event
"
:
{
"
change
"
:
function
(
item
,
ev
)
{
var
values
=
this
.
getDateSelectValue
();
item
.
form
.
getItem
(
"
day
"
).
resetItemOptions
(
values
,
values
)
}.
bind
(
this
)
}
},
day
:
{
text
:
lp
.
date
,
"
type
"
:
"
select
"
,
"
selectValue
"
:
this
.
getDateSelectValue
.
bind
(
this
)
},
checkType
:
{
text
:
lp
.
signinType
,
"
type
"
:
"
select
"
,
"
selectValue
"
:
lp
.
signinQywxTypeSelectText
,
"
selectText
"
:
lp
.
signinQywxTypeSelectText
},
exceptionType
:
{
text
:
lp
.
signinResult
,
"
type
"
:
"
select
"
,
"
selectValue
"
:
lp
.
signinQywxResultSelectText
,
"
selectText
"
:
lp
.
signinQywxResultSelectText
},
action
:
{
"
value
"
:
lp
.
query
,
type
:
"
button
"
,
className
:
"
filterButton
"
,
event
:
{
click
:
function
()
{
var
result
=
this
.
form
.
getResult
(
true
,
"
,
"
,
true
,
true
,
false
);
if
(
!
result
)
return
;
if
(
result
.
day
&&
result
.
day
!=
""
)
{
result
.
q_date
=
result
.
year
+
"
-
"
+
result
.
month
+
"
-
"
+
result
.
day
;
}
this
.
loadView
(
result
);
}.
bind
(
this
)
}
}
}
},
this
.
app
,
this
.
css
);
this
.
form
.
load
();
}.
bind
(
this
),
true
);
},
getDateSelectValue
:
function
()
{
if
(
this
.
form
)
{
var
year
=
parseInt
(
this
.
form
.
getItem
(
"
year
"
).
getValue
());
var
month
=
parseInt
(
this
.
form
.
getItem
(
"
month
"
).
getValue
())
-
1
;
}
else
{
var
year
=
(
new
Date
()).
getFullYear
();
var
month
=
(
new
Date
()).
getMonth
();
}
var
date
=
new
Date
(
year
,
month
,
1
);
var
days
=
[];
days
.
push
(
""
);
while
(
date
.
getMonth
()
===
month
)
{
var
d
=
date
.
getDate
().
toString
();
if
(
d
.
length
==
1
)
d
=
"
0
"
+
d
;
days
.
push
(
d
);
date
.
setDate
(
date
.
getDate
()
+
1
);
}
return
days
;
},
loadContentNode
:
function
()
{
this
.
elementContentNode
=
new
Element
(
"
div
"
,
{
"
styles
"
:
this
.
css
.
elementContentNode
}).
inject
(
this
.
node
);
this
.
app
.
addEvent
(
"
resize
"
,
function
()
{
this
.
setContentSize
();
}.
bind
(
this
));
},
loadView
:
function
(
filterData
)
{
this
.
elementContentNode
.
empty
();
if
(
this
.
view
)
delete
this
.
view
;
this
.
view
=
new
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
View
(
this
.
elementContentNode
,
this
.
app
,
this
);
this
.
view
.
filterData
=
filterData
;
this
.
view
.
listItemUrl
=
this
.
path
+
"
listItem_qywx.json
"
;
this
.
view
.
load
();
this
.
setContentSize
();
},
setContentSize
:
function
()
{
var
tabNodeSize
=
this
.
parent
.
tabs
?
this
.
parent
.
tabs
.
tabNodeContainer
.
getSize
()
:
{
"
x
"
:
0
,
"
y
"
:
0
};
var
fileterNodeSize
=
this
.
fileterNode
?
this
.
fileterNode
.
getSize
()
:
{
"
x
"
:
0
,
"
y
"
:
0
};
var
nodeSize
=
this
.
parent
.
node
.
getSize
();
var
pt
=
this
.
elementContentNode
.
getStyle
(
"
padding-top
"
).
toFloat
();
var
pb
=
this
.
elementContentNode
.
getStyle
(
"
padding-bottom
"
).
toFloat
();
//var filterSize = this.filterNode.getSize();
var
height
=
nodeSize
.
y
-
tabNodeSize
.
y
-
pt
-
pb
-
fileterNodeSize
.
y
-
20
;
this
.
elementContentNode
.
setStyle
(
"
height
"
,
""
+
height
+
"
px
"
);
this
.
pageCount
=
(
height
/
40
).
toInt
()
+
5
;
if
(
this
.
view
&&
this
.
view
.
items
.
length
<
this
.
pageCount
)
{
this
.
view
.
loadElementList
(
this
.
pageCount
-
this
.
view
.
items
.
length
);
}
}
});
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
DetailStaticExplorer
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
Explorer
,
loadFilter
:
function
()
{
var
lp
=
MWF
.
xApplication
.
Attendance
.
LP
;
this
.
fileterNode
=
new
Element
(
"
div.fileterNode
"
,
{
"
styles
"
:
this
.
css
.
fileterNode
}).
inject
(
this
.
node
);
var
html
=
"
<table width='100%' bordr='0' cellpadding='5' cellspacing='0' style='width: 660px;font-size: 14px;color:#666'>
"
+
"
<tr>
"
+
"
<td styles='filterTableValue' lable='q_unitName'></td>
"
+
"
<td styles='filterTableTitle' item='q_unitName'></td>
"
+
"
<td styles='filterTableTitle' lable='cycleYear'></td>
"
+
"
<td styles='filterTableValue' item='cycleYear'></td>
"
+
"
<td styles='filterTableTitle' lable='cycleMonth'></td>
"
+
"
<td styles='filterTableValue' item='cycleMonth'></td>
"
+
"
<td styles='filterTableValue' item='action'></td>
"
+
"
</tr>
"
+
"
</table>
"
;
this
.
fileterNode
.
set
(
"
html
"
,
html
);
MWF
.
xDesktop
.
requireApp
(
"
Template
"
,
"
MForm
"
,
function
()
{
this
.
form
=
new
MForm
(
this
.
fileterNode
,
{},
{
isEdited
:
true
,
itemTemplate
:
{
q_unitName
:
{
text
:
lp
.
unit
,
type
:
"
org
"
,
orgType
:
"
unit
"
,
notEmpty
:
true
,
style
:
{
"
min-width
"
:
"
200px
"
}
},
cycleYear
:
{
text
:
lp
.
annuaal
,
"
type
"
:
"
select
"
,
"
selectValue
"
:
function
()
{
var
years
=
[];
var
year
=
new
Date
().
getFullYear
();
for
(
var
i
=
0
;
i
<
6
;
i
++
)
{
years
.
push
(
year
--
);
}
return
years
;
}
},
cycleMonth
:
{
text
:
lp
.
months
,
notEmpty
:
true
,
"
type
"
:
"
select
"
,
"
defaultValue
"
:
function
()
{
var
month
=
(
new
Date
().
getMonth
()
+
1
).
toString
();
return
month
.
length
==
1
?
"
0
"
+
month
:
month
;
},
"
selectValue
"
:
[
""
,
"
01
"
,
"
02
"
,
"
03
"
,
"
04
"
,
"
05
"
,
"
06
"
,
"
07
"
,
"
08
"
,
"
09
"
,
"
10
"
,
"
11
"
,
"
12
"
]
},
action
:
{
"
value
"
:
lp
.
query
,
type
:
"
button
"
,
className
:
"
filterButton
"
,
event
:
{
click
:
function
()
{
var
result
=
this
.
form
.
getResult
(
true
,
"
,
"
,
true
,
true
,
false
);
if
(
!
result
)
return
;
this
.
loadView
(
result
);
}.
bind
(
this
)
}
}
}
},
this
.
app
,
this
.
css
);
this
.
form
.
load
();
}.
bind
(
this
),
true
);
},
loadView
:
function
(
filterData
)
{
this
.
elementContentNode
.
empty
();
if
(
this
.
view
)
delete
this
.
view
;
this
.
view
=
new
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
DetailStaticView
(
this
.
elementContentNode
,
this
.
app
,
this
);
this
.
view
.
filterData
=
filterData
;
this
.
view
.
listItemUrl
=
this
.
path
+
"
listItem_qywx_detailStatic.json
"
;
this
.
view
.
load
();
this
.
setContentSize
();
}
});
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
View
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
View
,
_createItem
:
function
(
data
)
{
return
new
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
Document
(
this
.
table
,
data
,
this
.
explorer
,
this
);
},
_getCurrentPageData
:
function
(
callback
,
count
)
{
if
(
!
count
)
count
=
20
;
var
id
=
(
this
.
items
.
length
)
?
this
.
items
[
this
.
items
.
length
-
1
].
data
.
id
:
"
(0)
"
;
var
filter
=
this
.
filterData
||
{};
var
action
=
o2
.
Actions
.
load
(
"
x_attendance_assemble_control
"
);
action
.
QywxAttendanceAction
.
listDingdingAttendance
(
id
,
count
,
filter
,
function
(
json
)
{
if
(
callback
)
callback
(
json
);
}.
bind
(
this
));
},
_removeDocument
:
function
(
documentData
,
all
)
{
},
_createDocument
:
function
()
{
},
_openDocument
:
function
(
documentData
)
{
}
});
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
DetailStaticView
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
View
,
_createItem
:
function
(
data
)
{
return
new
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
DetailStaticDocument
(
this
.
table
,
data
,
this
.
explorer
,
this
);
},
_getCurrentPageData
:
function
(
callback
,
count
)
{
var
filter
=
this
.
filterData
||
{};
var
action
=
o2
.
Actions
.
load
(
"
x_attendance_assemble_control
"
);
action
.
QywxAttendanceStatisticAction
.
personMonthWithUnit
(
filter
.
q_unitName
,
filter
.
cycleYear
,
filter
.
cycleMonth
,
function
(
json
)
{
if
(
callback
)
callback
(
json
);
}.
bind
(
this
));
},
_removeDocument
:
function
(
documentData
,
all
)
{
},
_createDocument
:
function
()
{
},
_openDocument
:
function
(
documentData
)
{
}
});
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
Document
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
Document
});
MWF
.
xApplication
.
Attendance
.
UnitQywxDetail
.
DetailStaticDocument
=
new
Class
({
Extends
:
MWF
.
xApplication
.
Attendance
.
Explorer
.
Document
});
o2web/source/x_component_Attendance/UnitQywxIndex.js
0 → 100644
浏览文件 @
329c6e9b
MWF
.
xApplication
.
Attendance
=
MWF
.
xApplication
.
Attendance
||
{};
MWF
.
require
(
"
MWF.xAction.org.express.RestActions
"
,
null
,
false
);
MWF
.
xDesktop
.
requireApp
(
"
Attendance
"
,
"
lp.
"
+
MWF
.
language
,
null
,
false
);
MWF
.
xDesktop
.
requireApp
(
"
Attendance
"
,
"
Common
"
,
null
,
false
);
MWF
.
xApplication
.
Attendance
.
UnitQywxIndex
=
new
Class
({
Extends
:
MWF
.
widget
.
Common
,
Implements
:
[
Options
,
Events
],
options
:
{
"
style
"
:
"
default
"
},
statusColor
:
{
"
resultNormal
"
:
"
#9acd32
"
,
//绿色,正常
"
leaveEarlyTimes
"
:
"
#4f94cd
"
,
//蓝色,早退
"
lateTimes
"
:
"
#fede03
"
,
//黄色,迟到
"
notSignedCount
"
:
"
#ee807f
"
,
//粉红色,未签到
"
outsideDutyTimes
"
:
"
#dec674
"
,
//外出签到次数
"
absenteeismTimes
"
:
"
#fedcbd
"
//矿工
},
initialize
:
function
(
node
,
app
,
actions
,
options
){
this
.
setOptions
(
options
);
this
.
app
=
app
;
this
.
lp
=
app
.
lp
;
this
.
path
=
"
../x_component_Attendance/$UnitIndex/
"
;
this
.
cssPath
=
"
../x_component_Attendance/$UnitIndex/
"
+
this
.
options
.
style
+
"
/css.wcss
"
;
this
.
_loadCss
();
this
.
actions
=
actions
;
this
.
node
=
$
(
node
);
this
.
setDate
();
this
.
today
=
new
Date
();
this
.
userName
=
layout
.
desktop
.
session
.
user
.
distinguishedName
;
this
.
data
=
{};
},
setDate
:
function
(
date
){
this
.
date
=
date
||
new
Date
();
this
.
year
=
this
.
date
.
getFullYear
().
toString
();
var
month
=
this
.
date
.
getMonth
()
+
1
;
this
.
month
=
month
.
toString
().
length
==
2
?
month
:
"
0
"
+
month
;
},
reload
:
function
(){
this
.
node
.
empty
();
this
.
load
();
},
load
:
function
(){
this
.
loadTitleNode
();
this
.
loadContent
();
},
loadTitleNode
:
function
(){
var
text
=
this
.
date
.
format
(
this
.
app
.
lp
.
dateFormatMonth
);
this
.
titleNode
=
new
Element
(
"
div.titleNode
"
,{
"
styles
"
:
this
.
css
.
titleNode
}).
inject
(
this
.
node
);
this
.
titleLeftArrowNode
=
new
Element
(
"
div
"
,{
"
styles
"
:
this
.
css
.
titleLeftArrowNode
}).
inject
(
this
.
titleNode
);
this
.
titleTextNode
=
new
Element
(
"
div
"
,{
"
styles
"
:
this
.
css
.
titleTextNode
,
"
text
"
:
text
}).
inject
(
this
.
titleNode
);
this
.
titleRightArrowNode
=
new
Element
(
"
div
"
,{
"
styles
"
:
this
.
css
.
titleRightArrowNode
}).
inject
(
this
.
titleNode
);
this
.
titleLeftArrowNode
.
addEvents
({
"
mouseover
"
:
function
(){
this
.
titleLeftArrowNode
.
setStyles
(
this
.
css
.
titleLeftArrowNode_over
);}.
bind
(
this
),
"
mouseout
"
:
function
(){
this
.
titleLeftArrowNode
.
setStyles
(
this
.
css
.
titleLeftArrowNode
);}.
bind
(
this
),
"
mousedown
"
:
function
(){
this
.
titleLeftArrowNode
.
setStyles
(
this
.
css
.
titleLeftArrowNode_down
);}.
bind
(
this
),
"
mouseup
"
:
function
(){
this
.
titleLeftArrowNode
.
setStyles
(
this
.
css
.
titleLeftArrowNode_over
);}.
bind
(
this
),
"
click
"
:
function
(){
this
.
changeMonthPrev
();}.
bind
(
this
)
});
this
.
titleRightArrowNode
.
addEvents
({
"
mouseover
"
:
function
(){
this
.
titleRightArrowNode
.
setStyles
(
this
.
css
.
titleRightArrowNode_over
);}.
bind
(
this
),
"
mouseout
"
:
function
(){
this
.
titleRightArrowNode
.
setStyles
(
this
.
css
.
titleRightArrowNode
);}.
bind
(
this
),
"
mousedown
"
:
function
(){
this
.
titleRightArrowNode
.
setStyles
(
this
.
css
.
titleRightArrowNode_down
);}.
bind
(
this
),
"
mouseup
"
:
function
(){
this
.
titleRightArrowNode
.
setStyles
(
this
.
css
.
titleRightArrowNode_over
);}.
bind
(
this
),
"
click
"
:
function
(){
this
.
changeMonthNext
();}.
bind
(
this
)
});
this
.
titleTextNode
.
addEvents
({
"
mouseover
"
:
function
(){
this
.
titleTextNode
.
setStyles
(
this
.
css
.
titleTextNode_over
);}.
bind
(
this
),
"
mouseout
"
:
function
(){
this
.
titleTextNode
.
setStyles
(
this
.
css
.
titleTextNode
);}.
bind
(
this
),
"
mousedown
"
:
function
(){
this
.
titleTextNode
.
setStyles
(
this
.
css
.
titleTextNode_down
);}.
bind
(
this
),
"
mouseup
"
:
function
(){
this
.
titleTextNode
.
setStyles
(
this
.
css
.
titleTextNode_over
);}.
bind
(
this
),
"
click
"
:
function
(){
this
.
changeMonthSelect
();}.
bind
(
this
)
});
this
.
loadUnitNode
();
},
changeMonthPrev
:
function
(){
this
.
date
.
decrement
(
"
month
"
,
1
);
this
.
setDate
(
this
.
date
);
var
text
=
this
.
date
.
format
(
this
.
app
.
lp
.
dateFormatMonth
);
this
.
titleTextNode
.
set
(
"
text
"
,
text
);
this
.
reloadContent
();
},
changeMonthNext
:
function
(){
this
.
date
.
increment
(
"
month
"
,
1
);
this
.
setDate
(
this
.
date
);
var
text
=
this
.
date
.
format
(
this
.
app
.
lp
.
dateFormatMonth
);
this
.
titleTextNode
.
set
(
"
text
"
,
text
);
this
.
reloadContent
();
},
changeMonthSelect
:
function
(){
if
(
!
this
.
monthSelector
)
this
.
createMonthSelector
();
this
.
monthSelector
.
show
();
},
createMonthSelector
:
function
(){
this
.
monthSelector
=
new
MWF
.
xApplication
.
Attendance
.
MonthSelector
(
this
.
date
,
this
);
},
changeMonthTo
:
function
(
d
){
this
.
setDate
(
d
)
var
text
=
this
.
date
.
format
(
this
.
app
.
lp
.
dateFormatMonth
);
this
.
titleTextNode
.
set
(
"
text
"
,
text
);
this
.
reloadContent
();
},
changeUnitTo
:
function
(
d
){
this
.
unit
=
d
;
this
.
titleUnitActionTextNode
.
set
(
"
text
"
,
d
.
split
(
"
@
"
)[
0
]);
this
.
reloadContent
();
},
loadUnitNode
:
function
(){
this
.
listUnitWithPerson
(
function
(
unit
){
this
.
unit
=
unit
;
this
.
units
=
[];
var
flag
=
true
;
if
(
this
.
app
.
isTopUnitManager
()
){
var
data
=
{
"
unitList
"
:
this
.
app
.
getNameFlag
(
this
.
app
.
manageTopUnits
)};
this
.
app
.
orgActions
.
listUnitSubDirect
(
function
(
json
){
json
.
data
.
each
(
function
(
d
){
this
.
units
.
push
(
d
.
distinguishedName
)
}.
bind
(
this
))
}.
bind
(
this
),
null
,
data
,
false
)
}
else
if
(
this
.
app
.
isUnitManager
()
){
this
.
units
=
this
.
app
.
manageUnits
;
}
this
.
unit
=
this
.
units
[
0
]
||
this
.
unit
;
if
(
this
.
units
.
length
>
1
){
//(this.units.length==1 && this.units[0]!=this.unit )
this
.
titleUnitAreaNode
=
new
Element
(
"
div.titleUnitAreaNode
"
,{
"
styles
"
:
this
.
css
.
titleUnitAreaNode
}).
inject
(
this
.
titleNode
)
this
.
titleUnitActionNode
=
new
Element
(
"
div
"
,{
"
styles
"
:
this
.
css
.
titleUnitActionNode
}).
inject
(
this
.
titleUnitAreaNode
)
this
.
titleUnitActionTextNode
=
new
Element
(
"
div
"
,{
"
styles
"
:
this
.
css
.
titleUnitActionTextNode
,
"
text
"
:
this
.
unit
.
split
(
"
@
"
)[
0
]
}).
inject
(
this
.
titleUnitActionNode
);
this
.
titleUnitActionIconNode
=
new
Element
(
"
div
"
,{
"
styles
"
:
this
.
css
.
titleUnitActionIconNode
}).
inject
(
this
.
titleUnitActionNode
);
this
.
titleUnitActionNode
.
addEvents
({
"
mouseover
"
:
function
(){
this
.
titleUnitActionTextNode
.
setStyles
(
this
.
css
.
titleUnitActionTextNode_over
);
this
.
titleUnitActionIconNode
.
setStyles
(
this
.
css
.
titleUnitActionIconNode_over
);
}.
bind
(
this
),
"
mouseout
"
:
function
(){
this
.
titleUnitActionTextNode
.
setStyles
(
this
.
css
.
titleUnitActionTextNode
);
this
.
titleUnitActionIconNode
.
setStyles
(
this
.
css
.
titleUnitActionIconNode
);
}.
bind
(
this
),
"
click
"
:
function
(
ev
){
this
.
switchUnit
(
ev
.
target
);
ev
.
stopPropagation
();
}.
bind
(
this
)
})
}
else
{
this
.
titleUnitNode
=
new
Element
(
"
div
"
,{
"
styles
"
:
this
.
css
.
titleUnitNode
,
"
text
"
:
this
.
unit
.
split
(
"
@
"
)[
0
]
}).
inject
(
this
.
titleNode
);
}
}.
bind
(
this
)
)
},
listUnitWithPerson
:
function
(
callback
){
var
data
=
{
"
personList
"
:
this
.
app
.
getNameFlag
(
this
.
userName
)};
this
.
app
.
orgActions
.
listUnitWithPerson
(
function
(
json
){
if
(
json
.
data
.
length
>
0
){
if
(
callback
)
callback
(
json
.
data
[
0
].
distinguishedName
);
}
else
{
if
(
callback
)
callback
();
}
}.
bind
(
this
),
null
,
data
,
false
)
},
switchUnit
:
function
(
el
){
var
_self
=
this
;
var
node
=
this
.
titleUnitListNode
;
var
parentNode
=
el
.
getParent
();
if
(
node
){
if
(
node
.
getStyle
(
"
display
"
)
==
"
block
"
){
node
.
setStyle
(
"
display
"
,
"
none
"
);
}
else
{
node
.
setStyle
(
"
display
"
,
"
block
"
);
node
.
position
({
relativeTo
:
this
.
titleUnitActionNode
,
position
:
'
bottomCenter
'
,
edge
:
'
upperCenter
'
});
}
}
else
{
node
=
this
.
titleUnitListNode
=
new
Element
(
"
div
"
,{
"
styles
"
:
this
.
css
.
titleUnitListNode
}).
inject
(
this
.
node
);
this
.
app
.
content
.
addEvent
(
"
click
"
,
function
(){
_self
.
titleUnitListNode
.
setStyle
(
"
display
"
,
"
none
"
);
});
this
.
units
.
each
(
function
(
d
){
var
dNode
=
new
Element
(
"
div
"
,{
"
text
"
:
d
.
split
(
'
@
'
)[
0
],
"
styles
"
:
this
.
css
.
titleUnitSelectNode
}).
inject
(
node
);
dNode
.
store
(
"
unit
"
,
d
);
dNode
.
addEvents
({
"
mouseover
"
:
function
(){
this
.
setStyles
(
_self
.
css
.
titleUnitSelectNode_over
);
},
"
mouseout
"
:
function
(){
this
.
setStyles
(
_self
.
css
.
titleUnitSelectNode
);
},
"
click
"
:
function
(
e
){
_self
.
titleUnitListNode
.
setStyle
(
"
display
"
,
"
none
"
);
this
.
setStyles
(
_self
.
css
.
titleUnitSelectNode
);
_self
.
changeUnitTo
(
this
.
retrieve
(
"
unit
"
)
);
e
.
stopPropagation
();
}
})
}.
bind
(
this
));
node
.
position
({
relativeTo
:
this
.
titleUnitActionNode
,
position
:
'
bottomCenter
'
,
edge
:
'
upperCenter
'
});
}
},
reloadContent
:
function
(){
this
.
pieChartArea
.
empty
();
this
.
barChartArea
.
empty
();
this
.
lineChartArea
.
empty
();
this
.
loadData
(
function
(){
this
.
loadStatusColorNode
();
this
.
loadPieChart
();
this
.
loadBarChart
();
}.
bind
(
this
));
this
.
loadDetail
();
},
loadContent
:
function
(){
this
.
loadContentNode
();
this
.
loadData
(
function
(){
this
.
loadStatusColorNode
();
this
.
loadPieChart
();
this
.
loadBarChart
();
}.
bind
(
this
))
this
.
loadDetail
();
this
.
setNodeScroll
();
this
.
setContentSize
();
},
reloadChart
:
function
(){
this
.
pieChartArea
.
empty
();
this
.
barChartArea
.
empty
();
this
.
lineChartArea
.
empty
();
this
.
loadPieChart
();
this
.
loadBarChart
();
},
loadContentNode
:
function
(){
this
.
elementContentNode
=
new
Element
(
"
div.elementContentNode
"
,
{
"
styles
"
:
this
.
css
.
elementContentNode
}).
inject
(
this
.
node
);
this
.
app
.
addEvent
(
"
resize
"
,
function
(){
this
.
setContentSize
();
this
.
reloadChart
();
}.
bind
(
this
));
this
.
elementContentListNode
=
new
Element
(
"
div.elementContentListNode
"
,
{
"
styles
"
:
this
.
css
.
elementContentListNode
}).
inject
(
this
.
elementContentNode
);
this
.
topContentArea
=
new
Element
(
"
div.topContentArea
"
,{
"
styles
"
:
this
.
css
.
topContentArea
}).
inject
(
this
.
elementContentListNode
)
this
.
pieChartArea
=
new
Element
(
"
div.pieChartArea
"
,{
"
styles
"
:
this
.
css
.
pieChartArea
}).
inject
(
this
.
topContentArea
)
this
.
statusColorArea
=
new
Element
(
"
div.statusColorArea
"
,{
"
styles
"
:
this
.
css
.
statusColorArea
}).
inject
(
this
.
topContentArea
)
this
.
barChartArea
=
new
Element
(
"
div.barChartArea
"
,{
"
styles
"
:
this
.
css
.
barChartArea
}).
inject
(
this
.
topContentArea
)
this
.
middleContentArea
=
new
Element
(
"
div.middleContentArea
"
,{
"
styles
"
:
this
.
css
.
middleContentArea
}).
inject
(
this
.
elementContentListNode
)
this
.
lineChartArea
=
new
Element
(
"
div.lineChartArea
"
,{
"
styles
"
:
this
.
css
.
lineChartArea
}).
inject
(
this
.
middleContentArea
)
this
.
bottomContentArea
=
new
Element
(
"
div.middleContentArea
"
,{
"
styles
"
:
this
.
css
.
bottomContentArea
}).
inject
(
this
.
elementContentListNode
)
this
.
detailArea
=
new
Element
(
"
div.lineChartArea
"
,{
"
styles
"
:
this
.
css
.
detailArea
}).
inject
(
this
.
bottomContentArea
)
},
loadData
:
function
(
callback
,
unit
,
year
,
month
,
async
){
if
(
!
unit
)
unit
=
this
.
unit
;
if
(
!
year
)
year
=
this
.
year
;
if
(
!
month
)
month
=
this
.
month
;
if
(
this
.
data
[
unit
+
year
+
month
]
)
{
if
(
callback
)
callback
();
}
else
{
var
action
=
o2
.
Actions
.
load
(
"
x_attendance_assemble_control
"
);
action
.
QywxAttendanceStatisticAction
.
unitMonth
(
unit
,
year
,
month
,
function
(
json
){
var
d
=
json
.
data
||
{};
var
data
=
this
.
data
[
unit
+
year
+
month
]
=
{};
var
totals
=
data
.
totalData
=
{
resultNormal
:
d
.
resultNormal
||
0
,
lateTimes
:
d
.
lateTimes
||
0
,
leaveEarlyTimes
:
d
.
leaveEarlyTimes
||
0
,
absenteeismTimes
:
d
.
absenteeismTimes
||
0
,
outsideDutyTimes
:
d
.
outsideDutyTimes
||
0
,
notSignedCount
:
d
.
notSignedCount
||
0
}
var
total
=
0
;
for
(
var
n
in
totals
){
total
+=
totals
[
n
];
}
data
.
rateData
=
{
resultNormal
:
(
!
totals
.
resultNormal
||
!
total
)
?
0
:
((
totals
.
resultNormal
/
total
*
100
).
toFixed
(
2
)
+
"
%
"
),
lateTimes
:
(
!
totals
.
lateTimes
||
!
total
)
?
0
:
((
totals
.
lateTimes
/
total
*
100
).
toFixed
(
2
)
+
"
%
"
),
leaveEarlyTimes
:
(
!
totals
.
leaveEarlyTimes
||
!
total
)
?
0
:
((
totals
.
leaveEarlyTimes
/
total
*
100
).
toFixed
(
2
)
+
"
%
"
),
absenteeismTimes
:
(
!
totals
.
absenteeismTimes
||
!
total
)
?
0
:
((
totals
.
absenteeismTimes
/
total
*
100
).
toFixed
(
2
)
+
"
%
"
),
outsideDutyTimes
:
(
!
totals
.
outsideDutyTimes
||
!
total
)
?
0
:
((
totals
.
outsideDutyTimes
/
total
*
100
).
toFixed
(
2
)
+
"
%
"
),
notSignedCount
:
(
!
totals
.
notSignedCount
||
!
total
)
?
0
:
((
totals
.
notSignedCount
/
total
*
100
).
toFixed
(
2
)
+
"
%
"
)
}
if
(
callback
)
callback
();
}.
bind
(
this
),
null
,
async
);
}
},
loadStatusColorNode
:
function
(){
this
.
statusColorArea
.
empty
();
this
.
statusColorTable
=
new
Element
(
"
table
"
,{
"
styles
"
:
this
.
css
.
statusColorTable
}).
inject
(
this
.
statusColorArea
)
var
totalData
=
this
.
data
[
this
.
unit
+
this
.
year
+
this
.
month
].
totalData
;
var
rateData
=
this
.
data
[
this
.
unit
+
this
.
year
+
this
.
month
].
rateData
;
for
(
var
status
in
this
.
statusColor
){
var
tr
=
new
Element
(
"
tr
"
,{
"
styles
"
:
this
.
css
.
statusColorTr
}).
inject
(
this
.
statusColorTable
)
var
td
=
new
Element
(
"
td
"
,{
"
styles
"
:
this
.
css
.
statusColorTd
}).
inject
(
tr
)
td
.
setStyle
(
"
background-color
"
,
this
.
statusColor
[
status
]);
var
tr
=
new
Element
(
"
tr
"
,{
"
styles
"
:
this
.
css
.
statusTextTr
}).
inject
(
this
.
statusColorTable
)
var
td
=
new
Element
(
"
td
"
,{
"
styles
"
:
this
.
css
.
statusTextTd
,
"
text
"
:
this
.
lp
[
status
]
+
totalData
[
status
]
+
this
.
lp
.
day
+
"
(
"
+
rateData
[
status
]
+
"
)
"
}).
inject
(
tr
)
}
},
loadPieChart
:
function
(){
this
.
pieChartNode
=
new
Element
(
"
div.pieChartNode
"
,{
"
styles
"
:
this
.
css
.
pieChartNode
}).
inject
(
this
.
pieChartArea
)
var
data
=
this
.
data
[
this
.
unit
+
this
.
year
+
this
.
month
].
totalData
;
this
.
pieChart
=
new
MWF
.
xApplication
.
Attendance
.
Echarts
(
this
.
pieChartNode
,
this
,
data
);
this
.
pieChart
.
loadUnitPieChart
();
},
loadBarChart
:
function
(){
this
.
barChartNode
=
new
Element
(
"
div.barChartNode
"
,{
"
styles
"
:
this
.
css
.
barChartNode
}).
inject
(
this
.
barChartArea
);
var
date
=
new
Date
(
this
.
date
.
getFullYear
()
,
this
.
date
.
getMonth
(),
this
.
date
.
getDate
()
);
date
.
decrement
(
"
month
"
,
1
);
var
year_1
=
date
.
getFullYear
().
toString
();
var
month_1
=
date
.
format
(
this
.
lp
.
dateFormatOnlyMonth
);
var
data_1
=
this
.
data
[
this
.
unit
+
year_1
+
month_1
];
date
.
decrement
(
"
month
"
,
1
);
var
year_2
=
date
.
getFullYear
().
toString
();
var
month_2
=
date
.
format
(
this
.
lp
.
dateFormatOnlyMonth
);
var
data_2
=
this
.
data
[
this
.
unit
+
year_2
+
month_2
];
if
(
!
data_1
){
this
.
loadData
(
null
,
this
.
unit
,
year_1
,
month_1
,
false
)
}
if
(
!
data_2
){
this
.
loadData
(
null
,
this
.
unit
,
year_2
,
month_2
,
false
)
}
var
d
=
[{
year
:
year_2
,
month
:
month_2
,
data
:
this
.
data
[
this
.
unit
+
year_2
+
month_2
].
totalData
},{
year
:
year_1
,
month
:
month_1
,
data
:
this
.
data
[
this
.
unit
+
year_1
+
month_1
].
totalData
},{
year
:
this
.
year
,
month
:
this
.
month
,
data
:
this
.
data
[
this
.
unit
+
this
.
year
+
this
.
month
].
totalData
}];
this
.
barChart
=
new
MWF
.
xApplication
.
Attendance
.
Echarts
(
this
.
barChartNode
,
this
,
d
);
this
.
barChart
.
loadUnitBarChart
();
},
loadDetail
:
function
(){
this
.
detailArea
.
empty
();
this
.
detailNode
=
new
Element
(
"
div
"
,{
"
styles
"
:
this
.
css
.
detailNode
}).
inject
(
this
.
detailArea
);
this
.
detailTitleNode
=
new
Element
(
"
div
"
,{
"
styles
"
:
this
.
css
.
detailTitleNode
,
"
text
"
:
this
.
lp
.
attendanceStatisic
}).
inject
(
this
.
detailNode
)
var
table
=
new
Element
(
"
table
"
,
{
"
width
"
:
"
100%
"
,
"
border
"
:
"
0
"
,
"
cellpadding
"
:
"
5
"
,
"
cellspacing
"
:
"
0
"
,
"
styles
"
:
this
.
css
.
table
,
"
class
"
:
"
editTable
"
}).
inject
(
this
.
detailNode
);
var
tr
=
new
Element
(
"
tr
"
,
{
"
styles
"
:
this
.
css
.
listHeadNode
}).
inject
(
table
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableTitle
,
"
text
"
:
this
.
lp
.
name
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableTitle
,
"
text
"
:
this
.
lp
.
onDutyTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableTitle
,
"
text
"
:
this
.
lp
.
offDutyTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableTitle
,
"
text
"
:
this
.
lp
.
resultNormal
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableTitle
,
"
text
"
:
this
.
lp
.
lateTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableTitle
,
"
text
"
:
this
.
lp
.
outsideDutyTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableTitle
,
"
text
"
:
this
.
lp
.
leaveEarlyTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableTitle
,
"
text
"
:
this
.
lp
.
absenteeismTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableTitle
,
"
text
"
:
this
.
lp
.
notSignedCount
}).
inject
(
tr
);
var
action
=
o2
.
Actions
.
load
(
"
x_attendance_assemble_control
"
);
action
.
QywxAttendanceStatisticAction
.
personMonthWithUnit
(
this
.
unit
,
this
.
year
,
this
.
month
,
function
(
json
){
var
data
=
json
.
data
||
[];
data
.
sort
(
function
(
a
,
b
){
return
b
.
workDayCount
-
a
.
workDayCount
;
});
data
.
each
(
function
(
d
){
var
tr
=
new
Element
(
"
tr
"
).
inject
(
table
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableValue
,
"
text
"
:
d
.
o2User
.
split
(
"
@
"
)[
0
]
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableValue
,
"
text
"
:
d
.
onDutyTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableValue
,
"
text
"
:
d
.
offDutyTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableValue
,
"
text
"
:
d
.
resultNormal
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableValue
,
"
text
"
:
d
.
lateTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableValue
,
"
text
"
:
d
.
outsideDutyTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableValue
,
"
text
"
:
d
.
leaveEarlyTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableValue
,
"
text
"
:
d
.
absenteeismTimes
}).
inject
(
tr
);
var
td
=
new
Element
(
"
td
"
,
{
"
styles
"
:
this
.
css
.
tableValue
,
"
text
"
:
d
.
notSignedCount
}).
inject
(
tr
);
}.
bind
(
this
))
}.
bind
(
this
));
},
setContentSize
:
function
(){
var
toolbarSize
=
this
.
toolbarNode
?
this
.
toolbarNode
.
getSize
()
:
{
"
x
"
:
0
,
"
y
"
:
0
};
var
titlebarSize
=
this
.
titleNode
?
this
.
titleNode
.
getSize
()
:
{
"
x
"
:
0
,
"
y
"
:
0
};
var
nodeSize
=
this
.
node
.
getSize
();
var
pt
=
this
.
elementContentNode
.
getStyle
(
"
padding-top
"
).
toFloat
();
var
pb
=
this
.
elementContentNode
.
getStyle
(
"
padding-bottom
"
).
toFloat
();
//var filterSize = this.filterNode.getSize();
var
filterConditionSize
=
this
.
filterConditionNode
?
this
.
filterConditionNode
.
getSize
()
:
{
"
x
"
:
0
,
"
y
"
:
0
};
var
height
=
nodeSize
.
y
-
toolbarSize
.
y
-
pt
-
pb
-
filterConditionSize
.
y
-
titlebarSize
.
y
-
10
;
this
.
elementContentNode
.
setStyle
(
"
height
"
,
""
+
height
+
"
px
"
);
},
setNodeScroll
:
function
(){
var
_self
=
this
;
MWF
.
require
(
"
MWF.widget.ScrollBar
"
,
function
(){
new
MWF
.
widget
.
ScrollBar
(
this
.
elementContentNode
,
{
"
indent
"
:
false
,
"
style
"
:
"
xApp_TaskList
"
,
"
where
"
:
"
before
"
,
"
distance
"
:
30
,
"
friction
"
:
4
,
"
axis
"
:
{
"
x
"
:
false
,
"
y
"
:
true
},
"
onScroll
"
:
function
(
y
){
}
});
}.
bind
(
this
));
}
});
o2web/source/x_component_Attendance/lp/en.js
浏览文件 @
329c6e9b
...
...
@@ -56,6 +56,7 @@ MWF.xApplication.Attendance.LP = {
"
abNormalDutyCount
"
:
"
Abnormal check-in times
"
,
"
resultNormal
"
:
"
Number of normal punches
"
,
"
seriousLateTimes
"
:
"
Seriously Late Times
"
,
"
outsideDutyTimes
"
:
"
Outside Checkin Times
"
,
"
absenteeismTimes
"
:
"
Number of Absenteeism
"
,
"
notSignedCount
"
:
"
Not Signed Count
"
,
...
...
@@ -218,8 +219,10 @@ MWF.xApplication.Attendance.LP = {
"
noDepartment
"
:
"
Your department was not found, please contact the administrator!
"
,
"
signinType
"
:
"
Signin Type
"
,
"
signinTypeSelectText
"
:
[
""
,
"
Check in at work
"
,
"
Check in after get off work
"
],
"
signinQywxTypeSelectText
"
:
[
""
,
"
上班打卡
"
,
"
下班打卡
"
,
"
外出打卡
"
],
"
signinResult
"
:
"
signin result
"
,
"
signinResultSelectText
"
:
[
""
,
"
normal
"
,
"
leave early
"
,
"
late
"
,
"
severely late
"
,
"
absentee late
"
,
"
not clocked in
"
],
"
signinResultSelectText
"
:
[
""
,
"
normal
"
,
"
leave early
"
,
"
late
"
,
"
severely late
"
,
"
absentee late
"
,
"
not clocked in
"
,
"
Outside checkin
"
],
"
signinQywxResultSelectText
"
:
[
""
,
"
正常
"
,
"
时间异常
"
,
"
地点异常
"
,
"
未打卡
"
,
"
wifi异常
"
,
"
非常用设备
"
],
"
systemSetting
"
:
"
System Settings
"
,
"
reportTo
"
:
"
Report object
"
,
...
...
@@ -392,8 +395,11 @@ MWF.xApplication.Attendance.LP = {
"
unitDetail
"
:
"
Department Statistics
"
,
"
topUnitDetail
"
:
"
Company Statistics
"
,
"
unitDingdingIndex
"
:
"
Dingding Department Report
"
,
"
unitQywxIndex
"
:
"
Qywx Department Report
"
,
"
dingdingPeopleDetail
"
:
"
Dingding Personal Statistics
"
,
"
dingdingUnitDetail
"
:
"
Dingding Unit Statistics
"
,
"
qywxPeopleDetail
"
:
"
Qywx Personal Statistics
"
,
"
qywxUnitDetail
"
:
"
Qywx Unit Statistics
"
,
"
maintain
"
:
"
Maintenance
"
,
"
importing
"
:
"
Data Import
"
,
...
...
o2web/source/x_component_Attendance/lp/zh-cn.js
浏览文件 @
329c6e9b
...
...
@@ -56,6 +56,7 @@ MWF.xApplication.Attendance.LP = {
"
abNormalDutyCount
"
:
"
异常打卡人次
"
,
"
resultNormal
"
:
"
正常打卡次数
"
,
"
seriousLateTimes
"
:
"
严重迟到次数
"
,
"
outsideDutyTimes
"
:
"
外出签到次数
"
,
"
absenteeismTimes
"
:
"
矿工次数
"
,
"
notSignedCount
"
:
"
未打卡次数
"
,
...
...
@@ -226,8 +227,10 @@ MWF.xApplication.Attendance.LP = {
"
noDepartment
"
:
"
未找到您所在的部门,请联系管理员!
"
,
"
signinType
"
:
"
打卡类型
"
,
"
signinTypeSelectText
"
:
[
""
,
"
上班打卡
"
,
"
下班打卡
"
],
"
signinQywxTypeSelectText
"
:
[
""
,
"
上班打卡
"
,
"
下班打卡
"
,
"
外出打卡
"
],
"
signinResult
"
:
"
打卡结果
"
,
"
signinResultSelectText
"
:
[
""
,
"
正常
"
,
"
早退
"
,
"
迟到
"
,
"
严重迟到
"
,
"
旷工迟到
"
,
"
未打卡
"
],
"
signinQywxResultSelectText
"
:
[
""
,
"
正常
"
,
"
时间异常
"
,
"
地点异常
"
,
"
未打卡
"
,
"
wifi异常
"
,
"
非常用设备
"
],
"
systemSetting
"
:
"
系统设置
"
,
"
reportTo
"
:
"
汇报对象
"
,
...
...
@@ -401,8 +404,11 @@ MWF.xApplication.Attendance.LP = {
"
unitDetail
"
:
"
部门考勤统计
"
,
"
topUnitDetail
"
:
"
公司考勤统计
"
,
"
unitDingdingIndex
"
:
"
钉钉部门考勤月报
"
,
"
unitQywxIndex
"
:
"
企业微信部门考勤月报
"
,
"
dingdingPeopleDetail
"
:
"
钉钉个人考勤统计
"
,
"
dingdingUnitDetail
"
:
"
钉钉部门考勤统计
"
,
"
qywxPeopleDetail
"
:
"
企业微信个人考勤统计
"
,
"
qywxUnitDetail
"
:
"
企业微信部门考勤统计
"
,
"
maintain
"
:
"
维护
"
,
"
importing
"
:
"
数据导入
"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录