This commit is contained in:
Kenichiro NOGI 2025-09-02 09:21:31 +09:00
parent 3f732384c4
commit 7be1ea2631
32 changed files with 1338 additions and 46 deletions

BIN
NodeJS/Care7_old.zip Normal file

Binary file not shown.

View File

@ -176,7 +176,9 @@ $p.ex.areaBrandName = function () {
let brand = $('#Results_Class012 option:selected').text();
if (area && brand) {
$p.set($('#Results_ClassL'), area + ' ' + brand);
if ($('#Results_ClassL').val() == '') {
$p.set($('#Results_ClassL'), area + ' ' + brand);
}
}
}

View File

@ -29,6 +29,13 @@ $p.ex.saveHistory = function () {
'Results_Num051',
'Results_Num052',
'Results_Num053',
'Results_Num054',
'Results_Num055',
'Results_Num056',
'Results_Num057',
'Results_Num058',
'Results_Num059',
'Results_Num060',
'Results_Description200'
];

View File

@ -315,7 +315,9 @@ $p.ex.areaBrandName = function () {
let brand = $('#Results_Class012 option:selected').text();
if (area && brand) {
$p.set($('#Results_ClassL'), area + ' ' + brand);
if ($('#Results_ClassL').val() == '') {
$p.set($('#Results_ClassL'), area + ' ' + brand);
}
}
}

View File

@ -108,6 +108,8 @@ $p.ex.createIraiButton = function () {
let allCount = $('#Results_Num051').val(); //合計項目数
const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];
let status = $('#Results_Status').val();
//依頼項目追加ボタン
for (i = 0; i < 9; i++) {
let j = (i + 1).toString().padStart(3, '0');
@ -127,7 +129,8 @@ $p.ex.createIraiButton = function () {
$('#Results_Num0' + k + 'Field').after(div1);
//全依頼数が10個以上の場合はボタン不可
if (allCount >= 10) {
//登録済み以外の場合も不可
if (allCount >= 10 || status !== '200') {
$('#addButton0' + k).button({
icon: 'ui-icon-closethick',
disabled: true

View File

@ -70,7 +70,15 @@ async function createReport(templateId, recordData = [], templateType = 'xlsx')
let col = 2;
let ResultIdList = [];
let uniqueIdList = [];
let kanriNo = '';
let customerName = '';
for (let record of recordData) {
//console.log('Processing record:', record);
//管理番号
kanriNo = record['ClassA'] || 'YYX0000-ZZ';
//顧客名
customerName = record['Class001'] || '顧客名不明';
Object.keys(record).forEach(function (key) {
param = setValueToSheet(param, col, key, record[key]);
if (key === 'ResultId') {
@ -93,7 +101,7 @@ async function createReport(templateId, recordData = [], templateType = 'xlsx')
const sheet = workbook.sheet(i.toString());
if (sheet) {
sheet.name(uniqueIdList[i - 1] || 'Report' + i);
sheet.cell('B45').value(ResultIdList[i - 1] || ''); //B44セルにResultIdをセット
sheet.cell('C46').value(ResultIdList[i - 1] || ''); //B44セルにResultIdをセット
}
}
@ -113,13 +121,14 @@ async function createReport(templateId, recordData = [], templateType = 'xlsx')
const dateStr = now.getFullYear() + ('0' + (now.getMonth() + 1)).slice(-2) + ('0' + now.getDate()).slice(-2) +
'_' + ('0' + now.getHours()).slice(-2) + ('0' + now.getMinutes()).slice(-2) + ('0' + now.getSeconds()).slice(-2);
let downloadFileName = templateName + '_' + dateStr + '.' + templateFile.Extension;
//let downloadFileName = templateName + '_' + dateStr + '.' + templateFile.Extension;
let downloadFileName = kanriNo + '-' + customerName + '■' + dateStr + '.' + templateFile.Extension;
//PDF変換APIを呼び出す
sendExcelAndSavePdf(base64data, downloadFileName)
.then(pdfBlob => {
// PDF Blobをダウンロード
saveAs(pdfBlob, downloadFileName.replace(/\.(xlsx|docx|pptx)$/, '.pdf'));
saveAs(pdfBlob, downloadFileName.replace(/\.(xlsx|docx|pptx)$/, 'pdf'));
});
console.log('帳票出力が完了しました:', downloadFileName);
$('#global-modal').remove();

View File

@ -26,6 +26,43 @@ $p.ex.saveHistory = function () {
'Results_Class199',
'Results_Class200',
'Results_NumZ',
'Results_Num001',
'Results_Num002',
'Results_Num003',
'Results_Num004',
'Results_Num005',
'Results_Num006',
'Results_Num007',
'Results_Num008',
'Results_Num009',
'Results_Num011',
'Results_Num012',
'Results_Num013',
'Results_Num014',
'Results_Num015',
'Results_Num016',
'Results_Num017',
'Results_Num018',
'Results_Num019',
'Results_Num021',
'Results_Num022',
'Results_Num023',
'Results_Num024',
'Results_Num025',
'Results_Num026',
'Results_Num027',
'Results_Num028',
'Results_Num029',
'Results_Num051',
'Results_Num052',
'Results_Num053',
'Results_Num054',
'Results_Num055',
'Results_Num056',
'Results_Num057',
'Results_Num058',
'Results_Num059',
'Results_Num060',
'Results_Description200'
];

View File

@ -293,6 +293,8 @@ $p.ex.init = function () {
}
}
//エリア-ブランド結合
$p.ex.areaBrandName();
} else {
//スタートアップメッセージ表示
@ -375,7 +377,6 @@ $p.ex.init = function () {
}
});
//部材リストの非表示
//Results_CheckA のチェック状態を取得
if ($('#Results_CheckA').prop('checked')) {
@ -386,6 +387,96 @@ $p.ex.init = function () {
$p.ex.changeColumnList();
}
$p.ex.changeCounter = function () {
let status = $('#Results_Status').val();
//ステータスごとにカウンター値を変更
switch (status) {
case '100': //新規登録
$p.ex.patternCounter('new', 1);
break;
case '200': //登録完了
// 登録完了
$p.ex.patternCounter('registered', 1);
break;
case '300': //積算依頼
case '400': //積算受付
case '450': //質疑対応中
case '500': //積算対応中
case '510': //外部見積待ち
case '520': //社内確認中
case '700': //チェック中
case '800': //積算回答
break;
case '900': //完了
case '901': //依頼不要
case '910': //保留
case '920': //取消
$p.ex.patternCounter('completed', 1);
break;
}
}
//patternCounter
$p.ex.patternCounter = function (mode, count) {
//全項目一括非表示処理
for (let i = 1; i <= 9; i++) {
$('#Results_Num0' + (70 + i) + 'Field').hide();
$('#Results_Num0' + (80 + i) + 'Field').hide();
$('#Results_Num0' + (90 + i) + 'Field').hide();
}
//パターンごとの番号
let patternList = {
'A': 1,
'B': 2,
'C': 3,
'D': 4,
'E': 5,
'F': 6,
'G': 7,
'H': 8,
'I': 9
}
//依頼項目のパターン割り出し
let pattern = $('#Results_Class041').val();
//番号取得
let keyId = patternList[pattern];
let num1 = 70 + parseFloat(keyId); //新規作成Num番号
let num2 = 80 + parseFloat(keyId); //登録完了Num番号
let num3 = 90 + parseFloat(keyId); //依頼完了Num番号
//項目表示
$('#Results_Num0' + num1 + 'Field').show();
$('#Results_Num0' + num2 + 'Field').show();
$('#Results_Num0' + num3 + 'Field').show();
//値セット
switch (mode) {
case 'new':
if ($('#Results_Num0' + num1).val() != count) {
$p.set($('#Results_Num0' + num1), count);//新規作成
}
break;
case 'registered':
if ($('#Results_Num0' + num2).val() != count) {
$p.set($('#Results_Num0' + num2), count);//登録完了
}
break;
case 'completed':
if ($('#Results_Num0' + num3).val() != count) {
$p.set($('#Results_Num0' + num3), count);//依頼完了
}
break;
}
}
$p.ex.makerNothingFunction = function () {
//ボタンを非表示
$('#makerNothingButton').hide();
@ -666,8 +757,19 @@ $p.ex.areaBrandName = function () {
let area = $('#Results_Class011 option:selected').text();
let brand = $('#Results_Class012 option:selected').text();
//Class049 area
if ($('#Results_Class049').val() == '') {
$p.set($('#Results_Class049'), area);
}
//Class050 brand
if ($('#Results_Class050').val() == '') {
$p.set($('#Results_Class050'), brand);
}
if (area && brand) {
$p.set($('#Results_ClassL'), area + ' ' + brand);
if ($('#Results_ClassL').val() == '') {
$p.set($('#Results_ClassL'), area + ' ' + brand);
}
}
}
@ -800,3 +902,25 @@ $p.ex.getRecordData = async function (id) {
return resData.Response.Data[0];
}
/*
[
{
"SiteId": 320587,
"SearchFormat": "[ClassI][ClassJ][ClassL]■[ClassV][ClassW]",
"View": {
"ColumnFilterExpressions": {
"ClassA": "[@Class045]",
"ClassB": "[@Class046]",
"ClassC": "[@Class047]",
"ClassD": "[@Class048]",
"ClassV": "[@Class049]",
"ClassW": "[@Class050]",
},
"ColumnSorterHash": {
"Title": "asc"
}
},
}
]
*/

View File

@ -99,6 +99,9 @@ $p.ex.processScript = function (procNum) {
}
//プロセスカウンターの実行
$p.ex.processCounter(procNum);
//プロセスの実行
console.log(`▶Process_${procNum} : ${procName} 処理終了`);
$p.execProcess($('#Process_' + procNum));
@ -137,4 +140,71 @@ $p.ex.processButtonControl = function () {
}
});
}
}
//プロセスごとにカウンターの値を調整する処理
$p.ex.processCounter = function (procNum) {
switch (procNum) {
case '1': //質疑送信
case '2': //回答送信
case '3': //回答確認
case '4': //見積回答削除
$p.ex.countSet(['54', '55']);
break;
case '5': //登録完了
break;
case '6': //積算依頼
$p.ex.countSet(['54']);
break;
case '7': //積算受付
case '8': //積算対応
case '9': //外部見積
case '10': //社内確認
case '11': //チェック
$p.ex.countSet(['54', '56']);
break;
case '12': //差戻し
$p.ex.countSet(['53', '54']);
break;
case '13': //積算回答
case '14': //完了
$p.ex.countSet(['54', '57']);
break;
case '15': //保留
case '17': //e保留
$p.ex.countSet(['54', '58']);
break;
case '16': //取消
case '18': //e取消
$p.ex.countSet(['54', '59']);
break;
case '19': //依頼不要
$p.ex.countSet(['54', '60']);
break;
case '20': //再依頼
break;
}
}
//ステータス別カウント設定処理
$p.ex.countSet = function (target = []) {
//初期化 対象項目をすべて0に設定
for (c = 53; c <= 60; c++) {
// カウント処理
let column = '0' + c;
$p.set($('#Results_Num' + column), 0);
}
//指定項目のみ1に設定
for (c of target) {
let column = '0' + c;
// カウント処理
$p.set($('#Results_Num' + column), 1);
}
}

View File

@ -10,6 +10,7 @@
//スタートアップメッセージ表示
$p.ex.startupMessage = function () {
let count = 0;
for (message of messageData) {
//2つ目以降のメッセージの際にクリアフラグを0に設定。
@ -24,6 +25,7 @@ $p.ex.startupMessage = function () {
case '100': //新規登録
break;
case '200': //登録完了
$p.ex.popupMessage();
break;
case '300': //積算依頼
break;
@ -41,3 +43,49 @@ $p.ex.startupMessage = function () {
break;
}
}
$p.ex.popupMessage = function () {
let message = document.createElement('pre');
message.textContent = "この依頼項目は登録済みです。Re②依頼票へ戻り、新しい依頼項目を登録するか、\n積算依頼を行ってください。ここをクリックするとRe②依頼票へ戻ります。";
// メッセージウインドウを作成
let popup = document.createElement('div');
popup.className = '#custom-fixed-popup';
// バツボタンを作成
let closeBtn = document.createElement('button');
closeBtn.textContent = '×';
closeBtn.style.position = 'absolute';
closeBtn.style.top = '0px';
closeBtn.style.right = '0px';
closeBtn.style.background = 'transparent';
closeBtn.style.border = 'none';
closeBtn.style.fontSize = '20px';
closeBtn.style.cursor = 'pointer';
closeBtn.onclick = function (e) {
e.stopPropagation();
popup.remove();
};
// クリックで指定URLにジャンプ
popup.onclick = function () {
let parentId = $('#Results_ClassW').val();
if (location.hostname) {
window.location.href = location.protocol + '//' + location.hostname + '/pleasanter/items/' + parentId;
return;
}
};
// 既存の同種ウインドウがあれば削除
let oldPopup = document.getElementById('custom-fixed-popup');
if (oldPopup) oldPopup.remove();
popup.id = 'custom-fixed-popup';
// ポジション調整
popup.appendChild(closeBtn);
popup.appendChild(message);
document.body.appendChild(popup);
}

View File

@ -61,6 +61,40 @@ $p.ex.saveHistory = function () {
'Results_Num051',
'Results_Num052',
'Results_Num053',
'Results_Num054',
'Results_Num055',
'Results_Num056',
'Results_Num057',
'Results_Num058',
'Results_Num059',
'Results_Num060',
'Results_Num071',
'Results_Num072',
'Results_Num073',
'Results_Num074',
'Results_Num075',
'Results_Num076',
'Results_Num077',
'Results_Num078',
'Results_Num079',
'Results_Num081',
'Results_Num082',
'Results_Num083',
'Results_Num084',
'Results_Num085',
'Results_Num086',
'Results_Num087',
'Results_Num088',
'Results_Num089',
'Results_Num091',
'Results_Num092',
'Results_Num093',
'Results_Num094',
'Results_Num095',
'Results_Num096',
'Results_Num097',
'Results_Num098',
'Results_Num099',
'Results_Description200'
];

View File

@ -190,4 +190,20 @@ p.field-label:has(label[for="Results_Description057"]) {
#makerNothingButton {
font-weight: bold;
font-size: 1.5em;
}
#custom-fixed-popup {
position: fixed;
top: 50px;
right: 50px;
left: unset;
background: #961414ff;
color: #ffffffff;
font-size: 1.3em;
padding: 8px 16px;
border: 2px solid #000000ff;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
z-index: 9999;
cursor: pointer;
}

View File

@ -0,0 +1,4 @@
{
"apiKey": "c38903157cbffc30961f50bc29d0991a6cd8af495ab3009b05c5f98e82b2e61b94ba2d5c0a48fc518b1cd74c9e427b01051a228f670f3c5282544dfbec93db87",
"url": "https://neo999.next-hd.net/pleasanter/"
}

View File

@ -0,0 +1,241 @@
/*
@config : next999.json
@filename : ${psFileBasename}
@title : 01_メインスクリプト
@name :
@siteIds : 335018
@siteTitles : Re①基本情報
@disabled: false
*/
let pageLoading = 0;
let apiKey = '6504c8a807677a3a576e10327f3c19876c55736ee45d4a845796b9e7f5e087bfd4bd0d8184863da8cf1733ca635111432ab334aea59102b06a96ee6d2c05190d';
//メッセージデータ
let messageData = JSON.parse($('#messageData').val() || '[]');
//エリアデータ
let areaData = JSON.parse($('#areaData').val() || '[]');
//ブランドデータ
let brandData = JSON.parse($('#brandData').val() || '[]');
//----------------------------------------------------------------------
//初期処理
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...');
//初期化
//新規作成時のみ処理
switch ($p.action()) {
//新規作成時の処理
case 'new':
console.log('新規作成時の処理');
//年度保存
$p.ex.saveYearCode();
break;
//編集時の処理
case 'edit':
console.log('編集時の処理');
//スタートアップメッセージ表示
$p.ex.startupMessage();
break;
}
console.log('共通処理');
//プロセスボタン調整
$p.ex.processButtonControl();
//読取専用項目のTab移動抑制処理
$('.code-readonly2 input').prop('tabindex', '-1');
$('.code-readonly2 select').prop('tabindex', '-1');
}
//入力チェック後処理
$p.events.after_validate = function (args) {
//エリア-ブランド結合
$p.ex.areaBrandName();
//施主名 姓名結合
$p.ex.setCustomerName();
//担当者一覧マージ
$p.ex.usersMarge1();
//CC一覧マージ
$p.ex.usersMarge2();
//担当者・CC一覧マージ
$p.ex.usersMarge3();
//変更履歴の保存
$p.ex.saveHistory();
}
//画面更新後
$p.events.after_set_Update = function (args) {
console.log('画面更新後');
//プロセスボタン調整
$p.ex.processButtonControl();
//一時保存メッセージ
let json8val = JSON.parse(args.json[8].Value);
if (json8val.Id == 'Updated') {
$p.ex.setMyMessage('new-status-light-lime', '基本情報の内容が一時保存されました');
}
}
//----------------------------------------------------------------------
//年度・四半期の保存
$p.ex.saveYearCode = function () {
let now = new Date();
let year = parseFloat(now.getFullYear()) - 2000;
let month = now.getMonth() + 1;
let code;
//年保存
$p.set($('#Results_ClassE'), year);
//四半期記号
switch (month) {
case 1:
case 2:
case 3:
code = 'A';
break;
case 4:
case 5:
case 6:
code = 'B';
break;
case 7:
case 8:
case 9:
code = 'C';
break;
case 10:
case 11:
case 12:
code = 'D';
break;
}
$p.set($('#Results_ClassF'), code); //四半期表示
$p.set($('#Results_ClassG'), code); //四半期記号
}
//施主名 姓名結合
$p.ex.setCustomerName = function () {
let firstName = $('#Results_Class001').val();
let lastName = $('#Results_Class002').val();
let customerName = firstName + ' ' + lastName + ' 様';
$p.set($('#Results_ClassS'), customerName);
//let eigyo = $('#Results_Class022').text();
let area = $('#Results_Class011 option:selected').text();
//施主名+エリア名を重複チェックフラグに格納
let flagData = firstName + lastName + '■' + area;
$p.set($('#Results_Class200'), flagData);
}
//エリアとブランド名を合体させて格納する
$p.ex.areaBrandName = function () {
//エリア名とブランド名を結合して格納
let area = $('#Results_Class011 option:selected').text();
let brand = $('#Results_Class012 option:selected').text();
if (area && brand) {
if ($('#Results_ClassT').val() == '') {
$p.set($('#Results_ClassT'), area + ' ' + brand);
}
}
//エリアコード・ブランドコードを取得して格納
let areaId = $('#Results_Class011').val();
let brandId = $('#Results_Class012').val();
let areaCode = areaData[areaId].areaCode;
let brandCode = brandData[brandId].brandCode;
if (areaCode && brandCode) {
$p.set($('#Results_ClassU'), areaCode);
$p.set($('#Results_ClassV'), brandCode);
}
}
//担当者一覧マージ
$p.ex.usersMarge1 = function () {
let users = [];
$('#Results_Class022').val() && users.push($('#Results_Class022').val()); //主担当営業 Class022
$('#Results_Class023').val() && users.push($('#Results_Class023').val()); //副担当営業 Class023
$('#Results_Class024').val() && users.push($('#Results_Class024').val()); //営業設計 Class024
$('#Results_Class025').val() && users.push($('#Results_Class025').val()); //担当監督 Class025
$('#Results_Class026').val() && users.push($('#Results_Class026').val()); //担当IC Class026
$('#Results_Class027').val() && users.push($('#Results_Class027').val()); //管理設計 Class027
$('#Results_Class028').val() && users.push($('#Results_Class028').val()); //所属長 Class028
$p.set($('#Results_Class031'), JSON.stringify(users));
}
//CC一覧マージ
$p.ex.usersMarge2 = function () {
let users = [];
$('#Results_Class041').val() && users.push($('#Results_Class041').val()); //CC1
$('#Results_Class042').val() && users.push($('#Results_Class042').val()); //CC2
$('#Results_Class043').val() && users.push($('#Results_Class043').val()); //CC3
$('#Results_Class044').val() && users.push($('#Results_Class044').val()); //CC4
$p.set($('#Results_Class032'), JSON.stringify(users));
}
//担当者・CC一覧マージ
$p.ex.usersMarge3 = function () {
//担当者一覧とCC一覧をマージして保管
let mergeAry = [...$('#Results_Class031').val(), ...$('#Results_Class032').val()];
//入力者追加
mergeAry.push($('#Results_ClassB').val());
$p.set($('#Results_Class033'), JSON.stringify(mergeAry));
}
/**
* 指定したIDの<select>タグにプレースホルダー的な<option>を挿入する関数
* @param {string} selectId - <select>タグのID
*/
function addPlaceholderOption(selectId) {
//値が空の場合、プレースホルダー的なoptionを追加
const val = $(`#${selectId}`).val();
if (!val) {
//つ目のoptionのテキストを変更
$(`#${selectId} option:first`).text('次から選択してください');
}
//console.log($(`#${selectId}`));
}

View File

@ -0,0 +1,50 @@
/*
@config : next999.json
@filename : ${psFileBasename}
@title : 02_MSSデータ処理
@name :
@siteIds : 335018
@siteTitles : Re①基本情報
@disabled: false
*/
//MSSからの引用データをクリア
$p.ex.clearMSSData = function () {
console.log('Clear MSS Data');
$p.set($('#Results_ClassN'), '0'); //案件状況
$p.set($('#Results_ClassO'), ''); //契約コード
$p.set($('#Results_Class001'), ''); //施主・姓
$p.set($('#Results_Class002'), ''); //施主・名
$p.set($('#Results_Class003'), ''); //施主・姓(カナ)
$p.set($('#Results_Class004'), ''); //施主・名(カナ)
$p.set($('#Results_Class005'), ''); //連名
$p.set($('#Results_Class006'), ''); //連名(カナ)
$p.set($('#Results_Class010'), ''); //建上地
$p.set($('#Results_Class011'), ''); //エリア
$p.set($('#Results_Class012'), ''); //契約ブランド
$p.set($('#Results_Class013'), ''); //防火指定
$p.set($('#Results_Class014'), ''); //建物種類
$p.set($('#Results_ClassS'), ''); //施主名
$p.set($('#Results_ClassT'), ''); //エリアブランド
$p.set($('#Results_ClassU'), ''); //エリア記号
$p.set($('#Results_ClassV'), ''); //ブランド記号
$p.set($('#Results_Class021'), ''); //契約営業所
$p.set($('#Results_Class022'), ''); //主担当営業
$p.set($('#Results_Class023'), ''); //副担当営業
$p.set($('#Results_Class024'), ''); //営業設計
$p.set($('#Results_Class025'), ''); //担当監督
$p.set($('#Results_Class026'), ''); //担当IC
$p.set($('#Results_Class027'), ''); //管理設計
$p.set($('#Results_Class028'), ''); //所属長
$p.set($('#Results_Date001'), ''); //承認図予定日
$p.set($('#Results_Date002'), ''); //着工予定日
}

View File

@ -0,0 +1,55 @@
/*
@config : next999.json
@filename : ${psFileBasename}
@title : 03_プロセス関連処理
@name :
@siteIds : 335018
@siteTitles : Re①基本情報
@disabled: false
*/
//プロセスボタン調整
$p.ex.processButtonControl = function () {
console.log('プロセスボタン調整');
$("button[id^='Process']").each(function () {
//close アイコンのボタンは非表示
if ($(this).attr('data-icon') == 'ui-icon-close') {
$(this).hide();
}
//ui-icon-cancel アイコンのボタンはグレーアウト
if ($(this).attr('data-icon') == 'ui-icon-cancel') {
//グレーアウト
$(this).addClass('new-status-grey');
} else {
//その他のボタンはサイズ拡大
$(this).addClass('processButtonSize');
}
//個別設定
switch (this.id) {
case 'Process_1': //登録完了
break;
case 'Process_2': //依頼終了
break;
case 'Process_3': //保留
break;
case 'Process_4': //取消
break;
case 'Process_5': //依頼票登録
break;
case 'Process_6': //案件復帰
break;
case 'Process_7': //保留(営業積算)
break;
case 'Process_8': //取消(営業積算)
break;
case 'Process_9': //案件復帰(営業積算)
break;
}
});
}

View File

@ -0,0 +1,9 @@
/*
@config : next999.json
@filename : ${psFileBasename}
@title : 04_見積依頼処理
@name :
@siteIds : 335018
@siteTitles : Re①基本情報
@disabled: false
*/

View File

@ -0,0 +1,33 @@
/*
@config : next999.json
@filename : ${psFileBasename}
@title : 90_スタートメッセージ表示
@name :
@siteIds : 335018
@siteTitles : Re①基本情報
@disabled: false
*/
//スタートアップメッセージ表示
$p.ex.startupMessage = function () {
let count = 0;
for (message of messageData) {
let clearFlag = 0;
$p.ex.setMyMessage(message.colorCode, message.message, clearFlag);
count++;
}
//開いたときにステータスごとに処理
switch ($('#Results_Status').val()) {
case '100': //新規登録
break;
case '200': //登録完了
break;
case '900': //依頼終了
break;
case '910': //保留
break;
case '920': //取消
break;
}
}

View File

@ -0,0 +1,74 @@
/*
@config : next999.json
@filename : ${psFileBasename}
@title : 99_更新履歴保存スクリプト
@name :
@siteIds : 335018
@siteTitles : Re①基本情報
@disabled: false
*/
//変更内容を保存
$p.ex.saveHistory = function () {
let history = '';
let count = 0;
//履歴に表示しない項目リスト
let excludeList = [
'Results_Timestamp',
'Results_ClassE',
'Results_ClassF',
'Results_ClassG',
'Results_ClassS',
'Results_ClassT',
'Results_ClassU',
'Results_ClassV',
'Results_Class031',
'Results_Class032',
'Results_Class033',
'Results_Class200',
'Results_Description200'
];
if ($p.data.MainForm) {
$p.set($('#Results_Description200'), '');
history = '◆ 変更内容 ◆\n';
$.each($p.data.MainForm, function (index, val) {
if (index.startsWith('Results')) {
if (!excludeList.includes(index)) {
//項目名の取得
let colName = $('label[for="' + index + '"]').text();
let text;
//セレクトボックス判定
if ($('#' + index + '.control-dropdown').length) {
//セレクトボックス処理
if ($('#' + index).prop("multiple")) {
text = $('#' + index + '_ms span').eq(-1).text();
} else {
text = $('#' + index + ' option:selected').text();
}
} else if ($('#' + index + '.radio-value').length) {
//ラジオボタン処理
text = val != '' ? $('label[for="' + index + val + '"').text() : '';
} else {
//その他
text = val;
}
history += '▷ ' + colName + ' : ' + text + '\n';
count++;
}
}
});
if (count) {
//console.log(history);
$p.set($('#Results_Description200'), history);
$p.set($('#Comments'), history);
}
}
}

View File

@ -0,0 +1,66 @@
/*
@config :next999.json
@filename : ${psFileBasename}
@title :01_メッセージデータ取得
@name :01_メッセージデータ取得
@siteIds : 335018
@siteTitles : Re①基本情報
@disabled: false
*/
try {
//メッセージデータ取得
getMessageData();
//エリアデータ取得
getAreaTable();
//ブランドデータ取得
getBrandTable();
} catch (error) {
context.Log(error);
}
//メッセージデータ取得
function getMessageData() {
//メッセージデータを取得
let data = {
"View": {
"ColumnFilterHash": {
"ClassA": "[\"" + model.SiteId + "\"]",
"ClassB": model.Status
},
"ColumnSorterHash": {
"ClassA": "asc",
"ClassB": "asc",
"NumA": "asc"
}
}
}
let results = items.Get(326371, JSON.stringify(data));
if (results.Length === 0) {
context.Log('メッセージデータが見つかりませんでした。');
return;
}
let messageData = []
for (let item of results) {
const status = item.ClassB;
const colorCode = item.ClassC;
const message = item.ClassD;
messageData.push({
"status": status,
"colorCode": colorCode,
"message": message,
});
}
//取得したメッセージデータをhiddenに格納
if (messageData.Length > 0) {
hidden.Add('messageData', JSON.stringify(messageData));
} else {
context.Log('メッセージデータが見つかりませんでした。');
}
}

View File

@ -0,0 +1,71 @@
/*
@config :next999.json
@filename : ${psFileBasename}
@title :02_マスターデータ取得
@name :02_マスターデータ取得
@siteIds : 335018
@siteTitles : Re①基本情報
@disabled: false
*/
//エリアテーブルからデータを取得
function getAreaTable() {
//エリアテーブルからデータを取得
let results = items.Get(210699);
if (results.Length === 0) {
context.Log('エリアデータが見つかりませんでした。1');
return;
}
let areaData = {};
let count = 0;
for (let item of results) {
const areaId = item.ResultId;
const areaName = item.Title;
const areaCode = item.ClassA;
areaData[areaId] = {
"areaId": areaId,
"areaName": areaName,
"areaCode": areaCode,
};
count++;
}
//取得したエリアデータをhiddenに格納
if (count > 0) {
hidden.Add('areaData', JSON.stringify(areaData));
} else {
context.Log('エリアデータが見つかりませんでした。2');
}
}
//ブランドテーブルからデータを取得
function getBrandTable() {
//ブランドテーブルからデータを取得
let results = items.Get(109100);
if (results.Length === 0) {
context.Log('ブランドデータが見つかりませんでした。1');
return;
}
let brandData = {};
let count = 0;
for (let item of results) {
const brandId = item.ResultId;
const brandName = item.Title;
const brandCode = item.ClassA;
brandData[brandId] = {
"brandId": brandId,
"brandName": brandName,
"brandCode": brandCode,
};
count++;
}
//取得したエリアデータをhiddenに格納
if (count > 0) {
hidden.Add('brandData', JSON.stringify(brandData));
} else {
context.Log('ブランドデータが見つかりませんでした。2');
}
}

View File

@ -0,0 +1,137 @@
/*
@config : next999.json
@filename : ${psFileBasename}
@title : 01_読み取り専用スタイル
@name :
@siteIds : 335018
@siteTitles : Re基本情報
@disabled: false
*/
label.error {
pointer-events: none;
z-index: 100;
border-top: none !important;
}
.code-readonly {
pointer-events: none;
background-color: lightgrey;
font-weight: bold;
}
.code-readonly2,
.code-readonly2+button,
.code-readonly2+div.ui-icon,
.code-readonly3,
.code-readonly3+button,
.code-readonly3+div.ui-icon {
font-weight: bold;
&:active {
pointer-events: none;
}
a:not(.ui-spinner-button) {
pointer-events: auto;
}
}
.code-readonly2 select,
.code-readonly2 input,
.code-readonly2 button.ui-multiselect,
.code-readonly2 .control-markup,
.code-readonly2 .ui-spinner,
span[data-readonly="1"] {
pointer-events: none;
border: dashed 1px black;
background-color: lightgray !important;
color: black !important;
.ui-spinner-input {
border: none;
}
}
.code-readonly3 select,
.code-readonly3 input,
.code-readonly3 button.ui-multiselect,
.code-readonly3 .control-markup,
.code-readonly3 .ui-spinner {
pointer-events: none;
border: dashed 1px black;
.ui-spinner-input {
border: none;
}
}
/*読取り専用のツールチップ*/
.code-readonly2,
.code-readonly3,
.field-normal:has(span[data-readonly="1"]),
.field-wide:has(span[data-readonly="1"]) {
position: relative;
&:hover::after {
content: "読取り専用です";
position: absolute;
left: 120px;
top: calc(100% - 9px);
margin-top: 4px;
background: #00000080;
color: #fff;
padding: 4px 10px;
border-radius: 4px;
font-size: 12px;
font-weight: normal !important;
pointer-events: none;
z-index: 9999;
white-space: nowrap;
}
}
/*入力必須項目の強調表示*/
.code-required,
select[data-validate-required="1"],
input[data-validate-required="1"] {
border: double 3px #ff0000 !important;
&+button.ui-multiselect {
border: double 3px #ff0000 !important;
}
}
/*入力必須のツールチップ*/
.field-normal:has(.code-required),
.field-wide:has(.code-required),
.field-normal:has(select[data-validate-required="1"]),
.field-wide:has(select[data-validate-required="1"]),
.field-normal:has(input[data-validate-required="1"]),
.field-wide:has(input[data-validate-required="1"]) {
position: relative;
&:hover::after {
content: "入力必須です";
position: absolute;
left: 120px;
top: calc(100% - 9px);
margin-top: 4px;
background: #ff000080;
color: #fff;
padding: 4px 10px;
border-radius: 4px;
font-size: 12px;
font-weight: normal !important;
pointer-events: none;
z-index: 9999;
white-space: nowrap;
}
}
.error {
border: double 3px red !important;
}

View File

@ -0,0 +1,30 @@
/*
@config : next999.json
@filename : ${psFileBasename}
@title : 02_共通スタイル
@name :
@siteIds : 335018
@siteTitles : Re基本情報
@disabled: false
*/
/*見出しサイズ*/
.field-section {
font-size: 1.5em !important;
font-weight: bold !important;
height: auto;
}
/*項目の後ろの行間を少し狭める*/
.field-normal {
height: 35px;
}
.field-wide {
min-height: 35px;
padding: 0 10px 5px 0;
}
/*コメントのある項目の高さだけ少し広げる*/
div:has(.commentAdd).field-normal {
height: 50px;
}

View File

@ -0,0 +1,33 @@
/*
@config : next999.json
@filename : ${psFileBasename}
@title : 03_プロセスボタンの変更
@name :
@siteIds : 335018
@siteTitles : Re基本情報
@disabled: false
*/
.processButtonSize {
font-size: 1.5em !important;
font-weight: bold !important;
border: 2px solid black !important;
}
/*新規作成ボタン*/
#CreateCommand {
font-size: 1.5em !important;
font-weight: bold !important;
background: blue !important;
color: white !important;
border: 2px solid black !important;
}
#Process_1 {
background: limegreen !important;
color: black !important;
}
#UpdateCommand {
display: none !important;
}

View File

@ -0,0 +1,17 @@
/*
@config : next999.json
@filename : ${psFileBasename}
@title : 04_個別表示調整処理
@name :
@siteIds : 335018
@siteTitles : Re基本情報
@disabled: false
*/
/*管理番号*/
#Results_ClassA,
label[for="Results_ClassA"] {
font-size: 1.5em !important;
font-weight: bold !important;
height: 2.2em !important;
}

View File

@ -0,0 +1,4 @@
{
"apiKey": "c38903157cbffc30961f50bc29d0991a6cd8af495ab3009b05c5f98e82b2e61b94ba2d5c0a48fc518b1cd74c9e427b01051a228f670f3c5282544dfbec93db87",
"url": "https://neo999.next-hd.net/pleasanter/"
}

View File

@ -338,6 +338,11 @@ $p.ex.processScript = function (procNum) {
}
}
break;
case '17':
console.log('Process_' + procNum + ' Activate');
$p.ex.getMyData(); // 自身のデータを取得し、ISO管理へデータを控えを送る処理
$p.execProcess($('#Process_' + procNum));
break;
//default ---------------------------------
default:
flag = false;

