Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
高东东-金蝶建发
/
jf-yzj-resume
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
a189bf53
authored
Sep 23, 2025
by
钟乾明
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
u: 优化开发环境配置
parent
d460e8cf
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
3126 additions
and
0 deletions
package-lock.json
src/js/index__未合并考核.js
package-lock.json
0 → 100644
View file @
a189bf53
This diff could not be displayed because it is too large.
src/js/index__未合并考核.js
0 → 100644
View file @
a189bf53
import
css
from
'../assets/css/style.css'
;
import
css
from
'../assets/css/style.css'
;
import
'./polyfill/index.js'
;
import
configuration
from
'configuration'
;
import
app
from
'./lib/app'
;
import
MAS
from
'./lib/mas'
;
import
IScroll
from
'iscroll/build/iscroll-probe'
;
import
createWatermark
from
'./lib/wmSVG'
;
import
{
setWaterMark
}
from
'./lib/wmCanvas'
;
console
.
log
(
'开始>>'
,
qing
);
const
PhotoSwipe
=
require
(
'./lib/photoswipe.min'
).
PhotoSwipe
;
const
PhotoSwipeUI_Default
=
require
(
'./lib/photoswipe-ui-default.min'
).
PhotoSwipeUI_Default
;
const
FastClick
=
require
(
'fastclick'
);
// const IScroll = require('iscroll/build/iscroll-probe')
// shr员工编号字段
const
employeenumberField
=
process
.
env
.
PACK_ENV
===
'product'
?
'5893b734-4537-4036-9f1c-16ff831b64b2'
:
'72f1d584-bc3d-4616-85d0-4a67c1829d1c'
;
// shr员工类型: 房开、物业、合诚
var
orgTypeField
=
process
.
env
.
PACK_ENV
===
'product'
?
'20791150-9fbd-4db0-96b7-82d301c6531c'
:
'2cd7a5eb-371d-4d32-8220-6ebb64a5b214'
;
const
ccAppKey
=
process
.
env
.
PACK_ENV
===
'product'
?
'781d2ec4'
:
'd504275e'
;
window
.
topHeight
=
115
;
let
_uid
=
''
;
let
userid
=
''
;
let
loginuserid
=
''
;
//登入用户工号
let
token
=
''
;
let
appKey
=
''
;
let
photoUrl
=
''
;
let
items
=
[];
let
url
=
configuration
.
methods
.
resume
;
let
cadreFileList
=
[];
let
assFileList
=
[];
let
orgType
;
const
$mas
=
new
MAS
().
config
({
baseUrl
:
configuration
.
baseUrl
,
code
:
configuration
.
code
});
const
RENDER_TYPE
=
configuration
.
renderType
;
const
name
=
document
.
querySelector
(
'#name'
);
const
header
=
document
.
querySelector
(
'.header'
);
const
backButton
=
document
.
getElementById
(
'back'
);
const
container
=
document
.
querySelector
(
'.container'
);
const
photo
=
document
.
getElementById
(
'mainPhoto'
);
// 弹窗
const
tabModal
=
document
.
querySelector
(
'.my__modal'
);
const
tabModalClose
=
document
.
querySelector
(
'.modal__close'
);
// tips弹窗
const
tipsModal
=
document
.
querySelector
(
'.tips__modal'
);
const
tipsmMdalClose
=
document
.
querySelector
(
'.tips__close'
);
app
.
ready
(()
=>
{
initUser
().
then
(()
=>
{
console
.
log
(
'initUser then>>'
);
$mas
.
token
=
token
;
mount
();
}).
catch
((
e
)
=>
{
if
(
!
configuration
.
product
)
{
_uid
=
configuration
.
uid
;
loginuserid
=
configuration
.
loginuserid
;
userid
=
configuration
.
userid
;
token
=
configuration
.
token
;
appKey
=
configuration
.
appKey
;
}
else
{
alert
(
e
);
alert
(
'应用启动发生错误,请联系开发人员'
);
}
$mas
.
token
=
token
;
mount
();
//todo 开发环境调试添加水印
setWaterMark
(
`黄华强hqhuang@cndrealty.com`
,
''
);
// createWatermark({ content: '黄华强hqhuang@cndrealty.com' });
});
// 取消延迟响应
FastClick
.
attach
(
document
.
body
);
},
configuration
.
product
);
function
getUrlParamVal
(
paramName
)
{
const
params
=
location
.
search
.
slice
(
1
);
console
.
log
(
'location.href>>'
,
location
.
href
);
console
.
log
(
'链接参数>>'
,
params
);
const
reg
=
new
RegExp
(
`(?:^|&)
${
paramName
}
=([^&]+)`
);
if
(
reg
.
test
(
params
))
{
return
decodeURIComponent
(
RegExp
.
$1
);
}
return
null
;
}
function
getUserInfoByOid
(
oId
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
// 直接点击“简历”应用,是没有openId的,这时候不能报错。
if
(
!
oId
)
{
resolve
({});
return
;
}
const
opt
=
{
url
:
'/gateway/xmjf-other-service/person/role/query/openId'
,
serializer
:
'form'
,
method
:
'POST'
,
headers
:
{
'Content-Type'
:
'application/x-www-form-urlencoded'
,
'Cloudoffice-Version'
:
'v0.0.1'
},
data
:
{
oid
:
oId
}
};
opt
.
success
=
function
(
result
)
{
const
success
=
(
result
||
{}).
success
||
false
;
const
data
=
(
result
||
{}).
data
||
[];
if
(
String
(
success
).
toLowerCase
()
!==
'true'
)
{
reject
(
result
.
error
||
'获取人员信息失败!'
);
return
;
}
const
userInfo
=
data
.
userInfo
||
{};
const
extra
=
data
.
extra
||
[];
const
employeenumberInfo
=
extra
.
filter
(({
publicid
})
=>
{
return
employeenumberField
===
publicid
;
});
var
orgTypeInfo
=
extra
.
filter
(
function
(
item
)
{
return
orgTypeField
===
item
.
publicid
;
});
resolve
({
uid
:
userInfo
.
username
||
''
,
avatar
:
userInfo
.
avatar
||
''
,
employeenumber
:
(
employeenumberInfo
[
0
]
||
{}).
value
,
orgType
:
(
orgTypeInfo
[
0
]
||
{}).
value
});
};
opt
.
error
=
function
(
e
)
{
reject
(
e
);
};
window
.
qing
.
call
(
'request'
,
opt
);
});
}
// 根据“工号”查询【工号、eid、orgId】等信息
function
getPersonInfosByJobNo
(
jobNos
)
{
var
opt
=
{
url
:
'/gateway/xmjf-other-service/person/role/query/jobNo'
,
serializer
:
'form'
,
method
:
'POST'
,
headers
:
{
'Content-Type'
:
'application/x-www-form-urlencoded'
,
'Cloudoffice-Version'
:
'v0.0.1'
},
data
:
{
jobNos
:
jobNos
.
join
(
','
)
}
};
return
new
Promise
(
function
(
resolve
,
reject
)
{
opt
.
success
=
function
(
result
)
{
var
success
=
(
result
||
{}).
success
||
false
;
var
data
=
(
result
||
{}).
data
||
[];
if
(
String
(
success
).
toLowerCase
()
!==
'true'
||
data
.
length
===
0
)
{
reject
(
result
.
error
||
'获取人员信息失败!'
);
return
;
}
resolve
(
result
.
data
);
};
opt
.
error
=
function
(
e
)
{
reject
(
e
);
};
qing
.
call
(
'request'
,
opt
);
});
}
async
function
initUser
()
{
console
.
log
(
'initUser 开始>>'
);
let
openId
=
getUrlParamVal
(
'openId'
);
const
jobNo
=
getUrlParamVal
(
'uid'
);
if
(
jobNo
)
{
let
isOK
=
false
;
try
{
const
[
personInfo
=
{}]
=
await
getPersonInfosByJobNo
([
jobNo
]);
if
(
personInfo
.
oId
)
{
openId
=
personInfo
.
oId
;
isOK
=
true
;
}
else
{
isOK
=
false
;
}
}
catch
(
e
)
{
isOK
=
false
;
}
if
(
!
isOK
)
{
alert
(
'应用启动发生错误,请联系开发人员'
);
return
;
}
}
const
isFromPersonDetail
=
'persondetail'
===
getUrlParamVal
(
'source'
);
// 判断是否来自人员详情。
// 如果是从人员详情过来的,需要对employeenumber、uid做强校验。
// 如果不是从人员详情过来的,employeenumber、uid从当前人员的获取。
return
Promise
.
all
([
app
.
getUser
(),
getUserInfoByOid
(
openId
)
]).
then
(([
user
,
viewee
])
=>
{
if
(
user
.
orgType
)
{
user
.
extra
=
{
orgType
:
user
.
orgType
};
}
// user 查看者
// viewee 被查看者
console
.
log
(
'user 查看者:'
,
user
);
console
.
log
(
'viewee 被查看者:'
,
viewee
);
console
.
log
(
'location.href>>'
,
location
.
href
);
//添加水印
// setWaterMark(`${user.cn}${user.uid}`, '');
createWatermark
({
content
:
`
${
user
.
cn
}${
user
.
uid
}
`
});
// todo:目前先写死房产,待黄延龄确认orgType怎么获取后再将orgType变成动态的。
const
extra
=
{
avatar
:
viewee
.
avatar
,
employeenumber
:
viewee
.
employeenumber
,
uid
:
viewee
.
uid
};
loginuserid
=
user
.
employeenumber
;
if
(
viewee
.
orgType
)
{
extra
.
extra
=
{
orgType
:
viewee
.
orgType
};
}
userid
=
isFromPersonDetail
?
extra
.
employeenumber
:
user
.
employeenumber
;
_uid
=
isFromPersonDetail
?
extra
.
uid
:
user
.
uid
;
photoUrl
=
isFromPersonDetail
?
extra
.
avatar
:
user
.
avatar
;
if
(
!
userid
||
!
_uid
)
{
alert
(
'应用启动发生错误,请联系开发人员'
);
}
token
=
user
.
ssoToken
;
console
.
log
(
'extra>>'
,
extra
);
console
.
log
(
'configuration>>'
,
configuration
);
console
.
log
(
'ccAppKey>>'
,
ccAppKey
);
appKey
=
extra
.
appkey
||
configuration
.
appkey
||
ccAppKey
;
console
.
log
(
'appKey>>'
,
appKey
);
/* old-code
let orgType;
if (!extra.extra) {
orgType = eval('(' + user.extra + ')').orgType;
} else {
orgType =
eval('(' + extra.extra + ')').orgType ||
eval('(' + user.extra + ')').orgType;
}
*/
const
_extra
=
extra
.
extra
||
user
.
extra
||
{};
orgType
=
''
+
_extra
.
orgType
;
// 2024-08-08 黄延龄反馈:1是房开 2是物业 合诚待定
// 将物业(原来是6)调整为2,原来是2的怡家园调整为6
switch
(
orgType
)
{
// 房产
case
'1'
:
break
;
// 怡家园
case
'6'
:
$mas
.
config
({
baseUrl
:
configuration
.
baseUrl
,
code
:
configuration
.
yjyCode
});
url
=
configuration
.
methods
.
yjyResume
;
userid
=
userid
.
replace
(
'YJY'
,
''
);
_uid
=
_uid
.
replace
(
'YJY'
,
''
);
break
;
// 汇嘉
case
'3'
:
$mas
.
config
({
baseUrl
:
configuration
.
baseUrl
,
code
:
configuration
.
hjCode
});
url
=
configuration
.
methods
.
hjResume
;
break
;
// 物业
case
'2'
:
$mas
.
config
({
baseUrl
:
configuration
.
baseUrl
,
code
:
configuration
.
wyCode
});
url
=
configuration
.
methods
.
wyResume
;
break
;
// 合诚
case
'4'
:
$mas
.
config
({
baseUrl
:
configuration
.
baseUrl
,
code
:
configuration
.
hcCode
});
url
=
configuration
.
methods
.
hcResume
;
break
;
default
:
// alert('权限不足,无法查看简历');
// app.exit();
showToast
(
'暂无数据,请联系管理员'
);
// setTimeout(() => {
// app.exit();
// }, 2000);
}
}).
catch
(
e
=>
{
console
.
log
(
'e:'
,
e
.
toString
());
if
(
!
configuration
.
product
)
{
_uid
=
configuration
.
uid
;
loginuserid
=
configuration
.
loginuserid
;
userid
=
configuration
.
userid
;
token
=
configuration
.
token
;
appKey
=
configuration
.
appKey
;
}
else
{
alert
(
e
);
alert
(
'应用启动发生错误,请联系开发人员'
);
}
});
}
function
mount
()
{
const
customEvt
=
window
.
customEvt
;
scrollBehavior
();
attachAtivated
(
backButton
);
attachAtivated
(
photo
);
//TODO
// render(dataJson.data)
container
.
classList
.
add
(
'container__scrolling'
);
backButton
.
addEventListener
(
'click'
,
()
=>
{
app
.
exit
();
});
/* old-code
document.addEventListener(
'backbutton',
() => {
app.exit();
},
false
);
*/
// 清除backbutton上的历史事件,绑定新事件
customEvt
.
removeEventListener
(
'backbutton'
);
customEvt
.
addEventListener
(
'backbutton'
,
()
=>
{
app
.
exit
();
});
document
.
querySelector
(
'.pswp__button--save'
).
addEventListener
(
'touchend'
,
evt
=>
{
evt
.
stopPropagation
();
console
.
log
(
'保存图片'
);
app
.
saveToGallery
(
photoUrl
).
then
(()
=>
{
showToast
(
'保存成功'
);
}).
catch
(()
=>
{
showToast
(
'保存失败'
);
});
});
photo
.
onclick
=
openPhoto
;
// 关闭弹窗
tabModalClose
.
onclick
=
function
()
{
switchTabModal
(
false
);
};
// 关闭tips弹窗
tipsModal
.
onclick
=
function
()
{
tipsModal
.
style
.
display
=
'none'
;
};
console
.
log
(
'开始获取>>'
,
url
,
{
loginuserid
,
userid
,
appKey
});
$mas
.
restful
(
url
,
{
loginuserid
,
userid
,
appKey
}).
then
(({
data
})
=>
{
console
.
log
(
'获取成功>>'
,
url
,
data
);
render
(
data
);
return
data
;
}).
catch
(
e
=>
{
console
.
log
(
'获取失败>>'
,
e
);
});
// 获取头像
renderPhoto
();
/*
$mas.getData(configuration.baseUrl + configuration.methods.photo, {
uid: _uid,
appKey
})
.then(data => {
if (data && data.code && data.data) {
photoUrl = data.data.headPhoto || data.data;
renderPhoto();
}
})
.catch(e => {
console.log('getData err', e);
});
*/
}
function
scrollBehavior
()
{
const
per
=
window
.
topHeight
/
100
;
container
.
addEventListener
(
'scroll'
,
function
()
{
if
(
this
.
scrollTop
<
window
.
topHeight
)
{
let
scale
=
(
window
.
topHeight
-
this
.
scrollTop
)
/
window
.
topHeight
;
scale
=
scale
>
1
?
1
:
scale
;
let
value
=
`scale(
${
scale
}
) translateZ(0)`
;
photo
.
style
[
'transform'
]
=
value
;
photo
.
style
[
'-webkit-transform'
]
=
value
;
}
if
(
this
.
scrollTop
>
window
.
topHeight
)
{
header
.
classList
.
add
(
'show'
);
}
else
{
header
.
classList
.
remove
(
'show'
);
}
});
}
function
openPhoto
()
{
if
(
!
items
.
length
)
return
;
var
pswpElement
=
document
.
querySelectorAll
(
'.pswp'
)[
0
];
// define options (if needed)
var
options
=
{
// optionName: 'option value'
// for example:
index
:
0
// start at first slide
};
// Initializes and opens PhotoSwipe
var
gallery
=
new
PhotoSwipe
(
pswpElement
,
PhotoSwipeUI_Default
,
items
,
options
);
gallery
.
init
();
}
function
render
(
data
)
{
var
RENDER_ITEM
=
configuration
.
renderItem
;
let
resumeBaseVo
=
data
.
resumeBaseVo
||
[];
let
jobGradeType
=
data
.
jobGradeType
||
'3'
;
//- 区分人员类别 1-物业C级人员 2-物业D级人员 3-房开人员
header
.
innerText
=
resumeBaseVo
.
username
;
name
.
innerText
=
resumeBaseVo
.
username
;
switch
(
jobGradeType
)
{
case
'1'
:
//物业C级人员
// showToast('C级人员');
var
RENDER_ITEM
=
{
// 基础信息
resumeBaseVo
:
configuration
.
renderItem
.
resumeBaseVo
,
// 当前任职
jobVoList
:
configuration
.
renderItem
.
jobVoList
,
// 历史任职
jobHistoryVoList
:
configuration
.
renderItem
.
jobHistoryVoList
,
// 工作经历
workVoList
:
configuration
.
renderItem
.
workVoList
,
// 教育经历
eduVoList
:
configuration
.
renderItem
.
eduVoList
,
// 社会关系
familyVoList
:
configuration
.
renderItem
.
familyVoList
,
// 干部考核 -
cadreEvaluationVoList
:
configuration
.
renderItem
.
cadreEvaluationVoList
,
// 绩效信息 员工考核
assessVoList
:
configuration
.
renderItem
.
assessVoList
,
// 奖惩信息
rewardPunishVoList
:
configuration
.
renderItem
.
rewardPunishVoList
};
for
(
let
r
in
RENDER_ITEM
)
{
if
(
data
[
r
])
{
//物业是用新的绩效
let
dataArr
=
filterData
(
r
,
data
[
r
],
true
);
if
(
!
dataArr
)
{
continue
;
}
propertyRenderer
(
RENDER_ITEM
[
r
],
dataArr
);
}
}
break
;
case
'2'
:
//物业D级人员
// showToast('D级人员'); // 基础信息 当前任职 历史任职 绩效信息 奖惩信息
var
RENDER_ITEM
=
{
resumeBaseVo
:
configuration
.
renderItem
.
resumeBaseVo
,
jobVoList
:
configuration
.
renderItem
.
jobVoList
,
jobHistoryVoList
:
configuration
.
renderItem
.
jobHistoryVoList
,
assessVoList
:
configuration
.
renderItem
.
assessVoList
,
rewardPunishVoList
:
configuration
.
renderItem
.
rewardPunishVoList
};
for
(
let
r
in
RENDER_ITEM
)
{
if
(
data
[
r
])
{
let
dataArr
=
filterData
(
r
,
data
[
r
],
true
);
if
(
!
dataArr
)
{
continue
;
}
propertyRenderer
(
RENDER_ITEM
[
r
],
dataArr
);
}
}
break
;
case
'3'
:
//房开人员
var
RENDER_ITEM
=
{
// 基础信息
resumeBaseVo
:
configuration
.
renderItem
.
resumeBaseVo
,
// 当前任职
jobVoList
:
configuration
.
renderItem
.
jobVoList
,
// 历史任职
jobHistoryVoList
:
configuration
.
renderItem
.
jobHistoryVoList
,
// 工作经历
workVoList
:
configuration
.
renderItem
.
workVoList
,
// 教育经历
eduVoList
:
configuration
.
renderItem
.
eduVoList
,
// 社会关系
familyVoList
:
configuration
.
renderItem
.
familyVoList
,
// 干部考核 -
cadreEvaluationVoList
:
configuration
.
renderItem
.
cadreEvaluationVoList
,
// 绩效信息
assessVoList
:
configuration
.
renderItem
.
assessVoList
,
//奖惩
rewardPunishVoList
:
configuration
.
renderItem
.
rewardPunishVoList
};
console
.
log
(
'房开人员'
,
RENDER_ITEM
);
// // showToast('房开人员');
for
(
let
r
in
RENDER_ITEM
)
{
if
(
data
[
r
])
{
//新版绩效
// let dataArr = data[r];
// if (r == 'assessVoList') {
// dataArr = {
// // 绩效
// assessVoList: data['assessVoList'],
// // 评优
// rewardPunishVoList: data['rewardPunishVoList'],
// // 奖励/处罚
// specialtyRewadVoList: data['specialtyRewadVoList'],
// // 营销小红花
// sakeredFlowerVoList: data['sakeredFlowerVoList']
// }
// }
//旧版绩效
let
dataArr
=
filterData
(
r
,
data
[
r
],
false
);
if
(
!
dataArr
)
{
continue
;
}
renderer
(
RENDER_ITEM
[
r
],
dataArr
);
}
}
// for (let r in RENDER_ITEM) {
// if (data[r]) {
// let dataArr = filter(r, data[r]);
// if (!dataArr) {
// continue;
// }
// // propertyRenderer(RENDER_ITEM[r], dataArr);
// // renderer(RENDER_ITEM[r], dataArr);
// }
// }
break
;
default
:
showToast
(
`#jobGradeType =
${
jobGradeType
}
; 不明人员`
);
}
addFileEvent
();
//干部测评附件
addAssFileEvent
();
//绩效附件
eleHideChil
();
eleHide
();
// eleHideShrink()
}
function
renderer
(
renderTemp
,
data
)
{
let
type
=
renderTemp
.
type
;
// 干部测评没有数据不展示
if
(
type
===
RENDER_TYPE
.
G
&&
(
!
data
||
!
data
.
length
))
{
return
;
}
container
.
appendChild
(
headerRenderer
(
renderTemp
));
switch
(
type
)
{
case
RENDER_TYPE
.
A
:
container
.
appendChild
(
listARenderer
(
renderTemp
.
list
,
data
));
break
;
case
RENDER_TYPE
.
B
:
container
.
appendChild
(
listBRenderer
(
renderTemp
.
list
,
data
));
break
;
case
RENDER_TYPE
.
C
:
container
.
appendChild
(
listCRenderer
(
renderTemp
.
list
,
data
));
break
;
case
RENDER_TYPE
.
G
:
// 干部考核
container
.
appendChild
(
listGRenderer
(
renderTemp
.
list
,
data
));
break
;
case
RENDER_TYPE
.
D
:
//员工考核
container
.
appendChild
(
listDRenderer
(
renderTemp
.
list
,
data
));
// container.appendChild(listJXRenderer(renderTemp.list, data));//新版绩效
break
;
case
RENDER_TYPE
.
E
:
container
.
appendChild
(
listERenderer
(
renderTemp
.
list
,
data
));
break
;
case
RENDER_TYPE
.
F
:
container
.
appendChild
(
listFRenderer
(
renderTemp
.
list
,
data
));
break
;
}
}
function
headerRenderer
(
data
)
{
let
temp
=
document
.
createElement
(
'div'
);
let
img
=
document
.
createElement
(
'span'
);
let
name
=
document
.
createElement
(
'span'
);
temp
.
classList
.
add
(
'item__header'
);
temp
.
classList
.
add
(
'bbd'
);
name
.
innerText
=
data
.
name
;
img
.
classList
.
add
(
`item_header-img-
${
data
.
img
}
`
);
img
.
classList
.
add
(
'item_header-img'
);
temp
.
appendChild
(
img
);
temp
.
appendChild
(
name
);
return
temp
;
}
function
itemRenderer
(
title
,
value
,
extra
=
''
)
{
return
`<div class='item__content
${
extra
}
'>
<div class='item__content-title bbd'>
${
title
}
</div>
<div class='item__content-value bbd'>
${
value
}
</div>
</div>`
;
}
function
function_name
()
{
}
// 物业页面
function
propertyRenderer
(
renderTemp
,
data
)
{
let
type
=
renderTemp
.
type
;
// 干部测评没有数据不展示
if
(
type
===
RENDER_TYPE
.
G
&&
(
!
data
||
!
data
.
length
))
{
return
;
}
container
.
appendChild
(
propertyHeaderRenderer
(
renderTemp
));
switch
(
type
)
{
case
RENDER_TYPE
.
A
:
container
.
appendChild
(
propertyListARenderer
(
renderTemp
.
list
,
data
));
break
;
case
RENDER_TYPE
.
B
:
container
.
appendChild
(
propertyListBRenderer
(
renderTemp
.
list
,
data
));
break
;
case
RENDER_TYPE
.
C
:
container
.
appendChild
(
propertyListCRenderer
(
renderTemp
.
list
,
data
));
break
;
case
RENDER_TYPE
.
G
:
// 干部考核
container
.
appendChild
(
listGRenderer
(
renderTemp
.
list
,
data
));
break
;
case
RENDER_TYPE
.
D
:
// 员工考核
container
.
appendChild
(
propertyListDRenderer
(
renderTemp
.
list
,
data
));
break
;
case
RENDER_TYPE
.
E
:
container
.
appendChild
(
propertyListERenderer
(
renderTemp
.
list
,
data
));
break
;
case
RENDER_TYPE
.
F
:
container
.
appendChild
(
propertyListFRenderer
(
renderTemp
.
list
,
data
));
break
;
}
}
function
propertyHeaderRenderer
(
data
)
{
let
temp
=
document
.
createElement
(
'div'
);
let
img
=
document
.
createElement
(
'span'
);
let
name
=
document
.
createElement
(
'span'
);
temp
.
classList
.
add
(
'item__header'
);
temp
.
classList
.
add
(
'bbd'
);
name
.
innerText
=
data
.
name
;
img
.
classList
.
add
(
`item_header-img-
${
data
.
img
}
`
);
img
.
classList
.
add
(
'item_header-img'
);
temp
.
appendChild
(
img
);
temp
.
appendChild
(
name
);
return
temp
;
}
function
propertyItemRenderer
(
title
,
value
,
extra
=
''
)
{
return
`<div class='item__content
${
extra
}
'>
<div class='item__content-title bbd'>
${
title
}
</div>
<div class='item__content-value bbd'>
${
value
}
</div>
</div>`
;
}
/**
* 时间至今的逻辑
* 原来判断当前任职的结束时间如果是9999-12-31,就显示“至今”。现在由于当前任职的结束时间为2199-12-31,所以会把具体的时间显示出来。
* 建议逻辑修改为:判断大于目前的时间就显示“至今”
* @param val
* @return {string}
*/
function
nowOrNot
(
val
)
{
if
(
val
)
{
return
new
Date
(
val
.
replace
(
/-/g
,
'/'
)).
getTime
()
>
new
Date
().
getTime
()
?
'今'
:
val
;
}
else
{
return
''
;
}
}
function
listARenderer
(
list
,
data
,
extra
=
''
)
{
let
temp
=
document
.
createElement
(
'div'
);
temp
.
classList
.
add
(
'item__wrap'
);
for
(
let
name
in
list
)
{
let
value
;
let
title
;
if
(
list
[
name
]
instanceof
Object
)
{
if
(
name
.
indexOf
(
'&'
)
!==
-
1
)
{
let
names
=
name
.
split
(
'&'
);
title
=
`
${
data
[
names
[
0
]
]
||
'未知'
}
-
${
data
[
names
[
1
]
]
||
'未知'
}
`
;
}
else
{
title
=
data
[
name
];
}
let
t1
=
data
[
list
[
name
][
0
]
];
let
t2
=
data
[
list
[
name
][
1
]
];
value
=
`
${
t1
}
至
${
nowOrNot
(
t2
)}
`
;
}
else
{
title
=
list
[
name
];
value
=
data
[
name
];
}
temp
.
innerHTML
+=
itemRenderer
(
title
||
'未知'
,
value
||
'无'
,
'light'
);
}
return
temp
;
}
function
listBRenderer
(
list
,
data
)
{
let
temp
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
item
,
index
)
=>
{
let
sub
=
''
;
let
note
=
list
.
note
;
if
(
list
.
subTitle
)
{
list
.
subTitle
.
forEach
((
s
,
i
)
=>
{
sub
+=
(
i
&&
'|'
)
||
''
;
sub
+=
item
[
s
]
||
'无'
;
});
}
if
(
note
instanceof
Object
&&
note
.
length
)
{
let
t1
=
data
[
index
][
list
.
note
[
0
]
];
let
t2
=
data
[
index
][
list
.
note
[
1
]
];
//temp += itemRenderer(item[list[0]], item[list[1]], index > 2 && 'hide')
temp
+=
`<div class='item_main'><div class='item__content work'>
${
item
[
list
.
title
]
||
'无'
}
</div>`
+
itemRenderer
(
`<p class='item__content-sub-title'>
${
sub
}
</p>`
,
`<p class='item__content-note'>
${
t1
}
至
${
nowOrNot
(
t2
)}
</p>`
)
+
`</div>`
;
}
else
{
temp
+=
itemRenderer
(
`
${
item
[
list
.
title
]
}
<p class='item__content-sub-title'>
${
sub
}
</p>`
,
`<p class='item__content-note'>
${
item
[
note
]}
</p>`
);
}
});
}
else
{
temp
=
noDataRenderer
();
}
return
renderWrap
(
temp
,
data
.
length
>
3
);
}
function
listCRenderer
(
list
,
data
)
{
let
temp
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
item
,
index
)
=>
{
let
sub
=
''
;
list
.
subTitle
.
forEach
((
s
,
i
)
=>
{
switch
(
i
)
{
case
1
:
sub
+=
(
i
&&
' | '
)
||
''
;
if
(
item
[
s
]
===
'无'
||
!
item
[
s
])
{
item
[
s
]
=
'无学历'
;
}
sub
+=
item
[
s
];
break
;
case
2
:
sub
+=
(
i
&&
' | '
)
||
''
;
if
(
item
[
s
]
===
'无'
||
!
item
[
s
])
{
sub
+=
'无学位'
;
}
else
{
sub
+=
item
[
s
];
}
break
;
default
:
sub
+=
(
i
&&
' | '
)
||
''
;
sub
+=
item
[
s
]
||
'无'
;
break
;
}
});
temp
+=
itemRenderer
(
`
${
item
[
list
.
title
]}
<p class='item__content-sub-title'>
${
sub
}
</p><p class='item__content-sub-title'>毕业于
${
item
[
list
.
note
]
}
</p>`
,
''
,
'edu long-title '
);
});
}
else
{
temp
=
noDataRenderer
();
}
return
renderWrap
(
temp
,
data
.
length
>
3
);
}
function
listERenderer
(
list
,
data
)
{
let
temp
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
item
,
index
)
=>
{
let
sub
=
''
;
list
.
subTitle
.
forEach
((
s
,
i
)
=>
{
sub
+=
`<p class='item__content-sub-title'>
${
list
.
subTitleName
[
i
]}
:
${
item
[
s
]}
</p>`
;
});
temp
+=
itemRenderer
(
`
${
item
[
list
.
title
]}
|
${
item
[
list
.
title1
]
}
<span style='float: right;padding-right:16px'>
${
item
[
list
.
title2
]
}
</span>
${
sub
}
`
,
''
,
'edu long-title '
);
});
}
else
{
temp
=
noDataRenderer
();
}
return
renderWrap
(
temp
,
data
.
length
>
3
);
}
function
listFRenderer
(
list
,
data
)
{
let
temp
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
item
,
index
)
=>
{
temp
+=
itemRenderer
(
`
${
item
[
list
.
title
]
}
<span style='float: right;padding-right:16px'>
${
item
[
list
.
title1
]
}
</span>
<p class='item__content-sub-title'>
${
item
[
list
.
subTitle
]
}
<span style='float: right;padding-right:12px'>
${
item
[
list
.
subTitle1
]
}
年度</span></p>`
,
''
,
'edu long-title '
);
});
}
else
{
temp
=
noDataRenderer
();
}
return
renderWrap
(
temp
,
data
.
length
>
3
);
}
// 绩效列表
let
performanceArr
=
[],
performanceSelected
=
''
;
// 评优列表
let
appraiseArr
=
[],
appraiseMenu
=
[
'全部'
],
appraiseMenuSelected
=
'全部'
;
// 奖励列表
let
awardArr
=
[],
awardMenu
=
[
'全部'
],
awardMenuSelected
=
'全部'
;
// 处罚列表
let
punishArr
=
[],
punishMenu
=
[
'全部'
],
punishMenuSelected
=
'全部'
;
// 员工绩效表
let
performanceTableArr
=
[];
/* 员工绩效 */
function
listJXRenderer
(
list
,
data
)
{
// console.log('员工绩效', data)
performanceArr
=
performanceGroups
(
data
.
assessVoList
);
appraiseArr
=
appraiseGroups
(
data
.
rewardPunishVoList
);
// 评优测试数据
// appraiseArr = [{
// year: '2021',
// children: [{
// content: '2021年度专业技术突出一等奖',
// company: '华中区域公司'
// },{
// content: '2021年度专业技术突出一等奖',
// company: '华中区域公司'
// }]
// },{
// year: '2020',
// children: [{
// content: '2020年度专业技术突出一等奖',
// company: '华中区域公司'
// },{
// content: '2020年度专业技术突出一等奖',
// company: '华中区域公司'
// }]
// }]
let
rewardpunishArr
=
rewardpunishGroups
(
data
.
specialtyRewadVoList
);
console
.
log
(
'rewardpunishArr-------'
,
rewardpunishArr
);
rewardpunishArr
.
forEach
((
item
)
=>
{
if
(
item
.
state
===
'奖励'
)
{
awardArr
=
rewardGroups
(
item
.
children
,
data
.
sakeredFlowerVoList
);
console
.
log
(
'awardArr-------'
,
awardArr
);
}
else
{
punishArr
=
punishGroups
(
item
.
children
);
}
});
console
.
log
(
'绩效'
,
performanceArr
);
console
.
log
(
'评优'
,
appraiseArr
);
console
.
log
(
'奖励'
,
awardArr
);
console
.
log
(
'处罚'
,
punishArr
);
let
tmpYears
=
[];
performanceArr
.
forEach
((
item
,
index
)
=>
{
tmpYears
.
push
(
item
.
year
);
if
(
index
===
0
)
{
performanceSelected
=
item
.
year
;
}
});
appraiseArr
.
forEach
((
item
)
=>
{
tmpYears
.
push
(
item
.
year
);
appraiseMenu
.
push
(
item
.
year
);
});
awardArr
.
forEach
((
item
,
index
)
=>
{
tmpYears
.
push
(
item
.
year
);
if
(
index
===
0
)
{
awardMenuSelected
=
item
.
year
;
}
awardMenu
.
push
(
item
.
year
);
});
punishArr
.
forEach
((
item
,
index
)
=>
{
tmpYears
.
push
(
item
.
year
);
if
(
index
===
0
)
{
punishMenuSelected
=
item
.
year
;
}
punishMenu
.
push
(
item
.
year
);
});
// 配置弹窗
setUpYGJXModal
();
let
tmpAllYears
=
[...
new
Set
(
tmpYears
)];
let
allYears
=
tmpAllYears
.
sort
((
a
,
b
)
=>
{
return
b
-
a
;
});
if
(
allYears
.
length
>
0
)
{
// 绩效显示到当前年份
let
currentYear
=
new
Date
().
getFullYear
();
let
firstYear
=
Number
(
allYears
[
0
]);
let
count
=
currentYear
-
firstYear
;
for
(
var
i
=
1
;
i
<=
count
;
i
++
)
{
allYears
.
unshift
(
`
${
firstYear
+
i
}
`
);
}
}
let
tableData
=
[];
allYears
.
forEach
((
year
)
=>
{
// 设置空数据
let
tableItem
=
{
year
:
year
,
yearShow
:
`
${
year
}
年`
,
performance
:
'/'
,
appraise
:
'/'
,
award
:
'/'
,
punish
:
'/'
};
// 分配绩效数据
performanceArr
.
forEach
((
item
)
=>
{
if
(
item
.
year
==
year
)
{
let
itemStr
=
JSON
.
stringify
(
item
);
let
textColor
=
getGradeColor
(
item
.
assgrade
);
tableItem
.
performance
=
`<div data-item='
${
itemStr
}
' data-type='performance' class='
${
textColor
}
'>
${
item
.
assgrade
||
'/'
}
</div>
<div data-item='
${
itemStr
}
' data-type='performance' class='ygjx_table__grade
${
textColor
}
'>
${
item
.
gradeNumStr
||
''
}
</div>`
;
}
});
appraiseArr
.
forEach
((
item
)
=>
{
if
(
item
.
year
==
year
)
{
tableItem
.
appraise
=
`
${
item
.
children
.
length
}
次`
;
}
});
awardArr
.
forEach
((
item
)
=>
{
if
(
item
.
year
==
year
)
{
if
(
item
.
children
.
length
>
0
)
{
tableItem
.
award
=
`
${
item
.
children
.
length
}
次`
;
}
}
});
punishArr
.
forEach
((
item
)
=>
{
if
(
item
.
year
==
year
)
{
if
(
item
.
children
.
length
>
0
)
{
tableItem
.
punish
=
`
${
item
.
children
.
length
}
次`
;
}
}
});
tableData
.
push
(
tableItem
);
});
let
bgBox
=
document
.
createElement
(
'div'
);
bgBox
.
classList
.
add
(
'ygjx_bg_box'
);
if
(
tableData
&&
tableData
.
length
)
{
let
hintMoreNode
=
document
.
createElement
(
'div'
);
hintMoreNode
.
classList
.
add
(
'hint_more'
);
hintMoreNode
.
innerHTML
=
`<div></div>
<div>左右滑动,查看更多数据</div>
<div></div>`
;
bgBox
.
appendChild
(
hintMoreNode
);
let
ygjxTableBox
=
document
.
createElement
(
'div'
);
ygjxTableBox
.
classList
.
add
(
'ygjx_table_box'
);
let
ygjxTable
=
document
.
createElement
(
'table'
);
ygjxTable
.
classList
.
add
(
'ygjx_table'
);
// ygjxTable.border = '1'
//表格点击事件处理
ygjxTable
.
onclick
=
function
(
e
)
{
// console.log(e.target);
let
dataset
=
e
.
target
.
dataset
;
if
(
dataset
.
tips
)
{
// 提示弹窗显示
tipsModal
.
style
.
display
=
'block'
;
}
else
if
(
dataset
.
type
)
{
//
let
tabIndex
=
0
;
if
(
dataset
.
item
)
{
let
item
=
JSON
.
parse
(
dataset
.
item
);
let
text
=
item
[
dataset
.
type
];
if
(
text
===
'/'
)
{
return
;
}
else
{
if
(
dataset
.
type
===
'performance'
)
{
console
.
log
(
'performanceSelected'
,
performanceSelected
);
performanceSelected
=
item
.
year
;
tabIndex
=
0
;
performanceSelectedUpdate
(
true
);
}
if
(
dataset
.
type
===
'appraise'
)
{
// 评优
appraiseMenuSelected
=
'全部'
;
tabIndex
=
1
;
modalPYTabView
();
}
if
(
dataset
.
type
===
'award'
)
{
awardMenuSelected
=
'全部'
;
//item.year
tabIndex
=
2
;
modalJLTabView
();
}
if
(
dataset
.
type
===
'punish'
)
{
punishMenuSelected
=
'全部'
;
//item.year
tabIndex
=
3
;
modalCFTabView
();
}
}
}
switchTabModal
(
true
);
modalDidSelectedIndex
(
tabIndex
);
}
};
let
colsWidth
=
50
;
let
tableWidth
=
document
.
body
.
clientWidth
-
colsWidth
-
10
*
2
-
28
;
let
itemWidth
=
tableWidth
/
2
-
10
*
2
;
let
tr1
=
document
.
createElement
(
'tr'
);
let
tr2
=
document
.
createElement
(
'tr'
);
let
tr3
=
document
.
createElement
(
'tr'
);
let
tr4
=
document
.
createElement
(
'tr'
);
let
tr5
=
document
.
createElement
(
'tr'
);
let
colstd1
=
document
.
createElement
(
'td'
);
let
colstd2
=
document
.
createElement
(
'td'
);
let
colstd3
=
document
.
createElement
(
'td'
);
let
colstd4
=
document
.
createElement
(
'td'
);
let
colstd5
=
document
.
createElement
(
'td'
);
colstd1
.
classList
.
add
(
'cols'
);
colstd2
.
classList
.
add
(
'cols'
);
colstd3
.
classList
.
add
(
'cols'
);
colstd4
.
classList
.
add
(
'cols'
);
colstd5
.
classList
.
add
(
'cols'
);
colstd1
.
style
.
minWidth
=
`
${
colsWidth
}
px`
;
colstd2
.
style
.
minWidth
=
`
${
colsWidth
}
px`
;
colstd3
.
style
.
minWidth
=
`
${
colsWidth
}
px`
;
colstd4
.
style
.
minWidth
=
`
${
colsWidth
}
px`
;
colstd5
.
style
.
minWidth
=
`
${
colsWidth
}
px`
;
colstd1
.
style
.
width
=
`
${
colsWidth
}
px`
;
colstd2
.
style
.
width
=
`
${
colsWidth
}
px`
;
colstd3
.
style
.
width
=
`
${
colsWidth
}
px`
;
colstd4
.
style
.
width
=
`
${
colsWidth
}
px`
;
colstd5
.
style
.
width
=
`
${
colsWidth
}
px`
;
colstd2
.
innerHTML
=
`
<div class='js__box'>绩效
<div data-tips='
${
1
}
' class='icon__help'></div>
</div>
`
;
colstd3
.
innerHTML
=
`<div>评优</div>`
;
colstd4
.
innerHTML
=
`<div>奖励</div>`
;
colstd5
.
innerHTML
=
`<div>处罚</div>`
;
tr1
.
appendChild
(
colstd1
);
tr2
.
appendChild
(
colstd2
);
tr3
.
appendChild
(
colstd3
);
tr4
.
appendChild
(
colstd4
);
tr5
.
appendChild
(
colstd5
);
tableData
.
forEach
((
item
,
index
)
=>
{
// if (index >= 1) {
// return
// }
let
td1
=
document
.
createElement
(
'td'
);
let
td2
=
document
.
createElement
(
'td'
);
let
td3
=
document
.
createElement
(
'td'
);
let
td4
=
document
.
createElement
(
'td'
);
let
td5
=
document
.
createElement
(
'td'
);
td1
.
style
.
minWidth
=
`
${
itemWidth
}
px`
;
td2
.
style
.
minWidth
=
`
${
itemWidth
}
px`
;
td3
.
style
.
minWidth
=
`
${
itemWidth
}
px`
;
td4
.
style
.
minWidth
=
`
${
itemWidth
}
px`
;
td5
.
style
.
minWidth
=
`
${
itemWidth
}
px`
;
// td1.style.width = `${itemWidth}px`
// td2.style.width = `${itemWidth}px`
// td3.style.width = `${itemWidth}px`
// td4.style.width = `${itemWidth}px`
// td5.style.width = `${itemWidth}px`
let
a2
=
document
.
createElement
(
'a'
);
let
a3
=
document
.
createElement
(
'a'
);
let
a4
=
document
.
createElement
(
'a'
);
let
a5
=
document
.
createElement
(
'a'
);
a2
.
dataset
.
item
=
JSON
.
stringify
(
item
);
a2
.
dataset
.
type
=
'performance'
;
a2
.
href
=
`#performance
${
item
.
year
}
`
;
a3
.
dataset
.
item
=
JSON
.
stringify
(
item
);
a3
.
dataset
.
type
=
'appraise'
;
a3
.
href
=
`#appraise
${
item
.
year
}
`
;
a4
.
dataset
.
item
=
JSON
.
stringify
(
item
);
a4
.
dataset
.
type
=
'award'
;
a4
.
href
=
`#award
${
item
.
year
}
`
;
a5
.
dataset
.
item
=
JSON
.
stringify
(
item
);
a5
.
dataset
.
type
=
'punish'
;
a5
.
href
=
`#punish
${
item
.
year
}
`
;
td1
.
innerHTML
=
`
${
item
[
list
.
yearShow
]}
`
;
a2
.
innerHTML
=
`
${
item
[
list
.
performance
]}
`
;
a3
.
innerHTML
=
`
${
item
[
list
.
appraise
]}
`
;
a4
.
innerHTML
=
`
${
item
[
list
.
award
]}
`
;
a5
.
innerHTML
=
`
${
item
[
list
.
punish
]}
`
;
td2
.
appendChild
(
a2
);
td3
.
appendChild
(
a3
);
td4
.
appendChild
(
a4
);
td5
.
appendChild
(
a5
);
tr1
.
appendChild
(
td1
);
tr2
.
appendChild
(
td2
);
tr3
.
appendChild
(
td3
);
tr4
.
appendChild
(
td4
);
tr5
.
appendChild
(
td5
);
});
ygjxTable
.
appendChild
(
tr1
);
// if (performanceArr.length > 0) {
ygjxTable
.
appendChild
(
tr2
);
// }
// if (appraiseArr.length > 0) {
ygjxTable
.
appendChild
(
tr3
);
// }
// if (awardArr.length > 0) {
ygjxTable
.
appendChild
(
tr4
);
// }
// if (punishArr.length > 0) {
ygjxTable
.
appendChild
(
tr5
);
// }
ygjxTableBox
.
appendChild
(
ygjxTable
);
bgBox
.
appendChild
(
ygjxTableBox
);
setTimeout
(()
=>
{
createIScroller
();
},
300
);
}
else
{
bgBox
.
innerHTML
=
noDataRenderer
();
}
return
bgBox
;
}
function
switchTabModal
(
on
)
{
if
(
on
)
{
tabModal
.
style
.
display
=
'block'
;
if
(
container
.
classList
.
contains
(
'container__scrolling'
))
{
container
.
classList
.
remove
(
'container__scrolling'
);
}
}
else
{
tabModal
.
style
.
display
=
'none'
;
if
(
!
container
.
classList
.
contains
(
'container__scrolling'
))
{
container
.
classList
.
add
(
'container__scrolling'
);
}
}
}
// 设置员工绩效弹窗
function
setUpYGJXModal
()
{
let
modalHeader
=
document
.
querySelector
(
'.modal__header'
);
// 设置头部tab选择
let
tabBox
=
document
.
createElement
(
'div'
);
tabBox
.
classList
.
add
(
'modal__tab__box'
);
let
tabHTML
=
''
;
// if (performanceArr.length > 0) {
tabHTML
+=
'<li data-index="0" class="modal__tab__active">绩效</li>'
;
// }
// if (appraiseArr.length > 0) {
tabHTML
+=
'<li data-index="1">评优</li>'
;
// }
// if (awardArr.length > 0) {
tabHTML
+=
'<li data-index="2">奖励</li>'
;
// }
// if (punishArr.length > 0) {
tabHTML
+=
'<li data-index="3">处罚</li>'
;
// }
tabBox
.
innerHTML
=
`<ul>
${
tabHTML
}
</ul>`
;
tabBox
.
onclick
=
function
(
e
)
{
let
tabIndex
=
Number
(
e
.
target
.
dataset
.
index
);
if
(
isNaN
(
tabIndex
))
{
return
;
}
modalDidSelectedIndex
(
tabIndex
);
};
modalHeader
.
appendChild
(
tabBox
);
let
yearBox
=
document
.
createElement
(
'div'
);
yearBox
.
classList
.
add
(
'year__box'
);
yearBox
.
onclick
=
function
(
e
)
{
// console.log('yearBox onclick', e.target.dataset);
let
dropdownBox
=
document
.
querySelector
(
'.dropdown__content'
);
if
(
dropdownBox
.
style
.
display
==
'block'
)
{
dropdownBox
.
style
.
display
=
'none'
;
}
else
{
dropdownBox
.
style
.
display
=
'block'
;
}
let
dataset
=
e
.
target
.
dataset
;
if
(
dataset
.
type
&&
dataset
.
item
)
{
let
selecedMenu
=
document
.
querySelector
(
'.seleced_menu'
);
selecedMenu
.
innerText
=
dataset
.
item
;
if
(
dataset
.
type
===
'1'
)
{
appraiseMenuSelected
=
dataset
.
item
;
modalPYTabView
();
}
if
(
dataset
.
type
===
'2'
)
{
awardMenuSelected
=
dataset
.
item
;
modalJLTabView
();
}
if
(
dataset
.
type
===
'3'
)
{
punishMenuSelected
=
dataset
.
item
;
modalCFTabView
();
}
}
};
modalHeader
.
appendChild
(
yearBox
);
// 设置各个标签内容
modalJXTabView
();
modalPYTabView
();
modalJLTabView
();
modalCFTabView
();
}
// 弹窗标签选择
function
modalDidSelectedIndex
(
index
)
{
let
tabBox
=
document
.
querySelector
(
'.modal__tab__box'
);
let
lis
=
tabBox
.
getElementsByTagName
(
'li'
);
for
(
var
i
=
0
;
i
<
lis
.
length
;
i
++
)
{
lis
[
i
].
classList
.
remove
(
'modal__tab__active'
);
if
(
Number
(
lis
[
i
].
dataset
.
index
)
===
index
)
{
lis
[
i
].
classList
.
add
(
'modal__tab__active'
);
}
}
// console.log('modalDidSelectedIndex', index)
let
jxTabView
=
document
.
querySelector
(
'.modal__jx__view'
);
let
pyTabView
=
document
.
querySelector
(
'.modal__py__view'
);
let
jlTabView
=
document
.
querySelector
(
'.modal__jl__view'
);
let
cfTabView
=
document
.
querySelector
(
'.modal__cf__view'
);
let
yearBox
=
document
.
querySelector
(
'.year__box'
);
// console.log('yearBox', yearBox);
yearBox
.
style
.
display
=
'none'
;
jxTabView
.
style
.
display
=
'none'
;
pyTabView
.
style
.
display
=
'none'
;
jlTabView
.
style
.
display
=
'none'
;
cfTabView
.
style
.
display
=
'none'
;
if
(
0
===
index
)
{
jxTabView
.
style
.
display
=
'block'
;
jxTabView
.
scrollTop
=
0
;
}
else
if
(
1
===
index
)
{
pyTabView
.
style
.
display
=
'block'
;
pyTabView
.
scrollTop
=
0
;
// 设置下拉菜单
if
(
appraiseMenu
.
length
>
1
)
{
let
menus
=
``
;
appraiseMenu
.
forEach
((
item
)
=>
{
menus
+=
`<div data-type='
${
index
}
' data-item='
${
item
}
'>
${
item
}
</div>`
;
});
yearBox
.
innerHTML
=
`<div class='seleced_menu'>
${
appraiseMenuSelected
}
</div><div class='year__down'></div>
<div class='dropdown__content'>
${
menus
}
</div>`
;
yearBox
.
style
.
display
=
'inline-block'
;
}
}
else
if
(
2
===
index
)
{
jlTabView
.
style
.
display
=
'block'
;
jlTabView
.
scrollTop
=
0
;
// 设置下拉菜单
if
(
awardMenu
.
length
>
1
)
{
let
menus
=
``
;
awardMenu
.
forEach
((
item
)
=>
{
menus
+=
`<div data-type='
${
index
}
' data-item='
${
item
}
'>
${
item
}
</div>`
;
});
yearBox
.
innerHTML
=
`<div class='seleced_menu'>
${
awardMenuSelected
}
</div><div class='year__down'></div>
<div class='dropdown__content'>
${
menus
}
</div>`
;
yearBox
.
style
.
display
=
'inline-block'
;
}
}
else
if
(
3
===
index
)
{
cfTabView
.
style
.
display
=
'block'
;
cfTabView
.
scrollTop
=
0
;
// 设置下拉菜单
if
(
punishMenu
.
length
>
1
)
{
let
menus
=
``
;
punishMenu
.
forEach
((
item
)
=>
{
menus
+=
`<div data-type='
${
index
}
' data-item='
${
item
}
'>
${
item
}
</div>`
;
});
yearBox
.
innerHTML
=
`<div class='seleced_menu'>
${
punishMenuSelected
}
</div><div class='year__down'></div>
<div class='dropdown__content'>
${
menus
}
</div>`
;
yearBox
.
style
.
display
=
'inline-block'
;
}
}
}
// 弹窗-绩效-标签页
function
modalJXTabView
()
{
let
jxTabView
=
document
.
querySelector
(
'.modal__jx__view'
);
if
(
!
jxTabView
)
{
jxTabView
=
document
.
createElement
(
'div'
);
jxTabView
.
classList
.
add
(
'modal__tab__view'
);
jxTabView
.
classList
.
add
(
'modal__jx__view'
);
let
modalBody
=
document
.
querySelector
(
'.modal__body'
);
modalBody
.
appendChild
(
jxTabView
);
// 设置选中状态
modalBody
.
onclick
=
function
(
e
)
{
let
year
=
e
.
target
.
dataset
.
year
;
if
(
!
year
)
{
return
;
}
performanceSelected
=
year
;
performanceSelectedUpdate
();
};
}
let
sectionHtml
=
``
;
if
(
performanceArr
&&
performanceArr
.
length
)
{
performanceArr
.
forEach
((
item
,
index
)
=>
{
let
subSectionHtml
=
``
;
item
.
children
.
forEach
((
childItem
,
childInde
)
=>
{
subSectionHtml
+=
`<li>
<div class='section__content_month'>
${
childItem
.
asstype
}
</div>
<div class='section__content_grade
${
getGradeColor
(
childItem
.
assgrade
)}
'>
${
childItem
.
assgrade
}
</div>
</li>`
;
});
sectionHtml
+=
`<li>
<div id='performance
${
item
.
assyear
}
' class='section__title' data-year='
${
item
.
assyear
}
'>
<div class='section__title_left' data-year='
${
item
.
assyear
}
'>
<div data-year='
${
item
.
assyear
}
'></div>
<div data-year='
${
item
.
assyear
}
'>
${
item
.
assyear
}
年
</div>
</div>
<div class='section__title_right
${
getGradeColor
(
item
.
assgrade
)}
' data-year='
${
item
.
assyear
}
'>
${
item
.
assgrade
}${
item
.
gradeNumStr
||
''
}
</div>
</div>
<ul>
${
subSectionHtml
}
</ul>
</li>`
;
});
jxTabView
.
innerHTML
=
`<ul>
${
sectionHtml
}
</ul>`
;
}
else
{
jxTabView
.
innerHTML
=
noDataRenderer
();
}
}
function
performanceSelectedUpdate
(
init
)
{
// console.log('performanceSelectedUpdate', init);
if
(
init
)
{
performanceArr
.
forEach
((
item
,
i
)
=>
{
let
section
=
document
.
querySelector
(
`.modal__jx__view>ul>li:nth-child(
${
i
+
1
}
)`
);
let
img
=
section
.
querySelector
(
'.section__title .section__title_left div:first-child'
);
let
subSection
=
section
.
querySelector
(
'ul'
);
subSection
.
style
.
display
=
'none'
;
if
(
img
.
classList
.
contains
(
'icon_02_img'
))
{
img
.
classList
.
remove
(
'icon_02_img'
);
}
if
(
img
.
classList
.
contains
(
'icon_01_img'
))
{
img
.
classList
.
remove
(
'icon_01_img'
);
}
if
(
item
.
children
.
length
>
0
)
{
img
.
classList
.
add
(
'icon_01_img'
);
if
(
item
.
year
==
performanceSelected
)
{
subSection
.
style
.
display
=
'block'
;
img
.
classList
.
remove
(
'icon_01_img'
);
img
.
classList
.
add
(
'icon_02_img'
);
}
}
});
}
else
{
performanceArr
.
forEach
((
item
,
i
)
=>
{
if
(
item
.
year
==
performanceSelected
)
{
let
section
=
document
.
querySelector
(
`.modal__jx__view>ul>li:nth-child(
${
i
+
1
}
)`
);
let
img
=
section
.
querySelector
(
'.section__title .section__title_left div:first-child'
);
// console.log('performanceArr', performanceArr);
if
(
item
.
children
.
length
>
0
)
{
if
(
img
.
classList
.
contains
(
'icon_02_img'
))
{
img
.
classList
.
remove
(
'icon_02_img'
);
img
.
classList
.
add
(
'icon_01_img'
);
}
else
{
img
.
classList
.
remove
(
'icon_01_img'
);
img
.
classList
.
add
(
'icon_02_img'
);
}
}
let
subSection
=
section
.
querySelector
(
'ul'
);
if
(
subSection
.
style
.
display
==
'none'
)
{
subSection
.
style
.
display
=
'block'
;
}
else
{
subSection
.
style
.
display
=
'none'
;
}
}
});
}
}
function
getGradeColor
(
grade
)
{
let
textColor
=
''
;
if
(
grade
&&
(
grade
.
indexOf
(
'良好'
)
!==
-
1
||
grade
.
indexOf
(
'B'
)
!==
-
1
))
{
textColor
=
'grade__greed'
;
}
else
if
(
grade
&&
(
grade
.
indexOf
(
'优秀'
)
!==
-
1
||
grade
.
indexOf
(
'A'
)
!==
-
1
))
{
textColor
=
'grade__red'
;
}
return
textColor
;
}
// 弹窗-评优-标签页
function
modalPYTabView
()
{
let
pyTabView
=
document
.
querySelector
(
'.modal__py__view'
);
if
(
!
pyTabView
)
{
pyTabView
=
document
.
createElement
(
'div'
);
pyTabView
.
classList
.
add
(
'modal__tab__view'
);
pyTabView
.
classList
.
add
(
'modal__py__view'
);
let
modalBody
=
document
.
querySelector
(
'.modal__body'
);
modalBody
.
appendChild
(
pyTabView
);
}
if
(
appraiseArr
.
length
==
0
)
{
pyTabView
.
innerHTML
=
noDataRenderer
();
return
;
}
let
data
=
JSON
.
parse
(
JSON
.
stringify
(
appraiseArr
));
if
(
appraiseMenuSelected
!=
'全部'
)
{
data
=
data
.
filter
((
item
=>
item
.
year
===
appraiseMenuSelected
));
}
let
sectionHtml
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
item
,
index
)
=>
{
let
subSectionHtml
=
``
;
item
.
children
.
forEach
((
childItem
)
=>
{
subSectionHtml
+=
`<li>
<div>
${
childItem
.
content
}
</div>
<div>
${
childItem
.
company
}
</div>
</li>`
;
});
sectionHtml
+=
`<li style='margin-bottom: 15px;'>
<div id='appraise
${
item
.
year
}
' class='section__title' data-index='
${
index
}
' style='padding: 9px 12px;'>
${
item
.
year
}
年
</div>
<ul>
${
subSectionHtml
}
</ul>
</li>`
;
});
}
pyTabView
.
innerHTML
=
`<ul>
${
sectionHtml
}
</ul>`
;
}
// 弹窗-奖励-标签页
function
modalJLTabView
(
index
=
0
)
{
let
jlTabView
=
document
.
querySelector
(
'.modal__jl__view'
);
if
(
!
jlTabView
)
{
jlTabView
=
document
.
createElement
(
'div'
);
jlTabView
.
classList
.
add
(
'modal__tab__view'
);
jlTabView
.
classList
.
add
(
'modal__jl__view'
);
let
modalBody
=
document
.
querySelector
(
'.modal__body'
);
modalBody
.
appendChild
(
jlTabView
);
}
if
(
awardArr
.
length
==
0
)
{
jlTabView
.
innerHTML
=
noDataRenderer
();
return
;
}
let
data
=
JSON
.
parse
(
JSON
.
stringify
(
awardArr
));
if
(
awardMenuSelected
!=
'全部'
)
{
data
=
data
.
filter
((
item
=>
item
.
year
===
awardMenuSelected
));
}
let
sectionHtml
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
itemData
,
index
)
=>
{
let
subSectionHtml
=
``
;
if
(
itemData
.
annualRanking
.
list
.
length
>
0
)
{
let
itemHtml
=
``
;
itemData
.
annualRanking
.
list
.
forEach
((
item
,
index
)
=>
{
itemHtml
+=
`<div style='padding:4px 8px'>
${
item
}
</div>`
;
});
subSectionHtml
+=
`<li>
<div class='rewardpunish__section'><div class='icon__liststyle'></div>
${
itemData
.
annualRanking
.
title
}
</div>
${
itemHtml
}
</li>`
;
}
if
(
itemData
.
annualAward
.
list
.
length
>
0
)
{
let
itemHtml
=
``
;
itemData
.
annualAward
.
list
.
forEach
((
item
,
index
)
=>
{
itemHtml
+=
`<div class='rewardpunish__tiem'>
<div >
<div>
${
itemData
.
year
}${
item
.
awards
}
</div>
<div>
${
item
.
project
}
</div>
</div>
<div>评定单位:
${
item
.
publish
}
</div>
</div>`
;
});
subSectionHtml
+=
`<li>
<div class='rewardpunish__section'><div class='icon__liststyle'></div>
${
itemData
.
annualAward
.
title
}
</div>
${
itemHtml
}
</li>`
;
}
if
(
itemData
.
dailyAward
.
list
.
length
>
0
)
{
let
itemHtml
=
``
;
itemData
.
dailyAward
.
list
.
forEach
((
item
,
index
)
=>
{
itemHtml
+=
`<div class='daily__section'><div class='daily__mark2'></div>
${
item
.
title
}
</div>`
;
if
(
item
.
children
)
{
item
.
children
.
forEach
((
itemChild
)
=>
{
itemHtml
+=
`<div class='daily__item'>
<div>
${
itemChild
.
rewardpunish
}
</div>
<div>
${
itemChild
.
rewardunit
||
''
}
</div>
</div>`
;
});
}
});
subSectionHtml
+=
`<li>
<div class='rewardpunish__section'><div class='icon__liststyle'></div>
${
itemData
.
dailyAward
.
title
}
</div>
${
itemHtml
}
</li>`
;
}
sectionHtml
+=
`<li style='margin-bottom: 15px;'>
<div id='award
${
itemData
.
year
}
' class='section__title' style='padding: 9px 12px;'>
${
itemData
.
year
}
年
</div>
<ul>
${
subSectionHtml
}
</ul>
</li>`
;
});
}
jlTabView
.
innerHTML
=
`<ul>
${
sectionHtml
}
</ul>`
;
}
// 弹窗-处罚-标签页
function
modalCFTabView
()
{
let
cfTabView
=
document
.
querySelector
(
'.modal__cf__view'
);
if
(
!
cfTabView
)
{
cfTabView
=
document
.
createElement
(
'div'
);
cfTabView
.
classList
.
add
(
'modal__tab__view'
);
cfTabView
.
classList
.
add
(
'modal__cf__view'
);
let
modalBody
=
document
.
querySelector
(
'.modal__body'
);
modalBody
.
appendChild
(
cfTabView
);
}
if
(
punishArr
.
length
==
0
)
{
cfTabView
.
innerHTML
=
noDataRenderer
();
return
;
}
let
data
=
JSON
.
parse
(
JSON
.
stringify
(
punishArr
));
if
(
punishMenuSelected
!=
'全部'
)
{
data
=
data
.
filter
((
item
=>
item
.
year
===
punishMenuSelected
));
}
let
sectionHtml
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
itemData
,
index
)
=>
{
let
subSectionHtml
=
``
;
if
(
itemData
.
annualPunish
.
list
.
length
>
0
)
{
let
itemHtml
=
``
;
itemData
.
annualPunish
.
list
.
forEach
((
item
,
index
)
=>
{
itemHtml
+=
`<div class='rewardpunish__tiem'>
<div >
<div>
${
itemData
.
year
}${
item
.
awards
}
</div>
<div>
${
item
.
project
}
</div>
</div>
<div>评定单位:
${
item
.
publish
}
</div>
</div>`
;
});
subSectionHtml
+=
`<li>
<div class='rewardpunish__section'><div class='icon__liststyle'></div>
${
itemData
.
annualPunish
.
title
}
</div>
${
itemHtml
}
</li>`
;
}
if
(
itemData
.
dailyPunish
.
list
.
length
>
0
)
{
let
itemHtml
=
``
;
itemData
.
dailyPunish
.
list
.
forEach
((
item
,
index
)
=>
{
itemHtml
+=
`<div class='daily__section'><div class='daily__mark2'></div>
${
item
.
title
}
</div>`
;
if
(
item
.
children
)
{
item
.
children
.
forEach
((
itemChild
)
=>
{
itemHtml
+=
`<div class='daily__item'>
<div>
${
itemChild
.
rewardpunish
}
</div>
<div>
${
itemChild
.
rewardunit
||
''
}
</div>
</div>`
;
});
}
});
subSectionHtml
+=
`<li>
<div class='rewardpunish__section'><div class='icon__liststyle'></div>
${
itemData
.
dailyPunish
.
title
}
</div>
${
itemHtml
}
</li>`
;
}
sectionHtml
+=
`<li style='margin-bottom: 15px;'>
<div id='punish
${
itemData
.
year
}
' class='section__title' style='padding: 9px 12px;'>
${
itemData
.
year
}
年
</div>
<ul>
${
subSectionHtml
}
</ul>
</li>`
;
});
}
cfTabView
.
innerHTML
=
`<ul>
${
sectionHtml
}
</ul>`
;
}
// 绩效数据分组
function
performanceGroups
(
arr
)
{
let
map
=
{},
dest
=
[];
for
(
var
i
=
0
;
i
<
arr
.
length
;
i
++
)
{
var
ai
=
arr
[
i
];
if
(
!
map
[
ai
.
assyear
])
{
dest
.
push
({
year
:
ai
.
assyear
,
assyear
:
ai
.
assyear
,
children
:
[
ai
]
});
map
[
ai
.
assyear
]
=
ai
;
}
else
{
for
(
var
j
=
0
;
j
<
dest
.
length
;
j
++
)
{
var
dj
=
dest
[
j
];
if
(
dj
.
assyear
==
ai
.
assyear
)
{
dj
.
children
.
push
(
ai
);
break
;
}
}
}
}
dest
=
dest
.
sort
((
a
,
b
)
=>
{
return
b
.
year
-
a
.
year
;
});
// 设置父级字段
dest
.
forEach
((
item
)
=>
{
item
[
'assgrade'
]
=
''
;
item
[
'gradeNumStr'
]
=
''
;
console
.
log
(
item
.
children
);
let
childrenList
=
[...
item
.
children
];
let
tmpList
=
[];
childrenList
.
forEach
((
childItem
,
index
)
=>
{
// console.log(childItem)
if
(
childItem
.
asstype
==
'年度'
)
{
item
[
'assgrade'
]
=
childItem
.
assgrade
;
// 年度子项中不显示
return
;
}
let
month
=
Number
(
childItem
.
assendtime
.
substr
(
5
,
2
));
if
(
childItem
.
asstype
===
'半年度'
)
{
if
(
month
<=
6
)
{
childItem
.
asstype
=
'上半年度'
;
}
else
{
childItem
.
asstype
=
'下半年度'
;
}
}
else
if
(
childItem
.
asstype
===
'季度'
)
{
// console.log(childItem);
if
(
month
<=
3
)
{
childItem
.
asstype
=
'第一季度'
;
}
else
if
(
month
<=
6
)
{
childItem
.
asstype
=
'第二季度'
;
}
else
if
(
month
<=
9
)
{
childItem
.
asstype
=
'第三季度'
;
}
else
{
childItem
.
asstype
=
'第四季度'
;
}
}
else
if
(
childItem
.
asstype
===
'月度'
)
{
childItem
.
asstype
=
`
${
month
}
月`
;
}
tmpList
.
push
(
childItem
);
});
item
.
children
=
tmpList
;
// 统计除年度等级
let
childMap
=
{},
childDest
=
[];
for
(
var
i
=
0
;
i
<
tmpList
.
length
;
i
++
)
{
var
ai
=
childrenList
[
i
];
if
(
!
childMap
[
ai
.
assgrade
])
{
childDest
.
push
({
assgrade
:
ai
.
assgrade
,
assgradenumber
:
Number
(
ai
.
assgradenumber
),
children
:
[
ai
]
});
childMap
[
ai
.
assgrade
]
=
ai
;
}
else
{
for
(
var
j
=
0
;
j
<
childDest
.
length
;
j
++
)
{
var
dj
=
childDest
[
j
];
if
(
dj
.
assgrade
==
ai
.
assgrade
)
{
dj
.
children
.
push
(
ai
);
break
;
}
}
}
}
// console.log('childDest', childDest);
if
(
childDest
.
length
>
0
)
{
childDest
=
childDest
.
sort
((
a
,
b
)
=>
a
.
assgradenumber
-
b
.
assgradenumber
);
let
grades
=
[],
total
=
0
;
childDest
.
forEach
((
item
)
=>
{
total
=
total
+
item
.
children
.
length
;
grades
.
push
(
`
${
item
.
children
.
length
}${
item
.
assgrade
}
`
);
});
item
[
'gradeNumStr'
]
=
`(
${
grades
.
join
(
'、'
)}
/共
${
total
}
次)`
;
}
});
return
dest
;
}
function
appraiseGroups
(
arr
)
{
let
map
=
{},
dest
=
[];
for
(
var
i
=
0
;
i
<
arr
.
length
;
i
++
)
{
var
ai
=
arr
[
i
];
if
(
!
map
[
ai
.
year
])
{
dest
.
push
({
year
:
ai
.
year
,
children
:
[
ai
]
});
map
[
ai
.
year
]
=
ai
;
}
else
{
for
(
var
j
=
0
;
j
<
dest
.
length
;
j
++
)
{
var
dj
=
dest
[
j
];
if
(
dj
.
year
==
ai
.
year
)
{
dj
.
children
.
push
(
ai
);
break
;
}
}
}
}
dest
=
dest
.
sort
((
a
,
b
)
=>
{
return
b
.
year
-
a
.
year
;
});
return
dest
;
}
// 区分:奖励、处罚
function
rewardpunishGroups
(
arr
)
{
if
(
!
arr
||
arr
.
length
==
0
)
{
return
[];
}
arr
.
forEach
(
item
=>
{
// item.spetype === '年度专业排名' || item.spetype === '营运类奖'
if
(
item
.
spetype
.
indexOf
(
'排名'
)
!=
-
1
||
item
.
spetype
.
indexOf
(
'奖'
)
!=
-
1
)
{
item
.
state
=
'奖励'
;
}
else
{
item
.
state
=
'处罚'
;
}
});
let
map
=
{},
dest
=
[];
for
(
var
i
=
0
;
i
<
arr
.
length
;
i
++
)
{
var
ai
=
arr
[
i
];
if
(
!
map
[
ai
.
state
])
{
dest
.
push
({
state
:
ai
.
state
,
children
:
[
ai
]
});
map
[
ai
.
state
]
=
ai
;
}
else
{
for
(
var
j
=
0
;
j
<
dest
.
length
;
j
++
)
{
var
dj
=
dest
[
j
];
if
(
dj
.
state
==
ai
.
state
)
{
dj
.
children
.
push
(
ai
);
break
;
}
}
}
}
return
dest
;
}
// 奖励分组
function
rewardGroups
(
arr
,
flowers
)
{
// 奖励分组
let
map
=
{},
dest
=
[];
for
(
var
i
=
0
;
i
<
arr
.
length
;
i
++
)
{
var
ai
=
arr
[
i
];
if
(
!
map
[
ai
.
year
])
{
dest
.
push
({
year
:
ai
.
year
,
children
:
[
ai
]
});
map
[
ai
.
year
]
=
ai
;
}
else
{
for
(
var
j
=
0
;
j
<
dest
.
length
;
j
++
)
{
var
dj
=
dest
[
j
];
if
(
dj
.
year
==
ai
.
year
)
{
dj
.
children
.
push
(
ai
);
break
;
}
}
}
}
dest
=
dest
.
sort
((
a
,
b
)
=>
{
return
b
.
year
-
a
.
year
;
});
// 营销小红花按年分组
/*
let flowerMap = {},
flowerDest = [];
for (var i = 0; i < flowers.length; i++) {
var ai = flowers[i];
if (!flowerMap[ai.year]) {
flowerDest.push({
year: ai.year,
children: [ai],
});
flowerMap[ai.year] = ai;
} else {
for (var j = 0; j < flowerDest.length; j++) {
var dj = flowerDest[j];
if (dj.year == ai.year) {
dj.children.push(ai);
break;
}
}
}
}
// console.log('flowerDest', flowerDest);
flowerDest.forEach((item) => {
item['amount'] = 0
item.children.forEach((childItem) => {
item['amount'] = item['amount'] + Number(childItem.amount)
})
})
*/
dest
.
forEach
((
item
)
=>
{
item
[
'annualRanking'
]
=
{
title
:
'年度专项排名:'
,
list
:
[]
};
item
[
'annualAward'
]
=
{
title
:
'年度专项奖励:'
,
list
:
[]
};
item
[
'dailyAward'
]
=
{
title
:
'日常专项奖励:'
,
list
:
[]
};
let
dailyArr
=
[];
item
.
children
.
forEach
((
childItem
)
=>
{
// if (Number(childItem.month) == 1) { // 年度
if
(
childItem
.
spetype
.
indexOf
(
'排名'
)
!=
-
1
)
{
item
.
annualRanking
.
list
.
push
(
`·
${
childItem
.
ranking
}
`
);
}
if
(
childItem
.
spetype
.
indexOf
(
'奖'
)
!=
-
1
)
{
// item.annualAward.list.push(`· ${childItem.rewardpunish}`)
item
.
annualAward
.
list
.
push
({
awards
:
childItem
.
rewardpunish
,
//'奖项',
project
:
childItem
.
awardunit
,
// '获奖项目、获奖单位',
publish
:
childItem
.
unit
//'颁奖单位'
});
}
// }
/*
else if (Number(childItem.month) == 2) { // 日常
if (childItem.rewardpunish) {
dailyArr.push(childItem)
}
}
*/
});
/*
flowerDest.forEach((flowerItem) => {
if (item.year == flowerItem.year) {
let flower = {
title: `营销小红花:${flowerItem.amount} 朵<div class="flower"></div>`,
}
item.dailyAward.list.push(flower)
}
})
item.dailyAward.list = item.dailyAward.list.concat(rewardtypeGroups(dailyArr))
*/
});
return
dest
;
}
function
rewardtypeGroups
(
arr
)
{
let
map
=
{},
dest
=
[];
arr
.
forEach
((
item
)
=>
{
item
[
'title'
]
=
item
.
rewardtype
;
});
for
(
var
i
=
0
;
i
<
arr
.
length
;
i
++
)
{
var
ai
=
arr
[
i
];
if
(
!
map
[
ai
.
title
])
{
dest
.
push
({
title
:
ai
.
title
,
rewardsort
:
Number
(
ai
.
rewardsort
),
children
:
[
ai
]
});
map
[
ai
.
title
]
=
ai
;
}
else
{
for
(
var
j
=
0
;
j
<
dest
.
length
;
j
++
)
{
var
dj
=
dest
[
j
];
if
(
dj
.
title
==
ai
.
title
)
{
dj
.
children
.
push
(
ai
);
break
;
}
}
}
}
dest
=
dest
.
sort
((
a
,
b
)
=>
a
.
rewardsort
-
b
.
rewardsort
);
return
dest
;
}
// 处罚分组
function
punishGroups
(
arr
)
{
let
map
=
{},
dest
=
[];
for
(
var
i
=
0
;
i
<
arr
.
length
;
i
++
)
{
var
ai
=
arr
[
i
];
if
(
!
map
[
ai
.
year
])
{
dest
.
push
({
year
:
ai
.
year
,
children
:
[
ai
]
});
map
[
ai
.
year
]
=
ai
;
}
else
{
for
(
var
j
=
0
;
j
<
dest
.
length
;
j
++
)
{
var
dj
=
dest
[
j
];
if
(
dj
.
year
==
ai
.
year
)
{
dj
.
children
.
push
(
ai
);
break
;
}
}
}
}
dest
=
dest
.
sort
((
a
,
b
)
=>
{
return
b
.
year
-
a
.
year
;
});
dest
.
forEach
((
item
)
=>
{
item
[
'annualPunish'
]
=
{
title
:
'年度专项处罚:'
,
list
:
[]
};
item
[
'dailyPunish'
]
=
{
title
:
'日常专项处罚:'
,
list
:
[]
};
let
dailyArr
=
[];
item
.
children
.
forEach
((
childItem
)
=>
{
// if (Number(childItem.month) == 1) { // 年度
if
(
childItem
.
spetype
.
indexOf
(
'罚'
)
!=
-
1
)
{
// item.annualPunish.list.push(`· ${childItem.rewardpunish}`)
item
.
annualPunish
.
list
.
push
({
awards
:
childItem
.
rewardpunish
,
//'奖项',
project
:
childItem
.
awardunit
,
// '获奖项目、获奖单位',
publish
:
childItem
.
unit
//'颁奖单位'
});
}
// }
/*
else if (Number(childItem.month) == 2) { // 日常
if (childItem.rewardpunish) {
dailyArr.push(childItem)
// item.dailyPunish.list.push(`· ${childItem.rewardpunish}`)
}
}
*/
});
item
.
dailyPunish
.
list
=
rewardtypeGroups
(
dailyArr
);
});
return
dest
;
}
function
changeSelect
()
{
let
icon_img
=
document
.
getElementsByClassName
(
'icon_img'
);
for
(
let
i
=
0
;
i
<
icon_img
.
length
;
i
++
)
{
let
clickNode
=
icon_img
[
i
].
nextElementSibling
;
listenerChange
(
icon_img
[
i
],
clickNode
,
i
);
}
}
function
listenerChange
(
target
,
clickNode
,
i
)
{
clickNode
.
addEventListener
(
'click'
,
()
=>
{
let
second_box
=
document
.
getElementsByClassName
(
'second-box'
);
let
sNode
=
second_box
[
i
];
// let wrap_content = document.getElementsByClassName('wrap_content');
if
(
target
.
className
.
indexOf
(
'icon_01_img'
)
>
-
1
)
{
target
.
classList
.
remove
(
'icon_01_img'
);
target
.
classList
.
add
(
'icon_02_img'
);
sNode
.
style
.
display
=
'block'
;
}
else
{
target
.
classList
.
remove
(
'icon_02_img'
);
target
.
classList
.
add
(
'icon_01_img'
);
sNode
.
style
.
display
=
'none'
;
}
eleHideShrinkExtend
();
});
}
function
isImage
(
ext
)
{
return
[
'png'
,
'jpg'
,
'jpeg'
,
'bmp'
,
'gif'
,
'webp'
,
'psd'
,
'svg'
,
'tiff'
].
indexOf
(
ext
.
toLowerCase
())
!==
-
1
;
}
//渲染附件图标
function
renderFileIcon
(
fileName
)
{
//获取最后一个.的位置
const
index
=
fileName
.
lastIndexOf
(
'.'
);
console
.
log
(
'. index>>'
,
index
);
//获取后缀
const
ext
=
fileName
.
substr
(
index
+
1
);
console
.
log
(
'附件后缀>>'
,
ext
);
if
(
ext
.
includes
(
'pdf'
))
{
return
`<img class='file-icon' src='
${
require
(
'@/assets/images/pdf.png'
)}
' alt=''/>`
;
}
else
if
(
ext
.
includes
(
'xls'
))
{
return
`<img class='file-icon' src='
${
require
(
'@/assets/images/excel.png'
)}
' alt=''/>`
;
}
else
if
(
ext
.
includes
(
'doc'
))
{
return
`<img class='file-icon' src='
${
require
(
'@/assets/images/word.png'
)}
' alt=''/>`
;
}
else
if
(
isImage
(
ext
))
{
return
`<img class='file-icon' src='
${
require
(
'@/assets/images/img.png'
)}
' alt=''/>`
;
}
else
{
return
`<img class='file-icon' src='
${
require
(
'@/assets/images/attachment.png'
)}
' alt=''/>`
;
}
}
//渲染文件名称
function
renderFileName
(
attachmentName
)
{
const
index
=
attachmentName
.
lastIndexOf
(
'.'
);
console
.
log
(
'attachmentFile.substring(0,index)>>'
,
index
,
attachmentName
,
attachmentName
.
substring
(
0
,
index
));
return
index
!==
-
1
?
attachmentName
.
substring
(
0
,
index
)
:
attachmentName
;
}
//干部测评渲染
/**
* @description 干部测评渲染
* @param {*} list 渲染配置项 来自common.js
* @param {*} data 数据
*
*
* */
function
listGRenderer
(
list
,
data
)
{
let
temp
=
``
;
if
(
data
&&
data
.
length
)
{
let
cadreFile
=
[];
data
.
forEach
((
item
,
index
)
=>
{
let
note
=
list
.
note
;
let
chil
=
list
.
chilkey
;
let
children
=
item
[
list
.
children
];
//附件
let
halfArr
=
item
.
halfArr
;
// 有附件或有半年度
if
((
chil
instanceof
Array
&&
children
)
||
(
halfArr
&&
halfArr
.
length
))
{
let
childrenHtml
=
``
;
// 文件名称排序
let
sortChildren
=
children
?
children
.
sort
((
a
,
b
)
=>
{
return
a
[
list
.
chilkey
[
0
]
].
localeCompare
(
b
[
list
.
chilkey
[
0
]
]);
})
:
[];
sortChildren
.
forEach
((
items
)
=>
{
childrenHtml
+=
itemRenderer
(
`<span class="file_link">
${
renderFileIcon
(
items
[
list
.
chilkey
[
1
]
])}
${
renderFileName
(
items
[
list
.
chilkey
[
0
]
])}
</span>`
,
''
,
'children_content'
);
cadreFile
.
push
(
items
[
list
.
chilkey
[
1
]
]);
});
// 半年度
if
(
halfArr
)
{
halfArr
.
forEach
((
items
)
=>
{
childrenHtml
+=
itemRenderer
(
`· 半年度`
,
`<span class="item__content-note t-black half_value">
${
items
.
result
||
''
}
</span>`
,
'children_content half_content'
);
// 半年度文件名称排序
let
halfattAchmentArray
=
items
.
attachmentArray
||
[];
let
sortChildren
=
halfattAchmentArray
.
sort
((
a
,
b
)
=>
{
return
a
[
list
.
chilkey
[
0
]
].
localeCompare
(
b
[
list
.
chilkey
[
0
]
]);
});
sortChildren
.
forEach
((
items
)
=>
{
childrenHtml
+=
itemRenderer
(
`<span class="file_link">
${
renderFileIcon
(
items
[
list
.
chilkey
[
1
]
])}
${
renderFileName
(
items
[
list
.
chilkey
[
0
]
])}
</span>`
,
''
,
'children_content half_content'
);
cadreFile
.
push
(
items
[
list
.
chilkey
[
1
]
]);
});
});
}
temp
+=
itemRenderer
(
`
${
item
[
list
.
title
]}
年`
,
`<span class="item__content-note t-black ">
${
item
[
note
]
||
''
}
</span>`
,
`
${
childrenHtml
?
'has-children text-left'
:
'text-left'
}
`
);
if
(
childrenHtml
)
{
temp
+=
`<div class="children_box">
${
childrenHtml
}
</div>`
;
}
}
else
{
temp
+=
itemRenderer
(
`
${
item
[
list
.
title
]}
年`
,
`<span class="item__content-note t-black">
${
item
[
note
]}
</span>`
);
}
});
cadreFileList
=
cadreFile
;
}
else
{
temp
=
noDataRenderer
();
}
return
renderWrap
(
temp
,
data
.
length
>
3
);
}
function
addFileEvent
()
{
console
.
log
(
'xxx'
);
let
file_note
=
document
.
getElementsByClassName
(
'file_link'
);
// console.log('assFileList>>', assFileList)
for
(
let
i
=
0
;
i
<
file_note
.
length
;
i
++
)
{
registerEvent
(
file_note
[
i
],
cadreFileList
[
i
]);
}
}
function
addAssFileEvent
()
{
console
.
log
(
'--------------------------'
);
let
file_note
=
document
.
getElementsByClassName
(
'ass_file_link'
);
console
.
log
(
'assFileList>>'
,
assFileList
);
for
(
let
i
=
0
;
i
<
file_note
.
length
;
i
++
)
{
registerEvent
(
file_note
[
i
],
assFileList
[
i
]);
}
}
//预览pdf
function
registerEvent
(
clickNode
,
data
)
{
clickNode
.
addEventListener
(
'click'
,
()
=>
{
// console.log('registerEvent--data>>', data)
const
fileName
=
data
.
split
(
'?'
)[
1
]
||
''
;
const
index
=
fileName
.
lastIndexOf
(
'.'
);
console
.
log
(
'. index>>'
,
index
);
//获取后缀
const
fileType
=
fileName
.
substr
(
index
+
1
);
console
.
log
(
'fileType>>'
,
fileType
);
console
.
log
(
'orgType>>'
,
orgType
);
let
apiCode
=
'hr.resume.attachmentInfoV'
;
switch
(
orgType
)
{
case
'1'
:
// 房开
apiCode
=
'hr.resume.attachmentInfoV'
;
break
;
case
'6'
:
// 物业
apiCode
=
'wyhr.resume.attachmentInfoV'
;
break
;
case
'4'
:
// 合诚
apiCode
=
'hchr.resume.attachmentInfoV'
;
break
;
}
const
url
=
`
${
configuration
.
baseUrl
}
mas/proxy?alias=
${
apiCode
}
&
${
fileName
}
&tocken=
${
$mas
.
token
}
`
;
console
.
log
(
'url>>'
,
url
);
// if (fileType === 'pdf') {
// app.showPdf([{url}])
// } else {
// app.openUrl(url)
// }
if
(
fileType
===
'pdf'
)
{
app
.
showPdf
([{
url
}]);
}
else
if
(
fileType
.
includes
(
'xls'
)
||
fileType
.
includes
(
'doc'
))
{
console
.
log
(
'run>>>> xls,doc'
);
// app.openUrl(`https://view.officeapps.live.com/op/view.aspx?src=${url}`)
window
.
location
.
href
=
url
;
}
else
if
(
fileType
===
'txt'
)
{
app
.
showTxt
([{
url
}]);
}
else
{
console
.
log
(
'run>>> else-----'
);
app
.
openUrl
(
url
);
}
});
}
//绩效考核渲染 员工考核
function
listDRenderer
(
list
,
data
)
{
// console.log('绩效', {list,data})
//旧版绩效
// console.log('月度渲染>>', { list, data })
let
temp
=
``
;
if
(
data
&&
data
.
length
)
{
assFileList
=
[];
data
.
forEach
((
item
,
index
)
=>
{
let
sub
=
''
;
let
note
=
list
.
note
;
// console.log('propertyListDRenderer',list);
// if (list.subTitle) {
// list.subTitle.forEach((s, i) => {
// sub += (i && '|') || '';
// sub += item[s] || '无';
// });
// }
// if (note instanceof Object && note.length) {
// let t1 = data[index][list.note[0]];
// let t2 = data[index][list.note[1]];
// temp += itemRenderer(
// `${
// item[list.title]
// }<p class="item__content-sub-title">${sub}</p>`,
// `<span class="item__content-note">${t1}至${nowOrNot(
// t2
// )}</span>`
// );
// } else {
// temp += itemRenderer(
// `${item[list.title]}年`,
// `<span class="item__content-note">${item[note]}</span>`
// );
// }
//新增月度数据
temp
+=
itemRenderer
(
`
${
item
[
list
.
title
]}
年`
,
`<span class='item__content-note t-black'>
${
item
[
note
]}
</span>`
,
`
${(
item
.
months
&&
item
.
months
.
length
)
||
(
item
.
attachmentArray
&&
item
.
attachmentArray
.
length
)
?
'has-children text-left'
:
'text-left'
}
`
);
if
((
item
.
months
&&
item
.
months
.
length
)
||
(
item
.
attachmentArray
&&
item
.
attachmentArray
.
length
))
{
temp
+=
'<div class="children_box">'
;
if
(
item
.
attachmentArray
&&
item
.
attachmentArray
.
length
)
{
let
sortChildren
=
item
.
attachmentArray
.
sort
((
a
,
b
)
=>
{
return
a
.
attachmentName
.
localeCompare
(
b
.
attachmentName
);
});
console
.
log
(
'jx-sortChildren>>>'
,
sortChildren
);
sortChildren
.
forEach
((
items
)
=>
{
temp
+=
itemRenderer
(
`<span class='ass_file_link' data-url='
${
items
.
attachmentFile
}
'>
${
renderFileIcon
(
items
.
attachmentFile
)}${
renderFileName
(
items
.
attachmentName
)}
</span>`
,
''
,
'children_content'
);
assFileList
.
push
(
items
.
attachmentFile
);
});
}
if
(
item
.
months
&&
item
.
months
.
length
)
{
item
.
months
.
forEach
((
itemM
,
indexM
)
=>
{
temp
+=
itemRenderer
(
`<span class='child_row_title_dot'>·</span><span>
${
itemM
.
month
}
</span>`
,
`<span class='item__content-note'>
${
itemM
.
assgrade
}
</span>`
,
'text-left'
);
});
}
temp
+=
'</div>'
;
}
});
}
else
{
temp
=
noDataRenderer
();
}
return
renderWrap
(
temp
,
data
.
length
>
3
);
// 新版
// let temp = ``;
// if (data && data.length) {
// data.forEach((item, index) => {
// temp +=
// `<div>
// <div class="frist-row flex-between">
// <div class="flex-row">
// ${item.children.length>0? `<div class="icon_img ${index==0?'icon_02_img':'icon_01_img'}"></div>`:''}
// <div>${item.assyear}</div>
// </div>
// <div>${item.assgrade}</div>
// </div>`
// temp += `<div class="second-box ${index==0?'box-block':'box-none'}">`
// item.children && item.children.forEach((item1) => {
// temp +=
// `<div class="second-row flex-between">
// <div class="flex-start">
// <div class="title-text">${item1.asstype}</div>
// </div>
// <div>${item1.assgrade}</div>
// </div>`
// // item1.children&&item1.children.forEach((item2)=>{
// // temp +=
// // `<div class="third-row flex-between">
// // <div class="flex-start">
// // <div class="title-text"><span class="dot-icon">·</span>${item2[list.title]}</div>
// // </div>
// // <div>${item2[list.note]}</div>
// // </div>`
// // })
// })
// temp += `</div>`
// temp += `</div>`
//
// });
// } else {
// temp = noDataRenderer();
// }
//
// return renderWrap(temp, data.length > 3);
}
// 物业
function
propertyListARenderer
(
list
,
data
,
extra
=
''
)
{
let
temp
=
document
.
createElement
(
'div'
);
temp
.
classList
.
add
(
'item__wrap'
);
for
(
let
name
in
list
)
{
let
value
;
let
title
;
if
(
list
[
name
]
instanceof
Object
)
{
if
(
name
.
indexOf
(
'&'
)
!==
-
1
)
{
let
names
=
name
.
split
(
'&'
);
title
=
`
${
data
[
names
[
0
]
]
||
'未知'
}
-
${
data
[
names
[
1
]
]
||
'未知'
}
`
;
}
else
{
title
=
data
[
name
];
}
let
t1
=
data
[
list
[
name
][
0
]
];
let
t2
=
data
[
list
[
name
][
1
]
];
value
=
`
${
t1
}
至
${
nowOrNot
(
t2
)}
`
;
}
else
{
title
=
list
[
name
];
value
=
data
[
name
];
}
temp
.
innerHTML
+=
propertyItemRenderer
(
title
||
'未知'
,
value
||
'无'
,
'light'
);
}
return
temp
;
}
function
propertyListBRenderer
(
list
,
data
)
{
let
temp
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
item
,
index
)
=>
{
let
sub
=
''
;
let
note
=
list
.
note
;
if
(
list
.
subTitle
)
{
list
.
subTitle
.
forEach
((
s
,
i
)
=>
{
sub
+=
(
i
&&
'|'
)
||
''
;
sub
+=
item
[
s
]
||
'无'
;
});
}
if
(
note
instanceof
Object
&&
note
.
length
)
{
let
t1
=
data
[
index
][
list
.
note
[
0
]
];
let
t2
=
data
[
index
][
list
.
note
[
1
]
];
temp
+=
`<div class='item_main'><div class='item__content work'>
${
item
[
list
.
title
]
||
'无'
}
</div>`
+
propertyItemRenderer
(
`<p class='item__content-sub-title'>
${
sub
}
</p>`
,
`<p class='item__content-note'>
${
t1
}
至
${
nowOrNot
(
t2
)}
</p>`
)
+
`</div>`
;
}
else
{
temp
+=
propertyItemRenderer
(
`
${
item
[
list
.
title
]
}
<p class='item__content-sub-title'>
${
sub
}
</p>`
,
`<p class='item__content-note'>
${
item
[
note
]}
</p>`
);
}
});
}
else
{
temp
=
noDataRenderer
();
}
return
renderWrap
(
temp
,
data
.
length
>
3
);
}
function
propertyListCRenderer
(
list
,
data
)
{
let
temp
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
item
,
index
)
=>
{
let
sub
=
''
;
list
.
subTitle
.
forEach
((
s
,
i
)
=>
{
switch
(
i
)
{
case
1
:
sub
+=
(
i
&&
' | '
)
||
''
;
if
(
item
[
s
]
===
'无'
||
!
item
[
s
])
{
item
[
s
]
=
'无学历'
;
}
sub
+=
item
[
s
];
break
;
case
2
:
sub
+=
(
i
&&
' | '
)
||
''
;
if
(
item
[
s
]
===
'无'
||
!
item
[
s
])
{
sub
+=
'无学位'
;
}
else
{
sub
+=
item
[
s
];
}
break
;
default
:
sub
+=
(
i
&&
' | '
)
||
''
;
sub
+=
item
[
s
]
||
'无'
;
break
;
}
});
temp
+=
propertyItemRenderer
(
`
${
item
[
list
.
title
]}
<p class='item__content-sub-title'>
${
sub
}
</p><p class='item__content-sub-title'>毕业于
${
item
[
list
.
note
]
}
</p>`
,
''
,
'edu long-title '
);
});
}
else
{
temp
=
noDataRenderer
();
}
return
renderWrap
(
temp
,
data
.
length
>
3
);
}
function
propertyListDRenderer
(
list
,
data
)
{
// console.log('奇怪的',data,list)
let
temp
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
item
,
index
)
=>
{
let
sub
=
''
;
let
note
=
list
.
note
;
// console.log('propertyListDRenderer',list);
if
(
list
.
subTitle
)
{
list
.
subTitle
.
forEach
((
s
,
i
)
=>
{
sub
+=
(
i
&&
'|'
)
||
''
;
sub
+=
item
[
s
]
||
'无'
;
});
}
if
(
note
instanceof
Object
&&
note
.
length
)
{
let
t1
=
data
[
index
][
list
.
note
[
0
]
];
let
t2
=
data
[
index
][
list
.
note
[
1
]
];
temp
+=
propertyItemRenderer
(
`
${
item
[
list
.
title
]
}
<p class='item__content-sub-title'>
${
sub
}
</p>`
,
`<span class='item__content-note'>
${
t1
}
至
${
nowOrNot
(
t2
)}
</span>`
);
}
else
{
temp
+=
propertyItemRenderer
(
`
${
item
[
list
.
title
]}
年`
,
`<span class='item__content-note'>
${
item
[
note
]}
</span>`
);
}
});
}
else
{
temp
=
noDataRenderer
();
}
return
renderWrap
(
temp
,
data
.
length
>
3
);
}
function
propertyListERenderer
(
list
,
data
)
{
let
temp
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
item
,
index
)
=>
{
let
sub
=
''
;
list
.
subTitle
.
forEach
((
s
,
i
)
=>
{
sub
+=
`<p class='item__content-sub-title'>
${
list
.
subTitleName
[
i
]}
:
${
item
[
s
]}
</p>`
;
});
temp
+=
propertyItemRenderer
(
`
${
item
[
list
.
title
]}
|
${
item
[
list
.
title1
]
}
<span style='float: right;padding-right:16px'>
${
item
[
list
.
title2
]
}
</span>
${
sub
}
`
,
''
,
'edu long-title '
);
});
}
else
{
temp
=
noDataRenderer
();
}
return
renderWrap
(
temp
,
data
.
length
>
3
);
}
function
propertyListFRenderer
(
list
,
data
)
{
let
temp
=
``
;
if
(
data
&&
data
.
length
)
{
data
.
forEach
((
item
,
index
)
=>
{
temp
+=
propertyItemRenderer
(
`
${
item
[
list
.
title
]
}
<span style='float: right;padding-right:16px'>
${
item
[
list
.
title1
]
}
</span>
<p class='item__content-sub-title'>
${
item
[
list
.
subTitle
]
}
<span style='float: right;padding-right:12px'>
${
item
[
list
.
subTitle1
]
}
年度</span></p>`
,
''
,
'edu long-title '
);
});
}
else
{
temp
=
noDataRenderer
();
}
return
renderWrap
(
temp
,
data
.
length
>
3
);
}
function
noDataRenderer
()
{
return
`<div class='item__content empty'>暂无数据</div>`
;
}
function
renderNoWrap
(
content
,
needExpand
)
{
console
.
log
(
23143214
,
needExpand
);
let
wrap
=
document
.
createElement
(
'div'
);
let
wrap_content
=
document
.
createElement
(
'div'
);
wrap
.
classList
.
add
(
'item__wrap'
);
wrap_content
.
classList
.
add
(
'wrap_content_shrink'
);
wrap_content
.
innerHTML
=
content
;
wrap
.
appendChild
(
wrap_content
);
if
(
needExpand
)
{
let
ctrl
=
document
.
createElement
(
'div'
);
ctrl
.
id
=
Math
.
random
();
ctrl
.
classList
.
add
(
'item__content'
);
ctrl
.
classList
.
add
(
'item__content-clickable'
);
ctrl
.
innerHTML
=
`<span class='item__wrap-control-icon'>`
;
wrap
.
appendChild
(
ctrl
);
}
return
wrap
;
}
function
renderWrap
(
content
,
needExpand
)
{
let
wrap
=
document
.
createElement
(
'div'
);
let
wrap_content
=
document
.
createElement
(
'div'
);
wrap
.
classList
.
add
(
'item__wrap'
);
wrap_content
.
classList
.
add
(
'wrap_content'
);
wrap_content
.
innerHTML
=
content
;
wrap
.
appendChild
(
wrap_content
);
if
(
needExpand
)
{
let
ctrl
=
document
.
createElement
(
'div'
);
ctrl
.
id
=
Math
.
random
();
ctrl
.
classList
.
add
(
'item__content'
);
ctrl
.
classList
.
add
(
'item__content-clickable'
);
ctrl
.
innerHTML
=
`<span class='item__wrap-control-icon'>`
;
wrap
.
appendChild
(
ctrl
);
}
return
wrap
;
}
function
renderPhoto
()
{
items
=
[];
let
img
=
photo
.
querySelector
(
'img'
);
let
item
=
{
src
:
photoUrl
,
w
:
img
.
naturalWidth
,
h
:
img
.
naturalHeight
};
img
.
src
=
photoUrl
;
img
.
onload
=
function
()
{
item
.
w
=
img
.
naturalWidth
;
item
.
h
=
img
.
naturalHeight
;
};
items
.
push
(
item
);
}
const
toast
=
document
.
getElementById
(
'toast'
);
const
toastContent
=
toast
.
querySelector
(
'.toast-content'
);
let
toastShow
=
false
;
function
showToast
(
txt
)
{
toastContent
.
innerHTML
=
txt
;
toast
.
classList
.
add
(
'toast_show'
);
if
(
toastShow
)
{
clearTimeout
(
toastShow
);
}
toastShow
=
setTimeout
(()
=>
{
toast
.
classList
.
remove
(
'toast_show'
);
},
2000
);
}
function
attachAtivated
(
element
)
{
let
els
=
(
typeof
element
===
'string'
&&
document
.
querySelectorAll
(
element
))
||
[
element
];
Array
.
from
(
els
).
forEach
(
el
=>
{
el
.
addEventListener
(
'touchstart'
,
function
()
{
this
.
classList
.
add
(
'activated'
);
});
el
.
addEventListener
(
'touchmove'
,
function
()
{
this
.
classList
.
remove
(
'activated'
);
});
el
.
addEventListener
(
'touchend'
,
function
()
{
this
.
classList
.
remove
(
'activated'
);
});
});
}
function
getDateFormat
(
date
)
{
// let year = now.getFullYear(); // 得到年份
// let month = now.getMonth(); // 得到月份
// let date = now.getDate(); // 得到日期
}
// 重新过滤数据
function
filterData
(
item
,
data
,
isAssessNew
)
{
let
assessData
=
data
;
// 处理绩效异常
if
(
item
===
'assessVoList'
)
{
if
(
isAssessNew
)
{
// 物业是用新版绩效
if
(
data
.
length
===
0
)
{
assessData
=
''
;
}
else
{
for
(
let
i
=
0
;
i
<
assessData
.
length
;
i
++
)
{
if
(
!
assessData
[
i
].
assgrade
)
{
assessData
=
''
;
break
;
}
}
}
}
else
{
// 旧版绩效
if
(
data
.
length
===
0
)
{
assessData
=
[];
}
else
{
for
(
let
i
=
0
;
i
<
assessData
.
length
;
i
++
)
{
if
(
!
assessData
[
i
].
assgrade
)
{
assessData
[
i
].
assgrade
=
''
;
break
;
}
}
let
templist
=
[];
let
sumList
=
[];
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
const
index
=
templist
.
indexOf
(
data
[
i
].
assyear
);
let
_assyear
=
data
[
i
].
asstype
;
// if(data[i].asstype==="半年度"){
// if(data[i].assendtime.substring(5,10)==="06-30"){
// _assyear='上半年度'
// }
// } else if(data[i].asstype==="月度"){
// if(data[i].assendtime.substring(5,10)==="01-31"){
// _assyear='1月'
// }
// } else if(data[i].asstype==="季度"){
// if(data[i].assendtime.substring(5,10)==="03-31"){
// _assyear='第一季度'
// }
// }
// if (index < 0) { //不存在
// templist.push(data[i].assyear)
// if(data[i].asstype==="年度"){
// sumList.push({ assyear: data[i].assyear,assgrade:data[i].assgrade, children: [] })
// }else {
// sumList.push({ assyear: _assyear,assgrade:data[i].assgrade, children: [{...data[i],asstype: _assyear}] })
//
// }
//
// } else {
// if(data[i].asstype==="年度"){
// sumList[index].assgrade=data[i].assgrade
// sumList[index].assyear=data[i].assyear
// } else {
// sumList[index].children.push({...data[i],asstype: _assyear})
// }
// }
}
// assessData = sumList
// 处理月度数据
let
obj
=
{};
assessData
.
forEach
(
item
=>
{
if
(
!
obj
[
item
.
assyear
])
{
obj
[
item
.
assyear
]
=
[];
}
if
(
item
.
asstype
===
'月度'
)
{
item
.
month
=
Number
(
item
.
assendtime
.
substring
(
5
,
7
))
+
'月'
;
item
.
monthNum
=
Number
(
item
.
assendtime
.
substring
(
5
,
7
));
obj
[
item
.
assyear
].
push
(
item
);
}
});
assessData
=
data
.
filter
(
i
=>
i
.
asstype
===
'年度'
);
let
objKeys
=
Object
.
keys
(
obj
);
let
dataYears
=
assessData
.
map
(
item
=>
item
.
assyear
);
let
noYearData
=
[];
// let noYearData = {}
if
(
objKeys
.
length
!==
assessData
.
length
)
{
// noYearData = {assyear: objKeys.find(item => !dataYears.includes(item)), assgrade: ''}
//兼容多条没有年度数据的情况
for
(
let
i
=
0
;
i
<
objKeys
.
length
;
i
++
)
{
if
(
!
dataYears
.
includes
(
objKeys
[
i
]))
{
noYearData
.
push
({
assyear
:
objKeys
[
i
],
assgrade
:
''
});
}
}
}
// if (noYearData.assyear) {
if
(
noYearData
.
length
)
{
// assessData.unshift(noYearData)
assessData
=
noYearData
.
concat
(
assessData
);
assessData
.
sort
((
a
,
b
)
=>
{
return
b
.
assyear
-
a
.
assyear
;
});
}
assessData
.
forEach
(
item
=>
{
item
.
months
=
obj
[
item
.
assyear
];
});
//月份升序
assessData
.
forEach
(
item
=>
{
if
(
item
.
months
&&
item
.
months
.
length
)
{
item
.
months
.
sort
((
a
,
b
)
=>
{
return
a
.
monthNum
-
b
.
monthNum
;
});
}
});
}
}
}
//处理干部考核半年度数据
if
(
item
===
'cadreEvaluationVoList'
)
{
let
arr
=
[];
console
.
log
(
'干部考核数据处理 前>>'
,
assessData
);
// 将数据按 先半年度再年度的顺序排序
assessData
.
map
(
i
=>
{
if
(
i
.
checkTypeName
===
'半年度'
)
{
i
.
timeTemp
=
new
Date
(
i
.
year
,
5
,
1
).
getTime
();
console
.
log
(
'半年度 timeTemp>>'
,
i
.
timeTemp
);
}
else
if
(
i
.
checkTypeName
===
'年度'
)
{
i
.
timeTemp
=
new
Date
(
i
.
year
,
11
,
1
).
getTime
();
console
.
log
(
'年度 timeTemp>>'
,
i
.
timeTemp
);
}
return
i
;
});
assessData
.
sort
((
a
,
b
)
=>
b
.
timeTemp
-
a
.
timeTemp
);
//降序
console
.
log
(
'干部考核数据处理 后>>'
,
assessData
);
assessData
.
forEach
(
item
=>
{
if
(
item
.
checkTypeName
===
'年度'
)
{
arr
.
push
({
...
item
,
halfArr
:
[]
});
}
else
if
(
item
.
checkTypeName
===
'半年度'
)
{
let
idx
=
arr
.
findIndex
(
i
=>
item
.
year
===
i
.
year
);
if
(
idx
===
-
1
)
{
//只有半年度数据没有年度数据
arr
.
push
({
// ...item,
checkTypeName
:
'年度'
,
year
:
item
.
year
,
result
:
''
,
halfArr
:
[
item
]
});
}
else
{
arr
[
idx
].
halfArr
.
push
(
item
);
}
}
});
assessData
=
arr
;
}
return
assessData
;
}
function
eleHide
()
{
let
wrap_content
=
document
.
getElementsByClassName
(
'wrap_content'
);
console
.
log
(
'wrap_content>>'
,
wrap_content
);
for
(
let
i
=
0
;
i
<
wrap_content
.
length
;
i
++
)
{
if
(
wrap_content
[
i
].
childNodes
.
length
>
3
)
{
let
clickNode
=
wrap_content
[
i
].
nextElementSibling
;
wrapContent
(
wrap_content
[
i
],
clickNode
);
}
}
}
function
eleHideChil
()
{
console
.
log
(
'eleHideChil>>>'
);
let
wrap_box
=
document
.
getElementsByClassName
(
'children_box'
);
let
hasChildrenEle
=
document
.
getElementsByClassName
(
'has-children'
);
for
(
let
i
=
0
;
i
<
wrap_box
.
length
;
i
++
)
{
let
clickNode
=
hasChildrenEle
[
i
];
wrapContentChil
(
wrap_box
[
i
],
clickNode
);
}
console
.
log
(
'eleHideChil>>>'
);
}
function
wrapContentChil
(
target
,
clickNode
,
num
=
0
)
{
let
offsetHeight
=
target
.
offsetHeight
;
let
item
=
target
.
childNodes
;
let
allHeight
=
target
.
offsetHeight
+
'px'
;
let
showEleHeight
=
0
;
for
(
let
i
=
0
;
i
<
num
;
i
++
)
{
showEleHeight
+=
item
[
i
].
offsetHeight
;
if
(
i
===
num
-
1
)
{
showEleHeight
+=
'px'
;
}
}
target
.
style
.
height
=
showEleHeight
;
target
.
style
.
transitionDuration
=
offsetHeight
/
150
+
's'
;
clickNode
&&
clickNode
.
addEventListener
(
'click'
,
()
=>
{
if
(
target
.
style
.
height
==
showEleHeight
||
target
.
style
.
height
==
(
showEleHeight
+
'px'
))
{
target
.
classList
.
add
(
'expand'
);
target
.
style
.
height
=
allHeight
;
clickNode
.
classList
.
add
(
'expand'
);
target
.
parentNode
.
style
.
height
=
(
target
.
parentNode
.
offsetHeight
+
offsetHeight
)
+
'px'
;
}
else
{
target
.
style
.
height
=
showEleHeight
;
target
.
classList
.
remove
(
'expand'
);
clickNode
.
classList
.
remove
(
'expand'
);
target
.
parentNode
.
style
.
height
=
(
target
.
parentNode
.
offsetHeight
-
offsetHeight
)
+
'px'
;
}
});
attachAtivated
(
clickNode
);
}
function
eleHideShrink
(
type
)
{
let
wrap_content_shrink
=
document
.
getElementsByClassName
(
'wrap_content_shrink'
);
for
(
let
i
=
0
;
i
<
wrap_content_shrink
.
length
;
i
++
)
{
if
(
wrap_content_shrink
[
i
].
childNodes
.
length
>
3
)
{
let
clickNode
=
wrap_content_shrink
[
i
].
nextElementSibling
;
wrapContentShrink
(
wrap_content_shrink
[
i
],
clickNode
,
type
);
}
}
}
function
wrapContent
(
target
,
clickNode
,
num
=
3
)
{
console
.
log
(
'wrapContent'
);
let
item
=
target
.
childNodes
;
let
allHeight
=
target
.
offsetHeight
+
'px'
;
let
showEleHeight
=
0
;
for
(
let
i
=
0
;
i
<
num
;
i
++
)
{
showEleHeight
+=
item
[
i
].
offsetHeight
;
if
(
i
===
num
-
1
)
{
showEleHeight
+=
'px'
;
}
}
target
.
style
.
height
=
showEleHeight
;
target
.
style
.
transitionDuration
=
target
.
offsetHeight
/
150
+
's'
;
clickNode
.
addEventListener
(
'click'
,
()
=>
{
if
(
target
.
style
.
height
==
showEleHeight
)
{
target
.
parentNode
.
classList
.
add
(
'expand'
);
target
.
style
.
height
=
allHeight
;
}
else
{
target
.
style
.
height
=
showEleHeight
;
target
.
parentNode
.
classList
.
remove
(
'expand'
);
}
});
attachAtivated
(
clickNode
);
}
function
wrapContentShrink
(
target
,
clickNode
,
type
,
num
=
3
)
{
console
.
log
(
535656
);
let
item
=
target
.
childNodes
;
let
showEleHeight
=
0
;
for
(
let
i
=
0
;
i
<
num
;
i
++
)
{
showEleHeight
+=
item
[
i
].
offsetHeight
;
if
(
i
===
num
-
1
)
{
showEleHeight
+=
'px'
;
}
}
if
(
target
.
parentNode
.
className
.
indexOf
(
'expand'
)
>
-
1
)
{
target
.
parentNode
.
classList
.
remove
(
'expand'
);
target
.
style
.
height
=
showEleHeight
;
}
else
{
target
.
style
.
height
=
showEleHeight
;
}
target
.
style
.
transitionDuration
=
target
.
offsetHeight
/
150
+
's'
;
clickNode
.
addEventListener
(
'click'
,
()
=>
{
console
.
log
(
4555
,
target
.
style
.
height
);
if
(
target
.
parentNode
.
className
.
indexOf
(
'expand'
)
===
-
1
)
{
target
.
parentNode
.
classList
.
toggle
(
'expand'
);
target
.
style
=
''
;
}
else
{
target
.
style
.
height
=
'150px'
;
target
.
parentNode
.
classList
.
toggle
(
'expand'
);
}
});
attachAtivated
(
clickNode
);
}
function
eleHideShrinkExtend
()
{
let
wrap_content_shrink
=
document
.
getElementsByClassName
(
'wrap_content_shrink'
);
for
(
let
i
=
0
;
i
<
wrap_content_shrink
.
length
;
i
++
)
{
if
(
wrap_content_shrink
[
i
].
childNodes
.
length
>
3
)
{
let
clickNode
=
wrap_content_shrink
[
i
];
wrapContentExtend
(
wrap_content_shrink
[
i
],
clickNode
);
}
}
}
function
wrapContentExtend
(
target
,
clickNode
,
num
=
3
)
{
let
item
=
target
.
childNodes
;
let
allHeight
=
target
.
offsetHeight
+
'px'
;
let
showEleHeight
=
0
;
for
(
let
i
=
0
;
i
<
num
;
i
++
)
{
showEleHeight
+=
item
[
i
].
offsetHeight
;
if
(
i
===
num
-
1
)
{
showEleHeight
+=
'px'
;
}
}
console
.
log
(
555
,
target
.
style
.
height
,
showEleHeight
,
target
.
parentNode
.
className
.
indexOf
(
'expand'
));
if
(
target
.
parentNode
.
className
.
indexOf
(
'expand'
)
>
-
1
)
{
target
.
parentNode
.
classList
.
remove
(
'expand'
);
target
.
style
.
height
=
showEleHeight
;
}
else
{
target
.
style
.
height
=
showEleHeight
;
}
target
.
style
.
transitionDuration
=
target
.
offsetHeight
/
150
+
's'
;
}
let
scroller
=
null
;
let
Selector
=
''
;
function
createIScroller
()
{
Selector
=
'.ygjx_table_box'
;
scroller
=
new
IScroll
(
Selector
,
{
preventDefault
:
false
,
// 阻止浏览器滑动默认行为
probeType
:
3
,
//需要使用 iscroll-probe.js 才能生效 probeType : 1 滚动不繁忙的时候触发 probeType : 2 滚动时每隔一定时间触发 probeType : 3 每滚动一像素触发一次
mouseWheel
:
true
,
//是否监听鼠标滚轮事件。
scrollX
:
true
,
// 启动x轴滑动
scrollY
:
true
,
// 启���y轴滑动
// momentum: false,
lockDirection
:
false
,
snap
:
false
,
//自动分割容器,用于制作走马灯效果等。Options.snap:true// 根据容器尺寸自动分割
//snapSpeed: 400,
scrollbars
:
false
,
//是否显示默认滚动条
freeScroll
:
true
,
//主要在上下左右滚动都生效时使用,可以向任意方向滚动。
deceleration
:
0.0001
,
//滚动动量减速越大越快,建议不大于 0.01,默认:0.0006
disableMouse
:
true
,
//是否关闭鼠标事件探测。如知道运行在哪个平台,可以开启它来加速。
disablePointer
:
true
,
//是否关闭指针事件探测。如知道运行在哪个平台,可以开启它来加速。
disableTouch
:
false
,
//是否关闭触摸事件探测。如知道运行在哪个平台,可以开启它来加速。
eventPassthrough
:
false
,
//使用 IScroll 的横轴滚动时,如想使用系统立轴滚动并在横轴上生效,请开启。
bounce
:
false
//是否启用弹力动画效果,关掉可以加速
});
scroller
.
on
(
'scroll'
,
updatePosition
);
scroller
.
on
(
'scrollEnd'
,
updatePosition
);
scroller
.
on
(
'beforeScrollStart'
,
function
()
{
scroller
.
refresh
();
});
function
updatePosition
()
{
let
frozenCols
=
document
.
querySelectorAll
(
Selector
+
' table tr td.cols'
);
for
(
let
i
=
0
;
i
<
frozenCols
.
length
;
i
++
)
{
frozenCols
[
i
].
style
.
transform
=
'translate('
+
-
1
*
this
.
x
+
'px, 0px) translateZ(0px)'
;
}
}
// return scroller;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment