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

3.9 KiB
Raw Blame History

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

/*
@config :
@filename : 02_添付ファイルDL.js
@title : 02_添付ファイルDL
@name :
@siteIds :
@siteTitles : 問合せ内容管理
@disabled: false
*/

/*
init内部
let attachColumns = $('.control-attachments');
$.each(attachColumns, function (index, value) {
    let attach = value.dataset.name;
    attachmentComments(attach);
    attachFileCheckbox(attach);
})
*/

//----------------------------------------------------------------------
//添付ファイル項目にボタンの追加
function attachFileCheckbox(attach) {
    //管理番号 Results_ClassX
    let title = $('#Results_ClassX').val();

    let colName = $('#Results_' + attach + 'Field label')[0].innerHTML;
    let attachData = JSON.parse($p.getControl(attach).val());
    let zipFilename = title + '■' + colName + '■';

    //console.log(attachData.length);
    if (attachData.length >= 1) {
        $.each(attachData, function (index, value) {
            let checkbox = document.createElement('input');
            checkbox.type = 'checkbox';
            checkbox.style.margin = '2px';
            checkbox.style.float = 'left';
            checkbox.name = attach + '_checkbox';
            checkbox.id = value.Guid + '_checkbox';
            checkbox.value = value.Guid;

            $('#' + value.Guid).prepend(checkbox);

        });

        //ダウンロードボタン
        let div = document.createElement('div');
        let dlButton1 = document.createElement('button');
        dlButton1.type = 'button';
        dlButton1.id = attach + '_dlButton1';
        dlButton1.style.marginRight = '5px';
        dlButton1.innerHTML = '全ファイルDL';
        dlButton1.setAttribute('attach', attach);
        dlButton1.setAttribute('onclick', 'dlAllFiles("' + attach + '","' + zipFilename + '全ファイルDL' + '")');

        let dlButton2 = document.createElement('button');
        dlButton2.type = 'button';
        dlButton2.id = attach + '_dlButton2';
        dlButton2.style.marginRight = '5px';
        dlButton2.innerHTML = '選択DL';
        dlButton2.setAttribute('attach', attach);
        dlButton2.setAttribute('onclick', 'dlSelectedFiles("' + attach + '","' + zipFilename + '選択DL' + '")');

        div.style.margin = '5px';
        div.style.marginTop = '0px';
        div.style.marginLeft = '120px';
        div.style.marginRight = '5px';
        div.style.marginBottom = '10px';
        div.style.clear = 'both';
        div.append(dlButton1);
        div.append(dlButton2);
        $('#Results_' + attach + 'Field').after(div);
        $('#' + attach + '_dlButton1').button({
            icon: 'ui-icon-document'
        });
        $('#' + attach + '_dlButton2').button({
            icon: 'ui-icon-document'
        });
    }
}

function dlSelectedFiles(attach, zipFilename) {
    //console.log(zipFilename);
    //チェックがついているもののみ
    const fileList = $('input[name="' + attach + '_checkbox"]:checked');
    let guidList = new Array();
    for (item of fileList) {
        //console.log(item);
        guidList.push(item.value);
    }

    if (guidList.length > 0) {
        dlZipAttachements(guidList, zipFilename);
    }

}

function dlAllFiles(attach, zipFilename) {
    let guidList = new Array();
    //全部
    const fileList = JSON.parse($p.getControl(attach).val());
    for (item of fileList) {
        guidList.push(item.Guid);
    }

    if (guidList.length > 0) {
        dlZipAttachements(guidList, zipFilename);
    }
}

/**
 * 複数ファイルを1ファイルにzip圧縮してDLする
 * @param  guidList DLする添付ファイルのGUIDのリスト
 * @param  zipFilename zipファイル名
 * @return なし
 */
async function dlZipAttachements(guidList, zipFilename) {
    var binary;
    var filename;
    const zip = new JSZip();
    const jsonReq = {
        ApiVersion: 1.1
    };

    for (guid of guidList) {
// ...(次ファイルへ続く)