ken_nogi/Pleasanter/営業積算システム/docs/新・営業積算システム仕様書_分割/055_新・営業積算システム仕様書_別記資料スクリプト(25/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

5.1 KiB
Raw Permalink Blame History

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

/*
@config :
@filename : 04_プロセス処理スクリプト.js
@title : 04_プロセス処理スクリプト.js
@name :
@siteIds :
@siteTitles : プロセス実行前の処理
@disabled: false
*/

//プロセスボタンから呼び出す共通ディスパッチャ
//Process定義側のOnClickは $p.ex.processScript($(this)); の形(ボタン要素そのものを渡す形)。
//procNum数値文字列ではなく、ボタンの表示ラベル文字列procNameで処理を振り分ける
//Processes側のId構成や件数が今後変わっても影響を受けないため。
//  3_03_質疑応答スクリプト.jsに元々あったprocessScript本体をこちらへ統合済み
$p.ex.processScript = async function (target) {
    let $btn = $(target);
    if (!$btn.length) {
        console.log('processScript: 対象ボタンが取得できませんでした');
        return false;
    }

    let procName = $btn.text().replace(/^\s+/, '').trim();
    console.log('processScript ' + procName);

    let popMessage = '';

    //確認ダイアログを出さないプロセス名。ここにprocNameを追加すると、そのプロセスはconfirmをスキップして即実行する
    let noConfirmProcesses = [];

    // プロセス名に応じた処理popMessageが未定義(空文字)、またはnoConfirmProcessesに含まれる場合は確認メッセージを出さず実行
    switch (procName) {
        case '積算へ依頼':
            popMessage = '"' + procName + '" 処理を実行します。よろしいですか?';
            if (popMessage && !noConfirmProcesses.includes(procName) && !confirm(popMessage)) return;
            //ClassG現在の進捗が「1:承認図後・着工中」の場合の必須項目チェックプロセス実行後はClassG/H/Iが読取専用化されるため、実行前のここでのみチェック可能
            if (!$p.ex.checkClassGRequiredFields()) return;
            //問合せ種別(マトリックス以外/マトリックス)に応じた必須項目チェック
            if (!$p.ex.checkInquiryTypeRequiredFields()) return;
            break;
        case '受付':
            popMessage = '"' + procName + '" 処理を実行します。よろしいですか?';
            if (popMessage && !noConfirmProcesses.includes(procName) && !confirm(popMessage)) return;
            //受付日・受付者をここで設定Process側の「データの変更」だと反映がexecProcess後(サーバー側)になり、
            //先に動く01_基本スクリプト.jsのbefore_validate/ログ転記処理が値取得できず欠落するため、ここで直接設定する)
            $p.ex.setTodayAndUser('Date081', 'Class081');
            break;
        case '質疑送信':
            popMessage = '"' + procName + '" 処理を実行します。よろしいですか?';
            if (popMessage && !noConfirmProcesses.includes(procName) && !confirm(popMessage)) return;
            if ($('#Results_Description075').val()) {
                $p.ex.saveQuestionMessage();
            } else {
                $p.ex.setMyMessage('new-status-red', '質疑内容を入力してください');
                return false;
            }
            break;
        case '回答送信': //念のためのボタン非表示以外のサーバー側判定はProcess側View条件(ClassC:["Own"])が担う
            popMessage = '"' + procName + '" 処理を実行します。よろしいですか?';
            if (popMessage && !noConfirmProcesses.includes(procName) && !confirm(popMessage)) return;
            if ($p.userId().toString() != $('#Results_ClassC').val()) {
                $p.ex.setMyMessage('new-status-red', '回答送信は依頼者本人のみ行えます');
                return false;
            }
            if ($('#Results_Description076').val()) {
                $p.ex.saveAnswerMessage();
            } else {
                $p.ex.setMyMessage('new-status-red', '回答内容を入力してください');
                return false;
            }
            break;
        case '質疑回答削除':
            popMessage = '"' + procName + '" 処理を実行します。よろしいですか?';
            if (popMessage && !noConfirmProcesses.includes(procName) && !confirm(popMessage)) return;
            if ($('input[name="messageDeleteCheck"]:checked').length) {
                $p.ex.messageDelete();
            } else {
                $p.ex.setMyMessage('new-status-red', '削除したい質疑回答メッセージを選択してください');
                return false;
            }
            break;
        case '積算対応中へ':
            popMessage = '"' + procName + '" 処理を実行します。よろしいですか?';
            if (popMessage && !noConfirmProcesses.includes(procName) && !confirm(popMessage)) return;
            //旧「営業積算確認」プロセスを吸収。営業積算確認日(Date074)・質疑回答ステータス(Class071='3')を更新
// ...(次ファイルへ続く)