ken_nogi/Pleasanter/営業積算システム/docs/新・営業積算システム仕様書_分割/039_新・営業積算システム仕様書_別記資料スクリプト(9/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.2 KiB
Raw Blame History

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

/*
@config :
@filename : ${psFileBasename}
@title : 01_基本スクリプト
@name :
@siteIds :
@siteTitles : 問合せ内容管理
@disabled: false
*/

let pageLoading = 0;

//組織によって質疑応答の操作可否を分岐するフラグDeptId 25 = 営業積算課)
let eSekisanFlag = false;
let eSekisanDeptId = '25';

//dept25(営業積算課)所属者のUserId→氏名解決マップログ文字列生成・タブ間ミラー表示用のみ//ServerScript「Dept25所属者取得スクリプト」が画面表示前に取得済みのDept25MembersHidden項目から読み込む。
//選択肢自体はChoicesText側でUsersマスタからDeptId=25指定で動的取得している
let dept25UserNames = $('#Dept25Members').length > 0 ? JSON.parse($('#Dept25Members').val()) : {};
//UserIdを氏名に解決する。マップに無い値旧レコードの氏名文字列そのまま等はそのまま返す
function resolveUserName(val) {
    if (!val) return val;
    return dept25UserNames[val] || val;
}

//積算発注タブ_Tab-3/FieldSetTab3表示対象の組織コード25(営業積算課),26(積算発注管理課),28(東京工務課),66(君津住宅工務課),36(愛知工務課)
let sekisanHachuViewDeptIds = ['25', '26', '28', '66', '36'];
//積算発注タブ_Tab-3/FieldSetTab3表示対象の個別ユーザーコード上記部署に属さなくても表示許可する例外ユーザー
//913(青地渉),987(中川真悟),1153(長谷川等志)
let sekisanHachuViewUserIds = ['913', '987', '1153'];
//ブランドコードResults_Class004の値109101=nexthouse, 268122=nexthouse VALUE
//マトリックスの場合のnexthouseシリーズ(Class040)必須判定でのみ使用
let nexthouseBrandCodes = ['109101', '268122'];

//----------------------------------------------------------------------
//初期処理
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...');

    //営業積算課(DeptId 25)かどうかを判定
    eSekisanFlag = ($p.deptId() == eSekisanDeptId);

    //「営業積算」タブ_Tab-2/FieldSetTab2は営業積算課(Dept25)のみ閲覧・編集可。
    //既定は01_共通スタイル.cssで非表示、Dept25のみここでbodyへクラス付与し表示化する
    if (eSekisanFlag) {
        $('body').addClass('show-sekisan-tab');
    }

    //積算発注タブ_Tab-3/FieldSetTab3表示対象dept25(営業積算),26(積算発注),28,66,36(各エリア工務)またはuserId 913,987,1153
    //sekisanHachuViewDeptIds/sekisanHachuViewUserIdsはファイル先頭のグローバル変数宣言を参照
    let deptIdStr = $p.deptId().toString();
    let userIdStr = $p.userId().toString();

    if (sekisanHachuViewDeptIds.includes(deptIdStr) || sekisanHachuViewUserIds.includes(userIdStr)) {
        $('body').addClass('show-sekisan-hachu-tab');
    }

    //新規作成時のみ処理
    if ($p.action() == 'new') {
        //①物件基本情報からのリンク経由でない場合ClassZ空欄は警告表示保存自体はbefore_validateでブロック
        if (!$('#Results_ClassZ').val()) {
            $p.ex.setMyMessage('new-status-red', '①物件基本情報から新規依頼を作成してください');
        }

        //祝日計算
        $p.getHolidayTable();
    } else {
        //スタートアップメッセージ表示
        //$p.ex.startupMessage();
        $p.setSubNumber();

        //質疑応答送信ボタン生成
        $p.ex.messageSaveButton();

        //受付ボタン生成
        $p.ex.receiptButton();

        //外部見積待ちへボタン生成
        $p.ex.externalEstimateWaitButton();

        //社内確認中へ・問い合わせ不要・差戻しボタン生成
        $p.ex.statusRowButtons();

        //遅延連絡ボタン生成
        $p.ex.delayNoticeButton();

        //一部回答ボタン生成(見積回答ボタンより先に生成し、見積回答をその直下に配置する)
        $p.ex.partialAnswerButton();

        //見積回答ボタン生成
        $p.ex.estimateReplyButton();

        //見積回答ファイル(Attachments101)一括DLボタン生成Description062の下に配置
        $p.ex.estimateAttachmentsDLButton();

        //「①物件基本情報へ戻る」ボタンをコマンド欄の一番左に移動
        $p.ex.moveBackButtonToFirst();

        //質疑応答メッセージ履歴表示
        $p.ex.messageHistory();
    }

    //添付ファイル項目欄調整
    let attachColumns = $('.control-attachments');
    $.each(attachColumns, function (index, value) {
// ...(次ファイルへ続く)