|
// ==UserScript== |
|
// @name 日報入力支援スクリプト |
|
// @namespace https://gist.github.com/yoshida-mediba/9fae47389e1fdff297b8 |
|
// @version 0.15 |
|
// @match http://192.168.1.20/ip_web/scripts/NP010320.aspx?* |
|
// @match http://192.168.1.20/ip_web/scripts/NP010430.aspx?* |
|
// @match http://192.168.1.20/ip_web/scripts/NP010215.aspx?* |
|
// @match http://192.168.1.58/XGweb/* |
|
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js |
|
// @require http://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js |
|
// @grant GM_getValue |
|
// @grant GM_setValue |
|
// ==/UserScript== |
|
|
|
if (window.location.href.indexOf('http://192.168.1.58/XGweb/login.asp') === 0) { |
|
$("head").append('<link rel="stylesheet" type="text/css" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.min.css" >'); |
|
$("body").append('<div id=dialog style=display:none><table width=100%>' + |
|
'<tr>' + |
|
'<td>id:</td><td><input type=text id=id size=15 /></td>' + |
|
'</tr><tr>' + |
|
'<td>pass:</td><td><input type=text id=pass size=15 /></td>' + |
|
'</tr>' + |
|
'</table></div>'); |
|
login = GM_getValue('login'); |
|
|
|
//パスワードまちがえた時はコレを使う |
|
//login = false; |
|
|
|
if (!login) { |
|
// 初回アクセスでパスワードをブラウザに保存する |
|
$('#dialog').dialog({ |
|
title: "IDを入力", |
|
buttons: { |
|
"OK": function() { |
|
$(this).dialog( "close" ); |
|
login = { |
|
id: $('#id').val(), |
|
pass: $('#pass').val(), |
|
}; |
|
GM_setValue('login', JSON.stringify(login)); |
|
alert('IDを保存しました。リロードしてください。'); |
|
}, |
|
}, |
|
}); |
|
} else { |
|
login = JSON.parse(login); |
|
$('input[name=LoginID]').val(login.id); |
|
$('input[name=PassWord]').val(login.pass); |
|
NewPassWordEnter(document.frmLOGIN); |
|
} |
|
} else if (window.location.href.indexOf('http://192.168.1.58/XGweb/Login.asp') === 0) { |
|
login = GM_getValue('login'); |
|
login = JSON.parse(login); |
|
$('input[name=NewPassWord]').val(login.pass); |
|
$('input[name=ConfirmPassWord]').val(login.pass); |
|
PassWordRegister(document.frmLOGIN); |
|
} else if (window.location.href.indexOf('http://192.168.1.58/XGweb/') === 0) { |
|
// TimeProから勤務時間をブラウザに保存 |
|
year = $('#CmbYM option:selected').val().substr(0, 4); |
|
count = 0; |
|
days = $($($('.ap_table').children()[3]).find('td')[3]).text().split('.')[0]; |
|
$('.ap_tr_base').each(function(){ |
|
if ($($(this).children()[0]).text().indexOf('/') == 2) { |
|
if ($($(this).children()[13]).text() != '----') { |
|
time = { |
|
in: $.trim($($(this).children()[5]).text().substr(1)), |
|
out: $.trim($($(this).children()[7]).text().substr(1)), |
|
launch: $($(this).children()[13]).text(), |
|
}; |
|
GM_setValue(year + $($(this).children()[0]).text().split('/')[0] + $($(this).children()[0]).text().split('/')[1], JSON.stringify(time)); |
|
count ++; |
|
} |
|
} |
|
}).promise().done(function(){ |
|
if (count > 0) { |
|
alert('出勤' + days + '日のうち' + count + '日分の勤務時間を保存しました。日報入力に進んでください。'); |
|
} |
|
}); |
|
} else if (window.location.href.indexOf('http://192.168.1.20/ip_web/scripts/NP010215.aspx') === 0) { |
|
var form_month = $('#Form1 > table:nth-child(43) > tbody > tr > td:nth-child(2)').text().split('/'); |
|
var project_code = GM_getValue(form_month[0] + form_month[1]); |
|
if (project_code) { |
|
project_code = JSON.parse(project_code); |
|
} else { |
|
project_code = [ |
|
{mp: '', ratio: ''}, |
|
{mp: '', ratio: ''}, |
|
{mp: '', ratio: ''}, |
|
{mp: '', ratio: ''}, |
|
]; |
|
} |
|
|
|
$("head").append('<link rel="stylesheet" type="text/css" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.min.css" >'); |
|
$("body").append('<div id="dialog" style="display:none;"><table width="100%">' + |
|
'<tr>' + |
|
'<td>MP:</td><td><input type=text id=mp1 size=15 value="'+project_code[0].mp+'" placeholder="XX-00000000" /></td>' + |
|
'</tr><tr>' + |
|
'<td>割合:</td><td><input type=text id=ratio1 size=5 value="'+project_code[0].ratio+'" placeholder="100" /></td>' + |
|
'</tr><tr>' + |
|
'<td>MP:</td><td><input type=text id=mp2 size=15 value="'+project_code[1].mp+'" /></td>' + |
|
'</tr><tr>' + |
|
'<td>割合:</td><td><input type=text id=ratio2 size=5 value="'+project_code[1].ratio+'" /></td>' + |
|
'</tr><tr>' + |
|
'<td>MP:</td><td><input type=text id=mp3 size=15 value="'+project_code[2].mp+'" /></td>' + |
|
'</tr><tr>' + |
|
'<td>割合:</td><td><input type=text id=ratio3 size=5 value="'+project_code[2].ratio+'" /></td>' + |
|
'</tr><tr>' + |
|
'<td>MP:</td><td><input type=text id=mp4 size=15 value="'+project_code[3].mp+'" /></td>' + |
|
'</tr><tr>' + |
|
'<td>割合:</td><td><input type=text id=ratio4 size=5 value="'+project_code[3].ratio+'" /></td>' + |
|
'</tr>' + |
|
'</table></div>'); |
|
|
|
// 初回アクセスでMPをブラウザに保存する |
|
$('#dialog').dialog({ |
|
title: form_month[1] + "月のMPを入力", |
|
resizable: false, |
|
position: {at: "top"}, |
|
buttons: { |
|
"OK": function() { |
|
$(this).dialog( "close" ); |
|
project_code = [ |
|
{mp: $('#mp1').val(), ratio: $('#ratio1').val()}, |
|
{mp: $('#mp2').val(), ratio: $('#ratio2').val()}, |
|
{mp: $('#mp3').val(), ratio: $('#ratio3').val()}, |
|
{mp: $('#mp4').val(), ratio: $('#ratio4').val()}, |
|
]; |
|
GM_setValue(form_month[0] + form_month[1], JSON.stringify(project_code)); |
|
alert('MPを保存しました。'); |
|
}, |
|
}, |
|
}); |
|
} else if (window.location.href.indexOf('http://192.168.1.20/ip_web/scripts/NP010320.aspx') === 0) { |
|
// 作業日 |
|
var form_date = $($('#txtKaishiJikan').parent().parent().siblings().first().children()[1]).text().split('/'); |
|
var project_code = GM_getValue(form_date[0] + form_date[1]); |
|
|
|
if (project_code) { |
|
project_code = JSON.parse(project_code); |
|
|
|
GoukeiJikan = $.trim($('#txtKaishiJikan').parent().parent().text().split(':')[5]); |
|
if ($('#txtKaishiJikan').val() !== '' && $('#txtShuryoJikan').val() !== '' && $('#txtKyukeiJikan').val() !== '' && GoukeiJikan) { |
|
select = project_code[$('#btnTsuika').parent().next().next().next().find('.MeisaiBgColor.FontSizeMeisai').length + $('#btnTsuika').parent().next().next().next().find('.MeisaiBgColorGuuSuu.FontSizeMeisai').length]; |
|
if (select.mp && select.mp.split('-').length >= 2) { |
|
// MP番号 |
|
$('#txtProNo1').val(select.mp.split('-')[0]); |
|
$('#txtProNo2').val(select.mp.split('-')[1]); |
|
if (select.mp.split('-').length > 2) { |
|
$('#txtProEdaNo').val(select.mp.split('-')[2]); |
|
} else { |
|
$('#txtProEdaNo').val(''); |
|
} |
|
$('#txtProName').val(''); |
|
|
|
// 合計作業時間 |
|
SumJikan = $('#btnTsuika').parent().next().next().next().next().next().find('.MeisaiBgColor.FontSizeMeisai').text(); |
|
SumMinute = SumJikan.split(':')[0] * 60 + parseInt(SumJikan.split(':')[1]); |
|
|
|
// 作業時間 (切り上げ) |
|
GoukeiMinute = GoukeiJikan.split(':')[0] * 60 + parseInt(GoukeiJikan.split(':')[1]); |
|
MpMinute = Math.ceil(GoukeiMinute / 100 * select.ratio); |
|
|
|
if (GoukeiMinute === 0) { |
|
$('#btnTouroku').click(); |
|
} else { |
|
// 作業時間 (合計して多い分を精算) |
|
GapMinute = MpMinute + SumMinute - GoukeiMinute; |
|
if (GapMinute > 0) { |
|
MpMinute -= GapMinute; |
|
} |
|
MpJikan = Math.floor(MpMinute/60) + ':' + ('0' + MpMinute%60).substr(-2); |
|
$('#txtSagyoJikan ').val(MpJikan); |
|
$('#btnTsuika').click(); |
|
} |
|
} else { |
|
$('#btnTouroku').click(); |
|
} |
|
} else { |
|
// TimeProの勤務時間を入力 |
|
time = GM_getValue(form_date[0]+form_date[1]+form_date[2]); |
|
if (time) { |
|
time = JSON.parse(time); |
|
$('#txtKaishiJikan').val(time.in); |
|
$('#txtShuryoJikan').val(time.out); |
|
$('#txtKyukeiJikan').val(time.launch); |
|
$('#btnCalcJitsudouJikan').click(); |
|
} |
|
} |
|
} |
|
} else if (window.location.href.indexOf('http://192.168.1.20/ip_web/scripts/NP010430.aspx') === 0) { |
|
$('#btnOK').click(); |
|
} |