京都のkintone用javascript
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

102 řádky
3.6KB

  1. import { apptemplate, eventHnalder } from "@/common/app-template";
  2. import { AppID } from "@/common/appids";
  3. import { initMenuBox, setHeaderButton } from "@/common/header-button";
  4. import { KintoneEvent } from "@/common/kintone-event";
  5. import { 契約情報更新イベント } from "@/event/契約情報更新";
  6. import {
  7. ShowConfirmDialog,
  8. SuccessDialog,
  9. WarningDialog,
  10. } from "@/middleware/swal";
  11. import { getCreateUrl, getDetailUrl } from "@/rest-api/url";
  12. import { 入金予定結果フィールド名 } from "@/types/入金予定結果";
  13. import { 定期申込予約, 状態Dropdown } from "@/types/定期申込予約";
  14. import { setup } from "..";
  15. import { 申込 } from "./自動承認";
  16. setup(() => {
  17. kintone.events.on(
  18. [KintoneEvent.詳細.レコード詳細画面を表示した後],
  19. eventHnalder(async (event) => {
  20. const record: 定期申込予約 = event.record;
  21. await initMenuBox();
  22. const S = 状態Dropdown;
  23. if (
  24. [S.新規, S.選考当選, S.予約, S.空き待ち].find((status) => {
  25. return status === record.status.value;
  26. }) &&
  27. record.台数.value === "1"
  28. ) {
  29. setHeaderButton(
  30. "自動承認",
  31. apptemplate(async ({ setEvent, needReloadAtEnd }) => {
  32. const confirm = await ShowConfirmDialog({
  33. text: "承認しますか",
  34. });
  35. if (!confirm.isConfirmed) return;
  36. const entry = new 申込(record);
  37. await entry.初期化();
  38. await entry.選定();
  39. await SuccessDialog.fire();
  40. await WarningDialog.fire({
  41. timer: 2000,
  42. timerProgressBar: true,
  43. text: "初回請求データを作成してください",
  44. });
  45. const 契約 = entry.作成後契約取得();
  46. if (!契約) throw new Error();
  47. const param = new URLSearchParams({
  48. [入金予定結果フィールド名.車室情報管理レコード番号]:
  49. 契約.$id.value,
  50. [入金予定結果フィールド名.初回振り込み関連申込レコード番号]:
  51. record.$id.value,
  52. });
  53. {
  54. // 入金予定アプリ画面オープン
  55. const url = getCreateUrl(AppID.入金予定結果, param);
  56. console.log(url, param);
  57. window.open(url, "_blank");
  58. }
  59. {
  60. // 車室情報管理アプリ画面オープン
  61. const url = getDetailUrl(AppID.車室情報管理, 契約.$id.value);
  62. window.open(url, "_blank");
  63. }
  64. setEvent(new 契約情報更新イベント().getEvent(契約));
  65. needReloadAtEnd(true);
  66. })
  67. );
  68. }
  69. if (
  70. !!record.自動承認契約情報.value &&
  71. [S.承認_手動, S.承認_自動承認].find((status) => {
  72. return status === record.status.value;
  73. })
  74. ) {
  75. setHeaderButton(
  76. "初回入金予定作成",
  77. apptemplate(async () => {
  78. // 車室情報管理アプリ画面オープン
  79. const param = new URLSearchParams({
  80. [入金予定結果フィールド名.車室情報管理レコード番号]:
  81. record.自動承認契約情報.value,
  82. [入金予定結果フィールド名.初回振り込み関連申込レコード番号]:
  83. record.$id.value,
  84. });
  85. const url = getCreateUrl(AppID.入金予定結果, param);
  86. window.open(url, "_blank");
  87. })
  88. );
  89. }
  90. })
  91. );
  92. });