apply pattern when username change

This commit is contained in:
2026-03-11 17:43:03 +08:00
parent 7c31cd9b97
commit 96315d5f8f
3 changed files with 135 additions and 59 deletions

View File

@@ -144,27 +144,7 @@
// 管理者かどうかを取得
isAdmin = groupCodes.indexOf(adminGroupCode) !== -1;
var editUserCode = record.engineer_mechanic.value.length > 0 ? record.engineer_mechanic.value[0].code : "";
return getSystemControlRecord(editUserCode).then(function (systemRecord) {
if (systemRecord != null) {
// サービスレポート承認者グループに所属するユーザーかどうかを取得
const serviceReportAuthorizerCodes =
systemRecord.サービスレポート承認者グループ.value.map(function (
group
) {
return group.code;
});
isServiceReportAuthorizer = serviceReportAuthorizerCodes.some(
function (serviceReportAuthorizerCode) {
return groupCodes.indexOf(serviceReportAuthorizerCode) !== -1;
}
);
// システムコントロール情報の設定
setSystemControlField(systemRecord, record);
setSystemInfo(record);
}
});
return fetchSystemControlAndUpdateFields(record, groupCodes);
})
.then(function () {
setHiddenField(isAdmin);
@@ -183,6 +163,41 @@
}
);
/**
* 「engineer_mechanic」変更時の処理を行います。
*/
kintone.events.on(
[
"app.record.create.change.engineer_mechanic",
"app.record.edit.change.engineer_mechanic",
],
function (
/** @type {kintone.AppEvent__サービスレポート_出張経費精算入力} */
event
) {
const record = event.record;
if (record.engineer_mechanic.value.length > 0) {
pvc.util.ui.showSpinner();
getLoginUserGroupCodes()
.then(function (groupCodes) {
return fetchSystemControlAndUpdateFields(record, groupCodes);
})
.then(function () {
setDisabledField(record, isServiceReportAuthorizer);
kintone.app.record.set(event);
pvc.util.ui.hideSpinner();
})
.catch(function (error) {
pvc.util.ui.hideSpinner();
console.error(error);
alert("システムエラーが発生しました");
});
}
return event;
}
);
/**
* 「作業時間情報」変更時の処理を行います。
*/
@@ -987,6 +1002,36 @@
return pvc.util.array.sum(includeTimeNumList);
}
/**
* 指定されたユーザーコードのシステムコントロール情報を取得してフィールドに設定します。
* @param {kintone.AppRecord__サービスレポート_出張経費精算入力} record
* @param {string[]} groupCodes - ログインユーザーの所属グループコードリスト
* @returns {Promise<void>}
*/
function fetchSystemControlAndUpdateFields(record, groupCodes) {
var userCode = record.engineer_mechanic.value.length > 0 ? record.engineer_mechanic.value[0].code : "";
return getSystemControlRecord(userCode).then(function (systemRecord) {
if (systemRecord != null) {
// サービスレポート承認者グループに所属するユーザーかどうかを取得
const serviceReportAuthorizerCodes =
systemRecord.サービスレポート承認者グループ.value.map(function (
group
) {
return group.code;
});
isServiceReportAuthorizer = serviceReportAuthorizerCodes.some(
function (serviceReportAuthorizerCode) {
return groupCodes.indexOf(serviceReportAuthorizerCode) !== -1;
}
);
// システムコントロール情報の設定
setSystemControlField(systemRecord, record);
setSystemInfo(record);
}
});
}
/**
* システムコントロールのレコードを取得します。
* @param {string} userCode - ユーザーコードengineer_mechanic.コード)