rekap monalisa gangguan , kpi , material

This commit is contained in:
Eko Haryadi
2024-04-05 22:20:45 +07:00
parent d671b797b2
commit f8da3e92d4
70 changed files with 6315 additions and 1631 deletions

View File

@ -4,137 +4,43 @@
</Filters>
<div id="data">
<DxDataGrid
ref="dataGridRef"
:allow-column-reordering="true"
class="max-h-[calc(100vh-140px)] mb-10"
:data-source="data"
:show-column-lines="true"
:show-row-lines="false"
:show-borders="true"
:row-alternation-enabled="true"
:hover-state-enabled="true"
@selection-changed="onSelectionChanged"
:column-width="100"
@exporting="onExporting"
:allow-column-resizing="true"
column-resizing-mode="widget"
>
<DxDataGrid ref="dataGridRef" :allow-column-reordering="true" class="max-h-[calc(100vh-140px)] mb-10"
:data-source="data" :show-column-lines="true" :show-row-lines="false" :show-borders="true"
:row-alternation-enabled="true" :hover-state-enabled="true" @selection-changed="onSelectionChanged"
:column-width="100" @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget">
<DxSelection mode="single" />
<DxPaging :page-size="20" :enabled="true" />
<DxPager
:visible="true"
:allowed-page-sizes="[20, 50, 100]"
display-mode="full"
:show-page-size-selector="true"
:show-info="true"
:show-navigation-buttons="true"
/>
<DxPager :visible="true" :allowed-page-sizes="[20, 50, 100]" display-mode="full" :show-page-size-selector="true"
:show-info="true" :show-navigation-buttons="true" />
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
<DxExport
:enabled="true"
:formats="['pdf', 'xlsx', 'document']"
:allow-export-selected-data="false"
/>
<DxColumn
css-class="custom-table-column"
:width="50"
alignment="center"
:calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1"
data-type="number"
caption="No"
cell-template="formatNumber"
/>
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
<DxColumn css-class="custom-table-column" :width="50" alignment="center"
:calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No"
cell-template="formatNumber" />
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="no_laporan"
caption="Nomor Gangguan"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="nama_pelapor"
caption="Nama Pelanggan"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="300"
alignment="center"
data-field="keterangan_pelapor"
caption="Isi Laporan"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="300"
alignment="center"
data-field="penyebab"
caption="Penyebab Gangguan"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="waktu_lapor"
caption="Tgl Padam"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="waktu_recovery"
caption="Tgl Nyala"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="regu"
caption="Regu"
cell-template="formatText"
/>
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="no_laporan"
caption="Nomor Gangguan" cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="nama_pelapor"
caption="Nama Pelanggan" cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="300" alignment="center" data-field="keterangan_pelapor"
caption="Isi Laporan" cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="300" alignment="center" data-field="penyebab"
caption="Penyebab Gangguan" cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="waktu_lapor"
caption="Tgl Padam" cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="waktu_recovery"
caption="Tgl Nyala" cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="regu" caption="Regu"
cell-template="formatText" />
<DxColumn css-class="custom-table-column" alignment="center" caption="Material Yang Dipakai">
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="media"
caption="Sumber"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="nama_material"
caption="Nama"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="satuan_material"
caption="Satuan"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="volume_material"
caption="Vol"
cell-template="formatText"
/>
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="media" caption="Sumber"
cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="nama_material"
caption="Nama" cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="satuan_material"
caption="Satuan" cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="volume_material"
caption="Vol" cell-template="formatText" />
</DxColumn>
<template #formatText="{ data }">
@ -146,12 +52,12 @@
<template #formatNumber="{ data }">
<p class="text-right">
{{
isNumber(data.text)
? data.column.caption == '%'
? formatPercentage(data.text)
: formatNumber(data.text)
: data.text
}}
isNumber(data.text)
? data.column.caption == '%'
? formatPercentage(data.text)
: formatNumber(data.text)
: data.text
}}
</p>
</template>
</DxDataGrid>
@ -238,7 +144,9 @@ import BufferDialog from '@/components/Dialogs/BufferDialog.vue'
import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers'
import DetailDialog from '@/components/Dialogs/DetailDialog.vue'
import InputText from '@/components/InputText.vue'
import { exportToPDF, exportToXLSX } from '@/report/Material/Daftar/Material_DGMYG'
import { exportToPDF, exportToXLSX,
exportToDOCX
} from '@/report/Material/Daftar/Material_DGMYG'
const position = { of: '#data' }
const showIndicator = ref(true)
@ -334,6 +242,8 @@ const onExporting = (e: any) => {
} else if (e.format === 'xlsx') {
exportToXLSX(reportMeta, e)
} else {
exportToDOCX(reportMeta, data)
}
}

