Skip to content

Instantly share code, notes, and snippets.

@yoshida-mediba
Last active July 31, 2017 01:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yoshida-mediba/9fae47389e1fdff297b8 to your computer and use it in GitHub Desktop.
Save yoshida-mediba/9fae47389e1fdff297b8 to your computer and use it in GitHub Desktop.
日報入力支援スクリプト

インストール

  1. TamperMonkeyをインストール
  2. nippo_supporter.user.jsにアクセスしてインストール

つかいかた

  1. http://192.168.1.58/XGweb/login.asp から「就業週報・月報」を開く
  2. http://192.168.1.20/ip_web/scripts/MN000000.aspx から日報入力をする
  3. 月毎にMP割合を聞かれるので入力をする
  4. 色々入力をサポートしてくれる

FAQ

質問
つかいかた通りに行かない URL間違ってる、IPベースでやってください。
なんかおかしな事になって止まらない Tampermonkeyから無効にしたらOK。
// ==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();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment