GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。 NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは 別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
5.5 KiB
5.5 KiB
scripts/1_01_基本スクリプト.js.js
/*
@config :
@filename : ${psFileBasename}
@title : 01_基本スクリプト
@name :
@siteIds :
@siteTitles : 物件基本情報
@disabled: false
*/
let pageLoading = 0;
//----------------------------------------------------------------------
//初期処理
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...');
//ロード時に施主名を予め控えておく
$p.loadCustomerName();
//依頼発行ボタン名称変更
$p.changeButtonName();
//登録状況(Status)に応じて依頼発行ボタンの表示・非表示を切り替え
$p.toggleNewRequestButton();
//ServerScriptが事前取得したエリア・契約ブランド・契約営業所マスタをhiddenから読み込む
$p.loadStaticMasters();
//マスターシート・エリア・契約ブランド・契約営業所の現在値を「変更前の値」として記憶
//(未選択→選択のときは既存値を保持、選択済み→別選択のときは上書き、を判定するため)
$p.rememberLookupBaseValues();
//登録完了(Status=200)以降、マスターシートが選択済みの場合のみ選択変更を不可にする
//(未選択のままなら登録完了後も選択可能にする)
$p.toggleClassYLock();
//code-readonly2(読取り専用)が設定されている全フィールドをTab移動対象から除外する
//(ClassYの動的ロックも含め、上記の処理が確定した後に実行する)
$p.applyReadonlyTabindex();
}
//入力チェック後処理
$p.events.after_validate = function (args) {
//担当者一覧のマージ
$p.mergeUserList();
}
//画面更新後
$p.events.after_set_Update = function (args) {
//初期処理
$p.ex.init();
}
//----------------------------------------------------------------------
//施主名を控える
let customerName = {
'firstName': '',
'lastName': '',
'firstNameKana': '',
'lastNameKana': ''
}
//ロード時に施主名を予め控えておく
$p.loadCustomerName = function () {
customerName.firstName = $('#Results_Class002').val(); //施主1・名
customerName.lastName = $('#Results_Class001').val(); //施主1・姓
customerName.firstNameKana = $('#Results_Class004').val(); //施主1・名(カナ)
customerName.lastNameKana = $('#Results_Class003').val(); //施主1・姓(カナ)
}
//----------------------------------------------------------------------
//入力チェック前処理
//更新ボタンを押したあと、入力必須項目などのチェックの前に処理される関数
$p.events.before_validate = function (args) {
//新規作成時のみ、重複チェックキー(施主氏名カナ・エリア)の最終確認を促す
//(登録完了処理後、この項目は編集不可になるため、新規作成の保存前に一度だけ確認する)
if ($p.action() === 'new') {
if (!confirm($p.buildNewRecordKeyConfirmMessage())) {
return false; //保存中断
}
}
//施主名がどれか1つでも変更されていたら処理する
if (customerName.firstName != $('#Results_Class002').val() || customerName.lastName != $('#Results_Class001').val() || customerName.firstNameKana != $('#Results_Class004').val() || customerName.lastNameKana != $('#Results_Class003').val()) {
$p.mergeCustomerName();
}
//担当者一覧のマージ
$p.mergeUserList();
//重複チェック用の連結値をClass200へ保存(Class200はNoDuplication設定済みのため、
//保存時にPleasanter標準機能が重複判定・アラート表示・保存ブロックを行う)
$p.mergeClass200();
}
//----------------------------------------------------------------------
//重複チェック用に施主1・姓(カナ)+施主1・名(カナ)+エリア+重複許容をClass200へ連結する
//主担当営業・契約営業所は人事異動等で変わりうるためキーに含めない(同一物件でも担当者交代で
//別レコード扱いになってしまうのを防ぐ)。エリアは物件の位置そのもので不変のためキーに採用。
//エリアが異なれば同姓同名でも別物件として許容する。
//Class199(重複許容、営業積算専用・通常空欄)は、同一エリアに同姓同名の別物件が実在する
//稀なケースの回避弁。営業積算が「重複1」~「重複10」のいずれかを設定すると、その値も
//キーに含まれるため重複チェックをすり抜けられる(同一エリア同姓同名は最大10件まで想定)。
$p.mergeClass200 = function () {
let str1 = $p.normalizeForDuplicationKey($('#Results_Class003').val()); //施主1・姓(カナ)
let str2 = $p.normalizeForDuplicationKey($('#Results_Class004').val()); //施主1・名(カナ)
// ...(次ファイルへ続く)