From 1ba37e46e16e2e9861d7d7b96fda00ea5d4a2851 Mon Sep 17 00:00:00 2001 From: Khafid Prayoga Date: Fri, 17 Oct 2025 10:22:11 +0700 Subject: [PATCH] feat(mcu-procedure): add procedure source management feature - Implement procedure source list view with pagination and search - Add create, read, update, and delete operations for procedure sources - Include form validation using zod schema - Set up data table configuration for procedure listing - Add confirmation dialogs for delete operations - Update delete record confirmation based on list config delKeyNames --- .../app/mcu-procedure/entry-form.vue | 137 +++++++++++++ app/components/app/mcu-procedure/list-cfg.ts | 33 ++++ app/components/app/mcu-procedure/list.vue | 36 ++++ app/components/content/mcu-procedure/list.vue | 184 ++++++++++++++++++ app/handlers/procedure-src.handler.ts | 24 +++ .../(features)/mcu-src/procedure/index.vue | 4 +- app/schemas/procedure-src.schema.ts | 22 +++ app/services/procedure-src.service.ts | 41 ++++ 8 files changed, 480 insertions(+), 1 deletion(-) create mode 100644 app/components/app/mcu-procedure/entry-form.vue create mode 100644 app/components/app/mcu-procedure/list-cfg.ts create mode 100644 app/components/app/mcu-procedure/list.vue create mode 100644 app/components/content/mcu-procedure/list.vue create mode 100644 app/handlers/procedure-src.handler.ts create mode 100644 app/schemas/procedure-src.schema.ts create mode 100644 app/services/procedure-src.service.ts diff --git a/app/components/app/mcu-procedure/entry-form.vue b/app/components/app/mcu-procedure/entry-form.vue new file mode 100644 index 00000000..fd33cf90 --- /dev/null +++ b/app/components/app/mcu-procedure/entry-form.vue @@ -0,0 +1,137 @@ + + + diff --git a/app/components/app/mcu-procedure/list-cfg.ts b/app/components/app/mcu-procedure/list-cfg.ts new file mode 100644 index 00000000..0a576270 --- /dev/null +++ b/app/components/app/mcu-procedure/list-cfg.ts @@ -0,0 +1,33 @@ +import type { Config, RecComponent } from '~/components/pub/my-ui/data-table' +import { defineAsyncComponent } from 'vue' + +const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue')) + +export const config: Config = { + cols: [{}, {}, {}, { width: 50 }], + + headers: [[{ label: 'Kode' }, { label: 'Nama (FHIR)' }, { label: 'Nama (ID)' }, { label: '' }]], + + keys: ['code', 'name', 'indName', 'action'], + + delKeyNames: [ + { key: 'code', label: 'Kode' }, + { key: 'name', label: 'Nama (FHIR)' }, + { key: 'indName', label: 'Nama (ID)' }, + ], + + parses: {}, + + components: { + action(rec, idx) { + const res: RecComponent = { + idx, + rec: rec as object, + component: action, + } + return res + }, + }, + + htmls: {}, +} diff --git a/app/components/app/mcu-procedure/list.vue b/app/components/app/mcu-procedure/list.vue new file mode 100644 index 00000000..1be60a60 --- /dev/null +++ b/app/components/app/mcu-procedure/list.vue @@ -0,0 +1,36 @@ + + + diff --git a/app/components/content/mcu-procedure/list.vue b/app/components/content/mcu-procedure/list.vue new file mode 100644 index 00000000..750a217e --- /dev/null +++ b/app/components/content/mcu-procedure/list.vue @@ -0,0 +1,184 @@ + + + diff --git a/app/handlers/procedure-src.handler.ts b/app/handlers/procedure-src.handler.ts new file mode 100644 index 00000000..7c949356 --- /dev/null +++ b/app/handlers/procedure-src.handler.ts @@ -0,0 +1,24 @@ +// Handlers +import { genCrudHandler } from '~/handlers/_handler' + +// Services +import { create, update, remove } from '~/services/procedure-src.service' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ + create, + update, + remove, +}) diff --git a/app/pages/(features)/mcu-src/procedure/index.vue b/app/pages/(features)/mcu-src/procedure/index.vue index 50de14c3..a31dfa98 100644 --- a/app/pages/(features)/mcu-src/procedure/index.vue +++ b/app/pages/(features)/mcu-src/procedure/index.vue @@ -32,7 +32,9 @@ const canRead = true