ken_nogi/Pleasanter/営業積算システム/docs/新・営業積算システム仕様書_分割/040_新・営業積算システム仕様書_別記資料スクリプト(10/28).md
Kenichiro NOGI ce58cb4be4 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合
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>
2026-09-04 15:37:06 +09:00

4.7 KiB
Raw Blame History

別記資料 スクリプトScripts全文 1028

// ...(前ファイルからの続き)
        let attach = value.dataset.name;
        attachmentComments(attach);
        attachFileCheckbox(attach);
    })

    //----------------------------------------------------------------------
    //Results_ClassG(現在の進捗)変更時に項目の表示/非表示を切替
    //ClassGは「新規依頼」プロセス実行後に読取専用化されるため、控え項目ClassT(現在の進捗(控え))へ常に同期しておき、
    //表示切替の判定はClassTを参照する読取専用化後は$('#Results_ClassG').val()が空になるため)
    $('input[name="Results_ClassG"]').on('change', function () {
        $p.toggleClassGFields($(this).val());
        $p.set($('#Results_ClassT'), $(this).val());
    });
    $p.toggleClassGFields($('#Results_ClassT').val());

    //----------------------------------------------------------------------
    //Results_Class007(問合せ種別)変更時にマトリックス以外/マトリックスの入力欄表示を切替
    $('input[name="Results_Class007"]').on('change', function () {
        $p.ex.toggleInquiryTypeFields($(this).val());
    });
    $p.ex.toggleInquiryTypeFields($('#Results_Class007').val());

    //----------------------------------------------------------------------
    //Results_Class055(不備・追加)欄は項目削除に伴い不要化2026-08-01コメントアウト
    /*
    $('input[name="Results_Class055"]').on('change', function () {
        $p.toggleClass055Fields($(this).val());
    });
    $p.toggleClass055Fields($('#Results_Class055').val());
    */

    //アップ希望日チェックイベント登録
    $p.on('change', 'DateA', function () {
        $p.clearMessage();
        $p.upDateCheck();
    });

    //----------------------------------------------------------------------
    //Status(状況)とClass062(状況)の値を相互に同期
    $('#Results_Status').on('change', function () {
        $p.ex.syncStatusAndClass062('Status');
    });
    $('#Results_Class062').on('change', function () {
        $p.ex.syncStatusAndClass062('Class062');
    });

    //code-readonly2読取り専用が設定されている全フィールドをTab移動対象から除外する
    $p.applyReadonlyTabindex();
}

//----------------------------------------------------------------------
//code-readonly2読取り専用が設定されている全フィールドをTab移動対象から除外する。
//pointer-events:noneはマウス操作のみ無効化し、Tabキーでのフォーカス移動・キーボード操作での
//選択変更は防げないため、tabindex="-1"を併用する(①物件基本情報サイトと同じ方式)。
//StatusControls「依頼ロック」によるReadOnly化ExtendedFieldCssとは別のPleasanter標準機構//DOM上の表現が未確認のため対象外。ExtendedFieldCss: "code-readonly2"の静的設定項目のみ対応。
$p.applyReadonlyTabindex = function () {
    $('select, input, textarea').each(function () {
        let $el = $(this);
        if ($el.closest('.code-readonly2').length) {
            $el.attr('tabindex', '-1');
        } else if ($el.attr('tabindex') === '-1') {
            $el.removeAttr('tabindex');
        }
    });
}

//Status変更時はClass062へ、Class062変更時はStatusへ値をコピーする無限ループ防止のため値が異なる場合のみ更新
$p.ex.syncStatusAndClass062 = function (changedField) {
    let statusVal = $('#Results_Status').val();
    let class062Val = $('#Results_Class062').val();

    if (changedField === 'Status') {
        if (class062Val !== statusVal) {
            $p.set($('#Results_Class062'), statusVal);
        }
    } else {
        if (statusVal !== class062Val) {
            $p.set($('#Results_Status'), class062Val);
        }
    }
}

$p.setSubNumber = function () {
    // サブ番号の設定ロジック
    let classB = $('#Results_ClassB').val();
    let classX = $('#Results_ClassX').val();

    let subNumber = classX.split('-')[1]; // 管理番号を「-」で分割して、子番を取得
    if (subNumber && subNumber !== classB) {
        // サブ番号を設定
        $p.set($('#Results_ClassB'), subNumber);
    }
};

//Results_ClassG(現在の進捗)変更時に項目の表示/非表示を切替
$p.toggleClassGFields = function (value) {
    if (value == '1') {
        //表示
        $('#Results_ClassHField').show();
        $('#Results_ClassIField').show();
        $('#Results_DescriptionAField').show();
    } else {
        //非表示
        $('#Results_ClassHField').hide();
// ...(次ファイルへ続く)