Commit a189bf53 by 钟乾明

u: 优化开发环境配置

parent d460e8cf
This diff could not be displayed because it is too large.
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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment