ken_nogi/pleasanter/develop/★MSS/★マスターシート/sites/scripts/11.事前申請処理.js
Kenichiro NOGI 7176dc33ec pleasanter
2025-07-10 10:15:35 +09:00

370 lines
13 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
@config : next999.json
@filename : ${psFileBasename}
@title : 11.事前申請処理
@name :
@siteIds : 189112
@siteTitles : ★マスターシート
@disabled: false
*/
//事前申請確認ウインドウ
//事前申請外部メッセージ、チェックボックスウインドウ
//管理設計ClassL
//所属長ClassY
//WF専務GR['423'] //川名 真治
//WF総務GR['463', '459', '655', '691'] //豊蔵 恵美, 長谷川 望, 秦野 勇輝, 露﨑 直樹
//担当役員Class122
//Class124 [本前]管理設計_確認者
//Class125 [本前]所属長_確認者
//Class126 [本前]専務_確認者
//Class127 [本前]総務_確認者
//Class128 [本前]役員_確認者
let jizenKakuninMode;//データを保管するカラム番号
let childWindow;
function jizenKakunin() {
let userId = $p.userId();
let tantoEigyo = myData.ClassHash.ClassG;
let kanriSekkei = myData.ClassHash.ClassL;
let shozokucho = myData.ClassHash.ClassY;
let senmu = '423';//川名専務のUserId
let soumu = ['463', '459', '655', '691', '460'];
//let yakuin = myData.ClassHash.Class122;
jizenKakuninMode = 0;
let status = myData.Status;
switch (status) {
case 150: //本契約 事前申請
if (userId == kanriSekkei && !(myData.CheckHash['Check124'])) {
//管理設計
jizenKakuninMode = 124;
} else if (userId == shozokucho && !(myData.CheckHash['Check125'])) {
//所属長確認
jizenKakuninMode = 125;
} else if (userId == senmu && !(myData.CheckHash['Check126'])) {
//専務確認
jizenKakuninMode = 126;
} else if (soumu.includes(userId.toString()) && !(myData.CheckHash['Check127'])) {
//総務
jizenKakuninMode = 127;
}
//else if (userId == yakuin && !(myData.CheckHash['Check128'])) {
// //役員
// jizenKakuninMode = 128;
//}
break;
case 151: //設計契約 事前申請
if (userId == kanriSekkei && !(myData.CheckHash['Check195'])) {
//管理設計
jizenKakuninMode = 195;
} else if (userId == shozokucho && !(myData.CheckHash['Check196'])) {
//所属長確認
jizenKakuninMode = 196;
} else if (soumu.includes(userId.toString()) && !(myData.CheckHash['Check197'])) {
//総務
jizenKakuninMode = 197;
}
//else if (userId == yakuin && !(myData.CheckHash['Check198'])) {
// //役員
// jizenKakuninMode = 198;
//}
break;
case 160: //本契約 事前確認
//担当営業最終確認
if (userId == tantoEigyo) {
//最終確認モード
jizenKakuninMode = 139;
}
break;
case 161://設計契約 事前確認
//担当営業最終確認
if (userId == tantoEigyo) {
//最終確認モード
jizenKakuninMode = 170;
}
break;
}
console.log(jizenKakuninMode)
//すでに完了チェックを入れている場合はボタン無し
//事前確認ウインドウ ボタン表示判定
if (jizenKakuninMode != 0) {
if (status == 150 || status == 151) {
if (!(myData.CheckHash['Check' + jizenKakuninMode])) {
createJizenKakuninButton1();
}
} else if (status == 160) {
createJizenKakuninButton2();
} else if (status == 161) {
createJizenKakuninButton3();
}
}
}
function createJizenKakuninButton1() {
let div = document.createElement('div');
div.id = 'jizenWindow';
$('#Guide').after(div);
let button = document.createElement('button');
button.type = 'button';
button.id = 'jizenWindowButton';
button.innerHTML = '[各部署]事前確認';
button.setAttribute('onclick', 'jizenKakuninWindowOpen1() ');
button.style.margin = '5px';
button.style.fontSize = '150%';
button.style.fontWeight = 'bold';
button.style.color = '#FF0000';
div.append(button);
$('#jizenWindowButton').button({
icon: 'ui-icon-star'
});
}
function createJizenKakuninButton2() {
let div = document.createElement('div');
div.id = 'jizenWindow';
$('#Guide').after(div);
let button = document.createElement('button');
button.type = 'button';
button.id = 'jizenWindowButton';
button.innerHTML = '[本契]事前確認';
button.setAttribute('onclick', 'jizenKakuninWindowOpen2() ');
button.style.margin = '5px';
button.style.fontSize = '150%';
button.style.fontWeight = 'bold';
button.style.color = '#FF0000';
div.append(button);
$('#jizenWindowButton').button({
icon: 'ui-icon-star'
});
}
function createJizenKakuninButton3() {
let div = document.createElement('div');
div.id = 'jizenWindow';
$('#Guide').after(div);
let button = document.createElement('button');
button.type = 'button';
button.id = 'jizenWindowButton';
button.innerHTML = '[設契]事前確認';
button.setAttribute('onclick', 'jizenKakuninWindowOpen3() ');
button.style.margin = '5px';
button.style.fontSize = '150%';
button.style.fontWeight = 'bold';
button.style.color = '#FF0000';
div.append(button);
$('#jizenWindowButton').button({
icon: 'ui-icon-star'
});
}
function jizenKakuninWindowOpen1() {
let url = '/pleasanter/myScripts/beforeComment.html';
childWindow = window.open(url, '[各部署]事前確認シート', 'left=10,top=10,width=800,height=600,menubar=no,toolbar=no,location=no,status=no,resizable=yes');
}
function jizenKakuninWindowOpen2() {
let url = '/pleasanter/myScripts/beforeCheck1.html';
childWindow = window.open(url, '[本契約]事前確認 担当営業チェックシート', 'left=10,top=10,width=800,height=800,menubar=no,toolbar=no,location=no,status=no,resizable=yes');
}
function jizenKakuninWindowOpen3() {
let url = '/pleasanter/myScripts/beforeCheck2.html';
childWindow = window.open(url, '[設計契約]事前確認 担当営業チェックシート', 'left=10,top=10,width=800,height=800,menubar=no,toolbar=no,location=no,status=no,resizable=yes');
}
function receiveMessageFromChild(message, checkbox) {
console.log('親ウィンドウ:子ウィンドウからメッセージを受信しました!');
//console.log('メッセージ内容:', message);
//console.log('チェックボックス', checkbox);
console.log(jizenKakuninMode)
let now = new Date();
let nowStr = now.getFullYear() + '/' +
(now.getMonth() + 1).toString().padStart(2, '0') + '/' +
now.getDate().toString().padStart(2, '0') + ' ' +
now.getHours().toString().padStart(2, '0') + ':' +
now.getMinutes().toString().padStart(2, '0') + ':' +
now.getSeconds().toString().padStart(2, '0');
//確認完了チェックが入っていたら日付を保存する
if (checkbox) {
$p.set($('#Results_Date' + jizenKakuninMode), nowStr);//完了日
$p.set($('#Results_Check' + jizenKakuninMode), 'checked');//完了チェックボックス
} else {
$p.set($('#Results_Date' + jizenKakuninMode), '');
$p.set($('#Results_Check' + jizenKakuninMode), '');
}
$p.set($('#Results_Class' + jizenKakuninMode), $p.userId()); //確認者
$p.set($('#Results_Description' + jizenKakuninMode), message); //コメント
childWindow.close(); //子ウインドウを閉じる
//更新処理
//$('#UpdateCommand').click();
//ステータスチェック
let status = myData.Status;
//タブ移動
switch (status) {
case 150: //本契約 事前申請
$('a[href="#FieldSetTab17"]').click();
break;
case 151: //設計契約 事前申請
$('a[href="#FieldSetTab16"]').click();
break;
case 160: //本契約 事前確認
//担当営業最終確認
$('a[href="#FieldSetTab17"]').click();
break;
case 161://設計契約 事前確認
//担当営業最終確認
$('a[href="#FieldSetTab16"]').click();
break;
}
window.alert('チェックとコメントを保存するため、最後に必ず『更新』ボタンを押してください');
}
//事前確認ウインドウに入力途中のメッセージを表示
function getMessageFromParent() {
let message = $('#Results_Description' + jizenKakuninMode).val();
return message;
}
function getjizenKakuninModeFromParent() {
return jizenKakuninMode;
}
//事前確認ウインドウに入力途中のメッセージを表示
function getChekboxFromParent() {
let checkbox = $('#Results_Check' + jizenKakuninMode).prop("checked");
//console.log('CheckBox' + jizenKakuninMode + ' is ' + checkbox);
return checkbox;
}
function getCommentsDataFromParent(idList) {
let ret = {}
idList.forEach(function (id) {
let checkBox = $('#Results_Check' + id).prop("checked");
ret[id] = {};
if (checkBox) {
//承認者
ret[id]['shonin_user'] = $('#Results_Class' + id).val() == '' ? '' : userList[$('#Results_Class' + id).val()].name;
//承認日
if ($('#Results_Date' + id).val() != '') {
let date = new Date($('#Results_Date' + id).val());
dateStr = date.getFullYear() + '年' +
(date.getMonth() + 1).toString().padStart(2, '0') + '月' +
date.getDate().toString().padStart(2, '0') + '日';
timeStr = date.getHours().toString().padStart(2, '0') + '時' +
date.getMinutes().toString().padStart(2, '0') + '分';
ret[id]['shonin_date'] = dateStr + '<br>' + timeStr;
} else {
ret[id]['shonin_date'] = '';
}
//コメント
ret[id]['comments'] = '<pre>' + $('#Results_Description' + id).val() + '</pre>';
} else {
ret[id]['shonin_user'] = '';
ret[id]['shonin_date'] = '';
ret[id]['comments'] = '';
}
});
//console.log(ret);
return ret;
}
//チェック状態を取得して子ウインドウに反映
function getCheckDataFromParent(checkList) {
let ret = {};
checkList.forEach(function (id) {
let check = $('#Results_Check' + id).prop("checked");
ret[id] = check;
});
return ret;
}
//子ウインドウでチェックボックスを操作したら、メインウインドウのチェックボックスが連動
function setCheckboxDataFromChild(id, flag) {
$('#Results_Check' + id).prop("checked");
if (flag) {
$p.set($('#Results_Check' + id), 'checked');//完了チェックボックス オン
} else {
$p.set($('#Results_Check' + id), '');//完了チェックボックス オフ
}
}
function closeJizenKakuninWindow(checkList) {
let flag = true;
//現在時刻取得
let now = new Date();
let nowStr = now.getFullYear() + '/' +
(now.getMonth() + 1).toString().padStart(2, '0') + '/' +
now.getDate().toString().padStart(2, '0') + ' ' +
now.getHours().toString().padStart(2, '0') + ':' +
now.getMinutes().toString().padStart(2, '0') + ':' +
now.getSeconds().toString().padStart(2, '0');
checkList.forEach(function (id) {
let check = $('#Results_Check' + id).prop("checked");
if (!check) flag = false; //ひとつでもチェックがないと更新無し
});
//担当営業がすべてチェックを入れたら完了処理
if (flag) {
$p.set($('#Results_Date' + jizenKakuninMode), nowStr);//完了日
$p.set($('#Results_Class' + jizenKakuninMode), $p.userId()); //確認者
}
childWindow.close(); //子ウインドウを閉じる
//更新処理
//$('#UpdateCommand').click();
//ステータスチェック
let status = myData.Status;
//タブ移動
switch (status) {
case 150: //本契約 事前申請
$('a[href="#FieldSetTab17"]').click();
break;
case 151: //設計契約 事前申請
$('a[href="#FieldSetTab16"]').click();
break;
case 160: //本契約 事前確認
//担当営業最終確認
$('a[href="#FieldSetTab17"]').click();
break;
case 161://設計契約 事前確認
//担当営業最終確認
$('a[href="#FieldSetTab16"]').click();
break;
}
window.alert('チェックとコメントを保存するため、最後に必ず『更新』ボタンを押してください');
}