From cdebdb8995525fd91a8e564ccc9692ae866a5314 Mon Sep 17 00:00:00 2001 From: Abizrh Date: Sun, 7 Sep 2025 22:50:15 +0700 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9C=A8=20feat=20(item):=20add=20item=20a?= =?UTF-8?q?nd=20item=20price=20modules?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/app/item-price/entry-form.vue | 50 +++++++++++++ app/components/app/item-price/list-cfg.ts | 46 ++++++++++++ app/components/app/item-price/list.vue | 19 +++++ app/components/app/item-price/picker.vue | 0 app/components/app/item-price/search.vue | 0 .../app/item-price/status-badge.vue | 29 ++++++++ app/components/app/item/entry-form.vue | 68 ++++++++++++++++++ app/components/app/item/list-cfg.ts | 46 ++++++++++++ app/components/app/item/list.vue | 19 +++++ app/components/app/item/picker.vue | 0 app/components/app/item/search.vue | 0 app/components/app/item/status-badge.vue | 29 ++++++++ app/components/flow/item-price/list.vue | 71 +++++++++++++++++++ app/components/flow/item/list.vue | 71 +++++++++++++++++++ app/components/flow/medicine-group/list.vue | 5 ++ app/models/item-price.ts | 39 ++++++++++ app/models/item.ts | 48 +++++++++++++ app/pages/_dev/index.vue | 2 +- 18 files changed, 541 insertions(+), 1 deletion(-) create mode 100644 app/components/app/item-price/entry-form.vue create mode 100644 app/components/app/item-price/list-cfg.ts create mode 100644 app/components/app/item-price/list.vue create mode 100644 app/components/app/item-price/picker.vue create mode 100644 app/components/app/item-price/search.vue create mode 100644 app/components/app/item-price/status-badge.vue create mode 100644 app/components/app/item/entry-form.vue create mode 100644 app/components/app/item/list-cfg.ts create mode 100644 app/components/app/item/list.vue create mode 100644 app/components/app/item/picker.vue create mode 100644 app/components/app/item/search.vue create mode 100644 app/components/app/item/status-badge.vue create mode 100644 app/components/flow/item-price/list.vue create mode 100644 app/components/flow/item/list.vue create mode 100644 app/models/item-price.ts create mode 100644 app/models/item.ts diff --git a/app/components/app/item-price/entry-form.vue b/app/components/app/item-price/entry-form.vue new file mode 100644 index 00000000..e0c97dc8 --- /dev/null +++ b/app/components/app/item-price/entry-form.vue @@ -0,0 +1,50 @@ + + + diff --git a/app/components/app/item-price/list-cfg.ts b/app/components/app/item-price/list-cfg.ts new file mode 100644 index 00000000..e2c72f9c --- /dev/null +++ b/app/components/app/item-price/list-cfg.ts @@ -0,0 +1,46 @@ +import type { + Col, + KeyLabel, + RecComponent, + RecStrFuncComponent, + RecStrFuncUnknown, + Th, +} from '~/components/pub/custom-ui/data/types' +import { defineAsyncComponent } from 'vue' + +const action = defineAsyncComponent(() => import('~/components/pub/custom-ui/data/dropdown-action-dud.vue')) + +const _doctorStatus = { + 0: 'Tidak Aktif', + 1: 'Aktif', +} + +export const cols: Col[] = [{}, {}, { width: 50 }] + +export const header: Th[][] = [[{ label: 'Kode' }, { label: 'Nama' }, { label: 'Aksi' }]] + +export const keys = ['code', 'name', 'action'] + +export const delKeyNames: KeyLabel[] = [ + { key: 'code', label: 'Kode' }, + { key: 'name', label: 'Nama' }, +] + +export const funcParsed: RecStrFuncUnknown = {} + +export const funcComponent: RecStrFuncComponent = { + action(rec, idx) { + const res: RecComponent = { + idx, + rec: rec as object, + component: action, + } + return res + }, +} + +export const funcHtml: RecStrFuncUnknown = { + patient_address(_rec) { + return '-' + }, +} diff --git a/app/components/app/item-price/list.vue b/app/components/app/item-price/list.vue new file mode 100644 index 00000000..5b8778d9 --- /dev/null +++ b/app/components/app/item-price/list.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/app/item-price/picker.vue b/app/components/app/item-price/picker.vue new file mode 100644 index 00000000..e69de29b diff --git a/app/components/app/item-price/search.vue b/app/components/app/item-price/search.vue new file mode 100644 index 00000000..e69de29b diff --git a/app/components/app/item-price/status-badge.vue b/app/components/app/item-price/status-badge.vue new file mode 100644 index 00000000..32cdfbca --- /dev/null +++ b/app/components/app/item-price/status-badge.vue @@ -0,0 +1,29 @@ + + + diff --git a/app/components/app/item/entry-form.vue b/app/components/app/item/entry-form.vue new file mode 100644 index 00000000..8f6d3abf --- /dev/null +++ b/app/components/app/item/entry-form.vue @@ -0,0 +1,68 @@ + + + diff --git a/app/components/app/item/list-cfg.ts b/app/components/app/item/list-cfg.ts new file mode 100644 index 00000000..e2c72f9c --- /dev/null +++ b/app/components/app/item/list-cfg.ts @@ -0,0 +1,46 @@ +import type { + Col, + KeyLabel, + RecComponent, + RecStrFuncComponent, + RecStrFuncUnknown, + Th, +} from '~/components/pub/custom-ui/data/types' +import { defineAsyncComponent } from 'vue' + +const action = defineAsyncComponent(() => import('~/components/pub/custom-ui/data/dropdown-action-dud.vue')) + +const _doctorStatus = { + 0: 'Tidak Aktif', + 1: 'Aktif', +} + +export const cols: Col[] = [{}, {}, { width: 50 }] + +export const header: Th[][] = [[{ label: 'Kode' }, { label: 'Nama' }, { label: 'Aksi' }]] + +export const keys = ['code', 'name', 'action'] + +export const delKeyNames: KeyLabel[] = [ + { key: 'code', label: 'Kode' }, + { key: 'name', label: 'Nama' }, +] + +export const funcParsed: RecStrFuncUnknown = {} + +export const funcComponent: RecStrFuncComponent = { + action(rec, idx) { + const res: RecComponent = { + idx, + rec: rec as object, + component: action, + } + return res + }, +} + +export const funcHtml: RecStrFuncUnknown = { + patient_address(_rec) { + return '-' + }, +} diff --git a/app/components/app/item/list.vue b/app/components/app/item/list.vue new file mode 100644 index 00000000..5b8778d9 --- /dev/null +++ b/app/components/app/item/list.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/app/item/picker.vue b/app/components/app/item/picker.vue new file mode 100644 index 00000000..e69de29b diff --git a/app/components/app/item/search.vue b/app/components/app/item/search.vue new file mode 100644 index 00000000..e69de29b diff --git a/app/components/app/item/status-badge.vue b/app/components/app/item/status-badge.vue new file mode 100644 index 00000000..32cdfbca --- /dev/null +++ b/app/components/app/item/status-badge.vue @@ -0,0 +1,29 @@ + + + diff --git a/app/components/flow/item-price/list.vue b/app/components/flow/item-price/list.vue new file mode 100644 index 00000000..9a5f567b --- /dev/null +++ b/app/components/flow/item-price/list.vue @@ -0,0 +1,71 @@ + + + diff --git a/app/components/flow/item/list.vue b/app/components/flow/item/list.vue new file mode 100644 index 00000000..41c7311f --- /dev/null +++ b/app/components/flow/item/list.vue @@ -0,0 +1,71 @@ + + + diff --git a/app/components/flow/medicine-group/list.vue b/app/components/flow/medicine-group/list.vue index 9a5f567b..0885b57f 100644 --- a/app/components/flow/medicine-group/list.vue +++ b/app/components/flow/medicine-group/list.vue @@ -2,10 +2,14 @@ import type { DataTableLoader } from '~/components/pub/base/data-table/type' import type { HeaderPrep, RefSearchNav } from '~/components/pub/custom-ui/data/types' import Modal from '~/components/pub/base/modal/modal.vue' +import Pagination from '~/components/pub/base/pagination/pagination.vue' import Header from '~/components/pub/custom-ui/nav-header/prep.vue' const data = ref([]) const entry = ref({}) +const page = ref(1) +const rowsPerPage = ref(10) +const totalPages = 20 const refSearchNav: RefSearchNav = { onClick: () => { @@ -63,6 +67,7 @@ provide('table_data_loader', isLoading)
+
diff --git a/app/models/item-price.ts b/app/models/item-price.ts new file mode 100644 index 00000000..fb474109 --- /dev/null +++ b/app/models/item-price.ts @@ -0,0 +1,39 @@ +export interface ItemPrice { + id: string + item_id: number + price: number + insuranceCompany_code: string +} + +export interface CreateDto { + item_id: number + price: number + insuranceCompany_code: string +} + +export interface GetListDto { + page: number + size: number + name?: string + code?: string +} + +export interface GetDetailDto { + id?: string +} + +export interface UpdateDto extends CreateDto { + id?: number +} + +export interface DeleteDto { + id?: string +} + +export function genMedicine(): CreateDto { + return { + item_id: 1, + price: 1, + insuranceCompany_code: 'test', + } +} diff --git a/app/models/item.ts b/app/models/item.ts new file mode 100644 index 00000000..851ff11d --- /dev/null +++ b/app/models/item.ts @@ -0,0 +1,48 @@ +export interface Item { + id: string + name: string + code: string + itemGroup_code: string + uom_code: string + infra_id: number + stock: number +} + +export interface CreateDto { + name: string + code: string + itemGroup_code: string + uom_code: string + infra_id: number + stock: number +} + +export interface GetListDto { + page: number + size: number + name?: string + code?: string +} + +export interface GetDetailDto { + id?: string +} + +export interface UpdateDto extends CreateDto { + id?: number +} + +export interface DeleteDto { + id?: string +} + +export function genMedicine(): CreateDto { + return { + name: 'test', + code: 'test', + itemGroup_code: 'test', + uom_code: 'test', + infra_id: 1, + stock: 1, + } +} diff --git a/app/pages/_dev/index.vue b/app/pages/_dev/index.vue index 3f67f9f8..90928bc6 100644 --- a/app/pages/_dev/index.vue +++ b/app/pages/_dev/index.vue @@ -49,7 +49,7 @@ const navMenu = ref({ { title: 'Test Medicine List', icon: 'i-lucide-user', - component: defineAsyncComponent(() => import('~/components/flow/medicine-method/list.vue')), + component: defineAsyncComponent(() => import('~/components/flow/item/list.vue')), }, ], }) From 263f9dbc7f47a9a03859fa3e6a4e0018c9a6b11b Mon Sep 17 00:00:00 2001 From: Abizrh Date: Sun, 7 Sep 2025 22:58:18 +0700 Subject: [PATCH 2/3] =?UTF-8?q?=E2=9A=A0=EF=B8=8F=20refactor=20(components?= =?UTF-8?q?):=20rename=20flow=20components=20to=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/{flow => content}/auth/login.vue | 0 app/components/{flow => content}/dashboard/index.vue | 0 app/components/{flow => content}/item-price/list.vue | 0 app/components/{flow => content}/item/list.vue | 0 app/components/{flow => content}/medicine-group/list.vue | 1 - app/components/{flow => content}/medicine-method/list.vue | 0 app/components/{flow => content}/medicine/entry.vue | 0 app/components/{flow => content}/medicine/list.vue | 0 app/components/{flow => content}/patient/add.vue | 0 app/components/{flow => content}/patient/list.vue | 0 app/components/{flow => content}/rehab/registration/home.vue | 0 .../{flow => content}/rehab/registration/sep-prosedur/add.vue | 0 .../{flow => content}/rehab/registration/sep-prosedur/list.vue | 0 app/components/{flow => content}/satusehat/const.ts | 0 app/components/{flow => content}/satusehat/list.vue | 0 app/components/{flow => content}/satusehat/schema.query.ts | 0 app/components/{flow => content}/user/entry.vue | 0 app/components/{flow => content}/user/list.vue | 0 app/pages/(features)/doctor/add.vue | 2 +- app/pages/(features)/doctor/index.vue | 2 +- app/pages/(features)/human-src/user/add.vue | 2 +- app/pages/(features)/human-src/user/index.vue | 2 +- app/pages/(features)/patient/add.vue | 2 +- app/pages/(features)/patient/index.vue | 2 +- .../(features)/rehab/registration-queue/sep-prosedur/add.vue | 2 +- app/pages/(features)/satusehat/add.vue | 2 +- app/pages/(features)/satusehat/index.vue | 2 +- .../(features)/tools-equipment-src/medicine-method/index.vue | 2 +- .../(features)/tools-equipment-src/medicine-type/index.vue | 2 +- app/pages/(features)/tools-equipment-src/medicine/[id]/edit.vue | 2 +- app/pages/(features)/tools-equipment-src/medicine/add.vue | 2 +- app/pages/(features)/tools-equipment-src/medicine/index.vue | 2 +- app/pages/_dev/index.vue | 2 +- app/pages/auth/login.vue | 2 +- app/pages/index.vue | 2 +- 35 files changed, 17 insertions(+), 18 deletions(-) rename app/components/{flow => content}/auth/login.vue (100%) rename app/components/{flow => content}/dashboard/index.vue (100%) rename app/components/{flow => content}/item-price/list.vue (100%) rename app/components/{flow => content}/item/list.vue (100%) rename app/components/{flow => content}/medicine-group/list.vue (96%) rename app/components/{flow => content}/medicine-method/list.vue (100%) rename app/components/{flow => content}/medicine/entry.vue (100%) rename app/components/{flow => content}/medicine/list.vue (100%) rename app/components/{flow => content}/patient/add.vue (100%) rename app/components/{flow => content}/patient/list.vue (100%) rename app/components/{flow => content}/rehab/registration/home.vue (100%) rename app/components/{flow => content}/rehab/registration/sep-prosedur/add.vue (100%) rename app/components/{flow => content}/rehab/registration/sep-prosedur/list.vue (100%) rename app/components/{flow => content}/satusehat/const.ts (100%) rename app/components/{flow => content}/satusehat/list.vue (100%) rename app/components/{flow => content}/satusehat/schema.query.ts (100%) rename app/components/{flow => content}/user/entry.vue (100%) rename app/components/{flow => content}/user/list.vue (100%) diff --git a/app/components/flow/auth/login.vue b/app/components/content/auth/login.vue similarity index 100% rename from app/components/flow/auth/login.vue rename to app/components/content/auth/login.vue diff --git a/app/components/flow/dashboard/index.vue b/app/components/content/dashboard/index.vue similarity index 100% rename from app/components/flow/dashboard/index.vue rename to app/components/content/dashboard/index.vue diff --git a/app/components/flow/item-price/list.vue b/app/components/content/item-price/list.vue similarity index 100% rename from app/components/flow/item-price/list.vue rename to app/components/content/item-price/list.vue diff --git a/app/components/flow/item/list.vue b/app/components/content/item/list.vue similarity index 100% rename from app/components/flow/item/list.vue rename to app/components/content/item/list.vue diff --git a/app/components/flow/medicine-group/list.vue b/app/components/content/medicine-group/list.vue similarity index 96% rename from app/components/flow/medicine-group/list.vue rename to app/components/content/medicine-group/list.vue index 0885b57f..93afabff 100644 --- a/app/components/flow/medicine-group/list.vue +++ b/app/components/content/medicine-group/list.vue @@ -2,7 +2,6 @@ import type { DataTableLoader } from '~/components/pub/base/data-table/type' import type { HeaderPrep, RefSearchNav } from '~/components/pub/custom-ui/data/types' import Modal from '~/components/pub/base/modal/modal.vue' -import Pagination from '~/components/pub/base/pagination/pagination.vue' import Header from '~/components/pub/custom-ui/nav-header/prep.vue' const data = ref([]) diff --git a/app/components/flow/medicine-method/list.vue b/app/components/content/medicine-method/list.vue similarity index 100% rename from app/components/flow/medicine-method/list.vue rename to app/components/content/medicine-method/list.vue diff --git a/app/components/flow/medicine/entry.vue b/app/components/content/medicine/entry.vue similarity index 100% rename from app/components/flow/medicine/entry.vue rename to app/components/content/medicine/entry.vue diff --git a/app/components/flow/medicine/list.vue b/app/components/content/medicine/list.vue similarity index 100% rename from app/components/flow/medicine/list.vue rename to app/components/content/medicine/list.vue diff --git a/app/components/flow/patient/add.vue b/app/components/content/patient/add.vue similarity index 100% rename from app/components/flow/patient/add.vue rename to app/components/content/patient/add.vue diff --git a/app/components/flow/patient/list.vue b/app/components/content/patient/list.vue similarity index 100% rename from app/components/flow/patient/list.vue rename to app/components/content/patient/list.vue diff --git a/app/components/flow/rehab/registration/home.vue b/app/components/content/rehab/registration/home.vue similarity index 100% rename from app/components/flow/rehab/registration/home.vue rename to app/components/content/rehab/registration/home.vue diff --git a/app/components/flow/rehab/registration/sep-prosedur/add.vue b/app/components/content/rehab/registration/sep-prosedur/add.vue similarity index 100% rename from app/components/flow/rehab/registration/sep-prosedur/add.vue rename to app/components/content/rehab/registration/sep-prosedur/add.vue diff --git a/app/components/flow/rehab/registration/sep-prosedur/list.vue b/app/components/content/rehab/registration/sep-prosedur/list.vue similarity index 100% rename from app/components/flow/rehab/registration/sep-prosedur/list.vue rename to app/components/content/rehab/registration/sep-prosedur/list.vue diff --git a/app/components/flow/satusehat/const.ts b/app/components/content/satusehat/const.ts similarity index 100% rename from app/components/flow/satusehat/const.ts rename to app/components/content/satusehat/const.ts diff --git a/app/components/flow/satusehat/list.vue b/app/components/content/satusehat/list.vue similarity index 100% rename from app/components/flow/satusehat/list.vue rename to app/components/content/satusehat/list.vue diff --git a/app/components/flow/satusehat/schema.query.ts b/app/components/content/satusehat/schema.query.ts similarity index 100% rename from app/components/flow/satusehat/schema.query.ts rename to app/components/content/satusehat/schema.query.ts diff --git a/app/components/flow/user/entry.vue b/app/components/content/user/entry.vue similarity index 100% rename from app/components/flow/user/entry.vue rename to app/components/content/user/entry.vue diff --git a/app/components/flow/user/list.vue b/app/components/content/user/list.vue similarity index 100% rename from app/components/flow/user/list.vue rename to app/components/content/user/list.vue diff --git a/app/pages/(features)/doctor/add.vue b/app/pages/(features)/doctor/add.vue index 987baa28..c0a43c7f 100644 --- a/app/pages/(features)/doctor/add.vue +++ b/app/pages/(features)/doctor/add.vue @@ -35,7 +35,7 @@ const canCreate = hasCreateAccess(roleAccess) diff --git a/app/pages/(features)/doctor/index.vue b/app/pages/(features)/doctor/index.vue index e75a5b89..f0c8ddba 100644 --- a/app/pages/(features)/doctor/index.vue +++ b/app/pages/(features)/doctor/index.vue @@ -33,7 +33,7 @@ const canRead = hasReadAccess(roleAccess)