代码拉取完成,页面将自动刷新
// eval(localStorage.getItem('script'));
// 脚本直接保存在本地localStorage中,直接获取即可执行
// function addEventListenerOnce(element, event, handler) {
// // 检查是否已有该事件的监听器
// let onceListeners = element.onceListeners || (element.onceListeners = {});
// if (onceListeners[event] && onceListeners[event].includes(handler)) {
// // 已有该监听器,不添加
// return;
// }
// // 添加事件监听器
// onceListeners[event] = (onceListeners[event] || []).concat(handler);
// element.addEventListener(event, handler);
// }
// coding统计工时
const init = ()=>{
const ele = document.getElementsByClassName('loose-2a4uXKpBtr')[0];
const list = ele.parentNode.children;
const codes = [] //获取全部任务code请求使用
const listTimes = []
// const today = new Date();
// const year = today.getFullYear();
// const month = String(today.getMonth() + 1).padStart(2, '0');
// const day = String(today.getDate()).padStart(2, '0');
const customDay = '' //可以行修改计算某一天工时2024-01-19
// const todayText = customDay || `${year}-${month}-${day}` //未自定义默认今天
// 以上是获取当前
// 以下是自动获取选择的后日期
const timeEle = document.getElementsByClassName('date-value-show ')[0];
const todayText =customDay || timeEle.innerText
// 先打开详情
let fileStatusList = [];
for (let i = 0; i < list.length; i++) {
const fileStatus = list[i].getElementsByClassName('custom-label-3Nlo6ZvxmG')[0].innerText;
// console.log('fileStatus',fileStatus)
if(fileStatus !== '已完成'){
fileStatusList.push(fileStatus)
}
const Litem = list[i].children[0].children[0].children[0].children[0].childNodes[1];
codes.push(Litem.textContent)
}
let num = 0
codes.forEach(code=>{
// 这里更改项目需要修改,直接复制接口hour-records地址
fetch(`https://g-ylwd7395.coding.net/api/project/12260839/issues/${code}/hour-records`, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => {
num++
listTimes.push(data.data)
if(num === codes.length){
// console.log('全部完成',listTimes)
countTime(listTimes ,todayText,num,fileStatusList)
}
})
.catch(error => console.error('Error:', error));
})
}
const countTime = (listTimes,todayText,num,fileStatusList)=>{
let timeSum = 0
listTimes.forEach(item=>{
item.forEach(time=>{
// 获取工时日志的登记工时,判断是不是今天
const registrationTime = time.startAt.slice(0, 10);
// 登记时间 和 当前时间比较 计算今天登记工时
if(registrationTime == todayText){
timeSum+=time.recordHours
}
})
})
// 获取数据成功提示
console.log(
'%c %s %c %s',
'border: 1px solid white;border-radius: 5px ;padding: 2px 5px;color: white;background-color: #147af7;',
`日期:${todayText} coding任务统计`,
'border: 1px solid white;border-radius: 5px ;padding: 2px 5px;color: white;background-color: #147af7;',
`抓取 ${num} 条任务数据`,
);
// 任务关闭状态
if(fileStatusList.length){
console.log(
'%c %s %c %s',
'border: 1px solid white;border-radius: 5px ;padding: 2px 5px;color: white;background-color: #ff8000;',
`当前 ${fileStatusList.length} 个任务未完成`,
'border: 1px solid white;border-radius: 5px ;padding: 2px 5px;color: white;background-color: #ff8000;',
`及时处理 后期任务请忽略`,
);
}
// 工时统计
if(timeSum == 8){
console.log(
'%c %s %c %s',
'border: 1px solid white;border-radius: 5px ;padding: 2px 5px;color: white;background-color: green;',
`当前日期登记工时 ${timeSum} 小时`,
'border: 1px solid white;border-radius: 5px ;padding: 2px 5px;color: white;background-color: green;',
`正常 `,
);
}else if(timeSum < 8){
console.log(
'%c %s %c %s',
'border: 1px solid white;border-radius: 5px ;padding: 2px 5px;color: white;background-color: red;',
`当前日期登记工时 ${timeSum} 小时,缺少 ${8-timeSum} 小时`,
'border: 1px solid white;border-radius: 5px ;padding: 2px 5px;color: white;background-color: red;',
`不足 ` ,
);
}else {
console.log(
'%c %s %c %s',
'border: 1px solid white;border-radius: 5px ;padding: 2px 5px;color: white;background-color: #ff8000;',
`当前日期登记工时 ${timeSum} 小时`,
'border: 1px solid white;border-radius: 5px ;padding: 2px 5px;color: white;background-color: #ff8000;',
`超出 `,
);
}
}
document.addEventListener('dblclick', init);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。