View File

@ -3,100 +3,34 @@
<Type14 @update:filters="(value) => (filters = value)" />
</Filters>
<div id="data">
<DxDataGrid
ref="dataGridRef"
:allow-column-reordering="true"
class="max-h-[calc(100vh-140px)] mb-10"
:data-source="data"
:show-column-lines="true"
:show-row-lines="false"
:show-borders="true"
:row-alternation-enabled="true"
:hover-state-enabled="true"
@selection-changed="onSelectionChanged"
:column-width="100"
@exporting="onExporting"
:allow-column-resizing="true"
column-resizing-mode="widget"
>
<DxDataGrid ref="dataGridRef" :allow-column-reordering="true" class="max-h-[calc(100vh-140px)] mb-10"
:data-source="data" :show-column-lines="true" :show-row-lines="false" :show-borders="true"
:row-alternation-enabled="true" :hover-state-enabled="true" @selection-changed="onSelectionChanged"
:column-width="100" @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget">
<DxSelection mode="single" />
<DxPaging :page-size="20" :enabled="true" />
<DxPager
:visible="true"
:allowed-page-sizes="[20, 50, 100]"
display-mode="full"
:show-page-size-selector="true"
:show-info="true"
:show-navigation-buttons="true"
/>
<DxPager :visible="true" :allowed-page-sizes="[20, 50, 100]" display-mode="full" :show-page-size-selector="true"
:show-info="true" :show-navigation-buttons="true" />
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
<DxExport
:enabled="true"
:formats="['pdf', 'xlsx', 'document']"
:allow-export-selected-data="false"
/>
<DxColumn
css-class="custom-table-column"
:width="50"
alignment="center"
:calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1"
data-type="number"
caption="No"
cell-template="formatNumber"
/>
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
<DxColumn css-class="custom-table-column" :width="50" alignment="center"
:calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No"
cell-template="formatNumber" />
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="kode"
caption="Kode Material"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="nama_material"
caption="Nama Material"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="120"
alignment="center"
data-field="satuan"
caption="Satuan"
cell-template="formatText"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="sumber_material"
caption="Sumber Material"
cell-template="formatText"
/>
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="kode"
caption="Kode Material" cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="nama_material"
caption="Nama Material" cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="120" alignment="center" data-field="satuan" caption="Satuan"
cell-template="formatText" />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="sumber_material"
caption="Sumber Material" cell-template="formatText" />
<DxColumn css-class="custom-table-column" alignment="center" caption="Tanggal">
<DxColumn
v-for="i in 31"
:width="150"
alignment="center"
:data-field="`tgl${i}`"
data-type="number"
:caption="i"
css-class="custom-table-column"
cell-template="formatNumber"
/>
<DxColumn v-for="i in 31" :width="150" alignment="center" :data-field="`tgl${i}`" data-type="number"
:caption="i" css-class="custom-table-column" cell-template="formatNumber" />
</DxColumn>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="total"
caption="Jumlah"
cell-template="formatNumber"
/>
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="total" caption="Jumlah"
cell-template="formatNumber" />
<template #formatText="{ data }">
<p class="text-left">
@ -107,22 +41,18 @@
<template #formatNumber="{ data }">
<p class="text-right">
{{
isNumber(data.text)
? data.column.caption == '%'
? formatPercentage(data.text)
: formatNumber(data.text)
: data.text
}}
isNumber(data.text)
? data.column.caption == '%'
? formatPercentage(data.text)
: formatNumber(data.text)
: data.text
}}
</p>
</template>
</DxDataGrid>
</div>
<DetailDialog
:open="dialogDetail"
title="Detail Rekapitulasi Pemakaian Material"
@on-close="closeDialog"
>
<DetailDialog :open="dialogDetail" title="Detail Rekapitulasi Pemakaian Material" @on-close="closeDialog">
<div class="w-full p-4 space-y-2 bg-white rounded-xl">
<div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[170px] text-gray-800">Kode Material:</h3>
@ -180,7 +110,7 @@ import BufferDialog from '@/components/Dialogs/BufferDialog.vue'
import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers'
import DetailDialog from '@/components/Dialogs/DetailDialog.vue'
import InputText from '@/components/InputText.vue'
import { exportToPDF, exportToXLSX } from '@/report/Material/Rekapitulasi/Material_RPM'
import { exportToPDF, exportToXLSX, exportToDOCX } from '@/report/Material/Rekapitulasi/Material_RPM'
const position = { of: '#data' }
const showIndicator = ref(true)
@ -275,6 +205,7 @@ const onExporting = (e: any) => {
} else if (e.format === 'xlsx') {
exportToXLSX(reportMeta, e)
} else {
exportToDOCX(reportMeta, data)
}
}