feat/procedure-room-order: wip #1
+ material-package + material-package-item
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import type { Config } from '~/components/pub/my-ui/data-table'
|
||||
|
||||
type SmallDetailDto = any
|
||||
|
||||
export const config: Config = {
|
||||
cols: [ { width: 150 }, {}, { width: 150 }],
|
||||
|
||||
headers: [
|
||||
[
|
||||
{ label: 'No' },
|
||||
{ label: 'Name' },
|
||||
{ label: 'Jumlah' },
|
||||
],
|
||||
],
|
||||
|
||||
keys: ['number', 'material.name', 'count'],
|
||||
|
||||
parses: {
|
||||
number: (rec: unknown): unknown => {
|
||||
return (rec as SmallDetailDto).medicineGroup?.name || '-'
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<script setup lang="ts">
|
||||
//
|
||||
import DataTable from '~/components/pub/my-ui/data-table/data-table.vue'
|
||||
|
||||
// Configs
|
||||
import { config } from './quick-list.cfg'
|
||||
import type { MaterialPackageItem } from '~/models/material-package-item';
|
||||
|
||||
interface Props {
|
||||
data: MaterialPackageItem[]
|
||||
}
|
||||
|
||||
defineProps<Props>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<div class="font-semibold text-sm 2xl:text-base mb-2">
|
||||
Daftar Item BMHP
|
||||
</div>
|
||||
<DataTable v-bind="config" :rows="data" />
|
||||
</div>
|
||||
</template>
|
||||
@@ -0,0 +1,23 @@
|
||||
<script setup lang="ts">
|
||||
//
|
||||
import * as CB from '~/components/pub/my-ui/combobox'
|
||||
|
||||
//
|
||||
defineProps<{
|
||||
items: CB.Item[]
|
||||
}>()
|
||||
|
||||
const model = defineModel()
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="mb-4 2xl:mb-5">
|
||||
<div class="font-semibold text-sm 2xl:text-base mb-2">
|
||||
Paket BMHP
|
||||
</div>
|
||||
<div class="max-w-[600px]">
|
||||
<CB.Combobox :items="items" v-model="model" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -0,0 +1,14 @@
|
||||
import { type Base, genBase } from "./_base"
|
||||
|
||||
export interface MaterialPackageItem extends Base {
|
||||
materialPackage_code: string
|
||||
material_code: string
|
||||
}
|
||||
|
||||
export function genMaterialPackage(): MaterialPackageItem {
|
||||
return {
|
||||
...genBase(),
|
||||
materialPackage_code: '',
|
||||
material_code: '',
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { type Base, genBase } from "./_base"
|
||||
|
||||
export interface MaterialPackage extends Base {
|
||||
code: string
|
||||
name: string
|
||||
}
|
||||
|
||||
export function genMaterialPackage(): MaterialPackage {
|
||||
return {
|
||||
...genBase(),
|
||||
code: '',
|
||||
name: '',
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import { z } from 'zod'
|
||||
import type { MaterialPackageItem } from '~/models/material-package-item'
|
||||
|
||||
const MaterialSchema = z.object({
|
||||
materialPackage_code: z.string({ required_error: 'Kode harus diisi' }).min(1, 'Kode minimum 1 karakter'),
|
||||
material_code: z.string({ required_error: 'Nama harus diisi' }).min(1, 'Nama minimum 1 karakter'),
|
||||
})
|
||||
|
||||
type MaterialFormData = z.infer<typeof MaterialSchema> & Partial<MaterialPackageItem>
|
||||
|
||||
export { MaterialSchema }
|
||||
export type { MaterialFormData }
|
||||
@@ -0,0 +1,12 @@
|
||||
import { z } from 'zod'
|
||||
import type { MaterialPackage } from '~/models/material-package'
|
||||
|
||||
const MaterialSchema = z.object({
|
||||
code: z.string({ required_error: 'Kode harus diisi' }).min(1, 'Kode minimum 1 karakter'),
|
||||
name: z.string({ required_error: 'Nama harus diisi' }).min(1, 'Nama minimum 1 karakter'),
|
||||
})
|
||||
|
||||
type MaterialFormData = z.infer<typeof MaterialSchema> & Partial<MaterialPackage>
|
||||
|
||||
export { MaterialSchema }
|
||||
export type { MaterialFormData }
|
||||
@@ -0,0 +1,25 @@
|
||||
// Base
|
||||
import * as base from './_crud-base'
|
||||
|
||||
const name = 'material-package-item'
|
||||
const path = `/api/v1/${name}`
|
||||
|
||||
export function create(data: any) {
|
||||
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)
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
// Base
|
||||
import type { MaterialPackage } from '~/models/material-package'
|
||||
import * as base from './_crud-base'
|
||||
|
||||
const name = 'material-package'
|
||||
const path = `/api/v1/${name}`
|
||||
|
||||
export function create(data: any) {
|
||||
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)
|
||||
}
|
||||
|
||||
export async function getValueLabelList(params: any = null, useId = false): Promise<{ value: string; label: string }[]> {
|
||||
let data: { value: string; label: string }[] = []
|
||||
const result = await getList(params)
|
||||
if (result.success) {
|
||||
const resultData = result.body?.data || []
|
||||
data = !useId ?
|
||||
resultData.map((item: MaterialPackage) => ({ value: item.code, label: item.name })) :
|
||||
resultData.map((item: MaterialPackage) => ({ value: item.id, label: item.name }))
|
||||
}
|
||||
return data
|
||||
}
|
||||
Reference in New Issue
Block a user