ken_nogi/pleasanter/develop/##実行予算承認WF/sites/scripts/01_メインスクリプト.js
Kenichiro NOGI 973ad0a0fe 2025-09-18
2025-09-18 15:52:11 +09:00

273 lines
9.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
@config : next999.json
@filename : ${psFileBasename}
@title : 01_メインスクリプト
@name :
@siteIds : 335011
@siteTitles : 実行予算WF申請
@disabled: false
*/
let pageLoading = 0;
let apiKey = '6504c8a807677a3a576e10327f3c19876c55736ee45d4a845796b9e7f5e087bfd4bd0d8184863da8cf1733ca635111432ab334aea59102b06a96ee6d2c05190d';
let areaNotificationList = JSON.parse($('#areaNotificationList').val() || '{}');
let classNotificationList = JSON.parse($('#classNotificationList').val() || '{}');
//----------------------------------------------------------------------
//初期処理
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 () {
console.log('initialize...');
//初期化
//初期表示
const classX = $('input[name="Results_ClassX"]:checked').val();
$p.ex.changeMode(classX);
console.log('initialize...done');
}
//ClassXの選択値を取得
$('input[name="Results_ClassX"]:radio').change(function () {
const selectedValue = $(this).val();
console.log('Results_ClassX changed:', selectedValue);
// 必要な処理をここに追加
$p.ex.changeMode(selectedValue);
});
$p.events.before_validate_Create = function (args) {
//新規作成時の処理
console.log('New Create...');
$p.ex.setUsers();
}
//保存前処理
$p.events.before_validate = function (args) {
console.log('Before Validate...');
const classX = $('input[name="Results_ClassX"]:checked').val();
switch (classX) {
case '1':
$p.set($('#Results_ClassY'), $('#Results_Date001').val());
$p.set($('#Results_Date002'), '');
$p.set($('#Results_Date003'), '');
$p.set($('#Results_Date004'), '');
$p.set($('#Results_Date005'), '');
$p.set($('#Results_Num001'), '');
break;
case '2':
$p.set($('#Results_ClassY'), $('#Results_Date002').val());
$p.set($('#Results_Date001'), '');
$p.set($('#Results_Date003'), '');
$p.set($('#Results_Date004'), '');
$p.set($('#Results_Date005'), '');
$p.set($('#Results_Num001'), '');
break;
case '3':
$p.set($('#Results_ClassY'), $('#Results_Date003').val());
$p.set($('#Results_Date001'), '');
$p.set($('#Results_Date002'), '');
$p.set($('#Results_Date004'), '');
$p.set($('#Results_Date005'), '');
$p.set($('#Results_Num001'), '');
break;
case '4':
$p.set($('#Results_ClassY'), $('#Results_Date004').val());
$p.set($('#Results_Date001'), '');
$p.set($('#Results_Date002'), '');
$p.set($('#Results_Date003'), '');
$p.set($('#Results_Date005'), '');
$p.set($('#Results_Num001'), '');
break;
case '5':
$p.set($('#Results_ClassY'), $('#Results_Date005').val());
$p.set($('#Results_Date001'), '');
$p.set($('#Results_Date002'), '');
$p.set($('#Results_Date003'), '');
$p.set($('#Results_Date004'), '');
$p.set($('#Results_Num001'), '');
break;
case '6':
$p.set($('#Results_ClassY'), $('#Results_Num001').val() + ' 回');
$p.set($('#Results_Date001'), '');
$p.set($('#Results_Date002'), '');
$p.set($('#Results_Date003'), '');
$p.set($('#Results_Date004'), '');
$p.set($('#Results_Date005'), '');
break;
default:
}
}
//保存後処理
$p.events.after_set = function (args) {
//初期処理
$p.ex.init();
}
//マスターシートからデータを取得
$p.on('change', 'ClassA', function () {
$p.ex.getMSSData();
});
//マスターシートの情報取得
$p.ex.getMSSData = function () {
let resultId = $("#Results_ClassA").val();
$p.apiGet({
'id': resultId,
'done': function (data) {
console.log(data);
if (data.Response.TotalCount == '1') {
let mssData = data.Response.Data[0];
console.log('MSSデータをセット');
// 工事名の末尾に「様」または空白があれば削除
let classQ = mssData.ClassHash.ClassQ || '';
classQ = classQ.replace(/[\s様]+$/, '');
if (classQ !== '') {
classQ = classQ + ' 様邸';
}
$p.set($('#Results_ClassB'), classQ); //工事名
$p.set($('#Results_ClassC'), mssData.ClassHash.ClassA); //契約コード
$p.set($('#Results_ClassI'), mssData.ClassHash.Class033); //契約ブランド
$p.set($('#Results_ClassJ'), mssData.ClassHash.Class043); //建物種類
//延床面積選択
let num016 = parseFloat(mssData.NumHash.Num016 || '0');
if (num016 < 21) {
$p.set($('#Results_ClassK'), '20坪'); //延床面積
} else if (num016 < 31) {
$p.set($('#Results_ClassK'), '2130坪'); //延床面積
} else if (num016 < 41) {
$p.set($('#Results_ClassK'), '3140坪'); //延床面積
} else if (num016 < 51) {
$p.set($('#Results_ClassK'), '4150坪'); //延床面積
} else {
$p.set($('#Results_ClassK'), '51坪'); //延床面積
}
$p.set($('#Results_ClassL'), mssData.ClassHash.Class036); //構造材
//承認図予定日
if (mssData.DateHash.DateH != '1899-12-30T00:00:00') {
let dateH = new Date(mssData.DateHash.DateH);
let dateHStr = dateH.getFullYear() + '/' + (dateH.getMonth() + 1).toString().padStart(2, '0') + '/' + dateH.getDate().toString().padStart(2, '0');
$p.set($('#Results_DateB'), dateHStr);
}
//着工予定日
if (mssData.DateHash.Date063 != '1899-12-30T00:00:00') {
let date063 = new Date(mssData.DateHash.Date063);
let date063Str = date063.getFullYear() + '/' + (date063.getMonth() + 1).toString().padStart(2, '0') + '/' + date063.getDate().toString().padStart(2, '0');
$p.set($('#Results_DateC'), date063Str);
}
$p.clearMessage();
$p.ex.setMyMessage('new-status-lime', 'マスターシートの情報を取得しました');
} else {
//既存データクリア
$p.clearMessage();
$p.ex.setMyMessage('new-status-red', 'マスターシートの情報を取得に失敗しました');
}
},
'fail': function (data) {
console.log(data);
//既存データクリア
$p.clearMessage();
$p.ex.setMyMessage('new-status-red', 'マスターシートの情報を取得に失敗しました');
}
});
}
$p.ex.setUsers = function () {
console.log(areaNotificationList);
console.log(classNotificationList);
//担当監督マスタ、通知先マスタの情報を元に、担当監督、通知先をセットする
let area = $('#Results_ClassD').val() || '';
let mode = $('#Results_ClassX').val() || '';
if (area != '' && mode != '') {
$p.set($('#Results_Class001'), areaNotificationList[area].list1);
$p.set($('#Results_Class002'), areaNotificationList[area].list2);
$p.set($('#Results_Class003'), areaNotificationList[area].list3);
$p.set($('#Results_Class004'), areaNotificationList[area].list4);
$p.set($('#Results_Class005'), classNotificationList[mode].list1);
$p.set($('#Results_Class006'), classNotificationList[mode].list2);
//最終承認者
$p.set($('#Results_Class010'), classNotificationList[mode].list3);
console.log('担当監督、通知先をセットしました');
} else {
console.log('担当監督、通知先のセットに失敗しました');
}
}
$p.ex.changeMode = function (mode) {
//
$('#Results_Date001Field').hide();
$('#Results_Date002Field').hide();
$('#Results_Date003Field').hide();
$('#Results_Date004Field').hide();
$('#Results_Date005Field').hide();
$('#Results_Num001Field').hide();
console.log('changeMode...');
// モード変更に伴う処理をここに追加
//const classX = $('#Results_ClassX').val();
switch (mode) {
case '1':
$('#Results_Date001Field').show();
break;
case '2':
$('#Results_Date002Field').show();
break;
case '3':
$('#Results_Date003Field').show();
break;
case '4':
$('#Results_Date004Field').show();
break;
case '5':
$('#Results_Date005Field').show();
break;
case '6':
$('#Results_Num001Field').show();
break;
default:
}
}