View File

@ -67,33 +67,33 @@ $p.events.before_set_Update = function () {
//MSSの危険負担費の更新
//稟議集計テーブルへのデータ計上
}
$p.ex.chechMembers = function () {
//②以降 部署が空欄の場合は社員を空欄に変更
$('#Results_Class142').val() == '' && $p.set($('#Results_Class152'), '');
$('#Results_Class143').val() == '' && $p.set($('#Results_Class153'), '');
$('#Results_Class144').val() == '' && $p.set($('#Results_Class154'), '');
$('#Results_Class145').val() == '' && $p.set($('#Results_Class155'), '');
$('#Results_Class146').val() == '' && $p.set($('#Results_Class156'), '');
$('#Results_Class147').val() == '' && $p.set($('#Results_Class157'), '');
$('#Results_Class148').val() == '' && $p.set($('#Results_Class158'), '');
$('#Results_Class149').val() == '' && $p.set($('#Results_Class159'), '');
$('#Results_Class150').val() == '' && $p.set($('#Results_Class160'), '');
if ($('#Results_Class142').attr('data-readonly') != '1') {
//②以降 部署が空欄の場合は社員を空欄に変更
$('#Results_Class142').val() == '' && $p.set($('#Results_Class152'), '');
$('#Results_Class143').val() == '' && $p.set($('#Results_Class153'), '');
$('#Results_Class144').val() == '' && $p.set($('#Results_Class154'), '');
$('#Results_Class145').val() == '' && $p.set($('#Results_Class155'), '');
$('#Results_Class146').val() == '' && $p.set($('#Results_Class156'), '');
$('#Results_Class147').val() == '' && $p.set($('#Results_Class157'), '');
$('#Results_Class148').val() == '' && $p.set($('#Results_Class158'), '');
$('#Results_Class149').val() == '' && $p.set($('#Results_Class159'), '');
$('#Results_Class150').val() == '' && $p.set($('#Results_Class160'), '');
//②以降 社員が空欄の場合は部署を空欄に変更
$('#Results_Class152').val() == '' && $p.set($('#Results_Class142'), '');
$('#Results_Class153').val() == '' && $p.set($('#Results_Class143'), '');
$('#Results_Class154').val() == '' && $p.set($('#Results_Class144'), '');
$('#Results_Class155').val() == '' && $p.set($('#Results_Class145'), '');
$('#Results_Class156').val() == '' && $p.set($('#Results_Class146'), '');
$('#Results_Class157').val() == '' && $p.set($('#Results_Class147'), '');
$('#Results_Class158').val() == '' && $p.set($('#Results_Class148'), '');
$('#Results_Class159').val() == '' && $p.set($('#Results_Class149'), '');
$('#Results_Class160').val() == '' && $p.set($('#Results_Class150'), '');
//②以降 社員が空欄の場合は部署を空欄に変更
$('#Results_Class152').val() == '' && $p.set($('#Results_Class142'), '');
$('#Results_Class153').val() == '' && $p.set($('#Results_Class143'), '');
$('#Results_Class154').val() == '' && $p.set($('#Results_Class144'), '');
$('#Results_Class155').val() == '' && $p.set($('#Results_Class145'), '');
$('#Results_Class156').val() == '' && $p.set($('#Results_Class146'), '');
$('#Results_Class157').val() == '' && $p.set($('#Results_Class147'), '');
$('#Results_Class158').val() == '' && $p.set($('#Results_Class148'), '');
$('#Results_Class159').val() == '' && $p.set($('#Results_Class149'), '');
$('#Results_Class160').val() == '' && $p.set($('#Results_Class150'), '');
}
return true;
@ -103,16 +103,31 @@ $p.ex.calcMoney = function () {
//人数申請者分1名固定
let members_Count = 1;
//②以降 社員が空欄の場合は部署を空欄に変更
$('#Results_Class152').val() != '' && members_Count++;
$('#Results_Class153').val() != '' && members_Count++;
$('#Results_Class154').val() != '' && members_Count++;
$('#Results_Class155').val() != '' && members_Count++;
$('#Results_Class156').val() != '' && members_Count++;
$('#Results_Class157').val() != '' && members_Count++;
$('#Results_Class158').val() != '' && members_Count++;
$('#Results_Class159').val() != '' && members_Count++;
$('#Results_Class160').val() != '' && members_Count++;
if ($('#Results_Class152').attr('data-readonly')) {
$('#Results_Class152').text() != '' && members_Count++;
$('#Results_Class153').text() != '' && members_Count++;
$('#Results_Class154').text() != '' && members_Count++;
$('#Results_Class155').text() != '' && members_Count++;
$('#Results_Class156').text() != '' && members_Count++;
$('#Results_Class157').text() != '' && members_Count++;
$('#Results_Class158').text() != '' && members_Count++;
$('#Results_Class159').text() != '' && members_Count++;
$('#Results_Class160').text() != '' && members_Count++;
} else {
//②以降 社員が空欄の場合は部署を空欄に変更
$('#Results_Class152').val() != '' && members_Count++;
$('#Results_Class153').val() != '' && members_Count++;
$('#Results_Class154').val() != '' && members_Count++;
$('#Results_Class155').val() != '' && members_Count++;
$('#Results_Class156').val() != '' && members_Count++;
$('#Results_Class157').val() != '' && members_Count++;
$('#Results_Class158').val() != '' && members_Count++;
$('#Results_Class159').val() != '' && members_Count++;
$('#Results_Class160').val() != '' && members_Count++;
}
//販売金額(税別)を人数で按分して計上
let money = parseFloat($('#Results_NumZ').val().toString().replaceAll(/[¥,]/g, ''));
@ -341,6 +356,17 @@ $p.ex.processScript = function (procNum) {
$p.execProcess($('#Process_' + procNum));
}
break;
case '6':
console.log('Process_' + procNum + ' Activate');
flag = window.confirm('部署担当者別に再計上します。宜しいですか?');
//ISO集計へデータを飛ばす
if (flag) {
$p.ex.getMyData();
$p.ex.updateSummaryData(myData);
$p.execProcess($('#Process_' + procNum));
}
break;
//default ---------------------------------
default:
@ -372,6 +398,7 @@ $p.ex.getMyData = function () {
}
/*
$p.ex.updateSummaryData = function (myData) {
let userList = [];
@ -379,6 +406,7 @@ $p.ex.updateSummaryData = function (myData) {
let numQ = parseFloat($('#Results_NumQ').val().toString().replaceAll(/[¥,]/g, ''));
//$('#Results_Class151').val() != '' && userList.push($('#Results_Class151').val());
$('#Results_Class152').val() != '' && userList.push($('#Results_Class152').val());
$('#Results_Class153').val() != '' && userList.push($('#Results_Class153').val());
$('#Results_Class154').val() != '' && userList.push($('#Results_Class154').val());
@ -412,10 +440,93 @@ $p.ex.updateSummaryData = function (myData) {
$('#Results_Class160').val() != '' &&
$p.ex.updateSummary($('#Results_Class150').val(), $('#Results_Class160').val(), numQ);
}
*/
$p.ex.updateSummaryData = function (myData) {
let userList = [];
let numP = parseFloat($('#Results_NumP').val().toString().replaceAll(/[¥,]/g, ''));
let numQ = parseFloat($('#Results_NumQ').val().toString().replaceAll(/[¥,]/g, ''));
if ($('#Results_Class142').attr('data-readonly') == '1') {
myData.ClassHash.Class152 != '' && userList.push(myData.ClassHash.Class152);
myData.ClassHash.Class153 != '' && userList.push(myData.ClassHash.Class153);
myData.ClassHash.Class154 != '' && userList.push(myData.ClassHash.Class154);
myData.ClassHash.Class155 != '' && userList.push(myData.ClassHash.Class155);
myData.ClassHash.Class156 != '' && userList.push(myData.ClassHash.Class156);
myData.ClassHash.Class157 != '' && userList.push(myData.ClassHash.Class157);
myData.ClassHash.Class158 != '' && userList.push(myData.ClassHash.Class158);
myData.ClassHash.Class159 != '' && userList.push(myData.ClassHash.Class159);
myData.ClassHash.Class160 != '' && userList.push(myData.ClassHash.Class160);
//申請部署、申請者
$p.ex.updateSummary(myData.ClassHash.Class141, myData.ClassHash.Class151, numP);
//関連部署・関連社員
myData.ClassHash.Class152 != '' &&
$p.ex.updateSummary(myData.ClassHash.Class142, myData.ClassHash.Class152, numQ);
myData.ClassHash.Class153 != '' &&
$p.ex.updateSummary(myData.ClassHash.Class143, myData.ClassHash.Class153, numQ);
myData.ClassHash.Class154 != '' &&
$p.ex.updateSummary(myData.ClassHash.Class144, myData.ClassHash.Class154, numQ);
myData.ClassHash.Class155 != '' &&
$p.ex.updateSummary(myData.ClassHash.Class145, myData.ClassHash.Class155, numQ);
myData.ClassHash.Class156 != '' &&
$p.ex.updateSummary(myData.ClassHash.Class146, myData.ClassHash.Class156, numQ);
myData.ClassHash.Class157 != '' &&
$p.ex.updateSummary(myData.ClassHash.Class147, myData.ClassHash.Class157, numQ);
myData.ClassHash.Class158 != '' &&
$p.ex.updateSummary(myData.ClassHash.Class148, myData.ClassHash.Class158, numQ);
myData.ClassHash.Class159 != '' &&
$p.ex.updateSummary(myData.ClassHash.Class149, myData.ClassHash.Class159, numQ);
myData.ClassHash.Class160 != '' &&
$p.ex.updateSummary(myData.ClassHash.Class150, myData.ClassHash.Class160, numQ);
} else {
$('#Results_Class152').val() != '' && userList.push($('#Results_Class152').val());
$('#Results_Class153').val() != '' && userList.push($('#Results_Class153').val());
$('#Results_Class154').val() != '' && userList.push($('#Results_Class154').val());
$('#Results_Class155').val() != '' && userList.push($('#Results_Class155').val());
$('#Results_Class156').val() != '' && userList.push($('#Results_Class156').val());
$('#Results_Class157').val() != '' && userList.push($('#Results_Class157').val());
$('#Results_Class158').val() != '' && userList.push($('#Results_Class158').val());
$('#Results_Class159').val() != '' && userList.push($('#Results_Class159').val());
$('#Results_Class160').val() != '' && userList.push($('#Results_Class160').val());
//申請部署、申請者
$p.ex.updateSummary($('#Results_Class141').val(), $('#Results_Class151').val(), numP);
//関連部署・関連社員
$('#Results_Class152').val() != '' &&
$p.ex.updateSummary($('#Results_Class142').val(), $('#Results_Class152').val(), numQ);
$('#Results_Class153').val() != '' &&
$p.ex.updateSummary($('#Results_Class143').val(), $('#Results_Class153').val(), numQ);
$('#Results_Class154').val() != '' &&
$p.ex.updateSummary($('#Results_Class144').val(), $('#Results_Class154').val(), numQ);
$('#Results_Class155').val() != '' &&
$p.ex.updateSummary($('#Results_Class145').val(), $('#Results_Class155').val(), numQ);
$('#Results_Class156').val() != '' &&
$p.ex.updateSummary($('#Results_Class146').val(), $('#Results_Class156').val(), numQ);
$('#Results_Class157').val() != '' &&
$p.ex.updateSummary($('#Results_Class147').val(), $('#Results_Class157').val(), numQ);
$('#Results_Class158').val() != '' &&
$p.ex.updateSummary($('#Results_Class148').val(), $('#Results_Class158').val(), numQ);
$('#Results_Class159').val() != '' &&
$p.ex.updateSummary($('#Results_Class149').val(), $('#Results_Class159').val(), numQ);
$('#Results_Class160').val() != '' &&
$p.ex.updateSummary($('#Results_Class150').val(), $('#Results_Class160').val(), numQ);
}
}
$p.ex.updateSummary = function (busyo, user, money) {
//console.log(myData);
console.log('Update Summary:' + busyo);
console.log('Update Summary:' + user);
console.log('Update Summary:' + money);
let classHash = {
'ClassA': myData.ClassHash.ClassA, //稟議コード
@ -423,11 +534,11 @@ $p.ex.updateSummary = function (busyo, user, money) {
'ClassB': busyo, //該当部署
'ClassC': user, //該当社員
'ClassD': areaList[busyo].areaName, //稟議内容
'ClassI': $('#Results_Class105').val(), //計上年
'ClassJ': $('#Results_Class106').val(), //計上月
'ClassK': $('#Results_Class107').val(), //計上年月
'ClassO': $('#Results_Class110').val(), //稟議項目
'ClassP': $('#Results_Class111').val(), //稟議の原因
'ClassI': $('#Results_Class105').attr('data-readonly') ? myData.ClassHash.Class105 : $('#Results_Class105').val(), //計上年
'ClassJ': $('#Results_Class106').attr('data-readonly') ? myData.ClassHash.Class106 : $('#Results_Class106').val(), //計上月
'ClassK': $('#Results_Class107').attr('data-readonly') ? myData.ClassHash.Class107 : $('#Results_Class107').val(), //計上年月
'ClassO': $('#Results_Class110').attr('data-readonly') ? myData.ClassHash.Class110 : $('#Results_Class110').val(), //稟議項目
'ClassP': $('#Results_Class111').attr('data-readonly') ? myData.ClassHash.Class111 : $('#Results_Class111').val(), //稟議の原因
'Class100': $p.id(), //ISO稟議管理レコードID
}