diff --git a/app/components/app/device-order-item/list-entry.config.ts b/app/components/app/device-order-item/list-entry.config.ts new file mode 100644 index 00000000..f2f3ef86 --- /dev/null +++ b/app/components/app/device-order-item/list-entry.config.ts @@ -0,0 +1,36 @@ +import { defineAsyncComponent } from 'vue' +import type { Config } from '~/components/pub/my-ui/data-table' + + +const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-ud.vue')) + +export const config: Config = { + cols: [{}, {}, { width: 50 }], + headers: [[{ label: 'Nama' }, { label: 'Jumlah' }, { label: '' }]], + keys: ['name', 'count', 'action'], + delKeyNames: [ + { key: 'name', label: 'Nama' }, + { key: 'count', label: 'Jumlah' }, + ], + skeletonSize: 10 + // funcParsed: { + // parent: (rec: unknown): unknown => { + // const recX = rec as SmallDetailDto + // return recX.parent?.name || '-' + // }, + // }, + // funcComponent: { + // action(rec: object, idx: any) { + // const res: RecComponent = { + // idx, + // rec: rec as object, + // component: action, + // props: { + // size: 'sm', + // }, + // } + // return res + // }, + // } +} + diff --git a/app/components/app/device-order-item/list-entry.vue b/app/components/app/device-order-item/list-entry.vue new file mode 100644 index 00000000..26f6691d --- /dev/null +++ b/app/components/app/device-order-item/list-entry.vue @@ -0,0 +1,13 @@ + + + + + + + Tambah + + + diff --git a/app/components/app/device-order/entry-form.vue b/app/components/app/device-order/entry-form.vue new file mode 100644 index 00000000..bea2b6eb --- /dev/null +++ b/app/components/app/device-order/entry-form.vue @@ -0,0 +1,6 @@ + + + + Test + diff --git a/app/components/app/device-order/list.config.ts b/app/components/app/device-order/list.config.ts new file mode 100644 index 00000000..7580c576 --- /dev/null +++ b/app/components/app/device-order/list.config.ts @@ -0,0 +1,42 @@ +import type { Config } from '~/components/pub/my-ui/data-table' +import type { DeviceOrder } from '~/models/device-order' +import { defineAsyncComponent } from 'vue' + +const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-ud.vue')) + +export const config: Config = { + cols: [{ width: 120 }, { }, { }, { width: 50 }], + headers: [[{ label: 'Tanggal' }, { label: 'DPJP' }, { label: 'Alat Kesehatan' }, { label: '' }]], + keys: ['createdAt', 'encounter.doctor.person.name', 'items', 'action'], + delKeyNames: [ + { key: 'code', label: 'Kode' }, + { key: 'name', label: 'Nama' }, + ], + skeletonSize: 10, + htmls: { + items: (rec: unknown): unknown => { + const recX = rec as DeviceOrder + return recX.items?.length || 0 + }, + } + // funcParsed: { + // parent: (rec: unknown): unknown => { + // const recX = rec as SmallDetailDto + // return recX.parent?.name || '-' + // }, + // }, + // funcComponent: { + // action(rec: object, idx: any) { + // const res: RecComponent = { + // idx, + // rec: rec as object, + // component: action, + // props: { + // size: 'sm', + // }, + // } + // return res + // }, + // } +} + diff --git a/app/components/app/device-order/list.vue b/app/components/app/device-order/list.vue new file mode 100644 index 00000000..37b24ea3 --- /dev/null +++ b/app/components/app/device-order/list.vue @@ -0,0 +1,35 @@ + + + + + + + + diff --git a/app/components/content/device-order/entry.vue b/app/components/content/device-order/entry.vue new file mode 100644 index 00000000..6d76d685 --- /dev/null +++ b/app/components/content/device-order/entry.vue @@ -0,0 +1,37 @@ + + + + + + + + + + + + diff --git a/app/components/content/device-order/list.vue b/app/components/content/device-order/list.vue new file mode 100644 index 00000000..e62a2fbd --- /dev/null +++ b/app/components/content/device-order/list.vue @@ -0,0 +1,145 @@ + + + + + + + + + handleActionRemove(recId, getMyList, toast)" + @cancel="" + > + + + + ID: + {{ record?.id }} + + + Nama: + {{ record.name }} + + + Kode: + {{ record.code }} + + + + + diff --git a/app/components/content/device-order/main.vue b/app/components/content/device-order/main.vue new file mode 100644 index 00000000..ae5a9ca8 --- /dev/null +++ b/app/components/content/device-order/main.vue @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/handlers/device-order-item.handler.ts b/app/handlers/device-order-item.handler.ts new file mode 100644 index 00000000..b1df996b --- /dev/null +++ b/app/handlers/device-order-item.handler.ts @@ -0,0 +1,24 @@ +// Handlers +import { genCrudHandler } from '~/handlers/_handler' + +// Services +import { create, update, remove } from '~/services/device-order-item.service' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ + create, + update, + remove, +}) diff --git a/app/handlers/device-order.handler.ts b/app/handlers/device-order.handler.ts new file mode 100644 index 00000000..b1df996b --- /dev/null +++ b/app/handlers/device-order.handler.ts @@ -0,0 +1,24 @@ +// Handlers +import { genCrudHandler } from '~/handlers/_handler' + +// Services +import { create, update, remove } from '~/services/device-order-item.service' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ + create, + update, + remove, +}) diff --git a/app/schemas/device-order.schema.ts b/app/schemas/device-order.schema.ts new file mode 100644 index 00000000..b0c2a56c --- /dev/null +++ b/app/schemas/device-order.schema.ts @@ -0,0 +1,12 @@ +import { z } from 'zod' +import type { DeviceOrder } from '~/models/device-order' + +const DeviceOrderSchema = z.object({ + encounter_id: z.number({ required_error: 'Kode harus diisi' }), + doctor_id: z.number({ required_error: 'Kode harus diisi' }), +}) + +type DeviceOrderFormData = z.infer & Partial + +export { DeviceOrderSchema } +export type { DeviceOrderFormData } diff --git a/app/services/device-order-item.service.ts b/app/services/device-order-item.service.ts new file mode 100644 index 00000000..33b92b8c --- /dev/null +++ b/app/services/device-order-item.service.ts @@ -0,0 +1,26 @@ +// Base +import * as base from './_crud-base' + +const path = '/api/v1/device-order-item' +const name = 'device-order-item' + +export function create(data: any) { + console.log('service create', data) + return base.create(path, data, name) +} + +export function getList(params: any = null) { + return base.getList(path, params, name) +} + +export function getDetail(id: number | string) { + return base.getDetail(path, id, name) +} + +export function update(id: number | string, data: any) { + return base.update(path, id, data, name) +} + +export function remove(id: number | string) { + return base.remove(path, id, name) +} diff --git a/app/services/device-order.service.ts b/app/services/device-order.service.ts new file mode 100644 index 00000000..b8d5372c --- /dev/null +++ b/app/services/device-order.service.ts @@ -0,0 +1,26 @@ +// Base +import * as base from './_crud-base' + +const path = '/api/v1/device-order' +const name = 'device-order' + +export function create(data: any) { + console.log('service create', data) + return base.create(path, data, name) +} + +export function getList(params: any = null) { + return base.getList(path, params, name) +} + +export function getDetail(id: number | string) { + return base.getDetail(path, id, name) +} + +export function update(id: number | string, data: any) { + return base.update(path, id, data, name) +} + +export function remove(id: number | string) { + return base.remove(path, id, name) +}
+ ID: + {{ record?.id }} +
+ Nama: + {{ record.name }} +
+ Kode: + {{ record.code }} +