DOCUMENT rekapitulasi
This commit is contained in:
		| @@ -60,476 +60,139 @@ | ||||
|       <DxColumn :width="70" alignment="center" data-field="persen_inproses" data-type="number" caption="%" | ||||
|         :allow-resizing="false" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       <DxColumn alignment="center" caption="Dispatching Time" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="avg_durasi_dispatch" | ||||
|           data-type="number" | ||||
|           caption="Rata-Rata" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatDPT" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :visible="false" | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="count_durasi_dispatch" | ||||
|           data-type="number" | ||||
|           caption="Jumlah Dispatch" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :visible="false" | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-type="number" | ||||
|           caption="Total Durasi Dispatch" | ||||
|           name="total_durasi_dispatch" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           :calculate-display-value=" | ||||
|             (rowData: any) => | ||||
|               parseFloat(rowData.count_durasi_dispatch) * parseFloat(rowData.avg_durasi_dispatch) | ||||
|           " | ||||
|           :calculate-cell-value=" | ||||
|             (rowData: any) => | ||||
|               parseFloat(rowData.count_durasi_dispatch) * parseFloat(rowData.avg_durasi_dispatch) | ||||
|           " | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="max_durasi_dispatch" | ||||
|           data-type="number" | ||||
|           caption="Max" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatTime" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="min_durasi_dispatch" | ||||
|           data-type="number" | ||||
|           caption="Min" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatTime" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="total_diatas_sla_dispatch" | ||||
|           data-type="number" | ||||
|           caption=">SLA" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="total_dibawah_sla_dispatch" | ||||
|           data-type="number" | ||||
|           caption="≤SLA" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="avg_durasi_dispatch" data-type="number" | ||||
|           caption="Rata-Rata" :allow-resizing="false" css-class="custom-table-column" cell-template="formatDPT" /> | ||||
|         <DxColumn :visible="false" :width="150" alignment="center" data-field="count_durasi_dispatch" data-type="number" | ||||
|           caption="Jumlah Dispatch" :allow-resizing="false" css-class="custom-table-column" | ||||
|           cell-template="formatNumber" /> | ||||
|         <DxColumn :visible="false" :width="150" alignment="center" data-type="number" caption="Total Durasi Dispatch" | ||||
|           name="total_durasi_dispatch" :allow-resizing="false" css-class="custom-table-column" :calculate-display-value="(rowData: any) => | ||||
|     parseFloat(rowData.count_durasi_dispatch) * parseFloat(rowData.avg_durasi_dispatch) | ||||
|     " :calculate-cell-value="(rowData: any) => | ||||
|     parseFloat(rowData.count_durasi_dispatch) * parseFloat(rowData.avg_durasi_dispatch) | ||||
|     " cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="max_durasi_dispatch" data-type="number" caption="Max" | ||||
|           :allow-resizing="false" css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="min_durasi_dispatch" data-type="number" caption="Min" | ||||
|           :allow-resizing="false" css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="total_diatas_sla_dispatch" data-type="number" | ||||
|           caption=">SLA" :allow-resizing="false" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="total_dibawah_sla_dispatch" data-type="number" | ||||
|           caption="≤SLA" :allow-resizing="false" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="Response Time" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="avg_durasi_response" | ||||
|           data-type="number" | ||||
|           caption="Rata-Rata" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatRPT" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :visible="false" | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="count_durasi_response" | ||||
|           data-type="number" | ||||
|           caption="Jumlah Response" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :visible="false" | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-type="number" | ||||
|           caption="Total Durasi Response" | ||||
|           name="total_durasi_response" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           :calculate-display-value=" | ||||
|             (rowData: any) => | ||||
|               parseFloat(rowData.count_durasi_response) * parseFloat(rowData.avg_durasi_response) | ||||
|           " | ||||
|           :calculate-cell-value=" | ||||
|             (rowData: any) => | ||||
|               parseFloat(rowData.count_durasi_response) * parseFloat(rowData.avg_durasi_response) | ||||
|           " | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="max_durasi_response" | ||||
|           data-type="number" | ||||
|           caption="Max" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatTime" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="min_durasi_response" | ||||
|           data-type="number" | ||||
|           caption="Min" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatTime" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="total_diatas_sla_response" | ||||
|           data-type="number" | ||||
|           caption=">SLA" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="total_dibawah_sla_response" | ||||
|           data-type="number" | ||||
|           caption="≤SLA" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="avg_durasi_response" data-type="number" | ||||
|           caption="Rata-Rata" :allow-resizing="false" css-class="custom-table-column" cell-template="formatRPT" /> | ||||
|         <DxColumn :visible="false" :width="150" alignment="center" data-field="count_durasi_response" data-type="number" | ||||
|           caption="Jumlah Response" :allow-resizing="false" css-class="custom-table-column" | ||||
|           cell-template="formatNumber" /> | ||||
|         <DxColumn :visible="false" :width="150" alignment="center" data-type="number" caption="Total Durasi Response" | ||||
|           name="total_durasi_response" :allow-resizing="false" css-class="custom-table-column" :calculate-display-value="(rowData: any) => | ||||
|     parseFloat(rowData.count_durasi_response) * parseFloat(rowData.avg_durasi_response) | ||||
|     " :calculate-cell-value="(rowData: any) => | ||||
|     parseFloat(rowData.count_durasi_response) * parseFloat(rowData.avg_durasi_response) | ||||
|     " cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="max_durasi_response" data-type="number" caption="Max" | ||||
|           :allow-resizing="false" css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="min_durasi_response" data-type="number" caption="Min" | ||||
|           :allow-resizing="false" css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="total_diatas_sla_response" data-type="number" | ||||
|           caption=">SLA" :allow-resizing="false" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="total_dibawah_sla_response" data-type="number" | ||||
|           caption="≤SLA" :allow-resizing="false" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="Recovery Time" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="avg_durasi_recovery" | ||||
|           data-type="number" | ||||
|           caption="Rata-Rata" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatRCT" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :visible="false" | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="count_durasi_recovery" | ||||
|           data-type="number" | ||||
|           caption="Jumlah Recovery" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :visible="false" | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-type="number" | ||||
|           caption="Total Durasi Recovery" | ||||
|           name="total_durasi_recovery" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           :calculate-display-value=" | ||||
|             (rowData: any) => | ||||
|               parseFloat(rowData.count_durasi_recovery) * parseFloat(rowData.avg_durasi_recovery) | ||||
|           " | ||||
|           :calculate-cell-value=" | ||||
|             (rowData: any) => | ||||
|               parseFloat(rowData.count_durasi_recovery) * parseFloat(rowData.avg_durasi_recovery) | ||||
|           " | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="max_durasi_recovery" | ||||
|           data-type="number" | ||||
|           caption="Max" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatTime" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="min_durasi_recovery" | ||||
|           data-type="number" | ||||
|           caption="Min" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatTime" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="total_diatas_sla_recovery" | ||||
|           data-type="number" | ||||
|           caption=">SLA" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="total_dibawah_sla_recovery" | ||||
|           data-type="number" | ||||
|           caption="≤SLA" | ||||
|           :allow-resizing="false" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery" data-type="number" | ||||
|           caption="Rata-Rata" :allow-resizing="false" css-class="custom-table-column" cell-template="formatRCT" /> | ||||
|         <DxColumn :visible="false" :width="150" alignment="center" data-field="count_durasi_recovery" data-type="number" | ||||
|           caption="Jumlah Recovery" :allow-resizing="false" css-class="custom-table-column" | ||||
|           cell-template="formatNumber" /> | ||||
|         <DxColumn :visible="false" :width="150" alignment="center" data-type="number" caption="Total Durasi Recovery" | ||||
|           name="total_durasi_recovery" :allow-resizing="false" css-class="custom-table-column" :calculate-display-value="(rowData: any) => | ||||
|     parseFloat(rowData.count_durasi_recovery) * parseFloat(rowData.avg_durasi_recovery) | ||||
|     " :calculate-cell-value="(rowData: any) => | ||||
|     parseFloat(rowData.count_durasi_recovery) * parseFloat(rowData.avg_durasi_recovery) | ||||
|     " cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="max_durasi_recovery" data-type="number" caption="Max" | ||||
|           :allow-resizing="false" css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="min_durasi_recovery" data-type="number" caption="Min" | ||||
|           :allow-resizing="false" css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="total_diatas_sla_recovery" data-type="number" | ||||
|           caption=">SLA" :allow-resizing="false" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="total_dibawah_sla_recovery" data-type="number" | ||||
|           caption="≤SLA" :allow-resizing="false" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       </DxColumn> | ||||
|  | ||||
|       <DxSummary :calculate-custom-summary="calculateCustomSummary"> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total" | ||||
|           name="total" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_selesai" | ||||
|           name="total_selesai" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="persen_selesai" | ||||
|           name="persen_selesai" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatPercentage(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_inproses" | ||||
|           name="total_inproses" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="persen_inproses" | ||||
|           name="persen_inproses" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatPercentage(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="avg_durasi_dispatch" | ||||
|           name="avg_durasi_dispatch" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_durasi_dispatch" | ||||
|           name="total_durasi_dispatch" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="count_durasi_dispatch" | ||||
|           name="count_durasi_dispatch" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total" name="total" | ||||
|           summary-type="custom" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_selesai" name="total_selesai" | ||||
|           summary-type="custom" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="persen_selesai" name="persen_selesai" | ||||
|           summary-type="custom" css-class="!text-right" :customize-text="(e: any) => formatPercentage(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_inproses" name="total_inproses" | ||||
|           summary-type="custom" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="persen_inproses" | ||||
|           name="persen_inproses" summary-type="custom" css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatPercentage(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="avg_durasi_dispatch" | ||||
|           name="avg_durasi_dispatch" summary-type="custom" css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_durasi_dispatch" | ||||
|           name="total_durasi_dispatch" summary-type="custom" css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="count_durasi_dispatch" | ||||
|           name="count_durasi_dispatch" summary-type="custom" css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|  | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="max_durasi_dispatch" | ||||
|           summary-type="max" | ||||
|           css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="min_durasi_dispatch" | ||||
|           summary-type="min" | ||||
|           css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_diatas_sla_dispatch" | ||||
|           summary-type="sum" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_dibawah_sla_dispatch" | ||||
|           summary-type="sum" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="avg_durasi_response" | ||||
|           name="avg_durasi_response" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_durasi_response" | ||||
|           name="total_durasi_response" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="count_durasi_response" | ||||
|           name="count_durasi_response" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="max_durasi_response" | ||||
|           summary-type="max" | ||||
|           css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="min_durasi_response" | ||||
|           summary-type="min" | ||||
|           css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_diatas_sla_response" | ||||
|           summary-type="sum" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_dibawah_sla_response" | ||||
|           summary-type="sum" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="avg_durasi_recovery" | ||||
|           name="avg_durasi_recovery" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_durasi_recovery" | ||||
|           name="total_durasi_recovery" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="count_durasi_recovery" | ||||
|           name="count_durasi_recovery" | ||||
|           summary-type="custom" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="max_durasi_recovery" | ||||
|           summary-type="max" | ||||
|           css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="min_durasi_recovery" | ||||
|           summary-type="min" | ||||
|           css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_diatas_sla_recovery" | ||||
|           summary-type="sum" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_dibawah_sla_recovery" | ||||
|           summary-type="sum" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="max_durasi_dispatch" | ||||
|           summary-type="max" css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="min_durasi_dispatch" | ||||
|           summary-type="min" css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_diatas_sla_dispatch" | ||||
|           summary-type="sum" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_dibawah_sla_dispatch" | ||||
|           summary-type="sum" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="avg_durasi_response" | ||||
|           name="avg_durasi_response" summary-type="custom" css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_durasi_response" | ||||
|           name="total_durasi_response" summary-type="custom" css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="count_durasi_response" | ||||
|           name="count_durasi_response" summary-type="custom" css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="max_durasi_response" | ||||
|           summary-type="max" css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="min_durasi_response" | ||||
|           summary-type="min" css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_diatas_sla_response" | ||||
|           summary-type="sum" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_dibawah_sla_response" | ||||
|           summary-type="sum" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="avg_durasi_recovery" | ||||
|           name="avg_durasi_recovery" summary-type="custom" css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_durasi_recovery" | ||||
|           name="total_durasi_recovery" summary-type="custom" css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="count_durasi_recovery" | ||||
|           name="count_durasi_recovery" summary-type="custom" css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="max_durasi_recovery" | ||||
|           summary-type="max" css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="min_durasi_recovery" | ||||
|           summary-type="min" css-class="!text-center" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_diatas_sla_recovery" | ||||
|           summary-type="sum" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_dibawah_sla_recovery" | ||||
|           summary-type="sum" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|       </DxSummary> | ||||
|  | ||||
|       <template #formatText="{ data }"> | ||||
| @@ -606,14 +269,8 @@ | ||||
|           @exporting="onExportingDetail" :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" /> | ||||
| @@ -859,7 +516,9 @@ import { | ||||
|   exportToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToPDF, | ||||
|   exportDetailToXLSX | ||||
|   exportDetailToXLSX, | ||||
|   exportToDOCX, | ||||
|   exportDetailToDOCX | ||||
| } from '@/report/Gangguan/Rekap/RGangguan_ALL' | ||||
| import { getDataRowGroup } from '@/utils/helper' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
| @@ -1246,11 +905,13 @@ const showDetail = () => { | ||||
| } | ||||
|  | ||||
| const onExporting = (e: any) => { | ||||
|  | ||||
|   if (e.format === 'pdf') { | ||||
|     exportToPDF(reportMeta.value, data.value) | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -1260,6 +921,7 @@ const onExportingDetail = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportDetailToDOCX(reportMeta.value, dataSub.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,31 +1,14 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     @reset-form="data = []" | ||||
|     :report-button="true" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters @reset-form="data = []" :report-button="true" @run-search="() => filterData(filters)" | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" class="mb-4"> | ||||
|     <Type1 @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="onDataSelectionChanged" | ||||
|       @exporting="onExporting" | ||||
|       :allow-column-resizing="true" | ||||
|       column-resizing-mode="widget" | ||||
|       :word-wrap-enabled="true" | ||||
|     > | ||||
|     <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="onDataSelectionChanged" | ||||
|       @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true"> | ||||
|       <DxGrouping expand-mode="rowClick" /> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
| @@ -33,87 +16,30 @@ | ||||
|       <!--  --> | ||||
|  | ||||
|       <DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> | ||||
|       <DxExport | ||||
|         :enabled="true" | ||||
|         :formats="['pdf', 'xlsx', 'document']" | ||||
|         :allow-export-selected-data="false" | ||||
|       /> | ||||
|       <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> | ||||
|       <DxColumnFixing :enabled="true" /> | ||||
|  | ||||
|       <DxColumn | ||||
|         css-class="custom-table-column" | ||||
|         :width="50" | ||||
|         alignment="center" | ||||
|         data-field="number" | ||||
|         caption="No" | ||||
|         cell-template="formatNumber" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="180" | ||||
|         data-field="nama_up3" | ||||
|         caption="Nama UP3" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="180" | ||||
|         data-field="nama_uid" | ||||
|         caption="Nama UID" | ||||
|         css-class="custom-table-column" | ||||
|         :group-index="0" | ||||
|       /> | ||||
|       <DxColumn css-class="custom-table-column" :width="50" alignment="center" data-field="number" caption="No" | ||||
|         cell-template="formatNumber" /> | ||||
|       <DxColumn alignment="center" :min-width="180" data-field="nama_up3" caption="Nama UP3" | ||||
|         css-class="custom-table-column" cell-template="formatText" /> | ||||
|       <DxColumn alignment="center" :min-width="180" data-field="nama_uid" caption="Nama UID" | ||||
|         css-class="custom-table-column" :group-index="0" /> | ||||
|  | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="180" | ||||
|         data-field="nama_posko" | ||||
|         caption="Nama Posko" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :width="180" | ||||
|         alignment="center" | ||||
|         data-field="posko_in" | ||||
|         caption="Posko IN" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatNumberPoskoIn" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :width="180" | ||||
|         alignment="center" | ||||
|         data-field="posko_out" | ||||
|         caption="Posko OUT" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatNumberPoskoOut" | ||||
|       /> | ||||
|       <DxColumn alignment="center" :min-width="180" data-field="nama_posko" caption="Nama Posko" | ||||
|         css-class="custom-table-column" cell-template="formatText" /> | ||||
|       <DxColumn :width="180" alignment="center" data-field="posko_in" caption="Posko IN" css-class="custom-table-column" | ||||
|         cell-template="formatNumberPoskoIn" /> | ||||
|       <DxColumn :width="180" alignment="center" data-field="posko_out" caption="Posko OUT" | ||||
|         css-class="custom-table-column" cell-template="formatNumberPoskoOut" /> | ||||
|  | ||||
|       <DxSummary> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="number" | ||||
|           display-format="Total" | ||||
|           css-class="!text-left" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="posko_in" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="posko_out" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="number" display-format="Total" css-class="!text-left" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="posko_in" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="posko_out" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|       </DxSummary> | ||||
|  | ||||
|       <template #formatText="{ data }"> | ||||
| @@ -125,227 +51,94 @@ | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setPoskoSelected('')"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
|       <template #formatNumberPoskoIn="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setPoskoSelected('in')"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
|       <template #formatNumberPoskoOut="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setPoskoSelected('out')"> | ||||
|           {{ | ||||
|             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 Gangguan Alih Posko" | ||||
|     @on-close="closeDialog" | ||||
|     :full-width="true" | ||||
|   > | ||||
|   <DetailDialog :open="dialogDetail" title="Detail Rekapitulasi Gangguan Alih Posko" @on-close="closeDialog" | ||||
|     :full-width="true"> | ||||
|     <div class="w-full mb-4 lg:w-[70%] lg:float-left"> | ||||
|       <div class="p-4 bg-white rounded-xl lg:mr-4"> | ||||
|         <DxDataGrid | ||||
|           :allow-column-reordering="true" | ||||
|           class="max-h-[calc(100vh-140px)]" | ||||
|           :data-source="dataSub" | ||||
|           :show-column-lines="true" | ||||
|           :show-row-lines="false" | ||||
|           :show-borders="true" | ||||
|           :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" | ||||
|           @selection-changed="onDataSubSelectionChanged" | ||||
|           :column-width="100" | ||||
|           @exporting="onExportingDetail" | ||||
|           :allow-column-resizing="true" | ||||
|           column-resizing-mode="widget" | ||||
|         > | ||||
|         <DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub" | ||||
|           :show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100" | ||||
|           @exporting="onExportingDetail" :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" | ||||
|           /> | ||||
|           <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) => dataSub.findIndex((i) => i == item) + 1" | ||||
|             data-type="number" | ||||
|             caption="No" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_laporan" | ||||
|             caption="No Laporan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_lapor" | ||||
|             caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_response" | ||||
|             caption="Tgl Datang" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_recovery" | ||||
|             caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_response_time" | ||||
|             caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_recovery_time" | ||||
|             caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="status_akhir" | ||||
|             caption="Status" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="idpel_nometer" | ||||
|             caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_pelapor" | ||||
|             caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="alamat_pelapor" | ||||
|             caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_telp_pelapor" | ||||
|             caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="200" | ||||
|             alignment="center" | ||||
|             data-field="keterangan_pelapor" | ||||
|             caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_posko" | ||||
|             caption="Posko" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="media" | ||||
|             caption="Sumber Lapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="Nama Petugas" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="Posko Asal" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="Posko Tujuan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn css-class="custom-table-column" :width="50" alignment="center" | ||||
|             :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" | ||||
|             caption="No" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_laporan" caption="No Laporan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_response" caption="Tgl Datang" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_recovery" caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_response_time" caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="status_akhir" caption="Status" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="idpel_nometer" caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_pelapor" caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="alamat_pelapor" caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_telp_pelapor" caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="200" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="media" caption="Sumber Lapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="Nama Petugas" css-class="custom-table-column" | ||||
|             cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="Posko Asal" css-class="custom-table-column" | ||||
|             cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="Posko Tujuan" css-class="custom-table-column" | ||||
|             cell-template="formatText" /> | ||||
|  | ||||
|           <template #formatText="{ data }"> | ||||
|             <p class="text-left cursor-pointer"> | ||||
| @@ -381,46 +174,28 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Datang:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_response" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_response" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_recovery" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_recovery" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Response Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_response_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_response_time) | ||||
|     ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|     : '-' | ||||
|     " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Recovery Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|     ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|     : '-' | ||||
|     " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -440,29 +215,17 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Alamat Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.alamat_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.alamat_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">No Telp Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.no_telp_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.no_telp_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.keterangan_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.keterangan_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -526,7 +289,9 @@ import { | ||||
|   exportToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToXLSX, | ||||
|   exportDetailToPDF | ||||
|   exportDetailToPDF, | ||||
|   exportToDOCX, | ||||
|   exportDetailToDOCX | ||||
| } from '@/report/Gangguan/Rekap/RGangguan_AlihPosko' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
|  | ||||
| @@ -613,6 +378,7 @@ const onExporting = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -622,6 +388,7 @@ const onExportingDetail = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportDetailToDOCX(reportMeta.value, dataSub.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,84 +1,35 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     @reset-form="data = []" | ||||
|     :report-button="true" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters @reset-form="data = []" :report-button="true" @run-search="() => filterData(filters)" | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" class="mb-4"> | ||||
|     <Type1 @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="onDataSelectionChanged" | ||||
|       :column-width="100" | ||||
|       @exporting="onExporting" | ||||
|       :allow-column-resizing="true" | ||||
|       column-resizing-mode="widget" | ||||
|       :word-wrap-enabled="true" | ||||
|     > | ||||
|     <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="onDataSelectionChanged" | ||||
|       :column-width="100" @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" | ||||
|       :word-wrap-enabled="true"> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <!--  --> | ||||
|  | ||||
|       <DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> | ||||
|       <DxExport | ||||
|         :enabled="true" | ||||
|         :formats="['pdf', 'xlsx', 'document']" | ||||
|         :allow-export-selected-data="false" | ||||
|       /> | ||||
|       <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> | ||||
|       <DxColumnFixing :enabled="true" /> | ||||
|  | ||||
|       <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" | ||||
|         data-field="no" | ||||
|         cell-template="formatNumber" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :width="170" | ||||
|         data-field="media" | ||||
|         caption="Nama Media" | ||||
|         alignment="center" | ||||
|         cell-template="formatText" | ||||
|         css-class="custom-table-column" | ||||
|         header-cell-template="title-header" | ||||
|       /> | ||||
|       <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" | ||||
|         data-field="no" cell-template="formatNumber" /> | ||||
|       <DxColumn :width="170" data-field="media" caption="Nama Media" alignment="center" cell-template="formatText" | ||||
|         css-class="custom-table-column" header-cell-template="title-header" /> | ||||
|       <DxColumn alignment="center" caption="Tanggal" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           v-for="i in 31" | ||||
|           :width="100" | ||||
|           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="100" alignment="center" :data-field="`tgl${i}`" data-type="number" | ||||
|           :caption="i" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn | ||||
|         :width="170" | ||||
|         alignment="center" | ||||
|         data-field="total" | ||||
|         caption="Total" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatNumber" | ||||
|       /> | ||||
|       <DxColumn :width="170" alignment="center" data-field="total" caption="Total" css-class="custom-table-column" | ||||
|         cell-template="formatNumber" /> | ||||
|  | ||||
|       <template #formatText="{ data }"> | ||||
|         <p class="text-left cursor-pointer" @click="setDate(data.column.caption)"> | ||||
| @@ -89,12 +40,12 @@ | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setDate(data.column.caption)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
| @@ -105,208 +56,66 @@ | ||||
|       </template> | ||||
|  | ||||
|       <DxSummary> | ||||
|         <DxTotalItem | ||||
|           display-format="Total" | ||||
|           show-in-column="media" | ||||
|           css-class="text-white !text-l eft" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           v-for="i in 31" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :column="`tgl${i}`" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem display-format="Total" show-in-column="media" css-class="text-white !text-l eft" /> | ||||
|         <DxTotalItem v-for="i in 31" summary-type="sum" display-format="{0}" :column="`tgl${i}`" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|       </DxSummary> | ||||
|     </DxDataGrid> | ||||
|   </div> | ||||
|  | ||||
|   <DetailDialog | ||||
|     :open="dialogDetail" | ||||
|     title="Detail Rekapitulasi Gangguan Berdasarkan Media" | ||||
|     @on-close="closeDialog" | ||||
|     :full-width="true" | ||||
|   > | ||||
|   <DetailDialog :open="dialogDetail" title="Detail Rekapitulasi Gangguan Berdasarkan Media" @on-close="closeDialog" | ||||
|     :full-width="true"> | ||||
|     <div class="w-full mb-4 lg:w-[70%] lg:float-left"> | ||||
|       <div class="p-4 bg-white rounded-xl lg:mr-4"> | ||||
|         <DxDataGrid | ||||
|           :allow-column-reordering="true" | ||||
|           class="max-h-[calc(100vh-140px)]" | ||||
|           :data-source="dataSub" | ||||
|           :show-column-lines="true" | ||||
|           :show-row-lines="false" | ||||
|           :show-borders="true" | ||||
|           :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" | ||||
|           @selection-changed="onDataSubSelectionChanged" | ||||
|           :column-width="100" | ||||
|           @exporting="onExportingDetail" | ||||
|           :allow-column-resizing="true" | ||||
|           column-resizing-mode="widget" | ||||
|         > | ||||
|         <DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub" | ||||
|           :show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100" | ||||
|           @exporting="onExportingDetail" :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" | ||||
|           /> | ||||
|           <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) => dataSub.findIndex((i) => i == item) + 1" | ||||
|             data-type="number" | ||||
|             caption="No" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_laporan" | ||||
|             caption="No Laporan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_lapor" | ||||
|             caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_response" | ||||
|             caption="Tgl Datang" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_recovery" | ||||
|             caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_response_time" | ||||
|             caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_recovery_time" | ||||
|             caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="status_akhir" | ||||
|             caption="Status" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="referensi_marking" | ||||
|             caption="Referensi Marking" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="idpel_nometer" | ||||
|             caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_pelapor" | ||||
|             caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="alamat_pelapor" | ||||
|             caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_telp_pelapor" | ||||
|             caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="200" | ||||
|             alignment="center" | ||||
|             data-field="keterangan_pelapor" | ||||
|             caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_posko" | ||||
|             caption="Posko" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="tindakan" | ||||
|             caption="Tidakan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="penyebab" | ||||
|             caption="Penyebab" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn css-class="custom-table-column" :width="50" alignment="center" | ||||
|             :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" | ||||
|             caption="No" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_laporan" caption="No Laporan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_response" caption="Tgl Datang" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_recovery" caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_response_time" caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="status_akhir" caption="Status" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="referensi_marking" caption="Referensi Marking" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="idpel_nometer" caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_pelapor" caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="alamat_pelapor" caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_telp_pelapor" caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="200" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="tindakan" caption="Tidakan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="penyebab" caption="Penyebab" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|  | ||||
|           <template #formatText="{ data }"> | ||||
|             <p class="text-left cursor-pointer"> | ||||
| @@ -342,46 +151,28 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Datang:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_response" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_response" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_recovery" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_recovery" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Response Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_response_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_response_time) | ||||
|       ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|       : '-' | ||||
|     " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Recovery Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|       ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|       : '-' | ||||
|     " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -391,11 +182,7 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Referensi Marking:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.referensi_marking" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.referensi_marking" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -410,29 +197,17 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Alamat Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.alamat_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.alamat_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">No Telp Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.no_telp_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.no_telp_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.keterangan_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.keterangan_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -485,7 +260,9 @@ import { | ||||
|   exportToPDF, | ||||
|   exportDetailToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToXLSX | ||||
|   exportDetailToXLSX, | ||||
|   exportToDOCX, | ||||
|   exportDetailToDOCX | ||||
| } from '@/report/Gangguan/Rekap/RGangguan_BerdasarMedia' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
|  | ||||
| @@ -576,6 +353,7 @@ const onExporting = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -585,6 +363,7 @@ const onExportingDetail = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportDetailToDOCX(reportMeta.value, dataSub.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,149 +1,50 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     :report-button="true" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters @run-report="() => exportToPDF(reportMeta, data, true)" @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" :report-button="true" class="mb-4"> | ||||
|     <Type1 @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="onDataSelectionChanged" | ||||
|       @exporting="onExporting" | ||||
|       :allow-column-resizing="true" | ||||
|       column-resizing-mode="widget" | ||||
|       :word-wrap-enabled="true" | ||||
|     > | ||||
|     <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="onDataSelectionChanged" | ||||
|       @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true"> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <!--  --> | ||||
|  | ||||
|       <DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> | ||||
|       <DxExport | ||||
|         :enabled="true" | ||||
|         :formats="['pdf', 'xlsx', 'document']" | ||||
|         :allow-export-selected-data="false" | ||||
|       /> | ||||
|       <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> | ||||
|       <DxColumnFixing :enabled="true" /> | ||||
|  | ||||
|       <DxColumn | ||||
|         width="200" | ||||
|         alignment="center" | ||||
|         data-field="nama_ulp" | ||||
|         caption="Nama Unit" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn width="200" alignment="center" data-field="nama_ulp" caption="Nama Unit" css-class="custom-table-column" | ||||
|         cell-template="formatText" /> | ||||
|       <DxColumn alignment="center" caption="Bulan" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month1" | ||||
|           data-type="number" | ||||
|           caption="Januari" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month2" | ||||
|           data-type="number" | ||||
|           caption="Februari" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month3" | ||||
|           data-type="number" | ||||
|           caption="Maret" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month4" | ||||
|           data-type="number" | ||||
|           caption="April" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month5" | ||||
|           data-type="number" | ||||
|           caption="Mei" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month6" | ||||
|           data-type="number" | ||||
|           caption="Juni" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month7" | ||||
|           data-type="number" | ||||
|           caption="Juli" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month8" | ||||
|           data-type="number" | ||||
|           caption="Agustus" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month9" | ||||
|           data-type="number" | ||||
|           caption="September" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month10" | ||||
|           data-type="number" | ||||
|           caption="Oktober" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month11" | ||||
|           data-type="number" | ||||
|           caption="November" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="month12" | ||||
|           data-type="number" | ||||
|           caption="Desember" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn alignment="center" data-field="month1" data-type="number" caption="Januari" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" data-field="month2" data-type="number" caption="Februari" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" data-field="month3" data-type="number" caption="Maret" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" data-field="month4" data-type="number" caption="April" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" data-field="month5" data-type="number" caption="Mei" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" data-field="month6" data-type="number" caption="Juni" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" data-field="month7" data-type="number" caption="Juli" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" data-field="month8" data-type="number" caption="Agustus" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" data-field="month9" data-type="number" caption="September" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" data-field="month10" data-type="number" caption="Oktober" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" data-field="month11" data-type="number" caption="November" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" data-field="month12" data-type="number" caption="Desember" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       </DxColumn> | ||||
|  | ||||
|       <template #formatText="{ data }"> | ||||
| @@ -155,153 +56,56 @@ | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setMonth(data.column.caption)"> | ||||
|           {{ | ||||
|             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="Data Detail Cleansing Transaksi TM" | ||||
|     @on-close="closedialogDetail" | ||||
|     :full-width="true" | ||||
|   > | ||||
|   <DetailDialog :open="dialogDetail" title="Data Detail Cleansing Transaksi TM" @on-close="closedialogDetail" | ||||
|     :full-width="true"> | ||||
|     <div class="w-full mb-4 lg:w-[70%] lg:float-left"> | ||||
|       <div class="p-4 bg-white rounded-xl lg:mr-4"> | ||||
|         <DxDataGrid | ||||
|           :allow-column-reordering="true" | ||||
|           class="max-h-[calc(100vh-140px)]" | ||||
|           :data-source="dataSub" | ||||
|           :show-column-lines="true" | ||||
|           :show-row-lines="false" | ||||
|           :show-borders="true" | ||||
|           :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" | ||||
|           @selection-changed="onDataSubSelectionChanged" | ||||
|           :column-width="100" | ||||
|           @exporting="onExportingDetail" | ||||
|           :allow-column-resizing="true" | ||||
|           column-resizing-mode="widget" | ||||
|         > | ||||
|         <DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub" | ||||
|           :show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100" | ||||
|           @exporting="onExportingDetail" :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" | ||||
|           /> | ||||
|           <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) => dataSub.findIndex((i) => i == item) + 1" | ||||
|             data-type="number" | ||||
|             caption="No" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_laporan" | ||||
|             caption="No Laporan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="tgl_catat" | ||||
|             caption="Tgl Catat" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="tgl_pekerjaan" | ||||
|             caption="Tgl Pekerjaan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="tgl_nyala" | ||||
|             caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_pencatatan" | ||||
|             caption="Durasi Pencatatan" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_recovery_time" | ||||
|             caption="Durasi Recovery Time" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="keterangan_cleansing" | ||||
|             caption="Keterangan Cleansing" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_posko" | ||||
|             caption="Posko" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="tindakan" | ||||
|             caption="Tindakan" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="penyebab" | ||||
|             caption="Penyebab" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn css-class="custom-table-column" :width="50" alignment="center" | ||||
|             :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" | ||||
|             caption="No" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_laporan" caption="No Laporan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="tgl_catat" caption="Tgl Catat" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="tgl_pekerjaan" caption="Tgl Pekerjaan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="tgl_nyala" caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_pencatatan" caption="Durasi Pencatatan" | ||||
|             :allow-resizing="false" css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time" | ||||
|             :allow-resizing="false" css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="keterangan_cleansing" caption="Keterangan Cleansing" | ||||
|             :allow-resizing="false" css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="tindakan" caption="Tindakan" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="penyebab" caption="Penyebab" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|  | ||||
|           <template #formatText="{ data }"> | ||||
|             <p class="text-left cursor-pointer"> | ||||
| @@ -348,37 +152,23 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Pencatatan:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_pencatatan) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_pencatatan) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_pencatatan) | ||||
|         ? formatWaktu(dataSubSelected?.durasi_pencatatan) | ||||
|         : '-' | ||||
|       " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Recovery Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|         ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|         : '-' | ||||
|       " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan CLeansing:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.keterangan_cleansing" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.keterangan_cleansing" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -429,7 +219,9 @@ import { | ||||
|   exportToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToPDF, | ||||
|   exportDetailToXLSX | ||||
|   exportDetailToXLSX, | ||||
|   exportToDOCX, | ||||
|   exportDetailToDOCX | ||||
| } from '@/report/Gangguan/Rekap/RGangguan_CTTM' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
|  | ||||
| @@ -567,6 +359,7 @@ const onExporting = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -576,6 +369,7 @@ const onExportingDetail = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportDetailToDOCX(reportMeta.value, dataSub.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,135 +1,60 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     @reset-form="data = []" | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     :report-button="true" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters @reset-form="data = []" @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     @run-search="() => filterData(filters)" :report-button="true" class="mb-4"> | ||||
|     <Type1 @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="onDataSelectionChanged" | ||||
|       @exporting="onExporting" | ||||
|       :allow-column-resizing="true" | ||||
|       column-resizing-mode="widget" | ||||
|       :word-wrap-enabled="true" | ||||
|     > | ||||
|     <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="onDataSelectionChanged" | ||||
|       @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true"> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <!--  --> | ||||
|  | ||||
|       <DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> | ||||
|       <DxExport | ||||
|         :enabled="true" | ||||
|         :formats="['pdf', 'xlsx', 'document']" | ||||
|         :allow-export-selected-data="false" | ||||
|       /> | ||||
|       <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> | ||||
|       <DxColumnFixing :enabled="true" /> | ||||
|  | ||||
|       <DxColumn | ||||
|         :width="50" | ||||
|         alignment="center" | ||||
|         caption="NO" | ||||
|         css-class="custom-table-column" | ||||
|         rowspan="4" | ||||
|         colspan="2" | ||||
|       > | ||||
|         <DxColumn | ||||
|           :width="50" | ||||
|           alignment="center" | ||||
|           :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" | ||||
|           caption="a" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|       <DxColumn :width="50" alignment="center" caption="NO" css-class="custom-table-column" rowspan="4" colspan="2"> | ||||
|         <DxColumn :width="50" alignment="center" | ||||
|           :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" caption="a" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn :width="150" alignment="center" caption="Nama Regu" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="nama_regu" | ||||
|           caption="b" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatText" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="nama_regu" caption="b" css-class="custom-table-column" | ||||
|           cell-template="formatText" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn :width="150" alignment="center" caption="Kode Regu" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="kode_regu" | ||||
|           caption="c" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatText" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="kode_regu" caption="c" css-class="custom-table-column" | ||||
|           cell-template="formatText" /> | ||||
|       </DxColumn> | ||||
|  | ||||
|       <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" caption="Total" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="total" | ||||
|             caption="d=(e+g)" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="total" caption="d=(e+g)" css-class="custom-table-column" | ||||
|             cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Sudah Selesai" css-class="custom-table-column"> | ||||
|           <DxColumn alignment="center" caption="Jml" css-class="custom-table-column"> | ||||
|             <DxColumn | ||||
|               :width="150" | ||||
|               alignment="center" | ||||
|               data-field="total_selesai" | ||||
|               caption="e" | ||||
|               css-class="custom-table-column" | ||||
|               cell-template="formatNumber" | ||||
|             /> | ||||
|             <DxColumn :width="150" alignment="center" data-field="total_selesai" caption="e" | ||||
|               css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           </DxColumn> | ||||
|           <DxColumn alignment="center" caption="%" css-class="custom-table-column"> | ||||
|             <DxColumn | ||||
|               :width="150" | ||||
|               alignment="center" | ||||
|               data-field="persen_selesai" | ||||
|               caption="f=(e/d)*100" | ||||
|               css-class="custom-table-column" | ||||
|               cell-template="formatPercentage" | ||||
|             /> | ||||
|             <DxColumn :width="150" alignment="center" data-field="persen_selesai" caption="f=(e/d)*100" | ||||
|               css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|           </DxColumn> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column"> | ||||
|           <DxColumn alignment="center" caption="Jml" css-class="custom-table-column"> | ||||
|             <DxColumn | ||||
|               :width="150" | ||||
|               alignment="center" | ||||
|               data-field="total_inproses" | ||||
|               caption="g" | ||||
|               css-class="custom-table-column" | ||||
|               cell-template="formatNumber" | ||||
|             /> | ||||
|             <DxColumn :width="150" alignment="center" data-field="total_inproses" caption="g" | ||||
|               css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           </DxColumn> | ||||
|           <DxColumn alignment="center" caption="%" css-class="custom-table-column"> | ||||
|             <DxColumn | ||||
|               :width="150" | ||||
|               alignment="center" | ||||
|               data-field="persen_inproses" | ||||
|               caption="h=(g/d)*100" | ||||
|               css-class="custom-table-column" | ||||
|               cell-template="formatPercentage" | ||||
|             /> | ||||
|             <DxColumn :width="150" alignment="center" data-field="persen_inproses" caption="h=(g/d)*100" | ||||
|               css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|           </DxColumn> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
| @@ -139,47 +64,23 @@ | ||||
|           <DxColumn alignment="center" caption="Non Marking" css-class="custom-table-column"> | ||||
|             <DxColumn alignment="center" caption="Total" css-class="custom-table-column"> | ||||
|               <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="total_mobile_nonmarking" | ||||
|                   caption="i" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="total_mobile_nonmarking" caption="i" | ||||
|                   css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|               <DxColumn alignment="center" caption="%" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="" | ||||
|                   caption="j=(i/d)*100" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatPercentage" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="" caption="j=(i/d)*100" | ||||
|                   css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|               </DxColumn> | ||||
|             </DxColumn> | ||||
|  | ||||
|             <DxColumn alignment="center" caption="Waktu Rata-Rata" css-class="custom-table-column"> | ||||
|               <DxColumn alignment="center" caption="Response" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="avg_durasi_response_time_mobile_nonmarking" | ||||
|                   caption="k" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="avg_durasi_response_time_mobile_nonmarking" | ||||
|                   caption="k" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|               <DxColumn alignment="center" caption="Recovery" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="avg_durasi_recovery_time_mobile_nonmarking" | ||||
|                   caption="l" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_time_mobile_nonmarking" | ||||
|                   caption="l" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|             </DxColumn> | ||||
|           </DxColumn> | ||||
| @@ -187,47 +88,23 @@ | ||||
|           <DxColumn alignment="center" caption="Marking" css-class="custom-table-column"> | ||||
|             <DxColumn alignment="center" caption="Total" css-class="custom-table-column"> | ||||
|               <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="total_mobile_marking" | ||||
|                   caption="m" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="total_mobile_marking" caption="m" | ||||
|                   css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|               <DxColumn alignment="center" caption="%" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="" | ||||
|                   caption="n=(m/d)*100" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatPercentage" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="" caption="n=(m/d)*100" | ||||
|                   css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|               </DxColumn> | ||||
|             </DxColumn> | ||||
|  | ||||
|             <DxColumn alignment="center" caption="Waktu Rata-Rata" css-class="custom-table-column"> | ||||
|               <DxColumn alignment="center" caption="Response" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="avg_durasi_response_time_mobile_marking" | ||||
|                   caption="o" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="avg_durasi_response_time_mobile_marking" | ||||
|                   caption="o" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|               <DxColumn alignment="center" caption="Recovery" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="avg_durasi_recovery_time_mobile_marking" | ||||
|                   caption="p" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_time_mobile_marking" | ||||
|                   caption="p" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|             </DxColumn> | ||||
|           </DxColumn> | ||||
| @@ -237,47 +114,23 @@ | ||||
|           <DxColumn alignment="center" caption="Non Marking" css-class="custom-table-column"> | ||||
|             <DxColumn alignment="center" caption="Total" css-class="custom-table-column"> | ||||
|               <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="total_nonmobile_nonmarking" | ||||
|                   caption="q" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="total_nonmobile_nonmarking" caption="q" | ||||
|                   css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|               <DxColumn alignment="center" caption="%" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="" | ||||
|                   caption="r=(q/d)*100" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatPercentage" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="" caption="r=(q/d)*100" | ||||
|                   css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|               </DxColumn> | ||||
|             </DxColumn> | ||||
|  | ||||
|             <DxColumn alignment="center" caption="Waktu Rata-Rata" css-class="custom-table-column"> | ||||
|               <DxColumn alignment="center" caption="Response" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="avg_durasi_response_time_nonmobile_nonmarking" | ||||
|                   caption="s" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="avg_durasi_response_time_nonmobile_nonmarking" | ||||
|                   caption="s" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|               <DxColumn alignment="center" caption="Recovery" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="avg_durasi_recovery_time_nonmobile_nonmarking" | ||||
|                   caption="t" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_time_nonmobile_nonmarking" | ||||
|                   caption="t" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|             </DxColumn> | ||||
|           </DxColumn> | ||||
| @@ -285,47 +138,23 @@ | ||||
|           <DxColumn alignment="center" caption="Marking" css-class="custom-table-column"> | ||||
|             <DxColumn alignment="center" caption="Total" css-class="custom-table-column"> | ||||
|               <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="total_nonmobile_marking" | ||||
|                   caption="u" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="total_nonmobile_marking" caption="u" | ||||
|                   css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|               <DxColumn alignment="center" caption="%" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="" | ||||
|                   caption="v=(u/d)*100" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatPercentage" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="" caption="v=(u/d)*100" | ||||
|                   css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|               </DxColumn> | ||||
|             </DxColumn> | ||||
|  | ||||
|             <DxColumn alignment="center" caption="Waktu Rata-Rata" css-class="custom-table-column"> | ||||
|               <DxColumn alignment="center" caption="Response" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="avg_durasi_response_time_nonmobile_marking" | ||||
|                   caption="w" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="avg_durasi_response_time_nonmobile_marking" | ||||
|                   caption="w" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|               <DxColumn alignment="center" caption="Recovery" css-class="custom-table-column"> | ||||
|                 <DxColumn | ||||
|                   :width="150" | ||||
|                   alignment="center" | ||||
|                   data-field="avg_durasi_recovery_time_nonmobile_marking" | ||||
|                   caption="x" | ||||
|                   css-class="custom-table-column" | ||||
|                   cell-template="formatNumber" | ||||
|                 /> | ||||
|                 <DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_time_nonmobile_marking" | ||||
|                   caption="x" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|               </DxColumn> | ||||
|             </DxColumn> | ||||
|           </DxColumn> | ||||
| @@ -341,12 +170,12 @@ | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
| @@ -363,235 +192,74 @@ | ||||
|       </template> | ||||
|  | ||||
|       <DxSummary> | ||||
|         <DxTotalItem | ||||
|           display-format="TOTAL" | ||||
|           show-in-column="nama_regu" | ||||
|           css-class="text-white !text-right" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_selesai" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_mobile_marking" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_mobile_nonmarking" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_nonmobile_marking" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_nonmobile_nonmarking" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem display-format="TOTAL" show-in-column="nama_regu" css-class="text-white !text-right" /> | ||||
|         <DxTotalItem column="total" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_selesai" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_mobile_marking" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_mobile_nonmarking" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_nonmobile_marking" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_nonmobile_nonmarking" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|       </DxSummary> | ||||
|     </DxDataGrid> | ||||
|   </div> | ||||
|  | ||||
|   <DetailDialog | ||||
|     :open="dialogDetail" | ||||
|     title="Detail Rekapitulasi Gangguan Diselesaikan Mobile APKT" | ||||
|     @on-close="closeDialog" | ||||
|     :full-width="true" | ||||
|   > | ||||
|   <DetailDialog :open="dialogDetail" title="Detail Rekapitulasi Gangguan Diselesaikan Mobile APKT" | ||||
|     @on-close="closeDialog" :full-width="true"> | ||||
|     <div class="w-full mb-4 lg:w-[70%] lg:float-left"> | ||||
|       <div class="p-4 bg-white rounded-xl lg:mr-4"> | ||||
|         <DxDataGrid | ||||
|           :allow-column-reordering="true" | ||||
|           class="max-h-[calc(100vh-140px)]" | ||||
|           :data-source="dataSub" | ||||
|           :show-column-lines="true" | ||||
|           :show-row-lines="false" | ||||
|           :show-borders="true" | ||||
|           :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" | ||||
|           @selection-changed="onDataSubSelectionChanged" | ||||
|           :column-width="100" | ||||
|           @exporting="onExportingDetail" | ||||
|           :allow-column-resizing="true" | ||||
|           column-resizing-mode="widget" | ||||
|         > | ||||
|         <DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub" | ||||
|           :show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100" | ||||
|           @exporting="onExportingDetail" :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" | ||||
|           /> | ||||
|           <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) => dataSub.findIndex((i) => i == item) + 1" | ||||
|             data-type="number" | ||||
|             caption="No" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_laporan" | ||||
|             caption="No Laporan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_lapor" | ||||
|             caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_response" | ||||
|             caption="Tgl Datang" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_recovery" | ||||
|             caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_response_time" | ||||
|             caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_recovery_time" | ||||
|             caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="status_akhir" | ||||
|             caption="Status" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="referensi_marking" | ||||
|             caption="Referensi Marking" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="idpel_nometer" | ||||
|             caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_pelapor" | ||||
|             caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="alamat_pelapor" | ||||
|             caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_telp_pelapor" | ||||
|             caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="200" | ||||
|             alignment="center" | ||||
|             data-field="keterangan_pelapor" | ||||
|             caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_posko" | ||||
|             caption="Posko" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="tindakan" | ||||
|             caption="Tidakan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="penyebab" | ||||
|             caption="Penyebab" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn css-class="custom-table-column" :width="50" alignment="center" | ||||
|             :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" | ||||
|             caption="No" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_laporan" caption="No Laporan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_response" caption="Tgl Datang" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_recovery" caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_response_time" caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="status_akhir" caption="Status" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="referensi_marking" caption="Referensi Marking" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="idpel_nometer" caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_pelapor" caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="alamat_pelapor" caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_telp_pelapor" caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="200" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="tindakan" caption="Tidakan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="penyebab" caption="Penyebab" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|  | ||||
|           <template #formatText="{ data }"> | ||||
|             <p class="text-left cursor-pointer"> | ||||
| @@ -627,46 +295,28 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Datang:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_response" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_response" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_recovery" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_recovery" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Response Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_response_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_response_time) | ||||
|       ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|       : '-' | ||||
|       " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Recovery Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|       ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|       : '-' | ||||
|       " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -676,11 +326,7 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Referensi Marking:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.referensi_marking" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.referensi_marking" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -695,29 +341,17 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Alamat Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.alamat_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.alamat_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">No Telp Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.no_telp_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.no_telp_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.keterangan_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.keterangan_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -770,7 +404,9 @@ import { | ||||
|   exportToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToPDF, | ||||
|   exportDetailToXLSX | ||||
|   exportDetailToXLSX, | ||||
|   exportToDOCX, | ||||
|   exportDetailToDOCX | ||||
| } from '@/report/Gangguan/Rekap/RGangguan_DMAPKT' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
|  | ||||
| @@ -853,6 +489,7 @@ const onExporting = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -862,6 +499,7 @@ const onExportingDetail = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportDetailToDOCX(reportMeta.value, dataSub.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,396 +1,123 @@ | ||||
| <!-- Rekapitulasi Gangguan/Jenis Gangguan --> | ||||
|  | ||||
| <template> | ||||
|   <Filters | ||||
|     :report-button="true" | ||||
|     @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters :report-button="true" @reset-form="data = []" @run-search="() => filterData(filters)" | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" class="mb-4"> | ||||
|     <Type1 @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="onDataSelectionChanged" | ||||
|       @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="onDataSelectionChanged" | ||||
|       @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget"> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <!--  --> | ||||
|       <DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> | ||||
|       <DxExport | ||||
|         :enabled="true" | ||||
|         :formats="['pdf', 'xlsx', 'document']" | ||||
|         :allow-export-selected-data="false" | ||||
|       /> | ||||
|       <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> | ||||
|       <DxColumnFixing :enabled="true" /> | ||||
|       <DxGrouping :auto-expand-all="true" :context-menu-enabled="true" expand-mode="rowClick" /> | ||||
|  | ||||
|       <DxColumn | ||||
|         :width="60" | ||||
|         alignment="center" | ||||
|         data-field="no" | ||||
|         caption="NO" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatNumber" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :width="120" | ||||
|         alignment="center" | ||||
|         data-field="kode" | ||||
|         caption="Kode" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :width="120" | ||||
|         alignment="center" | ||||
|         data-field="sub_kelompok" | ||||
|         css-class="custom-table-column" | ||||
|         :group-index="0" | ||||
|         caption="" | ||||
|         cell-template="formatText" | ||||
|         :calculate-group-value=" | ||||
|           (rowData: any) => `${rowData.sub_kelompok} (${rowData.nama_sub_kelompok})` | ||||
|         " | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :width="250" | ||||
|         alignment="center" | ||||
|         data-field="tipe_permasalahan" | ||||
|         caption="Jenis Gangguan" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn :width="60" alignment="center" data-field="no" caption="NO" css-class="custom-table-column" | ||||
|         cell-template="formatNumber" /> | ||||
|       <DxColumn :width="120" alignment="center" data-field="kode" caption="Kode" css-class="custom-table-column" | ||||
|         cell-template="formatText" /> | ||||
|       <DxColumn :width="120" alignment="center" data-field="sub_kelompok" css-class="custom-table-column" | ||||
|         :group-index="0" caption="" cell-template="formatText" :calculate-group-value="(rowData: any) => `${rowData.sub_kelompok} (${rowData.nama_sub_kelompok})` | ||||
|     " /> | ||||
|       <DxColumn :width="250" alignment="center" data-field="tipe_permasalahan" caption="Jenis Gangguan" | ||||
|         css-class="custom-table-column" cell-template="formatText" /> | ||||
|       <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="120" | ||||
|           alignment="center" | ||||
|           data-field="total" | ||||
|           data-type="number" | ||||
|           caption="Total" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn :width="120" alignment="center" data-field="total" data-type="number" caption="Total" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" caption="Sudah Selesai" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_selesai" | ||||
|             data-type="number" | ||||
|             caption="Jml" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="70" | ||||
|             alignment="center" | ||||
|             data-field="persen_selesai" | ||||
|             data-type="number" | ||||
|             caption="%" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_selesai" data-type="number" caption="Jml" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="70" alignment="center" data-field="persen_selesai" data-type="number" caption="%" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_inproses" | ||||
|             data-type="number" | ||||
|             caption="Jml" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="70" | ||||
|             alignment="center" | ||||
|             data-field="persen_inproses" | ||||
|             data-type="number" | ||||
|             caption="%" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_inproses" data-type="number" caption="Jml" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="70" alignment="center" data-field="persen_inproses" data-type="number" caption="%" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="Response Time" css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" caption="Menit" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Total" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="avg_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Rata-Rata" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="max_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Max" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="min_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Min" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_durasi_response" data-type="number" | ||||
|             caption="Total" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="avg_durasi_response" data-type="number" | ||||
|             caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="max_durasi_response" data-type="number" caption="Max" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="min_durasi_response" data-type="number" caption="Min" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_diatas_sla_response" | ||||
|             data-type="number" | ||||
|             caption=">SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_dibawah_sla_response" | ||||
|             data-type="number" | ||||
|             caption="≤SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_diatas_sla_response" data-type="number" | ||||
|             caption=">SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_response" data-type="number" | ||||
|             caption="≤SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="Recovery Time" css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" caption="Menit" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Total" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="avg_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Rata-Rata" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="max_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Max" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="min_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Min" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_durasi_recovery" data-type="number" | ||||
|             caption="Total" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="avg_durasi_recovery" data-type="number" | ||||
|             caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="max_durasi_recovery" data-type="number" caption="Max" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="min_durasi_recovery" data-type="number" caption="Min" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_diatas_sla_recovery" | ||||
|             data-type="number" | ||||
|             caption=">SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_dibawah_sla_recovery" | ||||
|             data-type="number" | ||||
|             caption="≤SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_diatas_sla_recovery" data-type="number" | ||||
|             caption=">SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_recovery" data-type="number" | ||||
|             caption="≤SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|  | ||||
|       <DxSummary :calculate-custom-summary="calculateCustomSummary"> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="no" | ||||
|           display-format="Total" | ||||
|           css-class="!text-left" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_selesai" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="persen_selesai" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatPercentage(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_inproses" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="persen_inproses" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatPercentage(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_durasi_response" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="avg_durasi_response" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="max_durasi_response" | ||||
|           summary-type="max" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="min_durasi_response" | ||||
|           summary-type="min" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_diatas_sla_response" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_dibawah_sla_response" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_durasi_recovery" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="avg_durasi_recovery" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="max_durasi_recovery" | ||||
|           summary-type="max" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="min_durasi_recovery" | ||||
|           summary-type="min" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_diatas_sla_recovery" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_dibawah_sla_recovery" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="no" display-format="Total" css-class="!text-left" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_selesai" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="persen_selesai" summary-type="avg" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatPercentage(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_inproses" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="persen_inproses" summary-type="avg" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatPercentage(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_durasi_response" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="avg_durasi_response" summary-type="avg" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="max_durasi_response" summary-type="max" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="min_durasi_response" summary-type="min" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_diatas_sla_response" summary-type="sum" | ||||
|           display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_dibawah_sla_response" summary-type="sum" | ||||
|           display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_durasi_recovery" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="avg_durasi_recovery" summary-type="avg" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="max_durasi_recovery" summary-type="max" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="min_durasi_recovery" summary-type="min" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_diatas_sla_recovery" summary-type="sum" | ||||
|           display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_dibawah_sla_recovery" summary-type="sum" | ||||
|           display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|       </DxSummary> | ||||
|  | ||||
|       <template #formatText="{ data }"> | ||||
| @@ -402,12 +129,12 @@ | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
| @@ -444,7 +171,7 @@ import { | ||||
| } from 'devextreme-vue/data-grid' | ||||
| import { queries, requestGraphQl } from '@/utils/api/api.graphql' | ||||
| import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' | ||||
| import { exportToPDF, exportToXLSX } from '@/report/Gangguan/Rekap/RGangguan_JenisGangguan' | ||||
| import { exportToPDF, exportToXLSX, exportToDOCX } from '@/report/Gangguan/Rekap/RGangguan_JenisGangguan' | ||||
| import { apolloClient } from '@/utils/api/api.graphql' | ||||
| import { provideApolloClient } from '@vue/apollo-composable' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
| @@ -476,6 +203,7 @@ const onExporting = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,45 +1,24 @@ | ||||
| <!-- Rekapitulasi Gangguan/Jenis Gangguan SE 004 --> | ||||
|  | ||||
| <template> | ||||
|   <Filters | ||||
|     @reset-form="data = []" | ||||
|     :report-button="true" | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters @reset-form="data = []" :report-button="true" @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     @run-search="() => filterData(filters)" class="mb-4"> | ||||
|     <Type1 @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="onDataSelectionChanged" | ||||
|       :column-width="100" | ||||
|       @exporting="onExporting" | ||||
|       :allow-column-resizing="true" | ||||
|       column-resizing-mode="widget" | ||||
|       :word-wrap-enabled="true" | ||||
|     > | ||||
|     <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="onDataSelectionChanged" | ||||
|       :column-width="100" @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" | ||||
|       :word-wrap-enabled="true"> | ||||
|       <DxGrouping expand-mode="rowClick" /> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <!--  --> | ||||
|       <DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> | ||||
|       <DxExport | ||||
|         :enabled="true" | ||||
|         :formats="['pdf', 'xlsx', 'document']" | ||||
|         :allow-export-selected-data="false" | ||||
|       /> | ||||
|       <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> | ||||
|       <DxColumnFixing :enabled="true" /> | ||||
|  | ||||
|       <!-- <DxColumn | ||||
| @@ -49,201 +28,62 @@ | ||||
|         :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" | ||||
|         caption="No" | ||||
|       /> --> | ||||
|       <DxColumn | ||||
|         :width="120" | ||||
|         alignment="center" | ||||
|         data-field="kode" | ||||
|         caption="Kode" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :width="120" | ||||
|         alignment="center" | ||||
|         data-field="id_fasilitas" | ||||
|         caption="" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatText" | ||||
|         name="idFasilitasGroup" | ||||
|         :group-index="0" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :width="150" | ||||
|         alignment="center" | ||||
|         data-field="sub_kelompok" | ||||
|         caption="Sub Kelompok (Equipment)" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn :width="120" alignment="center" data-field="kode" caption="Kode" css-class="custom-table-column" | ||||
|         cell-template="formatText" /> | ||||
|       <DxColumn :width="120" alignment="center" data-field="id_fasilitas" caption="" css-class="custom-table-column" | ||||
|         cell-template="formatText" name="idFasilitasGroup" :group-index="0" /> | ||||
|       <DxColumn :width="150" alignment="center" data-field="sub_kelompok" caption="Sub Kelompok (Equipment)" | ||||
|         css-class="custom-table-column" cell-template="formatText" /> | ||||
|       <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="120" | ||||
|           alignment="center" | ||||
|           data-field="total" | ||||
|           data-type="number" | ||||
|           caption="Total" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumberLaporanTotal" | ||||
|         /> | ||||
|         <DxColumn :width="120" alignment="center" data-field="total" data-type="number" caption="Total" | ||||
|           css-class="custom-table-column" cell-template="formatNumberLaporanTotal" /> | ||||
|         <DxColumn alignment="center" caption="Sudah Selesai" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_selesai" | ||||
|             data-type="number" | ||||
|             caption="Jml" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumberLaporanJmlSelesai" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="70" | ||||
|             alignment="center" | ||||
|             data-field="persen_selesai" | ||||
|             data-type="number" | ||||
|             caption="%" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_selesai" data-type="number" caption="Jml" | ||||
|             css-class="custom-table-column" cell-template="formatNumberLaporanJmlSelesai" /> | ||||
|           <DxColumn :width="70" alignment="center" data-field="persen_selesai" data-type="number" caption="%" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_inproses" | ||||
|             data-type="number" | ||||
|             caption="Jml" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumberLaporanJmlBelumSelesai" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="70" | ||||
|             alignment="center" | ||||
|             data-field="persen_inproses" | ||||
|             data-type="number" | ||||
|             caption="%" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_inproses" data-type="number" caption="Jml" | ||||
|             css-class="custom-table-column" cell-template="formatNumberLaporanJmlBelumSelesai" /> | ||||
|           <DxColumn :width="70" alignment="center" data-field="persen_inproses" data-type="number" caption="%" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="Response Time" css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" caption="Menit" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Total" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="avg_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Rata-Rata" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="max_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Max" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="min_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Min" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_durasi_response" data-type="number" | ||||
|             caption="Total" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="avg_durasi_response" data-type="number" | ||||
|             caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="max_durasi_response" data-type="number" caption="Max" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="min_durasi_response" data-type="number" caption="Min" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_diatas_sla_response" | ||||
|             data-type="number" | ||||
|             caption=">SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_dibawah_sla_response" | ||||
|             data-type="number" | ||||
|             caption="≤SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_diatas_sla_response" data-type="number" | ||||
|             caption=">SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_response" data-type="number" | ||||
|             caption="≤SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="Recovery Time" css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" caption="Menit" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Total" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="avg_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Rata-Rata" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="max_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Max" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="min_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Min" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_durasi_recovery" data-type="number" | ||||
|             caption="Total" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="avg_durasi_recovery" data-type="number" | ||||
|             caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="max_durasi_recovery" data-type="number" caption="Max" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="min_durasi_recovery" data-type="number" caption="Min" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_diatas_sla_recovery" | ||||
|             data-type="number" | ||||
|             caption=">SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_dibawah_sla_recovery" | ||||
|             data-type="number" | ||||
|             caption="≤SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_diatas_sla_recovery" data-type="number" | ||||
|             caption=">SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_recovery" data-type="number" | ||||
|             caption="≤SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|  | ||||
| @@ -256,48 +96,48 @@ | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(false, 0)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
|       <template #formatNumberLaporanTotal="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(true, 0)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
|       <template #formatNumberLaporanJmlSelesai="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(true, 1)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
|       <template #formatNumberLaporanJmlBelumSelesai="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(true, 2)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
| @@ -308,330 +148,96 @@ | ||||
|       </template> | ||||
|  | ||||
|       <DxSummary> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="Kode" | ||||
|           display-format="Total" | ||||
|           css-class="!text-left" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_selesai" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="persen_selesai" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatPercentage(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_inproses" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="persen_inproses" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatPercentage(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_durasi_response" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="avg_durasi_response" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="max_durasi_response" | ||||
|           summary-type="max" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="min_durasi_response" | ||||
|           summary-type="min" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_diatas_sla_response" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_dibawah_sla_response" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_durasi_recovery" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="avg_durasi_recovery" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="max_durasi_recovery" | ||||
|           summary-type="max" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="min_durasi_recovery" | ||||
|           summary-type="min" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_diatas_sla_recovery" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           :show-in-group-footer="true" | ||||
|           column="total_dibawah_sla_recovery" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="!text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="Kode" display-format="Total" css-class="!text-left" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_selesai" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="persen_selesai" summary-type="avg" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatPercentage(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_inproses" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="persen_inproses" summary-type="avg" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatPercentage(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_durasi_response" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="avg_durasi_response" summary-type="avg" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="max_durasi_response" summary-type="max" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="min_durasi_response" summary-type="min" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_diatas_sla_response" summary-type="sum" | ||||
|           display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_dibawah_sla_response" summary-type="sum" | ||||
|           display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_durasi_recovery" summary-type="sum" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="avg_durasi_recovery" summary-type="avg" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="max_durasi_recovery" summary-type="max" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="min_durasi_recovery" summary-type="min" display-format="{0}" | ||||
|           css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_diatas_sla_recovery" summary-type="sum" | ||||
|           display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem :show-in-group-footer="true" column="total_dibawah_sla_recovery" summary-type="sum" | ||||
|           display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|       </DxSummary> | ||||
|     </DxDataGrid> | ||||
|   </div> | ||||
|  | ||||
|   <DetailDialog | ||||
|     :open="dialogDetail" | ||||
|     title="Detail Rekapitulasi Gangguan/Jenis Gangguan SE 004" | ||||
|     @on-close="closeDialog" | ||||
|     :full-width="true" | ||||
|   > | ||||
|   <DetailDialog :open="dialogDetail" title="Detail Rekapitulasi Gangguan/Jenis Gangguan SE 004" @on-close="closeDialog" | ||||
|     :full-width="true"> | ||||
|     <div class="w-full mb-4 lg:w-[70%] lg:float-left"> | ||||
|       <div class="p-4 bg-white rounded-xl lg:mr-4"> | ||||
|         <DxDataGrid | ||||
|           :allow-column-reordering="true" | ||||
|           class="max-h-[calc(100vh-140px)]" | ||||
|           :data-source="dataSub" | ||||
|           :show-column-lines="true" | ||||
|           :show-row-lines="false" | ||||
|           :show-borders="true" | ||||
|           :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" | ||||
|           @selection-changed="onDataSubSelectionChanged" | ||||
|           :column-width="100" | ||||
|           @exporting="onExportingDetail" | ||||
|           :allow-column-resizing="true" | ||||
|           column-resizing-mode="widget" | ||||
|         > | ||||
|         <DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub" | ||||
|           :show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100" | ||||
|           @exporting="onExportingDetail" :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" | ||||
|           /> | ||||
|           <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) => dataSub.findIndex((i) => i == item) + 1" | ||||
|             data-type="number" | ||||
|             caption="No" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_laporan" | ||||
|             caption="No Laporan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_lapor" | ||||
|             caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_response" | ||||
|             caption="Tgl Datang" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_recovery" | ||||
|             caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_response_time" | ||||
|             caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_recovery_time" | ||||
|             caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="status_akhir" | ||||
|             caption="Status" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="referensi_marking" | ||||
|             caption="Referensi Marking" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="id_pelnomormeter" | ||||
|             caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_pelapor" | ||||
|             caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="alamat_pelapor" | ||||
|             caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_telp_pelapor" | ||||
|             caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="200" | ||||
|             alignment="center" | ||||
|             data-field="keterangan_pelapor" | ||||
|             caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_posko" | ||||
|             caption="Posko" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="tindakan" | ||||
|             caption="Tidakan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="penyebab" | ||||
|             caption="Penyebab" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn css-class="custom-table-column" :width="50" alignment="center" | ||||
|             :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" | ||||
|             caption="No" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_laporan" caption="No Laporan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_response" caption="Tgl Datang" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_recovery" caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_response_time" caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="status_akhir" caption="Status" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="referensi_marking" caption="Referensi Marking" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="id_pelnomormeter" caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_pelapor" caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="alamat_pelapor" caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_telp_pelapor" caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="200" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="tindakan" caption="Tidakan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="penyebab" caption="Penyebab" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|  | ||||
|           <template #formatText="{ data }"> | ||||
|             <p class="text-left cursor-pointer"> | ||||
| @@ -667,46 +273,28 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Datang:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_response" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_response" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_recovery" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_recovery" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Response Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_response_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_response_time) | ||||
|       ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|       : '-' | ||||
|     " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Recovery Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|       ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|       : '-' | ||||
|     " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -716,20 +304,12 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Referensi Marking:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.referensi_marking" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.referensi_marking" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">IDPEL/NO METER:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.id_pelnomormeter" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.id_pelnomormeter" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -739,29 +319,17 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Alamat Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.alamat_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.alamat_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">No Telp Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.no_telp_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.no_telp_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.keterangan_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.keterangan_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -815,7 +383,9 @@ import { | ||||
|   exportToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToPDF, | ||||
|   exportDetailToXLSX | ||||
|   exportDetailToXLSX, | ||||
|   exportToDOCX, | ||||
|   exportDetailToDOCX | ||||
| } from '@/report/Gangguan/Rekap/RGangguan_JenisGangguanSE' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
|  | ||||
| @@ -856,6 +426,7 @@ const onExporting = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -865,6 +436,7 @@ const onExportingDetail = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportDetailToDOCX(reportMeta.value, dataSub.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -899,7 +899,9 @@ import { | ||||
|   exportToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToPDF, | ||||
|   exportDetailToXLSX | ||||
|   exportDetailToXLSX, | ||||
|   exportToDOCX, | ||||
|   exportDetailToDOCX | ||||
| } from '@/report/Gangguan/Rekap/RGangguan_PerPosko' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
|  | ||||
| @@ -993,6 +995,7 @@ const onExporting = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -1002,6 +1005,7 @@ const onExportingDetail = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportDetailToDOCX(reportMeta.value, dataSub.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -907,7 +907,10 @@ import { | ||||
|   exportToPDF, | ||||
|   exportDetailToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToXLSX | ||||
|   exportDetailToXLSX, | ||||
|   exportToDOCX, | ||||
|   exportDetailToDOCX | ||||
|  | ||||
| } from '@/report/Gangguan/Rekap/RGangguan_PerRegu' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
|  | ||||
| @@ -1004,6 +1007,8 @@ const onExporting = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|  | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -1013,6 +1018,8 @@ const onExportingDetail = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportDetailToDOCX(reportMeta.value, dataSub.value) | ||||
|  | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,239 +1,81 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     :report-button="true" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters @reset-form="data = []" @run-search="() => filterData(filters)" | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" :report-button="true" class="mb-4"> | ||||
|     <Type9 @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="onDataSelectionChanged" | ||||
|       :column-width="100" | ||||
|       @exporting="onExporting" | ||||
|       :allow-column-resizing="true" | ||||
|       column-resizing-mode="widget" | ||||
|       :word-wrap-enabled="true" | ||||
|     > | ||||
|     <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="onDataSelectionChanged" | ||||
|       :column-width="100" @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" | ||||
|       :word-wrap-enabled="true"> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <!--  --> | ||||
|  | ||||
|       <DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> | ||||
|       <DxExport | ||||
|         :enabled="true" | ||||
|         :formats="['pdf', 'xlsx', 'document']" | ||||
|         :allow-export-selected-data="false" | ||||
|       /> | ||||
|       <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> | ||||
|       <DxColumnFixing :enabled="true" /> | ||||
|  | ||||
|       <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 | ||||
|         :width="120" | ||||
|         alignment="center" | ||||
|         data-field="nama_uid" | ||||
|         caption="UID" | ||||
|         css-class="custom-table-column" | ||||
|         group-index="0" | ||||
|         v-if="isGroupBy" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :width="170" | ||||
|         alignment="center" | ||||
|         data-field="tanggal" | ||||
|         caption="Tanggal Lapor" | ||||
|         css-class="custom-table-column" | ||||
|       /> | ||||
|       <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 :width="120" alignment="center" data-field="nama_uid" caption="UID" css-class="custom-table-column" | ||||
|         group-index="0" v-if="isGroupBy" /> | ||||
|       <DxColumn :width="170" alignment="center" data-field="tanggal" caption="Tanggal Lapor" | ||||
|         css-class="custom-table-column" /> | ||||
|       <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="120" | ||||
|           alignment="center" | ||||
|           data-field="total" | ||||
|           data-type="number" | ||||
|           caption="Total" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumberLaporanTotal" | ||||
|         /> | ||||
|         <DxColumn :width="120" alignment="center" data-field="total" data-type="number" caption="Total" | ||||
|           css-class="custom-table-column" cell-template="formatNumberLaporanTotal" /> | ||||
|         <DxColumn alignment="center" caption="Sudah Selesai" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_selesai" | ||||
|             data-type="number" | ||||
|             caption="Jml" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumberLaporanJmlSelesai" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="70" | ||||
|             alignment="center" | ||||
|             data-field="persen_selesai" | ||||
|             data-type="number" | ||||
|             caption="%" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_selesai" data-type="number" caption="Jml" | ||||
|             css-class="custom-table-column" cell-template="formatNumberLaporanJmlSelesai" /> | ||||
|           <DxColumn :width="70" alignment="center" data-field="persen_selesai" data-type="number" caption="%" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_inproses" | ||||
|             data-type="number" | ||||
|             caption="Jml" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumberLaporanJmlBelumSelesai" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="70" | ||||
|             alignment="center" | ||||
|             data-field="persen_inproses" | ||||
|             data-type="number" | ||||
|             caption="%" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_inproses" data-type="number" caption="Jml" | ||||
|             css-class="custom-table-column" cell-template="formatNumberLaporanJmlBelumSelesai" /> | ||||
|           <DxColumn :width="70" alignment="center" data-field="persen_inproses" data-type="number" caption="%" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="Response Time" css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" caption="Menit" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Total" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="avg_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Rata-Rata" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="max_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Max" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="min_durasi_response" | ||||
|             data-type="number" | ||||
|             caption="Min" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_durasi_response" data-type="number" | ||||
|             caption="Total" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="avg_durasi_response" data-type="number" | ||||
|             caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="max_durasi_response" data-type="number" caption="Max" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="min_durasi_response" data-type="number" caption="Min" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_diatas_sla_response" | ||||
|             data-type="number" | ||||
|             caption=">SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_dibawah_sla_response" | ||||
|             data-type="number" | ||||
|             caption="≤SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_diatas_sla_response" data-type="number" | ||||
|             caption=">SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_response" data-type="number" | ||||
|             caption="≤SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="Recovery Time" css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" caption="Menit" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Total" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="avg_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Rata-Rata" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="max_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Max" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="min_durasi_recovery" | ||||
|             data-type="number" | ||||
|             caption="Min" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_durasi_recovery" data-type="number" | ||||
|             caption="Total" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="avg_durasi_recovery" data-type="number" | ||||
|             caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="max_durasi_recovery" data-type="number" caption="Max" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="min_durasi_recovery" data-type="number" caption="Min" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_diatas_sla_recovery" | ||||
|             data-type="number" | ||||
|             caption=">SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_dibawah_sla_recovery" | ||||
|             data-type="number" | ||||
|             caption="≤SLA" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_diatas_sla_recovery" data-type="number" | ||||
|             caption=">SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_recovery" data-type="number" | ||||
|             caption="≤SLA" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|  | ||||
| @@ -246,48 +88,48 @@ | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(false, 0)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
|       <template #formatNumberLaporanTotal="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(true, 0)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
|       <template #formatNumberLaporanJmlSelesai="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(true, 1)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
|       <template #formatNumberLaporanJmlBelumSelesai="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(true, 2)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
| @@ -298,334 +140,101 @@ | ||||
|       </template> | ||||
|  | ||||
|       <DxSummary :calculate-custom-summary="calculateCustomSummary"> | ||||
|         <DxTotalItem | ||||
|           display-format="TOTAL" | ||||
|           show-in-column="tanggal" | ||||
|           css-class="text-white !text-left" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total" | ||||
|           name="total" | ||||
|           summary-type="custom" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_selesai" | ||||
|           name="total_selesai" | ||||
|           summary-type="custom" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="persen_selesai" | ||||
|           name="persen_selesai" | ||||
|           summary-type="custom" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatPercentage(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem display-format="TOTAL" show-in-column="tanggal" css-class="text-white !text-left" /> | ||||
|         <DxTotalItem column="total" name="total" summary-type="custom" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_selesai" name="total_selesai" summary-type="custom" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="persen_selesai" name="persen_selesai" summary-type="custom" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatPercentage(e.value)" /> | ||||
|  | ||||
|         <DxTotalItem | ||||
|           column="total_inproses" | ||||
|           name="total_inproses" | ||||
|           summary-type="custom" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="persen_inproses" | ||||
|           name="persen_inproses" | ||||
|           summary-type="custom" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatPercentage(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem column="total_inproses" name="total_inproses" summary-type="custom" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="persen_inproses" name="persen_inproses" summary-type="custom" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatPercentage(e.value)" /> | ||||
|  | ||||
|         <DxTotalItem | ||||
|           column="total_durasi_response" | ||||
|           name="total_durasi_response" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="avg_durasi_response" | ||||
|           name="avg_durasi_response" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="max_durasi_response" | ||||
|           name="max_durasi_response" | ||||
|           summary-type="max" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatWaktu(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="min_durasi_response" | ||||
|           name="min_durasi_response" | ||||
|           summary-type="min" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatWaktu(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem column="total_durasi_response" name="total_durasi_response" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="avg_durasi_response" name="avg_durasi_response" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="max_durasi_response" name="max_durasi_response" summary-type="max" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatWaktu(e.value)" /> | ||||
|         <DxTotalItem column="min_durasi_response" name="min_durasi_response" summary-type="min" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatWaktu(e.value)" /> | ||||
|  | ||||
|         <DxTotalItem | ||||
|           column="total_diatas_sla_response" | ||||
|           name="total_diatas_sla_response" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_dibawah_sla_response" | ||||
|           name="total_dibawah_sla_response" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem column="total_diatas_sla_response" name="total_diatas_sla_response" summary-type="sum" | ||||
|           display-format="{0}" css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_dibawah_sla_response" name="total_dibawah_sla_response" summary-type="sum" | ||||
|           display-format="{0}" css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|  | ||||
|         <DxTotalItem | ||||
|           column="total_durasi_recovery" | ||||
|           name="total_durasi_recovery" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="avg_durasi_recovery" | ||||
|           name="avg_durasi_recovery" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="max_durasi_recovery" | ||||
|           name="max_durasi_recovery" | ||||
|           summary-type="max" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatWaktu(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="min_durasi_recovery" | ||||
|           name="min_durasi_recovery" | ||||
|           summary-type="min" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatWaktu(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem column="total_durasi_recovery" name="total_durasi_recovery" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="avg_durasi_recovery" name="avg_durasi_recovery" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="max_durasi_recovery" name="max_durasi_recovery" summary-type="max" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatWaktu(e.value)" /> | ||||
|         <DxTotalItem column="min_durasi_recovery" name="min_durasi_recovery" summary-type="min" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatWaktu(e.value)" /> | ||||
|  | ||||
|         <DxTotalItem | ||||
|           column="total_diatas_sla_recovery" | ||||
|           name="total_diatas_sla_recovery" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_dibawah_sla_recovery" | ||||
|           name="total_dibawah_sla_recovery" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem column="total_diatas_sla_recovery" name="total_diatas_sla_recovery" summary-type="sum" | ||||
|           display-format="{0}" css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_dibawah_sla_recovery" name="total_dibawah_sla_recovery" summary-type="sum" | ||||
|           display-format="{0}" css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|       </DxSummary> | ||||
|     </DxDataGrid> | ||||
|   </div> | ||||
|  | ||||
|   <DetailDialog | ||||
|     :open="dialogDetail" | ||||
|     title="Detail Rekapitulasi Gangguan/Tanggal" | ||||
|     @on-close="closeDialog" | ||||
|     :full-width="true" | ||||
|   > | ||||
|   <DetailDialog :open="dialogDetail" title="Detail Rekapitulasi Gangguan/Tanggal" @on-close="closeDialog" | ||||
|     :full-width="true"> | ||||
|     <div class="w-full mb-4 lg:w-[70%] lg:float-left"> | ||||
|       <div class="p-4 bg-white rounded-xl lg:mr-4"> | ||||
|         <DxDataGrid | ||||
|           :allow-column-reordering="true" | ||||
|           class="max-h-[calc(100vh-140px)]" | ||||
|           :data-source="dataSub" | ||||
|           :show-column-lines="true" | ||||
|           :show-row-lines="false" | ||||
|           :show-borders="true" | ||||
|           :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" | ||||
|           @selection-changed="onDataSubSelectionChanged" | ||||
|           :column-width="100" | ||||
|           @exporting="onExportingDetail" | ||||
|           :allow-column-resizing="true" | ||||
|           column-resizing-mode="widget" | ||||
|         > | ||||
|         <DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub" | ||||
|           :show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100" | ||||
|           @exporting="onExportingDetail" :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" | ||||
|           /> | ||||
|           <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) => dataSub.findIndex((i) => i == item) + 1" | ||||
|             data-type="number" | ||||
|             caption="No" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_laporan" | ||||
|             caption="No Laporan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_lapor" | ||||
|             caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_response" | ||||
|             caption="Tgl Datang" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_recovery" | ||||
|             caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_response_time" | ||||
|             caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_recovery_time" | ||||
|             caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="status_akhir" | ||||
|             caption="Status" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="referensi_marking" | ||||
|             caption="Referensi Marking" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="id_pelnomormeter" | ||||
|             caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_pelapor" | ||||
|             caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="alamat_pelapor" | ||||
|             caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_telp_pelapor" | ||||
|             caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="200" | ||||
|             alignment="center" | ||||
|             data-field="keterangan_pelapor" | ||||
|             caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_posko" | ||||
|             caption="Posko" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="tindakan" | ||||
|             caption="Tidakan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="penyebab" | ||||
|             caption="Penyebab" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn css-class="custom-table-column" :width="50" alignment="center" | ||||
|             :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" | ||||
|             caption="No" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_laporan" caption="No Laporan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_response" caption="Tgl Datang" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_recovery" caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_response_time" caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="status_akhir" caption="Status" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="referensi_marking" caption="Referensi Marking" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="id_pelnomormeter" caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_pelapor" caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="alamat_pelapor" caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_telp_pelapor" caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="200" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="tindakan" caption="Tidakan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="penyebab" caption="Penyebab" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|  | ||||
|           <template #formatText="{ data }"> | ||||
|             <p class="text-left cursor-pointer"> | ||||
| @@ -661,46 +270,28 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Datang:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_response" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_response" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_recovery" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_recovery" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Response Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_response_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_response_time) | ||||
|         ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|         : '-' | ||||
|       " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Recovery Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|         ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|         : '-' | ||||
|       " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -710,20 +301,12 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Referensi Marking:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.referensi_marking" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.referensi_marking" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">IDPEL/NO METER:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.id_pelnomormeter" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.id_pelnomormeter" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -733,29 +316,17 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Alamat Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.alamat_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.alamat_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">No Telp Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.no_telp_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.no_telp_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.keterangan_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.keterangan_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -808,7 +379,9 @@ import { | ||||
|   exportToPDF, | ||||
|   exportDetailToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToXLSX | ||||
|   exportDetailToXLSX, | ||||
|   exportToDOCX, | ||||
|   exportDetailToDOCX | ||||
| } from '@/report/Gangguan/Rekap/RGangguan_PerTanggal' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
|  | ||||
| @@ -906,6 +479,7 @@ const onExporting = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -915,6 +489,7 @@ const onExportingDetail = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportDetailToDOCX(reportMeta.value, dataSub.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -660,7 +660,9 @@ import { | ||||
|   exportToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToPDF, | ||||
|   exportDetailToXLSX | ||||
|   exportDetailToXLSX, | ||||
|   exportToDOCX, | ||||
|   exportDetailToDOCX | ||||
| } from '@/report/Gangguan/Rekap/RGangguan_RatingPerPosko' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
|  | ||||
| @@ -807,6 +809,7 @@ const onExporting = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -816,6 +819,7 @@ const onExportingDetail = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportDetailToDOCX(reportMeta.value, dataSub.value) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,194 +1,70 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     @reset-form="data = []" | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     :report-button="true" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters @reset-form="data = []" @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     @run-search="() => filterData(filters)" :report-button="true" class="mb-4"> | ||||
|     <Type1 @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="onDataSelectionChanged" | ||||
|       @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="onDataSelectionChanged" | ||||
|       @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget"> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <!--  --> | ||||
|  | ||||
|       <DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> | ||||
|       <DxExport | ||||
|         :enabled="true" | ||||
|         :formats="['pdf', 'xlsx', 'document']" | ||||
|         :allow-export-selected-data="false" | ||||
|       /> | ||||
|       <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> | ||||
|       <DxColumnFixing :enabled="true" /> | ||||
|  | ||||
|       <DxColumn | ||||
|         :width="50" | ||||
|         alignment="center" | ||||
|         caption="NO" | ||||
|         data-type="number" | ||||
|         :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatNumber" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :width="150" | ||||
|         alignment="center" | ||||
|         data-field="kode_regu" | ||||
|         caption="Kode" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :width="200" | ||||
|         alignment="center" | ||||
|         data-field="nama_regu" | ||||
|         caption="Nama Regu" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn :width="50" alignment="center" caption="NO" data-type="number" | ||||
|         :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" css-class="custom-table-column" | ||||
|         cell-template="formatNumber" /> | ||||
|       <DxColumn :width="150" alignment="center" data-field="kode_regu" caption="Kode" css-class="custom-table-column" | ||||
|         cell-template="formatText" /> | ||||
|       <DxColumn :width="200" alignment="center" data-field="nama_regu" caption="Nama Regu" | ||||
|         css-class="custom-table-column" cell-template="formatText" /> | ||||
|       <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           data-field="total" | ||||
|           data-type="number" | ||||
|           caption="Total" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumberLaporanTotal" | ||||
|         /> | ||||
|         <DxColumn alignment="center" data-field="total" data-type="number" caption="Total" | ||||
|           css-class="custom-table-column" cell-template="formatNumberLaporanTotal" /> | ||||
|         <DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             alignment="center" | ||||
|             data-field="total_inproses" | ||||
|             data-type="number" | ||||
|             caption="Jml" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumberLaporanJmlBelumSelesai" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             alignment="center" | ||||
|             data-field="persen_inproses" | ||||
|             data-type="number" | ||||
|             caption="%" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn alignment="center" data-field="total_inproses" data-type="number" caption="Jml" | ||||
|             css-class="custom-table-column" cell-template="formatNumberLaporanJmlBelumSelesai" /> | ||||
|           <DxColumn alignment="center" data-field="persen_inproses" data-type="number" caption="%" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Sudah Selesai" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             alignment="center" | ||||
|             data-field="total_selesai" | ||||
|             data-type="number" | ||||
|             caption="Jml" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumberLaporanJmlSelesai" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             alignment="center" | ||||
|             data-field="persen_selesai" | ||||
|             data-type="number" | ||||
|             caption="%" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn alignment="center" data-field="total_selesai" data-type="number" caption="Jml" | ||||
|             css-class="custom-table-column" cell-template="formatNumberLaporanJmlSelesai" /> | ||||
|           <DxColumn alignment="center" data-field="persen_selesai" data-type="number" caption="%" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="Rating" css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" caption="Bintang" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             alignment="center" | ||||
|             data-field="total_rating" | ||||
|             data-type="number" | ||||
|             caption="Jml" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             alignment="center" | ||||
|             data-field="nilai_rating1" | ||||
|             data-type="number" | ||||
|             caption="1" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             alignment="center" | ||||
|             data-field="nilai_rating2" | ||||
|             data-type="number" | ||||
|             caption="2" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             alignment="center" | ||||
|             data-field="nilai_rating3" | ||||
|             data-type="number" | ||||
|             caption="3" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             alignment="center" | ||||
|             data-field="nilai_rating4" | ||||
|             data-type="number" | ||||
|             caption="4" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             alignment="center" | ||||
|             data-field="nilai_rating5" | ||||
|             data-type="number" | ||||
|             caption="5" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             alignment="center" | ||||
|             data-field="indeks_rating" | ||||
|             data-type="number" | ||||
|             caption="Index" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn alignment="center" data-field="total_rating" data-type="number" caption="Jml" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn alignment="center" data-field="nilai_rating1" data-type="number" caption="1" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn alignment="center" data-field="nilai_rating2" data-type="number" caption="2" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn alignment="center" data-field="nilai_rating3" data-type="number" caption="3" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn alignment="center" data-field="nilai_rating4" data-type="number" caption="4" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn alignment="center" data-field="nilai_rating5" data-type="number" caption="5" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn alignment="center" data-field="indeks_rating" data-type="number" caption="Index" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|  | ||||
|       <DxColumn alignment="center" caption="Non Rating" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="total_nonrating" | ||||
|           data-type="number" | ||||
|           caption="Jml" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="70" | ||||
|           alignment="center" | ||||
|           data-field="persen_nonrating" | ||||
|           data-type="number" | ||||
|           caption="%" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatPercentage" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="total_nonrating" data-type="number" caption="Jml" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="70" alignment="center" data-field="persen_nonrating" data-type="number" caption="%" | ||||
|           css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|       </DxColumn> | ||||
|  | ||||
|       <template #formatText="{ data }"> | ||||
| @@ -206,48 +82,48 @@ | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(false, 0)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
|       <template #formatNumberLaporanTotal="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(true, 0)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
|       <template #formatNumberLaporanJmlSelesai="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(true, 1)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
|       <template #formatNumberLaporanJmlBelumSelesai="{ data }"> | ||||
|         <p class="text-right cursor-pointer" @click="setAgreementDialog(true, 2)"> | ||||
|           {{ | ||||
|             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> | ||||
|  | ||||
| @@ -259,192 +135,58 @@ | ||||
|     </DxDataGrid> | ||||
|   </div> | ||||
|  | ||||
|   <DetailDialog | ||||
|     :open="dialogDetail" | ||||
|     title="Detail Rating Per Regu" | ||||
|     @on-close="closeDialog" | ||||
|     :full-width="true" | ||||
|   > | ||||
|   <DetailDialog :open="dialogDetail" title="Detail Rating Per Regu" @on-close="closeDialog" :full-width="true"> | ||||
|     <div class="w-full mb-4 lg:w-[70%] lg:float-left"> | ||||
|       <div class="p-4 bg-white rounded-xl lg:mr-4"> | ||||
|         <DxDataGrid | ||||
|           :allow-column-reordering="true" | ||||
|           class="max-h-[calc(100vh-140px)]" | ||||
|           :data-source="dataSub" | ||||
|           :show-column-lines="true" | ||||
|           :show-row-lines="false" | ||||
|           :show-borders="true" | ||||
|           :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" | ||||
|           @selection-changed="onDataSubSelectionChanged" | ||||
|           :column-width="100" | ||||
|           @exporting="onExportingDetail" | ||||
|           :allow-column-resizing="true" | ||||
|           column-resizing-mode="widget" | ||||
|         > | ||||
|         <DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub" | ||||
|           :show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100" | ||||
|           @exporting="onExportingDetail" :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" | ||||
|           /> | ||||
|           <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) => dataSub.findIndex((i) => i == item) + 1" | ||||
|             data-type="number" | ||||
|             caption="No" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_laporan" | ||||
|             caption="No Laporan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nilai_rating" | ||||
|             caption="Rating" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatRating" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_lapor" | ||||
|             caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_response" | ||||
|             caption="Tgl Datang" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="waktu_recovery" | ||||
|             caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_response_time" | ||||
|             caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_recovery_time" | ||||
|             caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="status_akhir" | ||||
|             caption="Status" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="referensi_marking" | ||||
|             caption="Referensi Marking" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="idpel_nometer" | ||||
|             caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_pelapor" | ||||
|             caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="alamat_pelapor" | ||||
|             caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_telp_pelapor" | ||||
|             caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="200" | ||||
|             alignment="center" | ||||
|             data-field="keterangan_pelapor" | ||||
|             caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_posko" | ||||
|             caption="Posko" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="tindakan" | ||||
|             caption="Tidakan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="penyebab" | ||||
|             caption="Penyebab" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn css-class="custom-table-column" :width="50" alignment="center" | ||||
|             :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" | ||||
|             caption="No" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_laporan" caption="No Laporan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nilai_rating" caption="Rating" | ||||
|             css-class="custom-table-column" cell-template="formatRating" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_response" caption="Tgl Datang" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="waktu_recovery" caption="Tgl Nyala" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_response_time" caption="Durasi Response Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time" | ||||
|             css-class="custom-table-column" cell-template="formatTime" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="status_akhir" caption="Status" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="referensi_marking" caption="Referensi Marking" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="idpel_nometer" caption="IDPEL/NO METER" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_pelapor" caption="Nama Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="alamat_pelapor" caption="Alamat Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="no_telp_pelapor" caption="No Telp Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="200" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="tindakan" caption="Tidakan" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="penyebab" caption="Penyebab" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|  | ||||
|           <template #formatText="{ data }"> | ||||
|             <p class="text-left cursor-pointer"> | ||||
| @@ -466,14 +208,8 @@ | ||||
|  | ||||
|           <template #formatRating="{ data }"> | ||||
|             <div class="flex justify-center cursor-pointer"> | ||||
|               <vue3starRatings | ||||
|                 v-model="data.text" | ||||
|                 :starSize="20" | ||||
|                 starColor="#CCCC00" | ||||
|                 inactiveColor="#D1D5DB" | ||||
|                 :numberOfStars="5" | ||||
|                 :disableClick="true" | ||||
|               /> | ||||
|               <vue3starRatings v-model="data.text" :starSize="20" starColor="#CCCC00" inactiveColor="#D1D5DB" | ||||
|                 :numberOfStars="5" :disableClick="true" /> | ||||
|             </div> | ||||
|           </template> | ||||
|         </DxDataGrid> | ||||
| @@ -488,17 +224,12 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Rating:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.nilai_rating) | ||||
|                 ? parseInt(dataSubSelected?.nilai_rating) > 0 | ||||
|                   ? `${parseInt(dataSubSelected?.nilai_rating)} Bintang` | ||||
|                   : `Tidak Ada Bintang` | ||||
|                 : `Tidak Ada Bintang` | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.nilai_rating) | ||||
|         ? parseInt(dataSubSelected?.nilai_rating) > 0 | ||||
|           ? `${parseInt(dataSubSelected?.nilai_rating)} Bintang` | ||||
|           : `Tidak Ada Bintang` | ||||
|         : `Tidak Ada Bintang` | ||||
|       " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -508,46 +239,28 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Datang:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_response" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_response" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.waktu_recovery" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.waktu_recovery" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Response Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_response_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_response_time) | ||||
|         ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|         : '-' | ||||
|       " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Recovery Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|         ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|         : '-' | ||||
|       " class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -557,11 +270,7 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Referensi Marking:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.referensi_marking" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.referensi_marking" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -576,29 +285,17 @@ | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Alamat Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.alamat_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.alamat_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">No Telp Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.no_telp_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.no_telp_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
|           <h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.keterangan_pelapor" | ||||
|             class-name="flex-1" | ||||
|           /> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.keterangan_pelapor" class-name="flex-1" /> | ||||
|         </div> | ||||
|  | ||||
|         <div class="flex flex-row items-center justify-between w-full"> | ||||
| @@ -650,7 +347,9 @@ import { | ||||
|   exportToPDF, | ||||
|   exportDetailToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToXLSX | ||||
|   exportDetailToXLSX, | ||||
|   exportToDOCX, | ||||
|   exportDetailToDOCX | ||||
| } from '@/report/Gangguan/Rekap/RGangguan_RatingPerRegu' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
|  | ||||
| @@ -750,6 +449,8 @@ const onExporting = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportToDOCX(reportMeta.value, data.value) | ||||
|  | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -759,6 +460,8 @@ const onExportingDetail = (e: any) => { | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     exportDetailToDOCX(reportMeta.value, dataSub.value) | ||||
|  | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user