ken_nogi/pleasanter/develop/外構・解体工事営業手当申請/sites/scripts/01_メインスクリプト.js
Kenichiro NOGI 88a402ce0f up
2026-07-10 18:13:30 +09:00

204 lines
6.1 KiB
JavaScript

let pageLoading = 0;
let apiKey = '6504c8a807677a3a576e10327f3c19876c55736ee45d4a845796b9e7f5e087bfd4bd0d8184863da8cf1733ca635111432ab334aea59102b06a96ee6d2c05190d';
let mssData;
window.addEventListener('load', function () {
if (pageLoading == 0) {
console.log('load Event');
onLoad();
}
});
$p.events.on_editor_load = function () {
if (pageLoading == 1) {
console.log('on Editor Load');
onLoad();
}
}
function onLoad() {
pageLoading = 1;
//MSSデータ取得ボタンを追加
if ($('#Results_Status').text() === '新規登録' || $('#Results_Status').text() === '差戻し') {
$p.getMSSdataButton();
}
//各種項目にコメントを追加
columnsComments('Class001', '#900');
columnsComments('Class002', '#900');
columnsComments('Class003', '#900');
columnsComments('Class004', '#900');
columnsComments('Class005', '#900');
columnsComments('NumA', '#009');
columnsComments('DateA', '#009');
//添付ファイル入力欄にコメントを追加
attachmentComments('AttachmentsA', '#009');
attachmentComments('AttachmentsB', '#009');
}
//添付ファイル入力欄にコメントを追加する汎用関数
function attachmentComments(attach, color) {
let comments = '';
//説明欄にコメントがある場合、追加
if ($('#Results_' + attach + 'Field>div.field-control').attr('title')) {
comments = $('#Results_' + attach + 'Field>div.field-control').attr('title');
}
if (comments) {
let div1 = document.createElement('div');
div1.innerHTML = comments;
div1.style.marginLeft = '121px';
div1.style.fontWeight = 'bold';
div1.style.color = color;
//位置調整とコメント追加
$('#Results_' + attach + 'Field').append(div1);
$('#Results_' + attach + 'Field').css('margin-bottom', '10px');
}
}
function columnsComments(column, color) {
let comments = '';
//説明欄にコメントがある場合、追加
if ($('#Results_' + column + 'Field>div.field-control').attr('title')) {
comments = $('#Results_' + column + 'Field>div.field-control').attr('title');
}
let div1 = document.createElement('div');
div1.innerHTML = comments;
div1.style.marginLeft = '121px';
div1.style.fontWeight = 'bold';
div1.style.color = color;
//位置調整とコメント追加
$('#Results_' + column + 'Field').append(div1);
if ($('#Results_' + column + 'Field').hasClass('field-normal')) {
$('#Results_' + column + 'Field').css('margin-bottom', '15px');
}
if ($('#Results_' + column + 'Field').hasClass('field-wide')) {
$('#Results_' + column + 'Field').css('margin-bottom', '0px');
}
}
$p.getMSSdataButton = function () {
if ($('#getMSSdataButton').length) {
return;
}
let button = document.createElement("button");
button.id = 'getMSSdataButton';
button.type = "button";
button.innerHTML = "MSSデータ取得";
button.setAttribute('onclick', '$p.ex.getMSSdata()');
button.style.margin = '3px';
button.style.float = 'left';
$('#Results_ClassB').after(button);
$('#getMSSdataButton').button({
icon: 'ui-icon-document'
});
}
$p.ex.getMSSdata = async function () {
let mssRecordId = $('#Results_ClassB').val();
if (mssRecordId == '') {
return;
}
//MSSテーブルからレコードを取得
const getUrl = 'https://' + location.hostname + '/pleasanter/api/items/' + mssRecordId + '/get';
const getJson = {
'ApiVersion': 1.1,
'ApiKey': apiKey,
}
const getRes = await fetch(getUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(getJson)
});
const getResData = await getRes.json();
console.log(getResData);
if (getResData.StatusCode != 200) {
$p.ex.setMyMessage('status-red', 'MSSデータの取得に失敗しました。');
return;
}
if (getResData.Response.TotalCount != 1) {
$p.ex.setMyMessage('status-yellow', 'MSSデータが見つかりません。契約コードを確認してください。');
return;
}
let mssData = getResData.Response.Data[0];
//契約コード、施主名
$p.set($('#Results_ClassC'), mssData.ClassHash.ClassA);
$p.set($('#Results_ClassD'), mssData.ClassHash.ClassQ);
//完成引渡日
$p.set($('#Results_DateA'), $p.ex.dateToString(mssData.DateHash.DateQ));
//所長 Results_ClassY
//役員 Results_Class122
$p.set($('#Results_Class001'), mssData.ClassHash.ClassY);
$p.set($('#Results_Class003'), mssData.ClassHash.Class122);
$p.ex.setMyMessage('status-blue', 'MSSからデータを取得しました。');
}
//メッセージ追加表示
$p.ex.setMyMessage = function (cssColor = 'alert-success', message, clear = 1) {
//クリアが指定されていたら事前にメッセージ消去
clear && $p.clearMessage();
$p.setMessage('#Message', JSON.stringify({
Css: 'alert-success ' + cssColor,
Text: message
}));
}
$p.ex.dateToString = function (date) {
if (date == null || date == '' || date == '1899-12-30T00:00:00') {
return '';
}
let dateString = date.split('T')[0];
let dateVar = new Date(dateString);
let year = dateVar.getFullYear();
let month = (dateVar.getMonth() + 1);
let day = dateVar.getDate();
return year + '/' + month + '/' + day;
}
$p.on('change', 'Class001', function () {
if ($('#Results_Class001').val() != '') {
$p.set($('#Results_Class021'), JSON.stringify([$('#Results_Class001').val()]));
} else {
$p.set($('#Results_Class021'), '')
}
});
$p.on('change', 'Class003', function () {
if ($('#Results_Class003').val() != '') {
$p.set($('#Results_Class022'), JSON.stringify([$('#Results_Class003').val()]));
} else {
$p.set($('#Results_Class022'), '')
}
});
$p.on('change', 'Class004', function () {
if ($('#Results_Class004').val() != '') {
$p.set($('#Results_Class023'), JSON.stringify([$('#Results_Class004').val()]));
} else {
$p.set($('#Results_Class023'), '')
}
});