Compare commits
9 Commits
d431bd63d1
...
40680c9040
Author | SHA1 | Date | |
---|---|---|---|
|
40680c9040 | ||
|
5fd6e7a86c | ||
|
fea148b487 | ||
|
288201f25c | ||
|
3c8ccfe6a1 | ||
|
8e7a3caab8 | ||
|
3f53f68257 | ||
|
6848a91efd | ||
|
d726b88045 |
@ -1 +1 @@
|
|||||||
{"name":"eis","version":"0.0.187-vm","private":true,"scripts":{"dev":"vite","host":"vite --host","tailwind":"tailwindcss -i ./src/assets/css/tailwind.css -o ./src/assets/css/style.css --watch","build":"run-p type-check build-only","preview":"vite preview --host","test:unit":"vitest","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/","deploy":"node deploy.js","set-version":"node version.js","version":"echo $npm_package_version"},"dependencies":{"@apollo/client":"^3.8.10","@apollo/link-context":"^2.0.0-beta.3","@flavorly/vanilla-components":"^0.7.65","@headlessui/tailwindcss":"^0.2.0","@headlessui/vue":"^1.7.19","@heroicons/vue":"^2.0.18","@lottiefiles/lottie-player":"^2.0.4","@phosphor-icons/vue":"^2.1.6","@types/qs":"^6.9.12","@types/uuid":"^9.0.8","@types/vue-select":"^3.16.8","@vue/apollo-components":"^4.0.0","@vue/apollo-composable":"^4.0.1","@vue/apollo-option":"^4.0.0","axios":"^1.6.7","devextreme":"23.2.4","devextreme-vue":"23.2.4","docx":"^8.5.0","dotenv":"^16.3.1","encrypt-storage":"^2.12.22","exceljs":"^4.4.0","file-saver":"^2.0.5","graphql":"^16.8.1","graphql-tag":"^2.12.6","jspdf":"^2.5.1","jspdf-autotable":"^3.8.2","pinia":"^2.1.3","qs":"^6.11.2","uuid":"^9.0.1","vue":"^3.3.4","vue-html-to-paper":"^2.0.3","vue-router":"^4.2.2","vue-tailwind-datepicker":"^1.6.1","vue3-star-ratings":"^3.0.5"},"devDependencies":{"@rushstack/eslint-patch":"^1.5.1","@tailwindcss/aspect-ratio":"^0.4.2","@tailwindcss/container-queries":"^0.1.1","@tailwindcss/forms":"^0.5.7","@tailwindcss/typography":"^0.5.10","@tsconfig/node18":"^2.0.1","@types/file-saver":"^2.0.6","@types/jsdom":"^21.1.1","@types/node":"^18.16.17","@vitejs/plugin-vue":"^4.2.3","@vitejs/plugin-vue-jsx":"^3.0.1","@vue/eslint-config-prettier":"^8.0.0","@vue/eslint-config-typescript":"^12.0.0","@vue/test-utils":"^2.3.2","@vue/tsconfig":"^0.4.0","autoprefixer":"^10.4.14","eslint":"^8.39.0","eslint-plugin-vue":"^9.11.0","jsdom":"^22.1.0","npm-run-all":"^4.1.5","postcss":"^8.4.24","prettier":"^3.0.3","tailwindcss":"^3.3.2","typescript":"~5.2.2","vite":"^4.3.9","vitest":"^1.3.1","vue-tsc":"^2.0.5"}}
|
{"name":"eis","version":"0.0.193-vm","private":true,"scripts":{"dev":"vite","host":"vite --host","tailwind":"tailwindcss -i ./src/assets/css/tailwind.css -o ./src/assets/css/style.css --watch","build":"run-p type-check build-only","preview":"vite preview --host","test:unit":"vitest","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/","deploy":"node deploy.js","set-version":"node version.js","version":"echo $npm_package_version"},"dependencies":{"@apollo/client":"^3.8.10","@apollo/link-context":"^2.0.0-beta.3","@flavorly/vanilla-components":"^0.7.65","@headlessui/tailwindcss":"^0.2.0","@headlessui/vue":"^1.7.19","@heroicons/vue":"^2.0.18","@lottiefiles/lottie-player":"^2.0.4","@phosphor-icons/vue":"^2.1.6","@types/qs":"^6.9.12","@types/uuid":"^9.0.8","@types/vue-select":"^3.16.8","@vue/apollo-components":"^4.0.0","@vue/apollo-composable":"^4.0.1","@vue/apollo-option":"^4.0.0","axios":"^1.6.7","devextreme":"23.2.4","devextreme-vue":"23.2.4","docx":"^8.5.0","dotenv":"^16.3.1","encrypt-storage":"^2.12.22","exceljs":"^4.4.0","file-saver":"^2.0.5","graphql":"^16.8.1","graphql-tag":"^2.12.6","jspdf":"^2.5.1","jspdf-autotable":"^3.8.2","pinia":"^2.1.3","qs":"^6.11.2","uuid":"^9.0.1","vue":"^3.3.4","vue-html-to-paper":"^2.0.3","vue-router":"^4.2.2","vue-tailwind-datepicker":"^1.6.1","vue3-star-ratings":"^3.0.5"},"devDependencies":{"@rushstack/eslint-patch":"^1.5.1","@tailwindcss/aspect-ratio":"^0.4.2","@tailwindcss/container-queries":"^0.1.1","@tailwindcss/forms":"^0.5.7","@tailwindcss/typography":"^0.5.10","@tsconfig/node18":"^2.0.1","@types/file-saver":"^2.0.6","@types/jsdom":"^21.1.1","@types/node":"^18.16.17","@vitejs/plugin-vue":"^4.2.3","@vitejs/plugin-vue-jsx":"^3.0.1","@vue/eslint-config-prettier":"^8.0.0","@vue/eslint-config-typescript":"^12.0.0","@vue/test-utils":"^2.3.2","@vue/tsconfig":"^0.4.0","autoprefixer":"^10.4.14","eslint":"^8.39.0","eslint-plugin-vue":"^9.11.0","jsdom":"^22.1.0","npm-run-all":"^4.1.5","postcss":"^8.4.24","prettier":"^3.0.3","tailwindcss":"^3.3.2","typescript":"~5.2.2","vite":"^4.3.9","vitest":"^1.3.1","vue-tsc":"^2.0.5"}}
|
@ -1 +1 @@
|
|||||||
{"version":"0.0.187-vm"}
|
{"version":"0.0.193-vm"}
|
@ -5,7 +5,7 @@ import {
|
|||||||
selectedUid,
|
selectedUid,
|
||||||
selectedUp3Ulp,
|
selectedUp3Ulp,
|
||||||
fetchRegional,
|
fetchRegional,
|
||||||
fetchUid,
|
selectedRegional,
|
||||||
itemsUid,
|
itemsUid,
|
||||||
itemsUp3,
|
itemsUp3,
|
||||||
itemsUlp,
|
itemsUlp,
|
||||||
@ -67,11 +67,7 @@ watch(data, (value) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const setRegional = (value: any) => {
|
const setRegional = (value: any) => {
|
||||||
if (!presetUID.value) {
|
selectedRegional(value)
|
||||||
fetchUid()
|
|
||||||
selectedUid(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
data.value = {
|
data.value = {
|
||||||
...data.value,
|
...data.value,
|
||||||
regional: value
|
regional: value
|
||||||
@ -119,7 +115,6 @@ const setUp3 = (value: any) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const setUlp = (value: any) => {
|
const setUlp = (value: any) => {
|
||||||
selectedUp3Ulp(value)
|
|
||||||
data.value = {
|
data.value = {
|
||||||
...data.value,
|
...data.value,
|
||||||
ulp: value
|
ulp: value
|
||||||
@ -160,7 +155,6 @@ onMounted(() => {
|
|||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
fetchRegional()
|
fetchRegional()
|
||||||
fetchUid()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emit('update:filters', data.value)
|
emit('update:filters', data.value)
|
||||||
|
@ -132,6 +132,11 @@ const fetchDataPosko = async (up3: number) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const fetchRegional = async () => {
|
const fetchRegional = async () => {
|
||||||
|
itemsUid.value = []
|
||||||
|
itemsUp3.value = []
|
||||||
|
itemsPosko.value = []
|
||||||
|
itemsUlp.value = []
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const res = await getRegional()
|
const res = await getRegional()
|
||||||
itemsRegional.value = res.data.map((item: any) => ({
|
itemsRegional.value = res.data.map((item: any) => ({
|
||||||
@ -157,6 +162,13 @@ const formatWaktu = (durasiDetik: any): string => {
|
|||||||
return `${hari} - ${jam} : ${menit} : ${detik}`
|
return `${hari} - ${jam} : ${menit} : ${detik}`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const selectedRegional = (value: any) => {
|
||||||
|
fetchUidByRegional(value.id)
|
||||||
|
itemsUid.value = []
|
||||||
|
itemsUp3.value = []
|
||||||
|
itemsPosko.value = []
|
||||||
|
itemsUlp.value = []
|
||||||
|
}
|
||||||
|
|
||||||
const selectedUid = (value: any) => {
|
const selectedUid = (value: any) => {
|
||||||
fetchDataUp3(value.id)
|
fetchDataUp3(value.id)
|
||||||
@ -203,5 +215,6 @@ export {
|
|||||||
itemsUlp,
|
itemsUlp,
|
||||||
months,
|
months,
|
||||||
years,
|
years,
|
||||||
formatWaktu
|
formatWaktu,
|
||||||
|
selectedRegional
|
||||||
}
|
}
|
||||||
|
@ -1240,7 +1240,8 @@ const getDetail = async () => {
|
|||||||
idPosko: posko ? posko.id : 0,
|
idPosko: posko ? posko.id : 0,
|
||||||
idUid: uid ? uid.id : 0,
|
idUid: uid ? uid.id : 0,
|
||||||
idUp3: up3 ? up3.id : 0,
|
idUp3: up3 ? up3.id : 0,
|
||||||
personilYantek: isTotal.value ? '' : selected?.personil_yantek ? selected?.personil_yantek : ''
|
personilYantek: isTotal.value ? '' : selected?.personil_yantek ? selected?.personil_yantek : '',
|
||||||
|
userRegu: isTotal.value ? '' : selected?.user_regu ? selected?.user_regu : ''
|
||||||
}
|
}
|
||||||
|
|
||||||
loadingSubData.value = true
|
loadingSubData.value = true
|
||||||
|
@ -312,7 +312,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center justify-between w-full">
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
<h3 class="text-sm font-medium w-[170px] text-gray-800">Pembuat Laporan:</h3>
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">No Telp Pelapor:</h3>
|
||||||
<InputText :readonly="true" :value="dataSelected?.no_telp_pelapor" class-name="flex-1" />
|
<InputText :readonly="true" :value="dataSelected?.no_telp_pelapor" class-name="flex-1" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -327,7 +327,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center justify-between w-full">
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
<h3 class="text-sm font-medium w-[170px] text-gray-800">Posko:</h3>
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Unit Layanan Pelanggan:</h3>
|
||||||
<InputText :readonly="true" :value="dataSelected?.nama_posko_lama" class-name="flex-1" />
|
<InputText :readonly="true" :value="dataSelected?.nama_posko_lama" class-name="flex-1" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -232,11 +232,21 @@
|
|||||||
<InputText :readonly="true" :value="dataSelected.no_laporan" class-name="flex-1" />
|
<InputText :readonly="true" :value="dataSelected.no_laporan" class-name="flex-1" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Pembuat Laporan:</h3>
|
||||||
|
<InputText :readonly="true" :value="dataSelected.pembuat_laporan" class-name="flex-1" />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center justify-between w-full">
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
<h3 class="text-sm font-medium w-[170px] text-gray-800">Tgl Lapor:</h3>
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Tgl Lapor:</h3>
|
||||||
<InputText :readonly="true" :value="dataSelected?.waktu_lapor" class-name="flex-1" />
|
<InputText :readonly="true" :value="dataSelected?.waktu_lapor" class-name="flex-1" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Tgl Dialihkan:</h3>
|
||||||
|
<InputText :readonly="true" :value="dataSelected?.waktu_dialihkan" class-name="flex-1" />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center justify-between w-full">
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
<h3 class="text-sm font-medium w-[170px] text-gray-800">Tgl Response:</h3>
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Tgl Response:</h3>
|
||||||
<InputText :readonly="true" :value="dataSelected?.waktu_response" class-name="flex-1" />
|
<InputText :readonly="true" :value="dataSelected?.waktu_response" class-name="flex-1" />
|
||||||
@ -247,6 +257,19 @@
|
|||||||
<InputText :readonly="true" :value="dataSelected?.waktu_recovery" class-name="flex-1" />
|
<InputText :readonly="true" :value="dataSelected?.waktu_recovery" class-name="flex-1" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Recovery Time:</h3>
|
||||||
|
<InputText
|
||||||
|
:readonly="true"
|
||||||
|
class-name="flex-1"
|
||||||
|
:value="
|
||||||
|
parseInt(dataSelected?.durasi_recovery_time)
|
||||||
|
? formatWaktu(dataSelected?.durasi_recovery_time)
|
||||||
|
: '-'
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center justify-between w-full">
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
<h3 class="text-sm font-medium w-[170px] text-gray-800">Response Time:</h3>
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Response Time:</h3>
|
||||||
<InputText
|
<InputText
|
||||||
@ -261,16 +284,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center justify-between w-full">
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
<h3 class="text-sm font-medium w-[170px] text-gray-800">Recovery Time:</h3>
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Unit Asal :</h3>
|
||||||
<InputText
|
<InputText :readonly="true" :value="dataSelected?.nama_unit_lama" class-name="flex-1" />
|
||||||
:readonly="true"
|
</div>
|
||||||
class-name="flex-1"
|
|
||||||
:value="
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
parseInt(dataSelected?.durasi_recovery_time)
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Unit Tujuan :</h3>
|
||||||
? formatWaktu(dataSelected?.durasi_recovery_time)
|
<InputText :readonly="true" :value="dataSelected?.nama_unit_baru" class-name="flex-1" />
|
||||||
: '-'
|
|
||||||
"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center justify-between w-full">
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
|
@ -79,7 +79,7 @@
|
|||||||
<DxColumn
|
<DxColumn
|
||||||
:width="170"
|
:width="170"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-field="waktu_selesai"
|
data-field="waktu_recovery"
|
||||||
caption="Tgl Recovery"
|
caption="Tgl Recovery"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
cell-template="formatText"
|
cell-template="formatText"
|
||||||
@ -195,7 +195,7 @@
|
|||||||
|
|
||||||
<DetailDialog
|
<DetailDialog
|
||||||
:open="dialogDetail"
|
:open="dialogDetail"
|
||||||
:title="detailType == 'table' ? 'Daftar Lapor ULang' : 'Detail Gangguan'"
|
:title="detailType == 'table' ? 'Daftar Lapor Ulang' : 'Detail Keluhan'"
|
||||||
@on-close="closeDialog"
|
@on-close="closeDialog"
|
||||||
:full-width="detailType == 'table'"
|
:full-width="detailType == 'table'"
|
||||||
>
|
>
|
||||||
@ -217,7 +217,7 @@
|
|||||||
|
|
||||||
<div class="flex flex-row items-center justify-between w-full">
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
<h3 class="text-sm font-medium w-[170px] text-gray-800">Tanggal Recovery:</h3>
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Tanggal Recovery:</h3>
|
||||||
<InputText :readonly="true" :value="dataSelected?.waktu_selesai" class-name="flex-1" />
|
<InputText :readonly="true" :value="dataSelected?.waktu_recovery" class-name="flex-1" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center justify-between w-full">
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
|
@ -75,6 +75,14 @@
|
|||||||
css-class="custom-table-column !align-top"
|
css-class="custom-table-column !align-top"
|
||||||
cell-template="formatText"
|
cell-template="formatText"
|
||||||
/>
|
/>
|
||||||
|
<DxColumn
|
||||||
|
:width="170"
|
||||||
|
alignment="center"
|
||||||
|
data-field="nama_up3"
|
||||||
|
caption="UP3"
|
||||||
|
css-class="custom-table-column !align-top"
|
||||||
|
cell-template="formatText"
|
||||||
|
/>
|
||||||
<DxColumn
|
<DxColumn
|
||||||
:width="170"
|
:width="170"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
@ -136,11 +144,19 @@
|
|||||||
<DxColumn
|
<DxColumn
|
||||||
:width="150"
|
:width="150"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-field="nama_pelapor"
|
data-field="pembuat_laporan"
|
||||||
caption="Created By"
|
caption="Created By"
|
||||||
css-class="custom-table-column !align-top"
|
css-class="custom-table-column !align-top"
|
||||||
cell-template="formatText"
|
cell-template="formatText"
|
||||||
/>
|
/>
|
||||||
|
<DxColumn
|
||||||
|
:width="170"
|
||||||
|
alignment="center"
|
||||||
|
data-field="waktu_lapor"
|
||||||
|
caption="Tgl Lapor"
|
||||||
|
css-class="custom-table-column !align-top"
|
||||||
|
cell-template="formatText"
|
||||||
|
/>
|
||||||
<DxColumn
|
<DxColumn
|
||||||
:width="170"
|
:width="170"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
@ -215,7 +231,7 @@
|
|||||||
|
|
||||||
<div class="flex flex-row items-center justify-between w-full">
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
<h3 class="text-sm font-medium w-[170px] text-gray-800">Contact Center:</h3>
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Contact Center:</h3>
|
||||||
<InputText :readonly="true" :value="dataSelected?.media" class-name="flex-1" />
|
<InputText :readonly="true" :value="dataSelected?.nama_ulp" class-name="flex-1" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center justify-between w-full">
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
@ -294,6 +310,11 @@
|
|||||||
<h3 class="text-sm font-medium w-[170px] text-gray-800">Jumlah Lapor Ulang:</h3>
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Jumlah Lapor Ulang:</h3>
|
||||||
<InputText :readonly="true" :value="dataSelected?.jumlah_lapor" class-name="flex-1" />
|
<InputText :readonly="true" :value="dataSelected?.jumlah_lapor" class-name="flex-1" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-row items-center justify-between w-full">
|
||||||
|
<h3 class="text-sm font-medium w-[170px] text-gray-800">Sumber Lapor:</h3>
|
||||||
|
<InputText :readonly="true" :value="dataSelected?.media" class-name="flex-1" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</DetailDialog>
|
</DetailDialog>
|
||||||
</template>
|
</template>
|
||||||
|
@ -69,6 +69,15 @@
|
|||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
cell-template="formatNumber"
|
cell-template="formatNumber"
|
||||||
/>
|
/>
|
||||||
|
<DxColumn
|
||||||
|
:width="100"
|
||||||
|
alignment="center"
|
||||||
|
data-field="total"
|
||||||
|
data-type="number"
|
||||||
|
caption="Total"
|
||||||
|
css-class="custom-table-column"
|
||||||
|
cell-template="formatNumber"
|
||||||
|
/>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
|
|
||||||
<DxSummary>
|
<DxSummary>
|
||||||
|
@ -46,9 +46,9 @@
|
|||||||
:width="50"
|
:width="50"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-type="number"
|
data-type="number"
|
||||||
data-field="number"
|
|
||||||
caption="No"
|
caption="No"
|
||||||
cell-template="formatNumber"
|
cell-template="formatNumber"
|
||||||
|
:calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1"
|
||||||
/>
|
/>
|
||||||
<DxColumn
|
<DxColumn
|
||||||
:width="170"
|
:width="170"
|
||||||
@ -1175,14 +1175,7 @@ const filterData = async (params: any) => {
|
|||||||
await requestGraphQl(queries.keluhan.rekap.keluhanPerJenisKeluhan, query)
|
await requestGraphQl(queries.keluhan.rekap.keluhanPerJenisKeluhan, query)
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
if (result.data.data != undefined) {
|
if (result.data.data != undefined) {
|
||||||
data.value = [...result.data.data.rekapitulasiKeluhanPerJenisKeluhan]
|
data.value = result.data.data.rekapitulasiKeluhanPerJenisKeluhan
|
||||||
.sort((a: any, b: any) => a.tipe_keluhan.localeCompare(b.tipe_keluhan))
|
|
||||||
.map((item: any, index: number) => {
|
|
||||||
return {
|
|
||||||
...item,
|
|
||||||
number: index + 1
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
data.value = []
|
data.value = []
|
||||||
}
|
}
|
||||||
@ -1393,13 +1386,6 @@ onMounted(() => {
|
|||||||
total_diatas_sla_recovery: 2
|
total_diatas_sla_recovery: 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
.sort((a: any, b: any) => a.tipe_keluhan.localeCompare(b.tipe_keluhan))
|
|
||||||
.map((item: any, index: number) => {
|
|
||||||
return {
|
|
||||||
...item,
|
|
||||||
number: index + 1
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="flex flex-row items-center w-full mb-6 space-x-4">
|
<div class="flex flex-row items-center w-full mb-6 space-x-4">
|
||||||
<button
|
<button
|
||||||
@click="tab = 'gangguan'"
|
@click="changeTab('gangguan')"
|
||||||
type="button"
|
type="button"
|
||||||
class="px-1 py-4 text-sm"
|
class="px-1 py-4 text-sm"
|
||||||
:class="[
|
:class="[
|
||||||
@ -13,7 +13,7 @@
|
|||||||
Gangguan: Transaksi Aktif > SLA
|
Gangguan: Transaksi Aktif > SLA
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
@click="tab = 'keluhan'"
|
@click="changeTab('keluhan')"
|
||||||
type="button"
|
type="button"
|
||||||
class="px-1 py-4 text-sm"
|
class="px-1 py-4 text-sm"
|
||||||
:class="[
|
:class="[
|
||||||
@ -179,7 +179,6 @@
|
|||||||
cell-template="formatText"
|
cell-template="formatText"
|
||||||
/>
|
/>
|
||||||
<DxColumn
|
<DxColumn
|
||||||
v-if="tab == 'keluhan'"
|
|
||||||
:width="170"
|
:width="170"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-field="status_akhir"
|
data-field="status_akhir"
|
||||||
@ -188,7 +187,6 @@
|
|||||||
cell-template="formatText"
|
cell-template="formatText"
|
||||||
/>
|
/>
|
||||||
<DxColumn
|
<DxColumn
|
||||||
v-if="tab == 'keluhan'"
|
|
||||||
:width="170"
|
:width="170"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-field="durasi_time"
|
data-field="durasi_time"
|
||||||
@ -196,6 +194,14 @@
|
|||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
cell-template="formatTime"
|
cell-template="formatTime"
|
||||||
/>
|
/>
|
||||||
|
<DxColumn
|
||||||
|
:width="170"
|
||||||
|
alignment="center"
|
||||||
|
data-field="email_pelapor"
|
||||||
|
caption="Email"
|
||||||
|
css-class="custom-table-column"
|
||||||
|
cell-template="formatText"
|
||||||
|
/>
|
||||||
|
|
||||||
<template #formatText="{ data }">
|
<template #formatText="{ data }">
|
||||||
<p class="text-left">
|
<p class="text-left">
|
||||||
@ -274,6 +280,11 @@ const reportMeta = ref({
|
|||||||
periode: ''
|
periode: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const changeTab = (newTab: string) => {
|
||||||
|
tab.value = newTab
|
||||||
|
data.value = []
|
||||||
|
}
|
||||||
|
|
||||||
const formatMetaData = (reportMeta: any) => {
|
const formatMetaData = (reportMeta: any) => {
|
||||||
const periode = reportMeta.periode ? reportMeta.periode.split(' s/d ') : ''
|
const periode = reportMeta.periode ? reportMeta.periode.split(' s/d ') : ''
|
||||||
|
|
||||||
@ -305,31 +316,12 @@ const onExporting = (e: any) => {
|
|||||||
const worksheet = workbook.addWorksheet('Transaksi APKT')
|
const worksheet = workbook.addWorksheet('Transaksi APKT')
|
||||||
|
|
||||||
setHeaderStyle(worksheet, 1, 1, 'PT. PLN(Persero)')
|
setHeaderStyle(worksheet, 1, 1, 'PT. PLN(Persero)')
|
||||||
setHeaderStyle(
|
|
||||||
worksheet,
|
setHeaderStyle(worksheet, 3, 1, 'Transaksi APKT'.toUpperCase(), true)
|
||||||
2,
|
|
||||||
1,
|
|
||||||
`UNIT PLN : ${reportMeta.value.uid.id ? reportMeta.value.uid.name.toUpperCase() + ',' : ''} ${reportMeta.value.up3.id ? reportMeta.value.up3.name.toUpperCase() + ',' : ''} ${reportMeta.value.ulp.id ? reportMeta.value.ulp.name.toUpperCase() + ',' : ''}`
|
|
||||||
)
|
|
||||||
setHeaderStyle(
|
|
||||||
worksheet,
|
|
||||||
3,
|
|
||||||
1,
|
|
||||||
`STATUS : ${reportMeta.value.status ? reportMeta.value.status.name.toUpperCase() : ''}`
|
|
||||||
)
|
|
||||||
setHeaderStyle(
|
setHeaderStyle(
|
||||||
worksheet,
|
worksheet,
|
||||||
4,
|
4,
|
||||||
1,
|
1,
|
||||||
`SLA : ${reportMeta.value.sla ? reportMeta.value.sla.name.toUpperCase() : ''}`
|
|
||||||
)
|
|
||||||
setHeaderStyle(worksheet, 5, 1, `PENCARIAN : ${reportMeta.value.keyword.toUpperCase()}`)
|
|
||||||
|
|
||||||
setHeaderStyle(worksheet, 7, 1, 'Transaksi APKT'.toUpperCase(), true)
|
|
||||||
setHeaderStyle(
|
|
||||||
worksheet,
|
|
||||||
8,
|
|
||||||
1,
|
|
||||||
`PERIODE TANGGAL : ${meta.dateFromFormat} SD TGL ${meta.dateToFormat}`,
|
`PERIODE TANGGAL : ${meta.dateFromFormat} SD TGL ${meta.dateToFormat}`,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
@ -338,15 +330,12 @@ const onExporting = (e: any) => {
|
|||||||
worksheet.mergeCells('A2:M2')
|
worksheet.mergeCells('A2:M2')
|
||||||
worksheet.mergeCells('A3:M3')
|
worksheet.mergeCells('A3:M3')
|
||||||
worksheet.mergeCells('A4:M4')
|
worksheet.mergeCells('A4:M4')
|
||||||
worksheet.mergeCells('A5:M5')
|
|
||||||
worksheet.mergeCells('A7:M7')
|
|
||||||
worksheet.mergeCells('A8:M8')
|
|
||||||
|
|
||||||
exportToExcel({
|
exportToExcel({
|
||||||
component: e.component,
|
component: e.component,
|
||||||
worksheet,
|
worksheet,
|
||||||
autoFilterEnabled: true,
|
autoFilterEnabled: true,
|
||||||
topLeftCell: { row: 10, column: 1 },
|
topLeftCell: { row: 6, column: 1 },
|
||||||
loadPanel: {
|
loadPanel: {
|
||||||
enabled: false
|
enabled: false
|
||||||
}
|
}
|
||||||
|
@ -4449,6 +4449,7 @@ export const queries = {
|
|||||||
$idUid: Int!
|
$idUid: Int!
|
||||||
$idUp3: Int!
|
$idUp3: Int!
|
||||||
$personilYantek: String!
|
$personilYantek: String!
|
||||||
|
$userRegu: String!
|
||||||
) {
|
) {
|
||||||
detailCheckInCheckOutIndividu(
|
detailCheckInCheckOutIndividu(
|
||||||
dateFrom: $dateFrom
|
dateFrom: $dateFrom
|
||||||
@ -4457,6 +4458,7 @@ export const queries = {
|
|||||||
idUid: $idUid
|
idUid: $idUid
|
||||||
idUp3: $idUp3
|
idUp3: $idUp3
|
||||||
personilYantek: $personilYantek
|
personilYantek: $personilYantek
|
||||||
|
userRegu: $userRegu
|
||||||
) {
|
) {
|
||||||
id
|
id
|
||||||
id_uid
|
id_uid
|
||||||
@ -4512,6 +4514,7 @@ export const queries = {
|
|||||||
$idUid: Int!
|
$idUid: Int!
|
||||||
$idUp3: Int!
|
$idUp3: Int!
|
||||||
$personilYantek: String!
|
$personilYantek: String!
|
||||||
|
$userRegu: String!
|
||||||
) {
|
) {
|
||||||
detailCheckInCheckOutKhusus(
|
detailCheckInCheckOutKhusus(
|
||||||
dateFrom: $dateFrom
|
dateFrom: $dateFrom
|
||||||
@ -4520,6 +4523,7 @@ export const queries = {
|
|||||||
idUid: $idUid
|
idUid: $idUid
|
||||||
idUp3: $idUp3
|
idUp3: $idUp3
|
||||||
personilYantek: $personilYantek
|
personilYantek: $personilYantek
|
||||||
|
userRegu: $userRegu
|
||||||
) {
|
) {
|
||||||
id
|
id
|
||||||
nama_uid
|
nama_uid
|
||||||
|
Loading…
x
Reference in New Issue
Block a user