diff --git a/.env.development b/.env.development index ba0871a..76d9508 100755 --- a/.env.development +++ b/.env.development @@ -2,9 +2,9 @@ VITE_BASE_URL=http://localhost:5173 VITE_BASE_DIRECTORY=/ VITE_APP_VERSION=0.0.1 VITE_APP_NAME='Executive Information System' -VITE_APP_GRAPHQL_ENDPOINT=http://127.0.0.1:32169/graphql +# VITE_APP_GRAPHQL_ENDPOINT=http://10.8.0.13:32169/graphql # VITE_APP_REST_ENDPOINT=http://192.168.191.163:32180 -# VITE_APP_GRAPHQL_ENDPOINT=http://10.1.50.173:32180/graphql +VITE_APP_GRAPHQL_ENDPOINT=http://10.1.50.173:32180/graphql # VITE_APP_GRAPHQL_ENDPOINT=http://192.168.137.46:32169/graphql VITE_APP_REST_ENDPOINT=http://10.1.50.173:32181 \ No newline at end of file diff --git a/build-push.js b/build-push.js new file mode 100644 index 0000000..9b2fa43 --- /dev/null +++ b/build-push.js @@ -0,0 +1,29 @@ +// build-and-push.js +const { exec } = require('child_process') + +function buildAndPush(version) { + const dockerImageTag = `defuj/apkt-eis:${version}` + const command = `npm run build && docker build . -t ${dockerImageTag} && docker push ${dockerImageTag}` + + exec(command, (error, stdout, stderr) => { + if (error) { + console.error(`Error: ${error.message}`) + return + } + if (stderr) { + console.error(`stderr: ${stderr}`) + return + } + console.log(`stdout: ${stdout}`) + }) +} + +// Ambil argumen versi dari command line +const version = process.argv[2] + +if (!version) { + console.error('Usage: node build-push.js ') + process.exit(1) +} + +buildAndPush(version) diff --git a/package.json b/package.json index 06ad148..9d833a8 100755 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "build-only": "vite build", "type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false", "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", - "format": "prettier --write src/" + "format": "prettier --write src/", + "build-push": "node build-push.js" }, "dependencies": { "@apollo/client": "^3.8.10", diff --git a/src/components/Form/FiltersType/Type18.vue b/src/components/Form/FiltersType/Type18.vue index d1a0a8e..a7ba6e3 100755 --- a/src/components/Form/FiltersType/Type18.vue +++ b/src/components/Form/FiltersType/Type18.vue @@ -1,23 +1,31 @@ @@ -78,11 +86,7 @@ onMounted(() => {
-
diff --git a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP.vue b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP.vue index 847939d..630b0ff 100644 --- a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP.vue +++ b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP.vue @@ -20,7 +20,7 @@ import { Anomali_LAPPGP_LPT, Anomali_LAPPGP_LPP } from '../.' import { useQuery } from '@vue/apollo-composable' import { Type4 } from '@/components/Form/FiltersType' import Filters from '@/components/Form/Filters.vue' -import { queries } from '@/utils/api/api.graphql' +import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { apolloClient } from '@/utils/api/api.graphql' import { provideApolloClient } from '@vue/apollo-composable' @@ -44,50 +44,58 @@ const filters = ref({ up3: 0 }) -const filterData = (params: any) => { +const resetData = () => { + data.value = [] + dataSub.value = [] +} + +const filterData = async (params: any) => { + resetData() const { ulp, uid, up3, jenisLaporan } = params + console.table('LAPPGP', jenisLaporan) const dateValue = params.periode.split(' s/d ') + const query = { + dateFrom: dateValue[0] + ? dateValue[0].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + dateTo: dateValue[1] + ? dateValue[1].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + idUlp: ulp ? ulp.id : 0, + idUid: uid ? uid.id : 0, + idUp3: up3 ? up3.id : 0, + namaRegional: '' + } - const { onResult, onError, loading, refetch } = useQuery( - filters.value.jenisLaporan.name == 'Laporan Berulang Unit' - ? queries.anomali.gangguan.petugasBerulang - : filters.value.jenisLaporan.name == 'Laporan Rating Negatif' - ? queries.anomali.gangguan.petugasRatingNegatif - : queries.anomali.gangguan.petugasSkipStep, - { - namaRegional: '', - // dateFrom: dateValue[0] - // ? dateValue[0].split('-').reverse().join('-') - // : new Date().toISOString().slice(0, 10), - // dateTo: dateValue[1] - // ? dateValue[1].split('-').reverse().join('-') - // : new Date().toISOString().slice(0, 10), - idUlp: ulp ? ulp.id : 0, - idUid: uid ? uid.id : 0, - idUp3: up3 ? up3.id : 0 - } + loadingData.value = true + await requestGraphQl( + jenisLaporan.name == 'Laporan Berulang Unit' + ? queries.anomali.gangguan.unitBerulang + : jenisLaporan.name == 'Laporan Rating Negatif' + ? queries.anomali.gangguan.unitRatingNegatif + : queries.anomali.gangguan.unitSkipStep, + query ) - - onResult((queryResult) => { - if (queryResult.data != undefined) { - if (jenisLaporan.name == 'Laporan Berulang Unit') { - data.value = queryResult.data.anomaliPenangananPengaduanGangguanPetugasBerulang - } else if (jenisLaporan.name == 'Laporan Rating Negatif') { - data.value = queryResult.data.anomaliPenangananPengaduanGangguanPetugasRatingNegatif + .then((result) => { + if (result.data.data != undefined) { + if (jenisLaporan.name == 'Laporan Berulang Unit') { + data.value = result.data.data.anomaliPenangananPengaduanGangguanUnitBerulang + } else if (jenisLaporan.name == 'Laporan Rating Negatif') { + data.value = result.data.data.anomaliPenangananPengaduanGangguanUnitRatingNegatif + } else { + data.value = result.data.data.anomaliPenangananPengaduanGangguanUnitSkipStep + } } else { - data.value = queryResult.data.anomaliPenangananPengaduanGangguanPetugasSkipStep + data.value = [] } - } - console.log(queryResult.data) - }) - onError((error) => { - console.log(error) - }) - - watch(loading, (value) => { - loadingData.value = value - }) + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loadingData.value = false + }) } onMounted(() => { diff --git a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPP.vue b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPP.vue index 05fb23f..bffcc18 100755 --- a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPP.vue +++ b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPP.vue @@ -18,6 +18,7 @@ column-resizing-mode="widget" :word-wrap-enabled="true" > + @@ -36,6 +37,37 @@ css-class="custom-table-column" cell-template="formatText" /> + - + @@ -50,15 +50,36 @@ cell-template="formatText" /> + + { +const resetData = () => { + data.value = [] + dataSub.value = [] +} + +const filterData = async (params: any) => { + resetData() const { ulp, uid, up3, jenisLaporan } = params + console.table('LAPPGU', jenisLaporan) const dateValue = params.periode.split(' s/d ') + const query = { + dateFrom: dateValue[0] + ? dateValue[0].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + dateTo: dateValue[1] + ? dateValue[1].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + idUlp: ulp ? ulp.id : 0, + idUid: uid ? uid.id : 0, + idUp3: up3 ? up3.id : 0, + namaRegional: '' + } - const { onResult, onError, loading, refetch } = useQuery( - filters.value.jenisLaporan.name == 'Laporan Berulang Unit' + loadingData.value = true + await requestGraphQl( + jenisLaporan.name == 'Laporan Berulang Unit' ? queries.anomali.gangguan.unitBerulang - : filters.value.jenisLaporan.name == 'Laporan Rating Negatif' + : jenisLaporan.name == 'Laporan Rating Negatif' ? queries.anomali.gangguan.unitRatingNegatif : queries.anomali.gangguan.unitSkipStep, - { - namaRegional: '', - // dateFrom: dateValue[0] - // ? dateValue[0].split('-').reverse().join('-') - // : new Date().toISOString().slice(0, 10), - // dateTo: dateValue[1] - // ? dateValue[1].split('-').reverse().join('-') - // : new Date().toISOString().slice(0, 10), - idUlp: ulp ? ulp.id : 0, - idUid: uid ? uid.id : 0, - idUp3: up3 ? up3.id : 0 - } + query ) - - onResult((queryResult) => { - if (queryResult.data != undefined) { - if (jenisLaporan.name == 'Laporan Berulang Unit') { - data.value = queryResult.data.anomaliPenangananPengaduanGangguanUnitBerulang - } else if (jenisLaporan.name == 'Laporan Rating Negatif') { - data.value = queryResult.data.anomaliPenangananPengaduanGangguanUnitRatingNegatif + .then((result) => { + if (result.data.data != undefined) { + if (jenisLaporan.name == 'Laporan Berulang Unit') { + data.value = result.data.data.anomaliPenangananPengaduanGangguanUnitBerulang + } else if (jenisLaporan.name == 'Laporan Rating Negatif') { + data.value = result.data.data.anomaliPenangananPengaduanGangguanUnitRatingNegatif + } else { + data.value = result.data.data.anomaliPenangananPengaduanGangguanUnitSkipStep + } } else { - data.value = queryResult.data.anomaliPenangananPengaduanGangguanUnitSkipStep + data.value = [] } - } - }) - - onError((error) => { - console.log(error) - }) - - watch(loading, (value) => { - loadingData.value = value - }) + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loadingData.value = false + }) } onMounted(() => { diff --git a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPP.vue b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPP.vue index 6120d44..441cc5f 100755 --- a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPP.vue +++ b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPP.vue @@ -18,6 +18,7 @@ column-resizing-mode="widget" :word-wrap-enabled="true" > + @@ -36,6 +37,37 @@ css-class="custom-table-column" cell-template="formatText" /> + - + @@ -29,7 +29,6 @@ :show-indicator="showIndicator" :show-pane="showPane" :shading="shading" - v-if="loading" v-model:visible="loading" :enabled="true" /> @@ -49,16 +48,38 @@ css-class="custom-table-column" cell-template="formatText" /> + + + - - - + + + - - + + \ No newline at end of file + diff --git a/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPP.vue b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPP.vue index 5d03e36..9dbff21 100755 --- a/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPP.vue +++ b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPP.vue @@ -4,6 +4,7 @@
+ @@ -26,7 +28,6 @@ :show-indicator="showIndicator" :show-pane="showPane" :shading="shading" - v-if="loading" v-model:visible="loading" :enabled="true" /> @@ -40,18 +41,20 @@ + + + + + + + @@ -91,6 +128,7 @@ import { DxColumn, DxColumnFixing, DxExport, + DxGrouping, DxLoadPanel, DxPaging, DxScrolling, @@ -103,12 +141,18 @@ import { exportDataGrid as exportToExcel } from 'devextreme/excel_exporter' import { saveAs } from 'file-saver' import { Workbook } from 'exceljs' import { computed, ref } from 'vue' +import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' +import { formatWaktu } from '@/components/Form/FiltersType/reference' const position = { of: '#data' } const showIndicator = ref(true) const shading = ref(true) const showPane = ref(true) const props = defineProps({ - data: Array as () => any[] + data: Array as () => any[], + loading: { + type: Boolean, + default: false + } }) const data = computed(() => props.data) const loading = ref(false) diff --git a/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue index 0036aa0..1bd83ff 100755 --- a/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue +++ b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue @@ -4,6 +4,7 @@ + @@ -27,7 +29,6 @@ :show-indicator="showIndicator" :show-pane="showPane" :shading="shading" - v-if="loading" v-model:visible="loading" :enabled="true" /> @@ -42,59 +43,96 @@ + + + @@ -107,30 +145,33 @@ @@ -144,33 +185,180 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -181,25 +369,34 @@ import { DxColumn, DxColumnFixing, DxExport, + DxGroupItem, + DxGrouping, DxLoadPanel, DxPaging, DxScrolling, DxSearchPanel, - DxSelection + DxSelection, + DxSummary } from 'devextreme-vue/data-grid' import { jsPDF } from 'jspdf' import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter' import { exportDataGrid as exportToExcel } from 'devextreme/excel_exporter' import { saveAs } from 'file-saver' import { Workbook } from 'exceljs' +import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' +import { formatWaktu } from '@/components/Form/FiltersType/reference' const position = { of: '#data' } const showIndicator = ref(true) const shading = ref(true) const showPane = ref(true) -const loading = ref(false) const props = defineProps({ - data: Array as () => any[] + data: Array as () => any[], + loading: { + type: Boolean, + default: false + } }) +const loading = computed(() => props.loading) const data = computed(() => props.data) const onExporting = (e: any) => { diff --git a/src/components/Pages/Cico/LaporanCICO.vue b/src/components/Pages/Cico/LaporanCICO.vue index fd154d6..1a78abc 100755 --- a/src/components/Pages/Cico/LaporanCICO.vue +++ b/src/components/Pages/Cico/LaporanCICO.vue @@ -184,7 +184,7 @@ @@ -235,7 +235,7 @@ css-class="custom-table-column" :width="50" alignment="center" - :calculateCellValue="(item: any) => dataSub.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" caption="No" cell-template="formatText" @@ -243,7 +243,7 @@ diff --git a/src/components/Pages/Gangguan/Daftar/DGangguan_BM.vue b/src/components/Pages/Gangguan/Daftar/DGangguan_BM.vue index e649e74..c8a87f5 100755 --- a/src/components/Pages/Gangguan/Daftar/DGangguan_BM.vue +++ b/src/components/Pages/Gangguan/Daftar/DGangguan_BM.vue @@ -50,7 +50,7 @@ css-class="custom-table-column" :width="50" alignment="center" - :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> @@ -182,17 +182,38 @@ - +

No Laporan:

+
+

Nama Pelapor:

+ +
+ +
+

No Telp Pelapor:

+ +
+ +
+

Alamat Pelapor:

+ +
+ +
+

Keterangan Pelapor:

+ +
+ +
+

Status :

+ +
+

Tgl Lapor:

@@ -234,36 +255,6 @@ />
-
-

Status :

- -
- -
-

IDPEL/NOMETER:

- -
- -
-

Nama Pelapor:

- -
- -
-

Alamat Pelapor:

- -
- -
-

No Telp Pelapor:

- -
- -
-

Keterangan Pelapor:

- -
-

Sumper Lapor:

@@ -310,7 +301,7 @@ import { DxSelection } from 'devextreme-vue/data-grid' import { useQuery } from '@vue/apollo-composable' -import { queries } from '@/utils/api/api.graphql' +import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { exportToPDF, exportToDOCX, exportToXLSX } from '@/report/Gangguan/Daftar/DGangguan_BM' const position = { of: '#data' } @@ -321,6 +312,7 @@ const data = ref([]) const dataSelected = ref({}) const dialogDetail = ref(false) const dataGridRef = ref(null) +const loading = ref(false) const clearSelection = () => { const dataGrid = dataGridRef.value!.instance! dataGrid.clearSelection() @@ -337,20 +329,16 @@ const showDetail = () => (dialogDetail.value = true) const closeDialog = () => (dialogDetail.value = false) -const { onResult, onError, loading, refetch } = useQuery(queries.gangguan.daftar.berdasarkanMedia, { - dateFrom: new Date().toISOString().slice(0, 10), - dateTo: new Date().toISOString().slice(0, 10), - posko: 0, - idUid: 0, - idUp3: 0, - media: 'Twitter' -}) +const resetData = () => { + data.value = [] +} -const filterData = (params: any) => { +const filterData = async (params: any) => { + resetData() const { posko, uid, up3, media } = params const dateValue = params.periode.split(' s/d ') - refetch({ + const query = { dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), @@ -361,20 +349,25 @@ const filterData = (params: any) => { idUid: uid ? uid.id : 0, idUp3: up3 ? up3.id : 0, media: media ? media.id : '' - }) + } - onResult((queryResult) => { - if (queryResult.data != undefined) { - data.value = queryResult.data.daftarGangguanBerdasarkanMedia - } + loading.value = true + await requestGraphQl(queries.gangguan.daftar.berdasarkanMedia, query) + .then((result) => { + if (result.data.data != undefined) { + data.value = result.data.data.daftarGangguanBerdasarkanMedia + } else { + data.value = [] + } - reportMeta.value = filters.value - console.log(queryResult.data) - }) - - onError((error) => { - console.log(error) - }) + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loading.value = false + }) } const onExporting = (e: any) => { diff --git a/src/components/Pages/Gangguan/Daftar/DGangguan_DKPL.vue b/src/components/Pages/Gangguan/Daftar/DGangguan_DKPL.vue index 9657cea..171d77a 100755 --- a/src/components/Pages/Gangguan/Daftar/DGangguan_DKPL.vue +++ b/src/components/Pages/Gangguan/Daftar/DGangguan_DKPL.vue @@ -53,7 +53,7 @@ css-class="custom-table-column !text-right" :width="50" alignment="center" - :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> @@ -360,7 +360,7 @@ import { onMounted, ref } from 'vue' import DetailDialog from '@/components/Dialogs/DetailDialog.vue' import InputText from '@/components/InputText.vue' import { useQuery } from '@vue/apollo-composable' -import { queries } from '@/utils/api/api.graphql' +import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { exportToPDF, exportToXLSX, exportToDOCX } from '@/report/Gangguan/Daftar/DGangguan_DKPL' const position = { of: '#dataTable' } @@ -370,13 +370,19 @@ const showPane = ref(true) const data = ref([]) const dataSelected = ref() const dialogDetail = ref(false) +const loading = ref(false) const closeDialog = () => (dialogDetail.value = false) -const filterData = (params: any) => { +const resetData = () => { + data.value = [] +} + +const filterData = async (params: any) => { + resetData() const { posko, uid, up3 } = params const dateValue = params.periode.split(' s/d ') - refetch({ + const query = { dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), @@ -386,29 +392,26 @@ const filterData = (params: any) => { posko: posko ? posko.id : 0, idUid: uid ? uid.id : 0, idUp3: up3 ? up3.id : 0 - }) - onResult((queryResult) => { - if (queryResult.data != undefined) { - data.value = queryResult.data.daftarGangguanDialihkanKePoskoLain - } - - reportMeta.value = filters.value - console.log(queryResult.data) - }) - onError((error) => { - console.log(error) - }) -} -const { onResult, onError, loading, refetch } = useQuery( - queries.gangguan.daftar.dataDialihkanKePoskoLain, - { - dateFrom: new Date().toISOString().slice(0, 10), - dateTo: new Date().toISOString().slice(0, 10), - posko: 0, - idUid: 0, - idUp3: 0 } -) + loading.value = true + await requestGraphQl(queries.gangguan.daftar.dataDialihkanKePoskoLain, query) + .then((result) => { + if (result.data.data != undefined) { + data.value = result.data.data.daftarGangguanDialihkanKePoskoLain + } else { + data.value = [] + } + + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loading.value = false + }) +} + const dataGridRef = ref(null) const clearSelection = () => { const dataGrid = dataGridRef.value!.instance! diff --git a/src/components/Pages/Gangguan/Daftar/DGangguan_DMAPKT.vue b/src/components/Pages/Gangguan/Daftar/DGangguan_DMAPKT.vue index a22497f..f9d986f 100755 --- a/src/components/Pages/Gangguan/Daftar/DGangguan_DMAPKT.vue +++ b/src/components/Pages/Gangguan/Daftar/DGangguan_DMAPKT.vue @@ -50,7 +50,7 @@ css-class="custom-table-column" :width="50" alignment="center" - :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> @@ -182,11 +182,7 @@
- +

No Laporan:

@@ -278,26 +274,6 @@ class-name="flex-1" />
- -
-

Penyebab:

- -
- -
-

Tindakan:

- -
@@ -320,7 +296,7 @@ import { DxSelection } from 'devextreme-vue/data-grid' import { useQuery } from '@vue/apollo-composable' -import { queries } from '@/utils/api/api.graphql' +import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { exportToPDF, exportToXLSX, exportToDOCX } from '@/report/Gangguan/Daftar/DGangguan_DMAPKT' const position = { of: '#data' } @@ -331,6 +307,7 @@ const data = ref([]) const dataSelected = ref({}) const dialogDetail = ref(false) const dataGridRef = ref(null) +const loading = ref(false) const clearSelection = () => { const dataGrid = dataGridRef.value!.instance! dataGrid.clearSelection() @@ -347,22 +324,16 @@ const showDetail = () => (dialogDetail.value = true) const closeDialog = () => (dialogDetail.value = false) -const { onResult, onError, loading, refetch } = useQuery( - queries.gangguan.daftar.diselesaikanMobileAPKT, - { - dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), - dateTo: new Date('2023-10-01').toISOString().slice(0, 10), - posko: 0, - idUid: 0, - idUp3: 0 - } -) +const resetData = () => { + data.value = [] +} -const filterData = (params: any) => { +const filterData = async (params: any) => { + resetData() const dateValue = params.periode.split(' s/d ') const { posko, uid, up3 } = params - refetch({ + const query = { dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), @@ -372,20 +343,25 @@ const filterData = (params: any) => { posko: posko ? posko.id : 0, idUid: uid ? uid.id : 0, idUp3: up3?.id ? up3.id : 0 - }) + } - onResult((queryResult) => { - if (queryResult.data != undefined) { - data.value = queryResult.data.daftarGangguanDiselesaikanMobileAPKT - } + loading.value = true + await requestGraphQl(queries.gangguan.daftar.diselesaikanMobileAPKT, query) + .then((result) => { + if (result.data.data != undefined) { + data.value = result.data.data.daftarGangguanDiselesaikanMobileAPKT + } else { + data.value = [] + } - reportMeta.value = filters.value - console.log(queryResult.data) - }) - - onError((error) => { - console.log(error) - }) + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loading.value = false + }) } const onExporting = (e: any) => { diff --git a/src/components/Pages/Gangguan/Daftar/DGangguan_MLD1K.vue b/src/components/Pages/Gangguan/Daftar/DGangguan_MLD1K.vue index d0f71a3..91329ac 100755 --- a/src/components/Pages/Gangguan/Daftar/DGangguan_MLD1K.vue +++ b/src/components/Pages/Gangguan/Daftar/DGangguan_MLD1K.vue @@ -49,7 +49,7 @@ css-class="custom-table-column" :width="50" alignment="center" - :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> @@ -343,7 +343,7 @@ css-class="custom-table-column" :width="50" alignment="center" - :calculateCellValue="(item: any) => dataSub.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" caption="No" cell-template="formatNumber" @@ -359,7 +359,7 @@

Create Date:

- +

User:

- +

Keterangan:

- +
@@ -441,7 +441,7 @@ import { import DetailDialog from '@/components/Dialogs/DetailDialog.vue' import InputText from '@/components/InputText.vue' import { useQuery } from '@vue/apollo-composable' -import { queries } from '@/utils/api/api.graphql' +import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { formatNumber, isNumber } from '@/utils/numbers' import { exportToPDF, exportToXLSX, exportToDOCX } from '@/report/Gangguan/Daftar/DGangguan_MLD1K' import { apolloClient } from '@/utils/api/api.graphql' @@ -474,8 +474,6 @@ const reportMeta = ref({ }) const setDetailType = (columnCaption: string) => { - console.log('Column Caption', columnCaption) - if (columnCaption == 'Jml Lapor') { detailType.value = 'table' } else { @@ -483,40 +481,30 @@ const setDetailType = (columnCaption: string) => { } } -const getDetail = () => { +const getDetail = async () => { const dateValue = filters.value.periode.split(' s/d ') const selected = dataSelected.value const query = { - dateFrom: dateValue[0] - ? dateValue[0].split('-').reverse().join('-') - : new Date().toISOString().slice(0, 10), - dateTo: dateValue[1] - ? dateValue[1].split('-').reverse().join('-') - : new Date().toISOString().slice(0, 10), - idUlp: selected?.id_ulp ? selected?.id_ulp : 0, - idUid: selected?.id_uid ? selected?.id_uid : 0, - idUp3: selected?.id_up3 ? selected?.id_up3 : 0 + noLaporan: selected?.no_laporan ? selected?.no_laporan : '' } + loadingSubData.value = false + await requestGraphQl(queries.gangguan.daftar.melaporLebihDariSatuKaliDetail, query) + .then((result) => { + if (result.data.data != undefined) { + dataSub.value = result.data.data.detailGangguanLaporLebihDariSatuKali + } else { + dataSub.value = [] + } - const { onResult, onError, loading } = useQuery( - queries.keluhan.rekap.rekapKeluhanAllDetail, - query - ) - - onResult((queryResult) => { - if (queryResult.data != undefined) { - dataSub.value = queryResult.data.detailKeluhanAll - } - }) - - onError((error) => { - console.log(error) - }) - - watch(loading, (value) => { - loadingSubData.value = value - }) + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loadingSubData.value = false + }) } const dataGridRef = ref(null) @@ -533,19 +521,8 @@ const showDetail = () => { } } -const onDataSelectionChanged = ({ - selectedRowsData, - selectedRowKeys, - currentSelectedRowKeys, - element, - component -}: any) => { +const onDataSelectionChanged = ({ selectedRowsData }: any) => { if (selectedRowsData[0] != undefined) { - // console.log(selectedRowKeys) - // console.log(currentSelectedRowKeys) - // console.log(element) - // console.log(component) - dataSelected.value = selectedRowsData[0] showDetail() } @@ -558,42 +535,46 @@ const onDataSubSelectionChanged = ({ selectedRowsData }: any) => { const closeDialog = () => (dialogDetail.value = false) -const filterData = (params: any) => { +const resetData = () => { + data.value = [] + dataSub.value = [] +} + +const filterData = async (params: any) => { + resetData() const { minJmlLapor, maxJmlLapor, posko, uid, up3 } = params const dateValue = params.periode.split(' s/d ') - const { onResult, onError, loading, refetch } = useQuery( - queries.gangguan.daftar.melaporLebihDariSatuKali, - { - minJmlLapor: minJmlLapor ? minJmlLapor : 1, - maxJmlLapor: maxJmlLapor ? maxJmlLapor : 1, - dateFrom: dateValue[0] - ? dateValue[0].split('-').reverse().join('-') - : new Date().toISOString().slice(0, 10), - dateTo: dateValue[1] - ? dateValue[1].split('-').reverse().join('-') - : new Date().toISOString().slice(0, 10), - posko: posko ? posko.id : 0, - idUid: uid ? uid.id : 0, - idUp3: up3 ? up3.id : 0 - } - ) + const query = { + minJmlLapor: minJmlLapor ? minJmlLapor : 1, + maxJmlLapor: maxJmlLapor ? maxJmlLapor : 1, + dateFrom: dateValue[0] + ? dateValue[0].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + dateTo: dateValue[1] + ? dateValue[1].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + posko: posko ? posko.id : 0, + idUid: uid ? uid.id : 0, + idUp3: up3 ? up3.id : 0 + } + loadingData.value = true + await requestGraphQl(queries.gangguan.daftar.melaporLebihDariSatuKali, query) + .then((result) => { + if (result.data.data != undefined) { + data.value = result.data.data.daftarGangguanMelaporLebihDariSatuKali + } else { + data.value = [] + } - onResult((queryResult) => { - if (queryResult.data != undefined) { - data.value = queryResult.data.daftarGangguanMelaporLebihDariSatuKali - } - - reportMeta.value = filters.value - }) - - onError((error) => { - console.log(error) - }) - - watch(loading, (value) => { - loadingData.value = value - }) + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loadingData.value = false + }) } const onExporting = (e: any) => { diff --git a/src/components/Pages/Gangguan/Daftar/DGangguan_RecoveryTime.vue b/src/components/Pages/Gangguan/Daftar/DGangguan_RecoveryTime.vue index 8efb6b7..b6628db 100755 --- a/src/components/Pages/Gangguan/Daftar/DGangguan_RecoveryTime.vue +++ b/src/components/Pages/Gangguan/Daftar/DGangguan_RecoveryTime.vue @@ -66,7 +66,7 @@ css-class="custom-table-column" :width="50" alignment="center" - :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> @@ -265,6 +265,11 @@ +
+

Referensi Marking :

+ +
+

IDPEL/NOMETER:

@@ -346,7 +351,7 @@ import { DxSelection } from 'devextreme-vue/data-grid' import { useQuery } from '@vue/apollo-composable' -import { queries } from '@/utils/api/api.graphql' +import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { exportToPDF, exportToXLSX, @@ -361,6 +366,7 @@ const data = ref([]) const dataSelected = ref({}) const dialogDetail = ref(false) const dataGridRef = ref(null) +const loading = ref(false) const clearSelection = () => { const dataGrid = dataGridRef.value!.instance! dataGrid.clearSelection() @@ -377,11 +383,16 @@ const showDetail = () => (dialogDetail.value = true) const closeDialog = () => (dialogDetail.value = false) -const filterData = (params: any) => { +const resetData = () => { + data.value = [] +} + +const filterData = async (params: any) => { + resetData() const { minTime, maxTime, posko, uid, up3 } = params const dateValue = params.periode.split(' s/d ') - refetch({ + const query = { dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), @@ -393,19 +404,24 @@ const filterData = (params: any) => { posko: posko ? posko.id : 0, idUid: uid ? uid.id : 0, idUp3: up3 ? up3.id : 0 - }) + } + loading.value = true + await requestGraphQl(queries.gangguan.daftar.recoveryTime, query) + .then((result) => { + if (result.data.data != undefined) { + data.value = result.data.data.daftarGangguanRecoveryTime + } else { + data.value = [] + } - onResult((queryResult) => { - if (queryResult.data != undefined) { - data.value = queryResult.data.daftarGangguanRecoveryTime - } - - reportMeta.value = filters.value - }) - - onError((error) => { - console.log(error) - }) + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loading.value = false + }) } const onExporting = (e: any) => { @@ -418,16 +434,6 @@ const onExporting = (e: any) => { } } -const { onResult, onError, loading, refetch } = useQuery(queries.gangguan.daftar.recoveryTime, { - dateFrom: new Date().toISOString().slice(0, 10), - dateTo: new Date().toISOString().slice(0, 10), - minDurasiRecoveryTime: 1, //menit - maxDurasiRecoveryTime: 1, // menit - posko: 0, - idUid: 0, - idUp3: 0 -}) - const filters = ref() const reportMeta = ref({ uid: { id: 0, name: 'Semua Unit Induk Distribusi/Wilayah' }, diff --git a/src/components/Pages/Gangguan/Daftar/DGangguan_ResponseTime.vue b/src/components/Pages/Gangguan/Daftar/DGangguan_ResponseTime.vue index 0624eb0..f137eb2 100755 --- a/src/components/Pages/Gangguan/Daftar/DGangguan_ResponseTime.vue +++ b/src/components/Pages/Gangguan/Daftar/DGangguan_ResponseTime.vue @@ -50,7 +50,7 @@ css-class="custom-table-column" :width="50" alignment="center" - :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" cell-template="cellCenter" @@ -242,6 +242,11 @@
+
+

Referensi Marking :

+ +
+

IDPEL/NOMETER:

@@ -323,7 +328,7 @@ import { import DetailDialog from '@/components/Dialogs/DetailDialog.vue' import InputText from '@/components/InputText.vue' import { useQuery } from '@vue/apollo-composable' -import { queries } from '@/utils/api/api.graphql' +import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { exportToPDF, exportToXLSX, @@ -338,6 +343,7 @@ const data = ref([]) const dataSelected = ref({}) const dialogDetail = ref(false) const dataGridRef = ref(null) +const loading = ref(false) const clearSelection = () => { const dataGrid = dataGridRef.value!.instance! dataGrid.clearSelection() @@ -354,11 +360,16 @@ const showDetail = () => (dialogDetail.value = true) const closeDialog = () => (dialogDetail.value = false) -const filterData = (params: any) => { +const resetData = () => { + data.value = [] +} + +const filterData = async (params: any) => { + resetData() const { minTime, maxTime, posko, uid, up3 } = params const dateValue = params.periode.split(' s/d ') - refetch({ + const query = { dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), @@ -370,31 +381,26 @@ const filterData = (params: any) => { posko: posko ? posko.id : 0, idUid: uid ? uid.id : 0, idUp3: up3 ? up3.id : 0 - }) + } + loading.value = true + await requestGraphQl(queries.gangguan.daftar.responseTime, query) + .then((result) => { + if (result.data.data != undefined) { + data.value = result.data.data.daftarGangguanResponseTime + } else { + data.value = [] + } - onResult((queryResult) => { - if (queryResult.data != undefined) { - data.value = queryResult.data.daftarGangguanResponseTime - } - - reportMeta.value = filters.value - }) - - onError((error) => { - console.log(error) - }) + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loading.value = false + }) } -const { onResult, onError, loading, refetch } = useQuery(queries.gangguan.daftar.responseTime, { - dateFrom: new Date().toISOString().slice(0, 10), - dateTo: new Date().toISOString().slice(0, 10), - minDurasiResponseTime: 1, //menit - maxDurasiResponseTime: 1, // menit - posko: 0, - idUid: 0, - idUp3: 0 -}) - const onExporting = (e: any) => { if (e.format === 'pdf') { exportToPDF(reportMeta, data) diff --git a/src/components/Pages/Gangguan/Daftar/DGangguan_STIDP.vue b/src/components/Pages/Gangguan/Daftar/DGangguan_STIDP.vue index 2d533ec..b3cf42c 100755 --- a/src/components/Pages/Gangguan/Daftar/DGangguan_STIDP.vue +++ b/src/components/Pages/Gangguan/Daftar/DGangguan_STIDP.vue @@ -50,7 +50,7 @@ css-class="custom-table-column" :width="50" alignment="center" - :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> @@ -278,26 +278,6 @@ class-name="flex-1" />
- -
-

Penyebab:

- -
- -
-

Tindakan:

- -
@@ -320,7 +300,7 @@ import { DxSelection } from 'devextreme-vue/data-grid' import { useQuery } from '@vue/apollo-composable' -import { queries } from '@/utils/api/api.graphql' +import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { exportToPDF, exportToDOCX, exportToXLSX } from '@/report/Gangguan/Daftar/DGangguan_STIDP' const position = { of: '#data' } @@ -331,6 +311,7 @@ const data = ref([]) const dataSelected = ref({}) const dialogDetail = ref(false) const dataGridRef = ref(null) +const loading = ref(false) const clearSelection = () => { const dataGrid = dataGridRef.value!.instance! dataGrid.clearSelection() @@ -347,22 +328,16 @@ const showDetail = () => (dialogDetail.value = true) const closeDialog = () => (dialogDetail.value = false) -const { onResult, onError, loading, refetch } = useQuery( - queries.gangguan.daftar.selesaiTanpaIDPelanggan, - { - dateFrom: new Date().toISOString().slice(0, 10), - dateTo: new Date().toISOString().slice(0, 10), - posko: 0, - idUid: 0, - idUp3: 0 - } -) +const resetData = () => { + data.value = [] +} -const filterData = (params: any) => { +const filterData = async (params: any) => { + resetData() const { posko, uid, up3 } = params const dateValue = params.periode.split(' s/d ') - refetch({ + const query = { dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), @@ -372,20 +347,24 @@ const filterData = (params: any) => { posko: posko ? posko.id : 0, idUid: uid ? uid.id : 0, idUp3: up3 ? up3.id : 0 - }) + } + loading.value = true + await requestGraphQl(queries.gangguan.daftar.selesaiTanpaIDPelanggan, query) + .then((result) => { + if (result.data.data != undefined) { + data.value = result.data.data.daftarGangguanSelesaiTanpaIdPelanggan + } else { + data.value = [] + } - onResult((queryResult) => { - if (queryResult.data != undefined) { - data.value = queryResult.data.daftarGangguanSelesaiTanpaIdPelanggan - } - - reportMeta.value = filters.value - console.log(queryResult.data) - }) - - onError((error) => { - console.log(error) - }) + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loading.value = false + }) } const onExporting = (e: any) => { diff --git a/src/components/Pages/Gangguan/Rekap/RGangguan_ALL.vue b/src/components/Pages/Gangguan/Rekap/RGangguan_ALL.vue index 75f1082..7fa1aee 100755 --- a/src/components/Pages/Gangguan/Rekap/RGangguan_ALL.vue +++ b/src/components/Pages/Gangguan/Rekap/RGangguan_ALL.vue @@ -5,31 +5,40 @@
- + - - + + + + + + + @@ -445,7 +481,7 @@ :hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100" - @exporting="onExporting" + @exporting="onExportingDetail" :allow-column-resizing="true" column-resizing-mode="widget" > @@ -479,7 +515,7 @@ css-class="custom-table-column" :width="50" alignment="center" - :calculateCellValue="(item: any) => dataSub.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" caption="No" cell-template="formatNumber" @@ -783,19 +819,18 @@ import { DxPager, DxGrouping } from 'devextreme-vue/data-grid' -import { jsPDF } from 'jspdf' -import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter' -import { exportDataGrid as exportToExcel } from 'devextreme/excel_exporter' -import { saveAs } from 'file-saver' -import { Workbook } from 'exceljs' -import { useQuery } from '@vue/apollo-composable' -import { queries } from '@/utils/api/api.graphql' +import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' import InputText from '@/components/InputText.vue' import DetailDialog from '@/components/Dialogs/DetailDialog.vue' import { apolloClient } from '@/utils/api/api.graphql' import { provideApolloClient } from '@vue/apollo-composable' -import { exportToPDF } from '@/report/Gangguan/Rekap/RGangguan_JenisGangguanSE' +import { + exportToPDF, + exportToXLSX, + exportDetailToPDF, + exportDetailToXLSX +} from '@/report/Gangguan/Rekap/RGangguan_JenisGangguanSE' const client = apolloClient() provideApolloClient(client) @@ -816,6 +851,13 @@ const reportMeta = ref({ posko: { id: 0, name: 'Semua Posko' }, periode: '' }) +const agreeToShowDialog = ref(false) +const progressSelected = ref(0) + +const setAgreementDialog = (status: boolean, progress: number) => { + agreeToShowDialog.value = status + progressSelected.value = progress +} const closeDialog = () => { dialogDetail.value = false @@ -824,61 +866,62 @@ const closeDialog = () => { const onExporting = (e: any) => { if (e.format === 'pdf') { exportToPDF(reportMeta.value, data.value) + } else if (e.format === 'xlsx') { + exportToXLSX(reportMeta.value, e) } else { - const workbook = new Workbook() - const worksheet = workbook.addWorksheet('Employees') - - exportToExcel({ - component: e.component, - worksheet, - autoFilterEnabled: true - }).then(() => { - workbook.xlsx.writeBuffer().then((buffer: any) => { - saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'DataGrid.xlsx') - }) - }) - - e.cancel = true } } -const filterData = (params: any) => { +const onExportingDetail = (e: any) => { + if (e.format === 'pdf') { + exportDetailToPDF(reportMeta.value, dataSub.value) + } else if (e.format === 'xlsx') { + exportDetailToXLSX(reportMeta.value, e) + } else { + } +} + +const resetData = () => { + data.value = [] + dataSub.value = [] +} + +const filterData = async (params: any) => { + resetData() const dateValue = params.periode.split(' s/d ') const { posko, uid, up3 } = params - const { onResult, onError, loading, refetch } = useQuery( - queries.gangguan.rekap.jenisGangguanSE004, - { - dateFrom: dateValue[0] - ? dateValue[0].split('-').reverse().join('-') - : new Date().toISOString().slice(0, 10), - dateTo: dateValue[1] - ? dateValue[1].split('-').reverse().join('-') - : new Date().toISOString().slice(0, 10), - posko: posko ? posko.id : 0, - idUid: uid ? uid.id : 0, - idUp3: up3 ? up3.id : 0 - } - ) + const query = { + dateFrom: dateValue[0] + ? dateValue[0].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + dateTo: dateValue[1] + ? dateValue[1].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + posko: posko ? posko.id : 0, + idUid: uid ? uid.id : 0, + idUp3: up3 ? up3.id : 0 + } - onResult((queryResult) => { - if (queryResult.data != undefined) { - data.value = queryResult.data.rekapitulasiJenisGangguanSE004 - } - - reportMeta.value = filters.value - }) - - onError((queryError) => { - console.log(queryError) - }) - - watch(loading, (value) => { - loadingData.value = value - }) + loadingData.value = true + await requestGraphQl(queries.gangguan.rekap.jenisGangguanSE004, query) + .then((result) => { + if (result.data.data != undefined) { + data.value = result.data.data.rekapitulasiJenisGangguanSE004 + } else { + data.value = [] + } + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loadingData.value = false + }) } -const getDetail = () => { +const getDetail = async () => { loadingSubData.value = true const dateValue = filters.value.periode.split(' s/d ') const ref = dataSelected.value @@ -894,27 +937,26 @@ const getDetail = () => { posko: posko ? posko.id : 0, idUid: uid ? uid.id : 0, idUp3: up3 ? up3.id : 0, - idEquipment: ref?.kode ? parseInt(ref.kode) : 0 + idEquipment: ref?.kode ? parseInt(ref.kode) : 0, + isSelesai: progressSelected.value } - const { onResult, onError, loading, refetch } = useQuery( - queries.gangguan.rekap.jenisGangguanSE004Detail, - query - ) - - onResult((queryResult) => { - if (queryResult.data != undefined) { - dataSub.value = queryResult.data.detailGangguanJenisGangguanSE004 - } - }) - - onError((error) => { - console.log(error) - }) - - watch(loading, (value) => { - loadingSubData.value = value - }) + loadingSubData.value = true + await requestGraphQl(queries.gangguan.rekap.jenisGangguanSE004Detail, query) + .then((result) => { + if (result.data.data != undefined) { + dataSub.value = result.data.data.detailGangguanJenisGangguanSE004 + } else { + dataSub.value = [] + } + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loadingSubData.value = false + }) } const dataGridRef = ref(null) @@ -926,8 +968,10 @@ const showDetail = () => { clearSelection() dataSub.value = [] dataSubSelected.value = null - dialogDetail.value = true - getDetail() + if (agreeToShowDialog.value) { + dialogDetail.value = true + getDetail() + } } const onDataSelectionChanged = ({ selectedRowsData }: any) => { diff --git a/src/components/Pages/Gangguan/Rekap/RGangguan_KTI.vue b/src/components/Pages/Gangguan/Rekap/RGangguan_KTI.vue index 089de98..bb8bcd4 100755 --- a/src/components/Pages/Gangguan/Rekap/RGangguan_KTI.vue +++ b/src/components/Pages/Gangguan/Rekap/RGangguan_KTI.vue @@ -11,6 +11,7 @@
- + @@ -280,19 +281,19 @@ @@ -330,7 +331,7 @@ :hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100" - @exporting="onExporting" + @exporting="onExportingDetail" :allow-column-resizing="true" column-resizing-mode="widget" > @@ -364,7 +365,7 @@ css-class="custom-table-column" :width="50" alignment="center" - :calculateCellValue="(item: any) => dataSub.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" caption="No" cell-template="formatNumber" @@ -1119,21 +1120,21 @@ import { DxSelection, DxSummary } from 'devextreme-vue/data-grid' -import { jsPDF } from 'jspdf' -import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter' -import { exportDataGrid as exportToExcel } from 'devextreme/excel_exporter' -import { saveAs } from 'file-saver' -import { Workbook } from 'exceljs' -import { useQuery } from '@vue/apollo-composable' -import { queries } from '@/utils/api/api.graphql' +import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' import { formatWaktu } from '@/components/Form/FiltersType/reference' import DetailDialog from '@/components/Dialogs/DetailDialog.vue' import InputText from '@/components/InputText.vue' import { apolloClient } from '@/utils/api/api.graphql' import { provideApolloClient } from '@vue/apollo-composable' -import { exportToPDF } from '@/report/Gangguan/Rekap/RGangguan_KTI' - +import { + exportToPDF, + exportToXLSX, + exportDetailToPDF, + exportDetailToXLSX +} from '@/report/Gangguan/Rekap/RGangguan_KTI' +import { getMonthNumber } from '@/utils/texts' +import { getDataRowGroup } from '@/utils/data' const client = apolloClient() provideApolloClient(client) const position = { of: '#data' } @@ -1147,17 +1148,47 @@ const dataSubSelected = ref() const dialogDetail = ref(false) const loadingData = ref(false) const loadingSubData = ref(false) +const monthSelected = ref(null) const reportMeta = ref({ uid: { id: 0, name: 'Semua Unit Induk Distribusi/Wilayah' }, up3: { id: 0, name: 'Semua Unit Pelaksanaan Pelayanan Pelanggan' }, posko: { id: 0, name: 'Semua Posko' }, periode: '' }) +const groupDialog = ref(false) +const groupData = ref(null) -const getDetail = () => { +const onCellClicked = (e: any) => { + // if (e.rowType == 'group') { + // groupDialog.value = true + // if (e.row.groupIndex != 0) { + // const data = getDataRowGroup(e.data) + // console.table(data) + // groupData.value = data + // } + // showDetail() + // } else { + // groupDialog.value = false + // } +} + +const setMonth = (month: any) => { + if (month != '') { + if (getMonthNumber(month) == 0) { + monthSelected.value = null + } else { + monthSelected.value = getMonthNumber(month) + } + } else { + monthSelected.value = null + } +} + +const getDetail = async () => { loadingSubData.value = true const dateValue = filters.value.periode.split(' s/d ') const ref = dataSelected.value + const compDate = dateValue[0].split('-').reverse().join('-').split('-') const query = { dateFrom: dateValue[0] @@ -1168,27 +1199,27 @@ const getDetail = () => { : new Date().toISOString().slice(0, 10), posko: ref?.id_posko ? ref?.id_posko : 0, idUid: ref?.id_uid ? ref?.id_uid : 0, - idUp3: ref?.id_up3 ? ref?.id_up3 : 0 + idUp3: ref?.id_up3 ? ref?.id_up3 : 0, + bulan: monthSelected.value, + tahun: parseInt(compDate[0]) } - const { onResult, onError, loading, refetch } = useQuery( - queries.gangguan.rekap.gangguanKoreksiTransaksiIndividualDetail, - query - ) - - onResult((queryResult) => { - if (queryResult.data != undefined) { - dataSub.value = queryResult.data.detailGangguanKoreksiTransaksiIndividu - } - }) - - onError((error) => { - console.log(error) - }) - - watch(loading, (value) => { - loadingSubData.value = value - }) + loadingSubData.value = true + await requestGraphQl(queries.gangguan.rekap.gangguanKoreksiTransaksiIndividualDetail, query) + .then((result) => { + if (result.data.data != undefined) { + dataSub.value = result.data.data.detailGangguanKoreksiTransaksiIndividu + } else { + dataSub.value = [] + } + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loadingSubData.value = false + }) } const dataGridRef = ref(null) @@ -1200,8 +1231,10 @@ const showDetail = () => { clearSelection() dataSub.value = [] dataSubSelected.value = null - dialogDetail.value = true - getDetail() + if (monthSelected.value != null) { + dialogDetail.value = true + getDetail() + } } const closeDialog = () => { @@ -1211,21 +1244,18 @@ const closeDialog = () => { const onExporting = (e: any) => { if (e.format === 'pdf') { exportToPDF(reportMeta.value, data.value) + } else if (e.format === 'xlsx') { + exportToXLSX(reportMeta.value, e) } else { - const workbook = new Workbook() - const worksheet = workbook.addWorksheet('Employees') + } +} - exportToExcel({ - component: e.component, - worksheet, - autoFilterEnabled: true - }).then(() => { - workbook.xlsx.writeBuffer().then((buffer: any) => { - saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'DataGrid.xlsx') - }) - }) - - e.cancel = true +const onExportingDetail = (e: any) => { + if (e.format === 'pdf') { + exportDetailToPDF(reportMeta.value, dataSub.value) + } else if (e.format === 'xlsx') { + exportDetailToXLSX(reportMeta.value, e) + } else { } } @@ -1242,40 +1272,68 @@ const onDataSubSelectionChanged = ({ selectedRowsData }: any) => { } } -const filterData = (params: any) => { - const dateValue = params.periode.split(' s/d ') - const { posko, uid, up3 } = params +const resetData = () => { + data.value = [] + dataSub.value = [] +} - const { onResult, onError, loading, refetch } = useQuery( - queries.gangguan.rekap.gangguanKoreksiTransaksiIndividual, - { - dateFrom: dateValue[0] - ? dateValue[0].split('-').reverse().join('-') - : new Date().toISOString().slice(0, 10), - dateTo: dateValue[1] - ? dateValue[1].split('-').reverse().join('-') - : new Date().toISOString().slice(0, 10), - idPosko: posko ? posko.id : 0, - idUid: uid ? uid.id : 0, - idUp3: up3 ? up3.id : 0 - } - ) +const filterData = async (params: any) => { + resetData() + const dateValue = filters.value.periode.split(' s/d ') + const { uid, up3, posko, jenisTransaksi } = params - onResult((queryResult) => { - if (queryResult.data != undefined) { - data.value = queryResult.data.rekapitulasiGangguanKoreksiTransaksiIndividual - } + const query = { + dateFrom: dateValue[0] + ? dateValue[0].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + dateTo: dateValue[1] + ? dateValue[1].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + idPosko: posko ? posko.id : 0, + idUid: uid ? uid.id : 0, + idUp3: up3 ? up3.id : 0, + is_transaksi_individual: + jenisTransaksi.length == 4 || jenisTransaksi.length == 0 + ? 0 + : jenisTransaksi.includes('Koreksi Transaksi Individual') + ? 1 + : 2, + is_cleansing_transaksi_tm: + jenisTransaksi.length == 4 || jenisTransaksi.length == 0 + ? 0 + : jenisTransaksi.includes('Cleansing Traksaksi TM') + ? 1 + : 2, + is_koreksi_transaksi_tm: + jenisTransaksi.length == 4 || jenisTransaksi.length == 0 + ? 0 + : jenisTransaksi.includes('Koreksi Transaksi TM') + ? 1 + : 2, + is_koreksi_gangguan_dan_anev: + jenisTransaksi.length == 4 || jenisTransaksi.length == 0 + ? 0 + : jenisTransaksi.includes('Koreksi Kode Gangguan dan Anev') + ? 1 + : 2 + } - reportMeta.value = filters.value - }) - - onError((error) => { - console.log(error) - }) - - watch(loading, (value) => { - loadingData.value = value - }) + loadingData.value = true + await requestGraphQl(queries.gangguan.rekap.gangguanKoreksiTransaksiIndividual, query) + .then((result) => { + if (result.data.data != undefined) { + data.value = result.data.data.rekapitulasiGangguanKoreksiTransaksiIndividual + } else { + data.value = [] + } + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loadingData.value = false + }) } const filters = ref() diff --git a/src/components/Pages/Gangguan/Rekap/RGangguan_PerPosko.vue b/src/components/Pages/Gangguan/Rekap/RGangguan_PerPosko.vue index 6898bfa..9a47067 100755 --- a/src/components/Pages/Gangguan/Rekap/RGangguan_PerPosko.vue +++ b/src/components/Pages/Gangguan/Rekap/RGangguan_PerPosko.vue @@ -56,7 +56,7 @@ data-field="no" caption="NO" css-class="custom-table-column" - :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" cell-template="formatNumber" /> + + + + + + @@ -532,7 +568,7 @@ :hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100" - @exporting="onExporting" + @exporting="onExportingDetail" :allow-column-resizing="true" column-resizing-mode="widget" > @@ -566,7 +602,7 @@ css-class="custom-table-column" :width="50" alignment="center" - :calculateCellValue="(item: any) => dataSub.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number" caption="No" cell-template="formatNumber" @@ -867,17 +903,18 @@ import { DxSummary, DxTotalItem } from 'devextreme-vue/data-grid' -import { exportDataGrid as exportToExcel } from 'devextreme/excel_exporter' -import { saveAs } from 'file-saver' -import { Workbook } from 'exceljs' -import { useQuery } from '@vue/apollo-composable' -import { queries } from '@/utils/api/api.graphql' +import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' import DetailDialog from '@/components/Dialogs/DetailDialog.vue' import InputText from '@/components/InputText.vue' import { apolloClient } from '@/utils/api/api.graphql' import { provideApolloClient } from '@vue/apollo-composable' -import { exportToPDF } from '@/report/Gangguan/Rekap/RGangguan_PerPosko' +import { + exportToPDF, + exportToXLSX, + exportDetailToPDF, + exportDetailToXLSX +} from '@/report/Gangguan/Rekap/RGangguan_PerPosko' const client = apolloClient() provideApolloClient(client) @@ -897,9 +934,15 @@ const reportMeta = ref({ up3: { id: 0, name: 'Semua Unit Pelaksanaan Pelayanan Pelanggan' }, periode: '' }) +const agreeToShowDialog = ref(false) +const progressSelected = ref(0) -const getDetail = () => { - loadingSubData.value = true +const setAgreementDialog = (status: boolean, progress: number) => { + agreeToShowDialog.value = status + progressSelected.value = progress +} + +const getDetail = async () => { const dateValue = filters.value.periode.split(' s/d ') const ref = dataSelected.value @@ -916,27 +959,26 @@ const getDetail = () => { idRegu: ref?.id_regu ? ref?.id_regu : 0, idUlp: ref?.id_ulp ? ref?.id_ulp : 0, namaRegional: ref?.nama_regional ? ref?.nama_regional : '', - media: ref?.media ? ref?.media : '' + media: ref?.media ? ref?.media : '', + isSelesai: progressSelected.value, + tanggal: '' } - const { onResult, onError, loading, refetch } = useQuery( - queries.gangguan.rekap.gangguanAllDetail, - query - ) - - onResult((queryResult) => { - if (queryResult.data != undefined) { - dataSub.value = queryResult.data.detailGangguan - } - }) - - onError((error) => { - console.log(error) - }) - - watch(loading, (value) => { - loadingSubData.value = value - }) + loadingSubData.value = true + await requestGraphQl(queries.gangguan.rekap.gangguanAllDetail, query) + .then((result) => { + if (result.data.data != undefined) { + dataSub.value = result.data.data.detailGangguan + } else { + dataSub.value = [] + } + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loadingSubData.value = false + }) } const dataGridRef = ref(null) @@ -948,8 +990,10 @@ const showDetail = () => { clearSelection() dataSub.value = [] dataSubSelected.value = null - dialogDetail.value = true - getDetail() + if (agreeToShowDialog.value) { + dialogDetail.value = true + getDetail() + } } const closeDialog = () => { @@ -959,21 +1003,18 @@ const closeDialog = () => { const onExporting = (e: any) => { if (e.format === 'pdf') { exportToPDF(reportMeta.value, data.value) + } else if (e.format === 'xlsx') { + exportToXLSX(reportMeta.value, e) } else { - const workbook = new Workbook() - const worksheet = workbook.addWorksheet('Employees') + } +} - exportToExcel({ - component: e.component, - worksheet, - autoFilterEnabled: true - }).then(() => { - workbook.xlsx.writeBuffer().then((buffer: any) => { - saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'DataGrid.xlsx') - }) - }) - - e.cancel = true +const onExportingDetail = (e: any) => { + if (e.format === 'pdf') { + exportDetailToPDF(reportMeta.value, dataSub.value) + } else if (e.format === 'xlsx') { + exportDetailToXLSX(reportMeta.value, e) + } else { } } @@ -990,41 +1031,46 @@ const onDataSubSelectionChanged = ({ selectedRowsData }: any) => { } } -const filterData = (params: any) => { +const resetData = () => { + data.value = [] + dataSub.value = [] +} + +const filterData = async (params: any) => { + resetData() const dateValue = params.periode.split(' s/d ') const { posko, uid, up3 } = params - const { onResult, onError, loading, refetch } = useQuery( - queries.gangguan.rekap.gangguanPerPosko, - { - dateFrom: dateValue[0] - ? dateValue[0].split('-').reverse().join('-') - : new Date().toISOString().slice(0, 10), - dateTo: dateValue[1] - ? dateValue[1].split('-').reverse().join('-') - : new Date().toISOString().slice(0, 10), - posko: posko ? posko.id : 0, - idUid: uid ? uid.id : 0, - idUp3: up3 ? up3.id : 0 - } - ) + const query = { + dateFrom: dateValue[0] + ? dateValue[0].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + dateTo: dateValue[1] + ? dateValue[1].split('-').reverse().join('-') + : new Date().toISOString().slice(0, 10), + posko: posko ? posko.id : 0, + idUid: uid ? uid.id : 0, + idUp3: up3 ? up3.id : 0 + } - onResult((queryResult) => { - if (queryResult.data != undefined) { - const result: any[] = [...queryResult.data.rekapitulasiGangguanPerPosko] - data.value = result.sort((a: any, b: any) => a?.nama_up3.localeCompare(b?.nama_up3)) - } - - reportMeta.value = filters.value - }) - - onError((error) => { - console.log(error) - }) - - watch(loading, (value) => { - loadingData.value = value - }) + loadingData.value = true + await requestGraphQl(queries.gangguan.rekap.gangguanPerPosko, query) + .then((result) => { + if (result.data.data != undefined) { + data.value = [...result.data.data.rekapitulasiGangguanPerPosko].sort((a: any, b: any) => + a?.nama_up3.localeCompare(b?.nama_up3) + ) + } else { + data.value = [] + } + reportMeta.value = filters.value + }) + .catch((err) => { + console.error(err) + }) + .finally(() => { + loadingData.value = false + }) } const filters = ref() diff --git a/src/components/Pages/Gangguan/Rekap/RGangguan_PerRegu.vue b/src/components/Pages/Gangguan/Rekap/RGangguan_PerRegu.vue index 39a5de2..b97b1c6 100755 --- a/src/components/Pages/Gangguan/Rekap/RGangguan_PerRegu.vue +++ b/src/components/Pages/Gangguan/Rekap/RGangguan_PerRegu.vue @@ -54,7 +54,7 @@ caption="NO" css-class="custom-table-column" cell-template="formatNumber" - :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" + :calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" /> -