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

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

// ...(前ファイルからの続き)
    //スペースで結合して、施主名(カナ)を作成し、保管
    let mergeName = str1 + ' ' + str2 + '' + str3 + ' ' + str4 + '';
    $p.set($('#Results_Class015'), mergeName);   //施主名マージ
}

//----------------------------------------------------------------------
//ボタン名称変更
$p.changeButtonName = function () {
    //ボタンの特定(②問い合わせ内容管理への新規作成ボタン)
    let siteId = $p.siteId();
    let button = $('button[data-from-site-id="' + siteId + '"][data-to-site-id="335411"].confirm-unload');

    button.each(function () {
        //アイコンのspanはそのまま残し、末尾のテキストードだけ書き換える
        let textNode = $(this).contents().filter(function () {
            return this.nodeType === 3; //テキストノードのみ対象
        }).last();

        if (textNode.length) {
            textNode[0].nodeValue = '新規見積依頼';
        }
    });
}

//----------------------------------------------------------------------
//登録完了(Status=200)以降、マスターシートClassYが選択済みの場合のみ選択変更を不可にする
//未選択のままなら登録完了後も選択可能Pleasanter標準のStatusControls ColumnHashは値の有無で
//条件分岐できないため、こちらでクライアント側から制御する)。
//フィールドコンテナResults_ClassYFieldへ既存の読取り専用CSSクラスcode-readonly2//付け外しする方式335410の01.読み取り専用スタイルで定義済み、pointer-events:none等を適用//tabindexの制御は$p.applyReadonlyTabindexに一本化クラス付与後に呼ばれる想定$p.toggleClassYLock = function () {
    let status = $('#Results_Status').val();
    let classYVal = $('#Results_ClassY').val();
    let statusLocked = ['200', '900', '910', '920'].includes(status);
    let $classYField = $('#Results_ClassYField');

    if (statusLocked && classYVal) {
        $classYField.addClass('code-readonly2');
    } else {
        $classYField.removeClass('code-readonly2');
    }
}

//----------------------------------------------------------------------
//code-readonly2読取り専用が設定されている全フィールドをTab移動対象から除外する。
//pointer-events:noneはマウス操作のみ無効化し、Tabキーでのフォーカス移動・キーボード操作での
//選択変更は防げないため、tabindex="-1"を併用する。静的にExtendedFieldCss: "code-readonly2"が
//設定されている項目Status/ClassA/ClassB/ClassZ等と、ClassYのように動的にクラスが
//付け外しされる項目の両方を、都度まとめて処理する対象外に戻った要素はtabindexも解除$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が「登録完了(200)」のときだけ依頼発行ボタンを表示、それ以外は非表示にする
$p.toggleNewRequestButton = function () {
    let siteId = $p.siteId();
    let button = $('button[data-from-site-id="' + siteId + '"][data-to-site-id="335411"].confirm-unload');

    let status = $('#Results_Status').val();
    if (status == '200') {
        button.show();
    } else {
        button.hide();
    }
}


$p.mergeUserList = function () {
    //担当者一覧のマージ対象項目(重複除去)
    let users1 = [];
    [
        $('#Results_Class032').val(),   //主担当営業
        $('#Results_Class033').val(),   //副担当営業
        $('#Results_Class034').val(),   //営業設計
        $('#Results_Class035').val(),   //管理設計
        $('#Results_Class036').val(),   //担当IC
        $('#Results_Class037').val(),   //担当監督
        $('#Results_Class038').val(),   //所属長
    ].forEach(function (v) {
        if (v && !users1.includes(v)) users1.push(v);
    });

    let mergeValue = JSON.stringify(users1);   //担当者一覧のマージ対象項目をJSON文字列化
    let class151 = JSON.stringify($('#Results_Class151').val());   //担当者一覧

    //前と内容が同じ場合は上書きしない
    if (mergeValue !== class151) {
        $p.set($('#Results_Class151'), mergeValue);   //担当者一覧
    }

    //CC一覧のマージ対象項目重複除去
    let usersCC = [];
    [
        $('#Results_Class061').val(),   //CC1
        $('#Results_Class062').val(),   //CC2
// ...(次ファイルへ続く)