ken_nogi/pleasanter/develop/新・着工要因プリザンター化/Scripts/01_変更履歴.js
Kenichiro NOGI 88a402ce0f up
2026-07-10 18:13:30 +09:00

528 lines
21 KiB
JavaScript

let pageLoading = 0;
let apiKey = '6504c8a807677a3a576e10327f3c19876c55736ee45d4a845796b9e7f5e087bfd4bd0d8184863da8cf1733ca635111432ab334aea59102b06a96ee6d2c05190d';
//----------------------------------------------------------------------
//初期処理
window.addEventListener('load', function () {
if (pageLoading == 0) {
console.log('Window load Event');
$p.ex.onLoad();
}
});
$p.events.on_editor_load = function () {
if (pageLoading == 0) {
console.log('on Editor Load');
$p.ex.onLoad();
}
}
//----------------------------------------------------------------------
$p.ex.onLoad = function () {
//ロード開始
pageLoading = 1;
//初期処理
$p.ex.init();
}
$p.ex.init = function () {
//コメント削除ボタン非表示
$('p[data-action="DeleteComment"]').hide();
//自身のデータを取得
$p.ex.getMyData();
//日付の色分け
$p.ex.checkDate();
//MSSデータ取得ボタン生成
$p.getMSSdataButton();
//カレンダー生成
$p.ex.createCalendarTable();
}
$p.events.after_set = function (args) {
//初期処理
$p.ex.init();
}
let myData;
$p.ex.getMyData = function () {
let thisId = $p.id();
$p.apiGet({
'id': thisId,
'data': {
'ApiVersion': 1.1,
'ApiKey': apiKey,
},
'async': false,
'done': function (data) {
myData = data.Response.Data[0];
},
'fail': function (data) {
console.log(data);
}
});
}
//----------------------------------------------------------------------
//入力チェック前処理
$p.events.before_validate = function (args) {
let jizenList = getCheckedLabelsInSectionFields44();
if (jizenList.length > 0) {
let jizenText = jizenList.join(', ');
$p.set($('#Results_DescriptionD'), jizenText);
} else {
$p.set($('#Results_DescriptionD'), 'なし');
}
//着工可能日と着工枠チェック
/*
let dateZ = $('#Results_DateZ').val();
let classZ = $('#Results_ClassZ').val();
if (dateZ != '' && classZ == '') {
$p.ex.setMyMessage('status-red', '着工枠が登録されていません。着工枠テーブルでデータを追加してください。');
return false;
}
*/
}
//入力チェック後処理
$p.events.after_validate = function (args) {
//変更履歴の保存
$p.ex.saveHistory();
}
$p.ex.checkDate = function () {
let dateItems = {
"敷地測量": { "予定": "Results_Date011", "実績": "Results_Date111" },
"SR案内": { "予定": "Results_Date012", "実績": "Results_Date112" },
"図確引継": { "予定": "Results_Date013", "実績": "Results_Date113" },
"省エネ説明": { "予定": "Results_Date014", "実績": "Results_Date114" },
"取出有無業者連絡": { "予定": "Results_Date015", "実績": "Results_Date115" },
"一次エネ設備決": { "予定": "Results_Date016", "実績": "Results_Date116" },
"仕様打完了": { "予定": "Results_Date017", "実績": "Results_Date117" },
"4者承認図前": { "予定": "Results_Date018", "実績": "Results_Date118" },
"承認図14日前": { "予定": "Results_Date019", "実績": "Results_Date119" },
"ゼロエミ承認": { "予定": "Results_Date020", "実績": "Results_Date120" },
"着工金入金": { "予定": "Results_Date021", "実績": "Results_Date121" },
"融資事前相談": { "予定": "Results_Date022", "実績": "Results_Date122" },
"融資申込": { "予定": "Results_Date023", "実績": "Results_Date123" },
"融資承認銀行": { "予定": "Results_Date024", "実績": "Results_Date124" },
"土地契約": { "予定": "Results_Date025", "実績": "Results_Date125" },
"土地残金": { "予定": "Results_Date026", "実績": "Results_Date126" },
"残金後謄本": { "予定": "Results_Date027", "実績": "Results_Date127" },
"引越し": { "予定": "Results_Date028", "実績": "Results_Date128" },
"解体工事着手": { "予定": "Results_Date029", "実績": "Results_Date129" },
"解体工事完了": { "予定": "Results_Date030", "実績": "Results_Date130" },
"造成": { "予定": "Results_Date031", "実績": "Results_Date131" },
"境界杭完了": { "予定": "Results_Date032", "実績": "Results_Date132" },
"地耐力調査": { "予定": "Results_Date033", "実績": "Results_Date133" },
"地祭": { "予定": "Results_Date034", "実績": "Results_Date134" },
"構造計算有無完了日": { "予定": "Results_Date035", "実績": "Results_Date135" },
"伏図チェック": { "予定": "Results_Date036", "実績": "Results_Date136" },
"プレカット確定": { "予定": "Results_Date037", "実績": "Results_Date137" },
"事前提出": { "予定": "Results_Date038", "実績": "Results_Date138" },
"事前決裁": { "予定": "Results_Date039", "実績": "Results_Date139" },
"確認提出": { "予定": "Results_Date040", "実績": "Results_Date140" },
"確認決裁": { "予定": "Results_Date041", "実績": "Results_Date141" },
"長期提出確認書": { "予定": "Results_Date042", "実績": "Results_Date142" },
"長期行政提出": { "予定": "Results_Date043", "実績": "Results_Date143" },
"保険登録": { "予定": "Results_Date044", "実績": "Results_Date144" },
"地盤改良着手": { "予定": "Results_Date045", "実績": "Results_Date145" },
"上棟金入金": { "予定": "Results_Date046", "実績": "Results_Date146" },
"本契覚書承認日": { "予定": "Results_Date047", "実績": "Results_Date147" },
"着工可能日": { "予定": "Results_Date048", "実績": "Results_Date148" }
}
$.each(dateItems, function (key, val) {
let plannedDate = $('#' + val['予定']).val();
let actualDate = $('#' + val['実績']).val();
if (plannedDate != '' && actualDate != '') {
$('#' + val['予定']).addClass('dateGrey');
$('#' + val['実績']).addClass('dateGrey');
} else {
if (plannedDate == '') {
$('#' + val['予定']).addClass('dateYellow');
} else {
$('#' + val['予定']).addClass('dateBlue');
}
if (actualDate == '') {
if (plannedDate != '') {
$('#' + val['実績']).addClass('dateRed');
} else {
$('#' + val['実績']).addClass('dateYellow');
}
} else {
$('#' + val['実績']).addClass('dateBlue');
}
}
});
}
//変更内容を保存
$p.ex.saveHistory = function () {
let history = '';
let count = 0;
//履歴に表示しない項目リスト
let excludeList = ['Results_Timestamp'];
let dateNameList = {
"Results_Date011": "敷地測量 予定",
"Results_Date012": "SR案内 予定",
"Results_Date013": "図確引継 予定",
"Results_Date014": "省エネ説明 予定",
"Results_Date015": "取出有無業者連絡 予定",
"Results_Date016": "一次エネ設備決 予定",
"Results_Date017": "仕様打完了 予定",
"Results_Date018": "4者承認図前 予定",
"Results_Date019": "承認図14日前 予定",
"Results_Date020": "ゼロエミ承認 予定",
"Results_Date021": "着工金入金 予定",
"Results_Date022": "融資事前相談 予定",
"Results_Date023": "融資申込 予定",
"Results_Date024": "融資承認銀行 予定",
"Results_Date025": "土地契約 予定",
"Results_Date026": "土地残金 予定",
"Results_Date027": "残金後謄本 予定",
"Results_Date028": "引越し 予定",
"Results_Date029": "解体工事着手 予定",
"Results_Date030": "解体工事完了 予定",
"Results_Date031": "造成 予定",
"Results_Date032": "境界杭完了 予定",
"Results_Date033": "地耐力調査 予定",
"Results_Date034": "地祭 予定",
"Results_Date035": "構造計算有無完了日 予定",
"Results_Date036": "伏図チェック 予定",
"Results_Date037": "プレカット確定 予定",
"Results_Date038": "事前提出 予定",
"Results_Date039": "事前決裁 予定",
"Results_Date040": "確認提出 予定",
"Results_Date041": "確認決裁 予定",
"Results_Date042": "長期提出確認書 予定",
"Results_Date043": "長期行政提出 予定",
"Results_Date044": "保険登録 予定",
"Results_Date045": "地盤改良着手 予定",
"Results_Date046": "上棟金入金 予定",
"Results_Date047": "本契覚書承認日 予定",
"Results_Date048": "着工可能日 契約時",
"Results_Date111": "敷地測量 実績",
"Results_Date112": "SR案内 実績",
"Results_Date113": "図確引継 実績",
"Results_Date114": "省エネ説明 実績",
"Results_Date115": "取出有無業者連絡 実績",
"Results_Date116": "一次エネ設備決 実績",
"Results_Date117": "仕様打完了 実績",
"Results_Date118": "4者承認図前 実績",
"Results_Date119": "承認図14日前 実績",
"Results_Date120": "ゼロエミ承認 実績",
"Results_Date121": "着工金入金 実績",
"Results_Date122": "融資事前相談 実績",
"Results_Date123": "融資申込 実績",
"Results_Date124": "融資承認銀行 実績",
"Results_Date125": "土地契約 実績",
"Results_Date126": "土地残金 実績",
"Results_Date127": "残金後謄本 実績",
"Results_Date128": "引越し 実績",
"Results_Date129": "解体工事着手 実績",
"Results_Date130": "解体工事完了 実績",
"Results_Date131": "造成 実績",
"Results_Date132": "境界杭完了 実績",
"Results_Date133": "地耐力調査 実績",
"Results_Date134": "地祭 実績",
"Results_Date135": "構造計算有無完了日 実績",
"Results_Date136": "伏図チェック 実績",
"Results_Date137": "プレカット確定 実績",
"Results_Date138": "事前提出 実績",
"Results_Date139": "事前決裁 実績",
"Results_Date140": "確認提出 実績",
"Results_Date141": "確認決裁 実績",
"Results_Date142": "長期提出確認書 実績",
"Results_Date143": "長期行政提出 実績",
"Results_Date144": "保険登録 実績",
"Results_Date145": "地盤改良着手 実績",
"Results_Date146": "上棟金入金 実績",
"Results_Date147": "本契覚書承認日 実績",
"Results_Date148": "着工可能日 可能日",
"Results_Class011": "敷地測量 備考",
"Results_Class012": "SR案内 備考",
"Results_Class013": "図確引継 備考",
"Results_Class014": "省エネ説明 備考",
"Results_Class015": "取出有無業者連絡 備考",
"Results_Class016": "一次エネ設備決 備考",
"Results_Class017": "仕様打完了 備考",
"Results_Class018": "4者承認図前 備考",
"Results_Class019": "承認図14日前 備考",
"Results_Class020": "ゼロエミ承認 備考",
"Results_Class021": "着工金入金 備考",
"Results_Class022": "融資事前相談 備考",
"Results_Class023": "融資申込 備考",
"Results_Class024": "融資承認銀行 備考",
"Results_Class025": "土地契約 備考",
"Results_Class026": "土地残金 備考",
"Results_Class027": "残金後謄本 備考",
"Results_Class028": "引越し 備考",
"Results_Class029": "解体工事着手 備考",
"Results_Class030": "解体工事完了 備考",
"Results_Class031": "造成 備考",
"Results_Class032": "境界杭完了 備考",
"Results_Class033": "地耐力調査 備考",
"Results_Class034": "地祭 備考",
"Results_Class035": "構造計算有無完了日 備考",
"Results_Class036": "伏図チェック 備考",
"Results_Class037": "プレカット確定 備考",
"Results_Class038": "事前提出 備考",
"Results_Class039": "事前決裁 備考",
"Results_Class040": "確認提出 備考",
"Results_Class041": "確認決裁 備考",
"Results_Class042": "長期提出確認書 備考",
"Results_Class043": "長期行政提出 備考",
"Results_Class044": "保険登録 備考",
"Results_Class045": "地盤改良着手 備考",
"Results_Class046": "上棟金入金 備考",
"Results_Class047": "本契覚書承認日 備考",
"Results_Class048": "着工可能日 備考",
}
// excludeListに含まれる項目名をclassに持つ要素を取得
$('.excludeList').each(function () {
console.log(this.id);
excludeList.push(this.id);
});
//更新された項目を抜き出し、履歴保存する
if ($p.data.MainForm) {
$p.set($('#Results_Description200'), '');
history = '◆ 変更内容 ◆\n';
$.each($p.data.MainForm, function (index, val) {
if (index.startsWith('Results')) {
//対象外項目は除外
if (!excludeList.includes(index)) {
//項目名の取得
let colName = $('label[for="' + index + '"]').text();
if (dateNameList.hasOwnProperty(index)) {
colName = dateNameList[index];
}
let newData;
let nowData;
let index2 = index.split('_')[1];
//現在値の取得
if (index.startsWith('Results_Class')) {
nowData = myData.ClassHash[index2];
} else if (index.startsWith('Results_Date')) {
if (myData.DateHash[index2] == '' || myData.DateHash[index2] == '1899-12-30T00:00:00') {
nowData = '';
} else {
nowData = $p.ex.dateToString(myData.DateHash[index2]);
}
} else if (index.startsWith('Results_Num')) {
nowData = myData.NumHash[index2];
} else if (index.startsWith('Results_Description')) {
nowData = myData.DescriptionHash[index2];
} else if (index.startsWith('Results_Check')) {
nowData = myData.CheckHash[index2];
}
//セレクトボックス判定
if ($('#' + index + '.control-dropdown').length) {
//セレクトボックス処理
if ($('#' + index).prop("multiple")) {
newData = $('#' + index + '_ms span').eq(-1).text();
} else {
newData = $('#' + index + ' option:selected').text();
}
} else if ($('#' + index + '.radio-value').length) {
//ラジオボタン処理
newData = val != '' ? $('label[for="' + index + val + '"').text() : '';
} else {
//その他
newData = val;
}
if (nowData != '') {
if (nowData != newData) {
history += '▷ ' + colName + ' : ' + nowData + ' -> ' + newData + '\n';
count++;
}
} else {
history += '▷ ' + colName + ' : ' + newData + '\n';
count++;
}
}
}
});
if (count) {
//console.log(history);
$p.set($('#Results_Description200'), history);
$p.set($('#Comments'), history);
}
}
}
$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.ex.dateToString2 = function (date) {
if (date == null || date == '') {
return '';
}
let dateVar = new Date(date);
let year = dateVar.getFullYear();
let month = (dateVar.getMonth() + 1);
let day = dateVar.getDate();
return month + '/' + day;
}
$p.getMSSdataButton = function () {
if ($('#getMSSdataButton').length) {
return;
}
let button = document.createElement("button");
button.id = 'getMSSdataButton';
button.innerHTML = "MSSデータ取得";
button.setAttribute('onclick', '$p.ex.getMSSdata()');
button.style.margin = '3px';
button.style.float = 'left';
$('#Results_ClassAField').after(button);
$('#getMSSdataButton').button({
icon: 'ui-icon-document'
});
}
$p.ex.getMSSdata = async function () {
let keiyakuCode = $('#Results_ClassA').val();
if (keiyakuCode == '') {
return;
}
//MSSテーブルからレコードを取得
const getUrl = 'https://' + location.hostname + '/pleasanter/api/items/189112/get';
const getJson = {
'ApiVersion': 1.1,
'ApiKey': apiKey,
'View': {
'ColumnFilterHash': {
'ClassA': keiyakuCode
}
}
}
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];
// MSSデータを各項目にセット
$p.set($('#Results_ClassA'), mssData.ClassHash.ClassA);
$p.set($('#Results_ClassB'), mssData.ClassHash.ClassQ);
$p.set($('#Results_ClassC'), mssData.ClassHash.Class031);
$p.set($('#Results_ClassD'), mssData.ClassHash.ClassD);
$p.set($('#Results_ClassE'), mssData.ClassHash.ClassF);
$p.set($('#Results_ClassF'), mssData.ClassHash.ClassW);
$p.set($('#Results_ClassG'), mssData.ClassHash.ClassG);
$p.set($('#Results_ClassH'), mssData.ClassHash.ClassJ);
$p.set($('#Results_ClassI'), mssData.ClassHash.Class033);
$p.set($('#Results_ClassJ'), mssData.ClassHash.Class035);
$p.set($('#Results_ClassK'), mssData.ClassHash.Class042);
$p.set($('#Results_ClassL'), mssData.ClassHash.Class040);
$p.set($('#Results_ClassM'), mssData.ClassHash.Class043);
$p.set($('#Results_NumA'), mssData.NumHash.Num016);
$p.set($('#Results_DateA'), $p.ex.dateToString(mssData.DateHash.DateH));
$p.set($('#Results_DateB'), $p.ex.dateToString(mssData.DateHash.DateL));
$p.set($('#Results_NumB'), mssData.NumHash.Num050);
$p.set($('#Results_Class001'), mssData.ClassHash.ClassI);
$p.set($('#Results_Class004'), mssData.ClassHash.ClassK);
$p.set($('#Results_ClassR'), mssData.ClassHash.ClassY);
$p.set($('#Results_ClassS'), mssData.ClassHash.Class122);
$p.set($('#Results_Date048'), $p.ex.dateToString(mssData.DateHash.DateH));
$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.on('change', 'Date148', function () {
//着工可能日選択
let date148 = $('#Results_Date148').val();
if (date148 != '') {
let dateObj = new Date(date148);
let year = dateObj.getFullYear();
let month = dateObj.getMonth() + 1;
let newDate = year + '年' + month + '月';
//着工枠選択
let changeFlag = false;
$('#Results_ClassZ option').each(function () {
if ($(this).text() === newDate) {
$('#Results_ClassZ').val($(this).val()).trigger('change');
changeFlag = true;
return false; // break loop
}
});
if (!changeFlag) {
//該当月が無い場合、着工枠を未選択にする
$('#Results_ClassZ').val('').trigger('change');
}
} else {
//着工可能日が未選択の場合、着工枠も未選択にする
$('#Results_ClassZ').val('').trigger('change');
}
});