Compare commits
8 Commits
0120ea00ac
...
9adbe69a70
| Author | SHA1 | Date | |
|---|---|---|---|
| 9adbe69a70 | |||
| 4ac71b4232 | |||
| a1098a1166 | |||
| 089b5f79f8 | |||
| 2ff79c58ee | |||
| 301e202c49 | |||
| 8801e60604 | |||
| e00eae5930 |
16
src/env.js
16
src/env.js
@@ -3,7 +3,7 @@
|
||||
// https://alicorn.cybozu.com/k/#/space/15/thread/22
|
||||
const env = {
|
||||
"園児別出欠簿入力": {
|
||||
appId: 182,
|
||||
appId: 250,
|
||||
excelName: "出欠集計表",
|
||||
view: {
|
||||
linkFor0to1: 13352636,
|
||||
@@ -11,28 +11,28 @@ const env = {
|
||||
}
|
||||
},
|
||||
"0,1歳日誌出力用": {
|
||||
appId: 186,
|
||||
appId: 255,
|
||||
excelName: "ゆり・つき1視診表",
|
||||
},
|
||||
"2歳以上日誌出力用": {
|
||||
appId: 187,
|
||||
appId: 256,
|
||||
excelName: "幼児日誌",
|
||||
},
|
||||
"個別配慮": {
|
||||
appId: 183,
|
||||
appId: 251,
|
||||
excelName: "個別配慮",
|
||||
},
|
||||
"園児台帳": {
|
||||
appId: 179,
|
||||
appId: 247,
|
||||
},
|
||||
"保育・教育日数マスタ": {
|
||||
appId: 184,
|
||||
appId: 253,
|
||||
},
|
||||
"Excelテンプレート": {
|
||||
appId: 185
|
||||
appId: 254
|
||||
},
|
||||
"担任マスタ": {
|
||||
appId: 190
|
||||
appId: 259
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
283
src/pvc.ProcessBatchApprovalHandler.js
Normal file
283
src/pvc.ProcessBatchApprovalHandler.js
Normal file
@@ -0,0 +1,283 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* 一括承認処理を管理するクラス
|
||||
* 特定のビューでレコードの一括承認機能を提供する
|
||||
*/
|
||||
class BatchApprovalHandler {
|
||||
/**
|
||||
* コンストラクタ
|
||||
* @param {number} mineView - マイビューのID
|
||||
* @param {string} classifyField - 分類フィールドのプレースホルダー
|
||||
* @param {Object} btnClassifyMap - 年齢分類マッピングオブジェクト
|
||||
* @param {Object} actionMap - アクション名マッピングオブジェクト
|
||||
* @param {Function} getStatusPrefix - ステータス接頭辞を取得する関数
|
||||
* @param {Object} statusFieldMap
|
||||
* @param {string} classifyFormField
|
||||
*/
|
||||
constructor(mineView, classifyField, btnClassifyMap, actionMap, getStatusPrefix, statusFieldMap, classifyFormField = "学年") {
|
||||
this.mineView = mineView;
|
||||
this.classifyField = classifyField;
|
||||
this.btnClassifyMap = btnClassifyMap;
|
||||
this.actionMap = actionMap;
|
||||
this.getStatusPrefix = getStatusPrefix;
|
||||
this.statusFieldMap = statusFieldMap;
|
||||
this.classifyFormField = classifyFormField;
|
||||
this.stopFlag = false;
|
||||
}
|
||||
|
||||
stopProcess() {
|
||||
this.stopFlag = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 一括承認ボタンを作成する
|
||||
* @method
|
||||
*/
|
||||
createApproveBtn() {
|
||||
const headerSpace = getHeaderSpace('single-label-line');
|
||||
const elements = createBtnGroupArea('batch-approve-area', '一括承認', this.handleApproveData.bind(this), {
|
||||
btnElId: 'batch-btn'
|
||||
});
|
||||
|
||||
if (elements && headerSpace) {
|
||||
headerSpace.appendChild(elements['batch-approve-area']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 一括承認処理を実行する
|
||||
* @method
|
||||
* @param {Event} e - イベントオブジェクト
|
||||
*/
|
||||
async handleApproveData(e) {
|
||||
this.stopFlag = false;
|
||||
const appId = kintone.app.getId();
|
||||
const loginUser = kintone.getLoginUser();
|
||||
|
||||
loading(true, '一括承認処理中...');
|
||||
showError(false);
|
||||
|
||||
const api = new KintoneRestAPIClient();
|
||||
|
||||
// レコードを取得
|
||||
const records = await this.getRecords(api, appId, loginUser.code);
|
||||
if (!records || records.length === 0) {
|
||||
loading(false);
|
||||
return e;
|
||||
}
|
||||
|
||||
// ステータスを更新
|
||||
const result = await this.updateRecordsStatus(api, appId, records);
|
||||
|
||||
if (result && result.success > 0) {
|
||||
// 承認者情報を更新
|
||||
await this.updateRecords(api, appId, records, result.successIds, loginUser);
|
||||
await this.showSuccessDialog(result);
|
||||
}
|
||||
loading(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 成功ダイアログを表示する
|
||||
* @method
|
||||
* @param {Object} result - 処理結果
|
||||
*/
|
||||
async showSuccessDialog(result) {
|
||||
const contentEl = document.createElement('div');
|
||||
contentEl.style.fontSize = '16px';
|
||||
|
||||
if (result.success === result.total) {
|
||||
contentEl.innerHTML = `✅ 全${result.total}件のレコードを承認しました`;
|
||||
} else {
|
||||
const successText = `✅ ${result.success}件のレコードを承認済み`;
|
||||
const failedText = `⚠️ ${result.total - result.success}件の承認に失敗`;
|
||||
contentEl.innerHTML = `${successText}<br>${failedText}<br><br>合計: ${result.total}件`;
|
||||
}
|
||||
|
||||
showDialog({
|
||||
title: '一括承認完了',
|
||||
content: contentEl,
|
||||
ok: '更新して確認',
|
||||
cancel: false,
|
||||
onClose: () => { location.reload(); }
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* アクションプロセスマップを読み込む
|
||||
* @method
|
||||
* @param {Object} api - Kintone REST API クライアント
|
||||
* @param {number} appId - アプリID
|
||||
*/
|
||||
async loadActionProcessMap(api, appId) {
|
||||
try {
|
||||
const result = await api.app.getProcessManagement({
|
||||
app: appId,
|
||||
preview: false
|
||||
});
|
||||
|
||||
const actionProcessMap = {};
|
||||
result.actions.forEach(action => {
|
||||
actionProcessMap[action.from + ":" + action.name] = action;
|
||||
});
|
||||
|
||||
return actionProcessMap;
|
||||
} catch (error) {
|
||||
showError(true, 'プロセス管理情報の読み取りに失敗しました\n - ' + error.message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* レコードを取得する
|
||||
* @method
|
||||
* @param {Object} api - Kintone REST API クライアント
|
||||
* @param {number} appId - アプリID
|
||||
* @param {string} loginUserCd - ログインユーザーコード
|
||||
*/
|
||||
async getRecords(api, appId, loginUserCd) {
|
||||
try {
|
||||
return await api.record.getAllRecordsWithId({
|
||||
app: appId,
|
||||
condition: `作業者 in ("${loginUserCd}")`
|
||||
});
|
||||
} catch (error) {
|
||||
showError(true, 'レコードの読み取りに失敗しました\n - ' + error.message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* レコードを更新する
|
||||
* @method
|
||||
* @param {Object} api - Kintone REST API クライアント
|
||||
* @param {number} appId - アプリID
|
||||
* @param {Array} oldRecords - 更新前レコード
|
||||
* @param {Set} successIds - 成功したレコードID
|
||||
* @param {Object} loginUser - ログインユーザー情報
|
||||
*/
|
||||
async updateRecords(api, appId, oldRecords, successIds, loginUser) {
|
||||
const actionProcessMap = await this.loadActionProcessMap(api, appId);
|
||||
if (!actionProcessMap) {
|
||||
return;
|
||||
}
|
||||
const updateFieldRecords = [];
|
||||
|
||||
for (const record of oldRecords) {
|
||||
const updateKey = this.getRecordAutoUpdateField(record, actionProcessMap, successIds);
|
||||
if (updateKey) {
|
||||
updateFieldRecords.push({
|
||||
'id': record.$id.value,
|
||||
'record': {
|
||||
[updateKey]: {
|
||||
'value': loginUser.name
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (updateFieldRecords.length > 0) {
|
||||
try {
|
||||
await api.record.updateAllRecords({
|
||||
app: appId,
|
||||
records: updateFieldRecords
|
||||
});
|
||||
} catch (error) {
|
||||
showError(true, 'レコード更新に失敗しました\n - ' + error.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 自動更新フィールド名を取得する
|
||||
* @method
|
||||
* @param {Object} record - レコードオブジェクト
|
||||
* @param {Object} actionProcessMap - アクションプロセスマップ
|
||||
* @param {Set} successIds - 成功したレコードID
|
||||
*/
|
||||
getRecordAutoUpdateField(record, actionProcessMap, successIds) {
|
||||
const id = record.$id.value;
|
||||
if (!successIds.has(id)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const oldStatus = record.ステータス.value;
|
||||
const actionName = record.action;
|
||||
|
||||
const action = actionProcessMap[oldStatus + ":" + actionName];
|
||||
return action ? this.statusFieldMap[action.to] : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* レコードステータスを更新する
|
||||
* @method
|
||||
* @param {Object} api - Kintone REST API クライアント
|
||||
* @param {number} appId - アプリID
|
||||
* @param {Array} records - 更新対象レコード
|
||||
*/
|
||||
async updateRecordsStatus(api, appId, records) {
|
||||
const updateRecords = []
|
||||
for (const record of records) {
|
||||
const actionToPerform = this.getActionName(record);
|
||||
if (this.stopFlag) {
|
||||
return
|
||||
}
|
||||
if (!!actionToPerform) {
|
||||
record.action = actionToPerform;
|
||||
updateRecords.push({
|
||||
id: record.$id.value,
|
||||
action: actionToPerform,
|
||||
revision: record.$revision.value
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const result = {
|
||||
success: 0,
|
||||
total: records.length,
|
||||
successIds: new Set(),
|
||||
};
|
||||
|
||||
const batchSize = 100; // Kintone APIの制限
|
||||
for (let i = 0; i < updateRecords.length; i += batchSize) {
|
||||
const batch = updateRecords.slice(i, i + batchSize);
|
||||
|
||||
try {
|
||||
const response = await api.record.updateRecordsStatus({
|
||||
app: appId,
|
||||
records: batch
|
||||
});
|
||||
|
||||
result.success += response.records.length;
|
||||
response.records.forEach(record => {
|
||||
result.successIds.add(record.id);
|
||||
});
|
||||
} catch (error) {
|
||||
showError(true, `レコードステータス更新エラー\n - ${error.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* アクション名を取得する
|
||||
* @method
|
||||
* @param {string} record - レコードオブジェクト
|
||||
*/
|
||||
getActionName(record) {
|
||||
const yearStr = record[this.classifyFormField]?.value || '';
|
||||
const status = record.ステータス.value;
|
||||
const actionTemplate = this.actionMap[this.getStatusPrefix(status)] || '';
|
||||
const btnClassify = this.btnClassifyMap[yearStr] || '';
|
||||
return actionTemplate.replaceAll(this.classifyField, btnClassify);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// グローバルにクラスを公開
|
||||
window.BatchApprovalHandler = BatchApprovalHandler;
|
||||
|
||||
})();
|
||||
@@ -8,6 +8,8 @@
|
||||
'完了': '園長'
|
||||
}
|
||||
|
||||
window._StatusFieldMap = statusFieldMap
|
||||
|
||||
kintone.events.on("app.record.detail.process.proceed", (event) => {
|
||||
const field = statusFieldMap[event.nextStatus.value];
|
||||
if (field) {
|
||||
1
src/10.個別支援計画/KintoneRestAPIClient.min.js
vendored
Normal file
1
src/10.個別支援計画/KintoneRestAPIClient.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2433
src/10.個別支援計画/kuc.min.js
vendored
Normal file
2433
src/10.個別支援計画/kuc.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -8,13 +8,13 @@
|
||||
return event;
|
||||
});
|
||||
|
||||
kintone.events.on(["app.record.create.change.担当","app.record.edit.change.担当"], function(event) {
|
||||
kintone.events.on(["app.record.create.change.担当","app.record.edit.change.担当", "app.record.index.edit.change.担当"], function(event) {
|
||||
var record = event.record;
|
||||
record.担当_文字列.value = record.担当.value.map(function(user) {return user.name}).join(",");
|
||||
return event;
|
||||
});
|
||||
|
||||
kintone.events.on(["app.record.create.change.コーディネーター","app.record.edit.change.コーディネーター"], function(event) {
|
||||
kintone.events.on(["app.record.create.change.コーディネーター","app.record.edit.change.コーディネーター", "app.record.index.edit.change.コーディネーター"], function(event) {
|
||||
var record = event.record;
|
||||
record.コーディネーター_文字列.value = record.コーディネーター.value.map(function(user) {return user.name}).join(",");
|
||||
return event;
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
"完了": "園長3"
|
||||
}
|
||||
|
||||
window._StatusFieldMap = statusFieldMap
|
||||
|
||||
kintone.events.on("app.record.detail.process.proceed", (event) => {
|
||||
const field = statusFieldMap[event.nextStatus.value];
|
||||
if (field) {
|
||||
54
src/10.個別支援計画/pvc.processBatchApproval.js
Normal file
54
src/10.個別支援計画/pvc.processBatchApproval.js
Normal file
@@ -0,0 +1,54 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
// マイビューのID
|
||||
const mineView = 13353711;
|
||||
// 分類フィールドのプレースホルダー
|
||||
const classifyField = "${classify}";
|
||||
|
||||
// ボタン分類マッピング
|
||||
const btnClassifyMap = {
|
||||
"0歳児": "(0~2歳)",
|
||||
"1歳児": "(0~2歳)",
|
||||
"2歳児": "(0~2歳)",
|
||||
"3歳児": "(3~5歳)",
|
||||
"4歳児": "(3~5歳)",
|
||||
"5歳児": "(3~5歳)",
|
||||
}
|
||||
|
||||
// アクションマッピング
|
||||
const actionMap = {
|
||||
"担任作成中": `指導教諭確認依頼${classifyField}`,
|
||||
"指導教諭確認中": `承認する`,
|
||||
"園長確認中": `承認する${classifyField}`
|
||||
}
|
||||
|
||||
/**
|
||||
* ステータスから接頭辞を取得する
|
||||
* @param {string} status - ステータス文字列
|
||||
*/
|
||||
const getStatusPrefix = (status) => {
|
||||
return status.split("(")[0];
|
||||
};
|
||||
|
||||
// kintoneイベントの登録
|
||||
kintone.events.on("app.record.index.show", (event) => {
|
||||
// 特定のビューの場合のみ処理を実行
|
||||
if (event.viewId === mineView) {
|
||||
// BatchApprovalHandlerクラスのインスタンスを作成
|
||||
const batchApproval = new BatchApprovalHandler(
|
||||
mineView,
|
||||
classifyField,
|
||||
btnClassifyMap,
|
||||
actionMap,
|
||||
getStatusPrefix,
|
||||
_StatusFieldMap
|
||||
);
|
||||
|
||||
// 一括承認ボタンを作成
|
||||
batchApproval.createApproveBtn();
|
||||
}
|
||||
return event;
|
||||
});
|
||||
|
||||
})();
|
||||
@@ -3,11 +3,12 @@
|
||||
|
||||
const statusFieldMap = {
|
||||
'指導教諭確認中(0~2歳)': '担任',
|
||||
'主幹確認中': '指導',
|
||||
'園長確認中': '主幹',
|
||||
'園長確認中': '指導',
|
||||
'完了': '園長'
|
||||
}
|
||||
|
||||
window._StatusFieldMap = statusFieldMap
|
||||
|
||||
kintone.events.on("app.record.detail.process.proceed", (event) => {
|
||||
const field = statusFieldMap[event.nextStatus.value];
|
||||
if (field) {
|
||||
@@ -4,11 +4,12 @@
|
||||
const statusFieldMap = {
|
||||
'指導教諭確認中(0~2歳)': '担任',
|
||||
'指導教諭確認中(3~5歳)': '担任',
|
||||
'主幹確認中': '指導',
|
||||
'園長確認中': '主幹',
|
||||
'園長確認中': '指導',
|
||||
'完了': '園長'
|
||||
}
|
||||
|
||||
window._StatusFieldMap = statusFieldMap
|
||||
|
||||
kintone.events.on("app.record.detail.process.proceed", (event) => {
|
||||
const field = statusFieldMap[event.nextStatus.value];
|
||||
if (field) {
|
||||
1
src/2.保育計画 月案(0歳児用)/KintoneRestAPIClient.min.js
vendored
Normal file
1
src/2.保育計画 月案(0歳児用)/KintoneRestAPIClient.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2433
src/2.保育計画 月案(0歳児用)/kuc.min.js
vendored
Normal file
2433
src/2.保育計画 月案(0歳児用)/kuc.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -5,11 +5,13 @@
|
||||
"app.record.create.show",
|
||||
"app.record.edit.show",
|
||||
"app.record.create.change.担当",
|
||||
"app.record.edit.change.担当"
|
||||
"app.record.edit.change.担当",
|
||||
"app.record.index.edit.change.担当"
|
||||
];
|
||||
|
||||
kintone.events.on(events, function(event) {
|
||||
var record = event.record;
|
||||
//kintone.app.record.setFieldShown("担任", false);
|
||||
record.担任.value = record.担当.value.map(function(user) {return user.name}).join(",");
|
||||
return event;
|
||||
});
|
||||
@@ -6,6 +6,8 @@
|
||||
'完了': '園長'
|
||||
}
|
||||
|
||||
window._StatusFieldMap = statusFieldMap
|
||||
|
||||
kintone.events.on("app.record.detail.process.proceed", (event) => {
|
||||
const field = statusFieldMap[event.nextStatus.value];
|
||||
if (field) {
|
||||
50
src/2.保育計画 月案(0歳児用)/pvc.processBatchApproval.js
Normal file
50
src/2.保育計画 月案(0歳児用)/pvc.processBatchApproval.js
Normal file
@@ -0,0 +1,50 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
// マイビューのID
|
||||
const mineView = 8352036;
|
||||
// 分類フィールドのプレースホルダー
|
||||
const classifyField = "${classify}";
|
||||
|
||||
// ボタン分類マッピング
|
||||
const btnClassifyMap = {
|
||||
"0歳児": "",
|
||||
}
|
||||
|
||||
// アクションマッピング
|
||||
const actionMap = {
|
||||
"担任作成中": `指導教諭確認依頼`,
|
||||
"指導教諭確認中": `承認する`,
|
||||
"主幹確認中": `承認する`,
|
||||
"園長確認中": `承認する`
|
||||
}
|
||||
|
||||
/**
|
||||
* ステータスから接頭辞を取得する
|
||||
* @param {string} status - ステータス文字列
|
||||
*/
|
||||
const getStatusPrefix = (status) => {
|
||||
return status.split("(")[0];
|
||||
};
|
||||
|
||||
// kintoneイベントの登録
|
||||
kintone.events.on("app.record.index.show", (event) => {
|
||||
// 特定のビューの場合のみ処理を実行
|
||||
if (event.viewId === mineView) {
|
||||
// BatchApprovalHandlerクラスのインスタンスを作成
|
||||
const batchApproval = new BatchApprovalHandler(
|
||||
mineView,
|
||||
classifyField,
|
||||
btnClassifyMap,
|
||||
actionMap,
|
||||
getStatusPrefix,
|
||||
_StatusFieldMap
|
||||
);
|
||||
|
||||
// 一括承認ボタンを作成
|
||||
batchApproval.createApproveBtn();
|
||||
}
|
||||
return event;
|
||||
});
|
||||
|
||||
})();
|
||||
1
src/3.保育計画 月案/KintoneRestAPIClient.min.js
vendored
Normal file
1
src/3.保育計画 月案/KintoneRestAPIClient.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2433
src/3.保育計画 月案/kuc.min.js
vendored
Normal file
2433
src/3.保育計画 月案/kuc.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
19
src/3.保育計画 月案/pvc.main.js
Normal file
19
src/3.保育計画 月案/pvc.main.js
Normal file
@@ -0,0 +1,19 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
var events = [
|
||||
"app.record.create.show",
|
||||
"app.record.edit.show",
|
||||
"app.record.create.change.担当",
|
||||
"app.record.edit.change.担当",
|
||||
"app.record.index.edit.change.担当"
|
||||
];
|
||||
|
||||
kintone.events.on(events, function(event) {
|
||||
var record = event.record;
|
||||
//kintone.app.record.setFieldShown("担任", false);
|
||||
record.担任.value = record.担当.value.map(function(user) {return user.name}).join(",");
|
||||
return event;
|
||||
});
|
||||
|
||||
})();
|
||||
19
src/3.保育計画 月案/pvc.processAutoUpdate.js
Normal file
19
src/3.保育計画 月案/pvc.processAutoUpdate.js
Normal file
@@ -0,0 +1,19 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
const statusFieldMap = {
|
||||
'園長確認中': '指導',
|
||||
'完了': '園長'
|
||||
}
|
||||
|
||||
window._StatusFieldMap = statusFieldMap
|
||||
|
||||
kintone.events.on("app.record.detail.process.proceed", (event) => {
|
||||
const field = statusFieldMap[event.nextStatus.value];
|
||||
if (field) {
|
||||
event.record[field].value = kintone.getLoginUser().name;
|
||||
}
|
||||
return event;
|
||||
});
|
||||
|
||||
})();
|
||||
55
src/3.保育計画 月案/pvc.processBatchApproval.js
Normal file
55
src/3.保育計画 月案/pvc.processBatchApproval.js
Normal file
@@ -0,0 +1,55 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
// マイビューのID
|
||||
const mineView = 8352036;
|
||||
// 分類フィールドのプレースホルダー
|
||||
const classifyField = "${classify}";
|
||||
|
||||
// ボタン分類マッピング
|
||||
const btnClassifyMap = {
|
||||
"1歳児": "(0~2歳)",
|
||||
"2歳児": "(0~2歳)",
|
||||
"3歳児": "(3~5歳)",
|
||||
"4歳児": "(3~5歳)",
|
||||
"5歳児": "(3~5歳)",
|
||||
"5歳児": "(3~5歳)",
|
||||
}
|
||||
|
||||
// アクションマッピング
|
||||
const actionMap = {
|
||||
"担任作成中": `指導教諭確認依頼${classifyField}`,
|
||||
"指導教諭確認中": `承認する`,
|
||||
"主幹確認中": `承認する`,
|
||||
"園長確認中": `承認する${classifyField}`
|
||||
}
|
||||
|
||||
/**
|
||||
* ステータスから接頭辞を取得する
|
||||
* @param {string} status - ステータス文字列
|
||||
*/
|
||||
const getStatusPrefix = (status) => {
|
||||
return status.split("(")[0];
|
||||
};
|
||||
|
||||
// kintoneイベントの登録
|
||||
kintone.events.on("app.record.index.show", (event) => {
|
||||
// 特定のビューの場合のみ処理を実行
|
||||
if (event.viewId === mineView) {
|
||||
// BatchApprovalHandlerクラスのインスタンスを作成
|
||||
const batchApproval = new BatchApprovalHandler(
|
||||
mineView,
|
||||
classifyField,
|
||||
btnClassifyMap,
|
||||
actionMap,
|
||||
getStatusPrefix,
|
||||
_StatusFieldMap
|
||||
);
|
||||
|
||||
// 一括承認ボタンを作成
|
||||
batchApproval.createApproveBtn();
|
||||
}
|
||||
return event;
|
||||
});
|
||||
|
||||
})();
|
||||
1
src/4.保育計画 週案/KintoneRestAPIClient.min.js
vendored
Normal file
1
src/4.保育計画 週案/KintoneRestAPIClient.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2433
src/4.保育計画 週案/kuc.min.js
vendored
Normal file
2433
src/4.保育計画 週案/kuc.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -5,7 +5,8 @@
|
||||
"app.record.create.show",
|
||||
"app.record.edit.show",
|
||||
"app.record.create.change.担任",
|
||||
"app.record.edit.change.担任"
|
||||
"app.record.edit.change.担任",
|
||||
"app.record.index.edit.change.担任"
|
||||
];
|
||||
|
||||
kintone.events.on(events, function(event) {
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
'完了(5週目)': '園長',
|
||||
}
|
||||
|
||||
window._StatusFieldMap = statusFieldMap
|
||||
|
||||
kintone.events.on("app.record.detail.process.proceed", (event) => {
|
||||
const field = statusFieldMap[event.nextStatus.value];
|
||||
if (field) {
|
||||
154
src/4.保育計画 週案/pvc.processBatchApproval.js
Normal file
154
src/4.保育計画 週案/pvc.processBatchApproval.js
Normal file
@@ -0,0 +1,154 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
// マイビューのID
|
||||
const mineView = 8352036;
|
||||
// 分類フィールドのプレースホルダー
|
||||
const classifyField = "${classify}";
|
||||
|
||||
// ボタン分類マッピング
|
||||
const btnClassifyMap = {
|
||||
"0歳児": "0~2歳",
|
||||
"1歳児": "0~2歳",
|
||||
"2歳児": "0~2歳",
|
||||
"3歳児": "3~5歳",
|
||||
"4歳児": "3~5歳",
|
||||
"5歳児": "3~5歳",
|
||||
}
|
||||
|
||||
// アクションマッピング
|
||||
const actionMap = {
|
||||
"担任作成中": `指導教諭確認依頼(${classifyField})`,
|
||||
"指導教諭確認中": `承認する`,
|
||||
"園長確認中": `承認する(${classifyField})`
|
||||
}
|
||||
|
||||
// ダイアログ要素と次のステータスを格納する変数
|
||||
let askDialogEl;
|
||||
let nextStatus;
|
||||
// 次のステータスのテンプレートオブジェクト
|
||||
const nextStatusTemplate = {
|
||||
"next": `承認する(${classifyField}、5週目作成依頼)`,
|
||||
"end": `承認する(${classifyField}、完了)`
|
||||
}
|
||||
|
||||
/**
|
||||
* ステータスから接頭辞を取得する
|
||||
* @param {string} status - ステータス文字列
|
||||
*/
|
||||
const getStatusPrefix = (status) => {
|
||||
return status.split("(")[0];
|
||||
};
|
||||
|
||||
// kintoneイベントの登録
|
||||
kintone.events.on("app.record.index.show", (event) => {
|
||||
// 特定のビューの場合のみ処理を実行
|
||||
if (event.viewId === mineView) {
|
||||
// BatchApprovalHandlerクラスのインスタンスを作成
|
||||
const batchApproval = new BatchApprovalHandler(
|
||||
mineView,
|
||||
classifyField,
|
||||
btnClassifyMap,
|
||||
actionMap,
|
||||
getStatusPrefix,
|
||||
_StatusFieldMap,
|
||||
"担当学年"
|
||||
);
|
||||
|
||||
// 元のgetActionNameメソッドを保存
|
||||
const originalGetActionName = batchApproval.getActionName;
|
||||
|
||||
// getActionNameメソッドをオーバーライド
|
||||
batchApproval.getActionName = function (record) {
|
||||
const status = record.ステータス.value;
|
||||
// 「園長確認中(4週目)」以外のステータスは元の処理を実行
|
||||
if (status !== '園長確認中(4週目)') {
|
||||
return originalGetActionName.call(this, record);
|
||||
}
|
||||
// 週目に応じて異なるステータスに遷移する場合、ユーザーに選択させる
|
||||
if (!nextStatus) {
|
||||
askNextStatus(batchApproval)
|
||||
batchApproval.stopProcess();
|
||||
return
|
||||
}
|
||||
return getSpecialActionName(record);
|
||||
};
|
||||
|
||||
// 一括承認ボタンを作成
|
||||
batchApproval.createApproveBtn();
|
||||
}
|
||||
return event;
|
||||
});
|
||||
|
||||
/**
|
||||
* 特殊なアクション名を取得する
|
||||
* @param {Object} record - レコードオブジェクト
|
||||
* @returns {string} アクション名
|
||||
*/
|
||||
function getSpecialActionName(record) {
|
||||
const template = nextStatusTemplate[nextStatus];
|
||||
const yearStr = record.担当学年.value || '';
|
||||
const btnClassify = btnClassifyMap[yearStr] || '';
|
||||
return template.replaceAll(classifyField, btnClassify);
|
||||
}
|
||||
|
||||
/**
|
||||
* 次のステータスをユーザーに問い合わせる
|
||||
* @param {Object} batchApproval - BatchApprovalHandlerインスタンス
|
||||
*/
|
||||
function askNextStatus(batchApproval) {
|
||||
askDialogEl = new Kuc.Dialog({
|
||||
title: '一括承認を一時停止',
|
||||
content: makeDialog(batchApproval),
|
||||
footerVisible: false
|
||||
});
|
||||
askDialogEl.open();
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* ダイアログ内容を作成する
|
||||
* @param {Object} batchApproval - BatchApprovalHandlerインスタンス
|
||||
* @returns {HTMLElement} ダイアログのコンテンツ要素
|
||||
*/
|
||||
function makeDialog(batchApproval) {
|
||||
const contentEl = document.createElement('div');
|
||||
contentEl.innerHTML = `
|
||||
<p>
|
||||
「園長確認中(4週目)」の記録について、次のステータスを選択してください:
|
||||
</p>
|
||||
`;
|
||||
|
||||
const divEl = document.createElement('div');
|
||||
divEl.style.textAlign = 'center';
|
||||
|
||||
// 5週目作成依頼ボタン
|
||||
const nextButton = new Kuc.Button({
|
||||
text: '承認する(5週目作成依頼)',
|
||||
type: 'submit',
|
||||
});
|
||||
nextButton.style.paddingRight = '16px';
|
||||
nextButton.addEventListener('click', (event) => {
|
||||
askDialogEl.close();
|
||||
nextStatus = "next";
|
||||
batchApproval.handleApproveData()
|
||||
});
|
||||
divEl.appendChild(nextButton);
|
||||
|
||||
|
||||
// 完了ボタン
|
||||
const endButton = new Kuc.Button({
|
||||
text: '承認する(完了)',
|
||||
type: 'submit',
|
||||
});
|
||||
endButton.addEventListener('click', (event) => {
|
||||
askDialogEl.close();
|
||||
nextStatus = "end";
|
||||
batchApproval.handleApproveData()
|
||||
});
|
||||
divEl.appendChild(endButton);
|
||||
|
||||
contentEl.appendChild(divEl);
|
||||
return contentEl;
|
||||
}
|
||||
})();
|
||||
@@ -1,6 +1,8 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
const APP_ENV = env["個別配慮"];
|
||||
// 20250911に追加された、月次サフィックスを持つフィールドのリスト
|
||||
const monthlyField = ['子どもの姿', '保育者援助_配慮_環境構成', '反省_評価', '主幹', '園長', '担任', '指導']
|
||||
|
||||
kintone.events.on("app.record.index.show", (event) => {
|
||||
const headerSpace = getHeaderSpace('single-label-line');
|
||||
@@ -23,27 +25,58 @@
|
||||
showError(false);
|
||||
const api = new KintoneRestAPIClient();
|
||||
|
||||
const monthNumber = Number(month);
|
||||
const yearNumber = Number(year);
|
||||
// 本アプリからデータを読み取る
|
||||
const currentAppRecords = await getRecords(api, year, month);
|
||||
const currentAppRecords = await getYearlyRecords(api, yearNumber, monthNumber);
|
||||
if (!currentAppRecords) {
|
||||
// エラー
|
||||
loading(false);
|
||||
return e;
|
||||
}
|
||||
|
||||
const eachChildUniqueRecord = {};
|
||||
// 各児童の最新の記録を取得する(日付フィールドに基づく)
|
||||
for (const record of currentAppRecords) {
|
||||
const key = record['園児ユニークキー'].value;
|
||||
const existData = eachChildUniqueRecord[key];
|
||||
if (!existData || existData['日付'].value < record['日付'].value) {
|
||||
eachChildUniqueRecord[key] = record;
|
||||
}
|
||||
}
|
||||
const records = Object.values(eachChildUniqueRecord);
|
||||
|
||||
// 指定された月のデータを、月次サフィックスのないフィールドにマッピングする(例:「子どもの姿_5月」=>「子どもの姿」)
|
||||
// 既存のコード(元々は月次サフィックスのないフィールドを使用)を極力変更しないようにするため
|
||||
// 4月のデータはデフォルトで月次サフィックスのないフィールドに格納されているため、4月の処理はスキップする
|
||||
if (monthNumber !== 4) {
|
||||
for (const field of monthlyField) {
|
||||
for (const record of records) {
|
||||
record[field].value = record[`${field}_${monthNumber}月`].value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const excelName = APP_ENV.excelName;
|
||||
await createExcelAndDownload({
|
||||
api,
|
||||
excelName,
|
||||
exportName: getExcelName(excelName, year + month),
|
||||
bizLogic: writeExcel(currentAppRecords, year, month),
|
||||
bizLogic: writeExcel(records, year, month),
|
||||
});
|
||||
loading(false);
|
||||
}
|
||||
|
||||
async function getRecords(api, year, month) {
|
||||
const firstDate = getFormatDateString(year, month, 1)
|
||||
const lastDate = getFormatDateString(getLastDate(year, month));
|
||||
async function getYearlyRecords(api, year, month) {
|
||||
let fromYear = year;
|
||||
let toYear = year;
|
||||
if (month < 4) {
|
||||
fromYear--;
|
||||
} else {
|
||||
toYear++;
|
||||
}
|
||||
const firstDate = getFormatDateString(fromYear, 4, 1)
|
||||
const lastDate = getFormatDateString(getLastDate(toYear, 3));
|
||||
try {
|
||||
return await api.record.getAllRecordsWithId({
|
||||
app: env["個別配慮"].appId,
|
||||
@@ -123,7 +156,6 @@
|
||||
const sortedRecords = records.sort((a, b) => Number(a['出席番号'].value) - Number(b['出席番号'].value));
|
||||
|
||||
// 2. sort by 学年
|
||||
debugger;
|
||||
const termOrder = {};
|
||||
termItems.forEach((item, index) => {
|
||||
termOrder[item.value] = index;
|
||||
@@ -63,6 +63,8 @@
|
||||
'完了': '園長_3月'
|
||||
}
|
||||
|
||||
window._StatusFieldMap = statusFieldMap
|
||||
|
||||
kintone.events.on("app.record.detail.process.proceed", (event) => {
|
||||
const field = statusFieldMap[event.nextStatus.value];
|
||||
if (field) {
|
||||
54
src/6.個別配慮/pvc.processBatchApproval.js
Normal file
54
src/6.個別配慮/pvc.processBatchApproval.js
Normal file
@@ -0,0 +1,54 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
// マイビューのID
|
||||
const mineView = 13352233;
|
||||
// 分類フィールドのプレースホルダー
|
||||
const classifyField = "${classify}";
|
||||
|
||||
// ボタン分類マッピング
|
||||
const btnClassifyMap = {
|
||||
"0歳児": "(0~2歳)",
|
||||
"1歳児": "(0~2歳)",
|
||||
"2歳児": "(0~2歳)",
|
||||
"3歳児": "(3~5歳)",
|
||||
"4歳児": "(3~5歳)",
|
||||
"5歳児": "(3~5歳)",
|
||||
}
|
||||
|
||||
// アクションマッピング
|
||||
const actionMap = {
|
||||
"担任作成中": `指導教諭確認依頼${classifyField}`,
|
||||
"指導教諭確認中": `承認する`,
|
||||
"園長確認中": `承認する${classifyField}`
|
||||
}
|
||||
|
||||
/**
|
||||
* ステータスから接頭辞を取得する
|
||||
* @param {string} status - ステータス文字列
|
||||
*/
|
||||
const getStatusPrefix = (status) => {
|
||||
return status.split("(")[0];
|
||||
};
|
||||
|
||||
// kintoneイベントの登録
|
||||
kintone.events.on("app.record.index.show", (event) => {
|
||||
// 特定のビューの場合のみ処理を実行
|
||||
if (event.viewId === mineView) {
|
||||
// BatchApprovalHandlerクラスのインスタンスを作成
|
||||
const batchApproval = new BatchApprovalHandler(
|
||||
mineView,
|
||||
classifyField,
|
||||
btnClassifyMap,
|
||||
actionMap,
|
||||
getStatusPrefix,
|
||||
_StatusFieldMap
|
||||
);
|
||||
|
||||
// 一括承認ボタンを作成
|
||||
batchApproval.createApproveBtn();
|
||||
}
|
||||
return event;
|
||||
});
|
||||
|
||||
})();
|
||||
1
src/8.学期反省・評価/KintoneRestAPIClient.min.js
vendored
Normal file
1
src/8.学期反省・評価/KintoneRestAPIClient.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2433
src/8.学期反省・評価/kuc.min.js
vendored
Normal file
2433
src/8.学期反省・評価/kuc.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -9,19 +9,19 @@
|
||||
return event;
|
||||
});
|
||||
|
||||
kintone.events.on(["app.record.create.change.担当1","app.record.edit.change.担当1"], function(event) {
|
||||
kintone.events.on(["app.record.create.change.担当1","app.record.edit.change.担当1", "app.record.index.edit.change.担当1"], function(event) {
|
||||
var record = event.record;
|
||||
record.担任1.value = record.担当1.value.map(function(user) {return user.name}).join(",");
|
||||
return event;
|
||||
});
|
||||
|
||||
kintone.events.on(["app.record.create.change.担当2","app.record.edit.change.担当2"], function(event) {
|
||||
kintone.events.on(["app.record.create.change.担当2","app.record.edit.change.担当2", "app.record.index.edit.change.担当2"], function(event) {
|
||||
var record = event.record;
|
||||
record.担任2.value = record.担当2.value.map(function(user) {return user.name}).join(",");
|
||||
return event;
|
||||
});
|
||||
|
||||
kintone.events.on(["app.record.create.change.担当3","app.record.edit.change.担当3"], function(event) {
|
||||
kintone.events.on(["app.record.create.change.担当3","app.record.edit.change.担当3", "app.record.index.edit.change.担当3"], function(event) {
|
||||
var record = event.record;
|
||||
record.担任3.value = record.担当3.value.map(function(user) {return user.name}).join(",");
|
||||
return event;
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
'完了(3学期)': '園長3',
|
||||
}
|
||||
|
||||
window._StatusFieldMap = statusFieldMap
|
||||
|
||||
kintone.events.on("app.record.detail.process.proceed", (event) => {
|
||||
const field = statusFieldMap[event.nextStatus.value];
|
||||
if (field) {
|
||||
54
src/8.学期反省・評価/pvc.processBatchApproval.js
Normal file
54
src/8.学期反省・評価/pvc.processBatchApproval.js
Normal file
@@ -0,0 +1,54 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
// マイビューのID
|
||||
const mineView = 13352759;
|
||||
// 分類フィールドのプレースホルダー
|
||||
const classifyField = "${classify}";
|
||||
|
||||
// ボタン分類マッピング
|
||||
const btnClassifyMap = {
|
||||
"0歳児": "(0~2歳)",
|
||||
"1歳児": "(0~2歳)",
|
||||
"2歳児": "(0~2歳)",
|
||||
"3歳児": "(3~5歳)",
|
||||
"4歳児": "(3~5歳)",
|
||||
"5歳児": "(3~5歳)",
|
||||
}
|
||||
|
||||
// アクションマッピング
|
||||
const actionMap = {
|
||||
"担任作成中": `指導教諭確認依頼${classifyField}`,
|
||||
"指導教諭確認中": `承認する`,
|
||||
"園長確認中": `承認する${classifyField}`
|
||||
}
|
||||
|
||||
/**
|
||||
* ステータスから接頭辞を取得する
|
||||
* @param {string} status - ステータス文字列
|
||||
*/
|
||||
const getStatusPrefix = (status) => {
|
||||
return status.split("(")[0];
|
||||
};
|
||||
|
||||
// kintoneイベントの登録
|
||||
kintone.events.on("app.record.index.show", (event) => {
|
||||
// 特定のビューの場合のみ処理を実行
|
||||
if (event.viewId === mineView) {
|
||||
// BatchApprovalHandlerクラスのインスタンスを作成
|
||||
const batchApproval = new BatchApprovalHandler(
|
||||
mineView,
|
||||
classifyField,
|
||||
btnClassifyMap,
|
||||
actionMap,
|
||||
getStatusPrefix,
|
||||
_StatusFieldMap
|
||||
);
|
||||
|
||||
// 一括承認ボタンを作成
|
||||
batchApproval.createApproveBtn();
|
||||
}
|
||||
return event;
|
||||
});
|
||||
|
||||
})();
|
||||
@@ -8,56 +8,17 @@
|
||||
## 1.園児別出欠簿入力
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=19](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=19)
|
||||
|
||||
| 削除 | | 新規(更新) |
|
||||
| --- | --- | --- |
|
||||
| `utils.js` | → | `utils.js` |
|
||||
| `main.js` | → | `main.js` |
|
||||
| `ExtractHandler.js` | → | `ExtractHandler.js` |
|
||||
| 削除 | | 新規(更新) |
|
||||
| ------------------------ | - | --- |
|
||||
| `utils.js` | → | `utils.js` |
|
||||
| `ExtractHandler.js` | → | `ExtractHandler.js` |
|
||||
| `detail-page-desktop.js` | → | `detail-page-desktop.js` |
|
||||
| | | `processStateHandler.js` |
|
||||
|
||||
|
||||
|
||||
## 10.個別支援計画
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=37](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=37)
|
||||
|
||||
| 削除 | | 新規(更新) |
|
||||
| --- | --- | --- |
|
||||
| | | `pvc.main.js` |
|
||||
| | | `processStateHandler.js` |
|
||||
|
||||
|
||||
|
||||
## 11.0,1歳日誌出力用
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=47](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=47)
|
||||
|
||||
| 削除 | | 新規(更新) |
|
||||
| --- | --- | --- |
|
||||
| `utils.js` | → | `utils.js` |
|
||||
| `main.js` | → | `main.js` |
|
||||
| | | `processStateHandler.js` |
|
||||
|
||||
|
||||
|
||||
## 12.2歳以上日誌出力用
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=48](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=48)
|
||||
|
||||
| 削除 | | 新規(更新) |
|
||||
| --- | --- | --- |
|
||||
| `utils.js` | → | `utils.js` |
|
||||
| `main.js` | → | `main.js` |
|
||||
| | | `processStateHandler.js` |
|
||||
|
||||
|
||||
|
||||
## 2.保育計画 月案(0歳児用)
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=77](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=77)
|
||||
|
||||
| 削除 | | 新規(更新) |
|
||||
| --- | --- | --- |
|
||||
| `env.js` | | `processStateHandler.js` |
|
||||
| `main.js` | | |
|
||||
|
||||
※ **スマートフォン用のJavaScript / CSSファイル** を削除してください。
|
||||
|
||||
| 削除(スマートフォン用) |
|
||||
@@ -70,11 +31,6 @@
|
||||
## 3.保育計画 月案
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=17](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=17)
|
||||
|
||||
| 削除 | | 新規(更新) |
|
||||
| --- | --- | --- |
|
||||
| `env.js` | | `processStateHandler.js` |
|
||||
| `main.js` | | |
|
||||
|
||||
※ **スマートフォン用のJavaScript / CSSファイル** を削除してください。
|
||||
|
||||
| 削除(スマートフォン用) |
|
||||
@@ -87,11 +43,6 @@
|
||||
## 4.保育計画 週案
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=18](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=18)
|
||||
|
||||
| 削除 | | 新規(更新) |
|
||||
| --- | --- | --- |
|
||||
| `env.js` | | `processStateHandler.js` |
|
||||
| `main.js` | | |
|
||||
|
||||
※ **スマートフォン用のJavaScript / CSSファイル** を削除してください。
|
||||
|
||||
| 削除(スマートフォン用) |
|
||||
@@ -104,24 +55,22 @@
|
||||
## 6.個別配慮
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=23](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=23)
|
||||
|
||||
| 削除 | | 新規(更新) |
|
||||
| --- | --- | --- |
|
||||
| `utils.js` | → | `utils.js` |
|
||||
| 削除 | | 新規(更新) |
|
||||
| --------- | - | --- |
|
||||
| `main.js` | → | `main.js` |
|
||||
| | | `processStateHandler.js` |
|
||||
|
||||
|
||||
|
||||
## 7.園児台帳
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=16](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=16)
|
||||
|
||||
| 削除 | | 新規(更新) |
|
||||
| --- | --- | --- |
|
||||
| `main.js` | ⌍ | `KintoneRestAPIClient.min.js` |
|
||||
| | \| | `kuc.min.js` |
|
||||
| | \| | `env.js` |
|
||||
| | \| | `utils.js` |
|
||||
| | ↳ | `main.js` |
|
||||
| 削除 | | 新規(更新) |
|
||||
| --------- | -- | --- |
|
||||
| `main.js` | ┐ | `KintoneRestAPIClient.min.js` |
|
||||
| | │ | `kuc.min.js` |
|
||||
| | │ | `env.js` |
|
||||
| | │ | `utils.js` |
|
||||
| | └▸ | `main.js` |
|
||||
|
||||
※ **スマートフォン用のJavaScript / CSSファイル** を削除してください。
|
||||
|
||||
@@ -134,11 +83,6 @@
|
||||
## 8.学期反省・評価
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=49](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=49)
|
||||
|
||||
| 削除 | | 新規(更新) |
|
||||
| --- | --- | --- |
|
||||
| `env.js` | | `processStateHandler.js` |
|
||||
| `main.js` | | |
|
||||
|
||||
※ **スマートフォン用のJavaScript / CSSファイル** を削除してください。
|
||||
|
||||
| 削除(スマートフォン用) |
|
||||
@@ -152,9 +96,9 @@
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=41](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=41)
|
||||
|
||||
| 削除 | | 新規(更新) |
|
||||
| --- | --- | --- |
|
||||
| | | `main.js` |
|
||||
| | | `main.css` |
|
||||
| --- | - | --- |
|
||||
| | | `main.js` |
|
||||
| | | `main.css` |
|
||||
|
||||
**フォーム更新**:
|
||||
- スペース追加:「calendar-area」
|
||||
|
||||
BIN
納品物説明/20250911/branch.png
Normal file
BIN
納品物説明/20250911/branch.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 70 KiB |
154
納品物説明/20250911/readme.md
Normal file
154
納品物説明/20250911/readme.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# 【新機能用ファイルアップロード】
|
||||
|
||||
以下の各アプリのカスタマイズ画面から、**新機能対応** ファイルをアップロードしてください。
|
||||
|
||||
> 「(作業者が自分)」一覧にて、「一括承認」ボタンを作成する。
|
||||
> 
|
||||
|
||||
|
||||
## 1.園児別出欠簿入力
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=19](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=19)
|
||||
|
||||
| 削除 | 新規(更新) | ファイル |
|
||||
| -------------- | ------------------------- | --- |
|
||||
| ~~`utils.js`~~ | `src/` | `pvc.utils.js` |
|
||||
| ~~`main.js`~~ | `src/1.園児別出欠簿入力/` | `pvc.main.js` |
|
||||
| | `src/1.園児別出欠簿入力/` | `pvc.processAutoUpdate.js` |
|
||||
|
||||
|
||||
|
||||
## 10.個別支援計画
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=37](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=37)
|
||||
|
||||
| 削除 | 新規(更新) | ファイル |
|
||||
| --- | ----------------------- | --- |
|
||||
| | `src/10.個別支援計画/` | `KintoneRestAPIClient.min.js` |
|
||||
| | `src/10.個別支援計画/` | `kuc.min.js` |
|
||||
| | `src/` | `pvc.utils.js` |
|
||||
| | `src/` | `pvc.ProcessBatchApprovalHandler.js` |
|
||||
| | `src/10.個別支援計画/` | `pvc.main.js` |
|
||||
| | `src/10.個別支援計画/` | `pvc.processAutoUpdate.js` |
|
||||
| | `src/10.個別支援計画/` | `pvc.processBatchApproval.js` |
|
||||
|
||||
|
||||
|
||||
## 11.0,1歳日誌出力用
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=47](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=47)
|
||||
|
||||
| 削除 | 新規(更新) | ファイル |
|
||||
| -------------- | -------------------------- | --- |
|
||||
| ~~`utils.js`~~ | `src/` | `pvc.utils.js` |
|
||||
| ~~`main.js`~~ | `src/11.0,1歳日誌出力用/` | `pvc.main.js` |
|
||||
| | `src/11.0,1歳日誌出力用/` | `pvc.processAutoUpdate.js` |
|
||||
|
||||
|
||||
|
||||
## 12.2歳以上日誌出力用
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=48](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=48)
|
||||
|
||||
| 削除 | 新規(更新) | ファイル |
|
||||
| -------------- | ---------------------------- | --- |
|
||||
| ~~`utils.js`~~ | `src/` | `pvc.utils.js` |
|
||||
| ~~`main.js`~~ | `src/12.2歳以上日誌出力用/` | `pvc.main.js` |
|
||||
| | `src/12.2歳以上日誌出力用/` | `pvc.processAutoUpdate.js` |
|
||||
|
||||
|
||||
|
||||
## 2.保育計画 月案(0歳児用)
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=77](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=77)
|
||||
|
||||
| 削除 | 新規(更新) | ファイル |
|
||||
| ----------------- | ----------------------- | --- |
|
||||
| ~~`env.js`~~ | `src/2.保育計画 月案(0歳児用)/` | `KintoneRestAPIClient.min.js` |
|
||||
| ~~`main.js`~~ | `src/2.保育計画 月案(0歳児用)/` | `kuc.min.js` |
|
||||
| ~~`pvc.main.js`~~ | `src/` | `pvc.utils.js` |
|
||||
| | `src/` | `pvc.ProcessBatchApprovalHandler.js` |
|
||||
| | `src/2.保育計画 月案(0歳児用)/` | `pvc.main.js` |
|
||||
| | `src/2.保育計画 月案(0歳児用)/` | `pvc.processAutoUpdate.js` |
|
||||
| | `src/2.保育計画 月案(0歳児用)/` | `pvc.processBatchApproval.js` |
|
||||
|
||||
|
||||
|
||||
## 3.保育計画 月案
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=17](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=17)
|
||||
|
||||
| 削除 | 新規(更新) | ファイル |
|
||||
| ----------------- | ----------------------- | --- |
|
||||
| ~~`env.js`~~ | `src/3.保育計画 月案/` | `KintoneRestAPIClient.min.js` |
|
||||
| ~~`main.js`~~ | `src/3.保育計画 月案/` | `kuc.min.js` |
|
||||
| ~~`pvc.main.js`~~ | `src/` | `pvc.utils.js` |
|
||||
| | `src/` | `pvc.ProcessBatchApprovalHandler.js` |
|
||||
| | `src/3.保育計画 月案/` | `pvc.main.js` |
|
||||
| | `src/3.保育計画 月案/` | `pvc.processAutoUpdate.js` |
|
||||
| | `src/3.保育計画 月案/` | `pvc.processBatchApproval.js` |
|
||||
|
||||
|
||||
|
||||
## 4.保育計画 週案
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=18](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=18)
|
||||
|
||||
| 削除 | 新規(更新) | ファイル |
|
||||
| ----------------- | ----------------------- | --- |
|
||||
| ~~`env.js`~~ | `src/4.保育計画 週案/` | `KintoneRestAPIClient.min.js` |
|
||||
| ~~`main.js`~~ | `src/4.保育計画 週案/` | `kuc.min.js` |
|
||||
| ~~`pvc.main.js`~~ | `src/` | `pvc.utils.js` |
|
||||
| | `src/` | `pvc.ProcessBatchApprovalHandler.js` |
|
||||
| | `src/4.保育計画 週案/` | `pvc.main.js` |
|
||||
| | `src/4.保育計画 週案/` | `pvc.processAutoUpdate.js` |
|
||||
| | `src/4.保育計画 週案/` | `pvc.processBatchApproval.js` |
|
||||
|
||||
|
||||
> 「(作業者が自分)」一覧で「一括承認」ボタンをクリックしたとき
|
||||
>
|
||||
> 「4.保育計画 週案」で分岐が発生する場合、ユーザーに選択させるダイアログがポップアップ表示されます
|
||||
>
|
||||
> 
|
||||
|
||||
|
||||
## 6.個別配慮
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=23](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=23)
|
||||
|
||||
| 削除 | 新規(更新) | ファイル |
|
||||
| -------------- | ------------------ | --- |
|
||||
| ~~`utils.js`~~ | `src/` | `pvc.utils.js` |
|
||||
| ~~`main.js`~~ | `src/` | `pvc.ProcessBatchApprovalHandler.js` |
|
||||
| | `src/6.個別配慮/` | `pvc.main.js` |
|
||||
| | `src/6.個別配慮/` | `pvc.processAutoUpdate.js` |
|
||||
| | `src/6.個別配慮/` | `pvc.processBatchApproval.js` |
|
||||
|
||||
|
||||
>
|
||||
> ### 「6.個別配慮」項目におけるデータ修正のお願い
|
||||
>
|
||||
> 「6.個別配慮」項目において、各園児につき年間1件のデータ記録を保持し、かつ、該当する月のマッピング項目にデータが正しく記録される状態にすることです。
|
||||
>
|
||||
> #### データ処理のロジックについて
|
||||
>
|
||||
> システム側で以下のロジックに則ってデータの読み取りと選択を行います。ご確認いただき、データの準備にご協力ください。
|
||||
>
|
||||
> 1. **年度内データの読み取り**
|
||||
> 対象期間内のすべてのデータを読み取ります。
|
||||
> * **例**: `「入力開始日付(当月1日)」 > '2025/03/31' AND < '2026/04/01'`
|
||||
>
|
||||
> 2. **最新データの選択(園児ごと)**
|
||||
> 同一園児に複数のデータ記録が存在する場合、最新の日付のデータを1件選択します。
|
||||
> * **例**: 8月1日と9月1日のデータがある場合、9月1日のデータを選択します。
|
||||
>
|
||||
> 3. **月次マッピング項目からのデータ抽出**
|
||||
> 選択されたデータから、指定された月のマッピング項目のデータを抽出します。
|
||||
> * **例**: 9月のデータを出力する場合、そのデータ内の「子供の姿_9月」項目から情報を抽出します。
|
||||
>
|
||||
|
||||
|
||||
## 8.学期反省・評価
|
||||
**管理画面URL**: [https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=49](https://sagamikouseikai.cybozu.com/k/admin/app/customize?app=49)
|
||||
|
||||
| 削除 | 新規(更新) | ファイル |
|
||||
| ----------------- | ----------------------- | --- |
|
||||
| ~~`env.js`~~ | `src/8.学期反省・評価/` | `KintoneRestAPIClient.min.js` |
|
||||
| ~~`main.js`~~ | `src/8.学期反省・評価/` | `kuc.min.js` |
|
||||
| ~~`pvc.main.js`~~ | `src/` | `pvc.utils.js` |
|
||||
| | `src/` | `pvc.ProcessBatchApprovalHandler.js` |
|
||||
| | `src/8.学期反省・評価/` | `pvc.main.js` |
|
||||
| | `src/8.学期反省・評価/` | `pvc.processAutoUpdate.js` |
|
||||
| | `src/8.学期反省・評価/` | `pvc.processBatchApproval.js` |
|
||||
BIN
納品物説明/20250911/success.png
Normal file
BIN
納品物説明/20250911/success.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 65 KiB |
Reference in New Issue
Block a user