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

@@ -53,15 +53,9 @@
setHiddenTableRowButton();
pvc.util.ui.showSpinner();
var userCode = record.氏名.value.length > 0 ? record.氏名.value[0].code : "";
return getSystemControlRecord(userCode)
.then(function (systemRecord) {
return fetchAndSetSystemControlInfo(record)
.then(function () {
pvc.util.ui.hideSpinner();
if (systemRecord != null) {
setSystemControlField(systemRecord, record);
setSystemInfo(record);
}
return event;
})
.catch(function (error) {
@@ -90,39 +84,42 @@
) {
const record = event.record;
const sinseiNengetu = pvc.util.obj.toNumber(record.申請年月.value) || 0;
// 既存の申請年月変更時の処理を継続
if (isNengetuNum(sinseiNengetu) && record.氏名.value.length > 0) {
kintone.Promise.resolve().then(function () {
pvc.util.ui.showSpinner();
pvc.util.ui.showSpinner();
// 「氏名」変更時にシステムコントロールの情報を取得
fetchAndSetSystemControlInfo(record)
.then(function () {
/** @type {{ record: kintone.AppRecord__勤怠申請入力_内勤者用 }} */
const r = kintone.app.record.get();
return existsDuplicateData(r.record)
.then(function (isExists) {
if (isExists) {
// 重複するデータが既に存在する場合
alert("既に登録済です。");
return;
}
/** @type {{ record: kintone.AppRecord__勤怠申請入力_内勤者用 }} */
const r = kintone.app.record.get();
return existsDuplicateData(r.record)
.then(function (isExists) {
if (isExists) {
// 重複するデータが既に存在する場合
alert("既に登録済です。");
return;
}
// 就業届テーブルにデータを作成
return setSyuugyouTodokeTable(r.record).then(function () {
// 使用不可を設定
setDisabledField(r.record);
// 就業届テーブルにデータを作成
return setSyuugyouTodokeTable(r.record).then(function () {
// 使用不可を設定
setDisabledField(r.record);
// レコードに値を設定
kintone.app.record.set(r);
});
})
.then(function () {
// スピナーを非表示
pvc.util.ui.hideSpinner();
})
.catch(function (error) {
pvc.util.ui.hideSpinner();
console.error(error);
alert("システムエラーが発生しました");
});
});
// レコードに値を設定
kintone.app.record.set(r);
});
})
})
.then(function () {
// スピナーを非表示
pvc.util.ui.hideSpinner();
})
.catch(function (error) {
pvc.util.ui.hideSpinner();
console.error(error);
alert("システムエラーが発生しました");
});
}
return event;
}
@@ -719,6 +716,21 @@
return strValue.length === 6 && 1 <= mm && mm <= 12;
}
/**
* 指定されたユーザーコードのシステムコントロール情報を取得してフィールドに設定します。
* @param {kintone.AppRecord__勤怠申請入力_内勤者用} record
* @returns {Promise<void>}
*/
function fetchAndSetSystemControlInfo(record) {
var userCode = record.氏名.value.length > 0 ? record.氏名.value[0].code : "";
return getSystemControlRecord(userCode).then(function (systemRecord) {
if (systemRecord != null) {
setSystemControlField(systemRecord, record);
setSystemInfo(record);
}
});
}
/**
* システムコントロールのレコードを取得します。
* @param {string} userCode - ユーザーコード(氏名.コード)