Merge branch 'dev-defuj' of https://github.com/defuj/eis into development
This commit is contained in:
commit
f3cd8adc85
@ -1,39 +0,0 @@
|
|||||||
// build-and-push.js
|
|
||||||
const { exec } = require('child_process')
|
|
||||||
|
|
||||||
function buildAndPush(version) {
|
|
||||||
const build_app = `npm run build`
|
|
||||||
const docker_image_tag = `defuj/apkt-eis:${version}`
|
|
||||||
const docker_account = {
|
|
||||||
username: 'defuj',
|
|
||||||
token: 'dckr_pat_U_kP14Ws82lJun9f-B4mRpJfjW0'
|
|
||||||
}
|
|
||||||
const docker_logout = `docker logout`
|
|
||||||
const docker_login = `docker login -u ${docker_account.username} -p ${docker_account.token}`
|
|
||||||
const docker_build = `docker build . -t ${docker_image_tag}`
|
|
||||||
const docker_push = `docker push ${docker_image_tag}`
|
|
||||||
|
|
||||||
const command = `${build_app} && ${docker_logout} && ${docker_login} && ${docker_build} && ${docker_push}`
|
|
||||||
|
|
||||||
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 <version>')
|
|
||||||
process.exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
buildAndPush(version)
|
|
70
deploy.js
Normal file
70
deploy.js
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
// build-and-push.js
|
||||||
|
const { exec, writeFile } = require('child_process')
|
||||||
|
const fs = require('fs')
|
||||||
|
|
||||||
|
function buildAndPush(version) {
|
||||||
|
var packageFile = require('./package.json')
|
||||||
|
packageFile = {
|
||||||
|
...packageFile,
|
||||||
|
version: version
|
||||||
|
}
|
||||||
|
const packageJsonPath = './package.json'
|
||||||
|
fs.writeFile(packageJsonPath, JSON.stringify(packageFile), (err) => {
|
||||||
|
if (err) {
|
||||||
|
console.error('Error writing package.json', err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
console.log('package.json updated successfully')
|
||||||
|
|
||||||
|
const versionData = {
|
||||||
|
version: version
|
||||||
|
}
|
||||||
|
const versionJsonPath = './public/version.json'
|
||||||
|
|
||||||
|
fs.writeFile(versionJsonPath, JSON.stringify(versionData), (err) => {
|
||||||
|
if (err) {
|
||||||
|
console.error('Error writing version.json', err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
console.log('version.json updated successfully')
|
||||||
|
|
||||||
|
const build_app = `npm run build`
|
||||||
|
const docker_image_tag = `defuj/apkt-eis:v${version}`
|
||||||
|
const docker_account = {
|
||||||
|
username: 'defuj',
|
||||||
|
token: 'dckr_pat_U_kP14Ws82lJun9f-B4mRpJfjW0'
|
||||||
|
}
|
||||||
|
const docker_logout = `docker logout`
|
||||||
|
const docker_login = `docker login -u ${docker_account.username} -p ${docker_account.token}`
|
||||||
|
const docker_build = `docker build . -t ${docker_image_tag}`
|
||||||
|
const docker_push = `docker push ${docker_image_tag}`
|
||||||
|
|
||||||
|
const command = `${build_app} && ${docker_logout} && ${docker_login} && ${docker_build} && ${docker_push}`
|
||||||
|
// const command = `${docker_logout} && ${docker_login}`
|
||||||
|
|
||||||
|
exec(command, (error, stdout, stderr) => {
|
||||||
|
if (error) {
|
||||||
|
console.error(`Error: ${error.message}`)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (stderr) {
|
||||||
|
console.error(`stderr: ${stderr}`)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
console.log(`stdout: ${stdout}`)
|
||||||
|
console.log(`Run Kubernetes Script:`)
|
||||||
|
console.log(`kubectl set image deployment/apkt-eis apkt-eis=defuj/apkt-eis:v${version}`)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ambil argumen versi dari command line
|
||||||
|
const version = process.argv[2]
|
||||||
|
|
||||||
|
if (!version) {
|
||||||
|
console.error('Usage: node deploy.js <version>')
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
buildAndPush(version)
|
84
package.json
84
package.json
@ -1,83 +1 @@
|
|||||||
{
|
{"name":"eis","version":"0.0.121-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"},"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.1",
|
|
||||||
"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/",
|
|
||||||
"build-push": "node build-push.js"
|
|
||||||
},
|
|
||||||
"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
public/version.json
Normal file
1
public/version.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":"0.0.121-vm"}
|
@ -27,12 +27,14 @@
|
|||||||
@update:data-sub="dataSub = $event"
|
@update:data-sub="dataSub = $event"
|
||||||
@update:loading-sub-data="loadingSubData = $event"
|
@update:loading-sub-data="loadingSubData = $event"
|
||||||
@update:marking="marking = $event"
|
@update:marking="marking = $event"
|
||||||
|
@update:data-group="dataByGroup = $event"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Anomali_LAPPGP_LPP
|
<Anomali_LAPPGP_LPP
|
||||||
:data="dataSub"
|
:data="dataSub"
|
||||||
:filters="filters"
|
:filters="filters"
|
||||||
:marking="marking"
|
:marking="marking"
|
||||||
|
:data-group="dataByGroup"
|
||||||
@update:loading-sub-data="loadingSubData = $event"
|
@update:loading-sub-data="loadingSubData = $event"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@ -40,9 +42,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onMounted, ref, watch } from 'vue'
|
import { onMounted, ref } from 'vue'
|
||||||
import { Anomali_LAPPGP_LPT, Anomali_LAPPGP_LPP } from '../.'
|
import { Anomali_LAPPGP_LPT, Anomali_LAPPGP_LPP } from '../.'
|
||||||
import { useQuery } from '@vue/apollo-composable'
|
|
||||||
import { Type4 } from '@/components/Form/FiltersType'
|
import { Type4 } from '@/components/Form/FiltersType'
|
||||||
import Filters from '@/components/Form/Filters.vue'
|
import Filters from '@/components/Form/Filters.vue'
|
||||||
import { queries, requestGraphQl } from '@/utils/api/api.graphql'
|
import { queries, requestGraphQl } from '@/utils/api/api.graphql'
|
||||||
@ -65,6 +66,13 @@ const grouping = ref<any[]>([
|
|||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
|
||||||
|
const dataByGroup = ref<any>(
|
||||||
|
{
|
||||||
|
data: '',
|
||||||
|
caption: 'Semua Unit'
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
const client = apolloClient()
|
const client = apolloClient()
|
||||||
provideApolloClient(client)
|
provideApolloClient(client)
|
||||||
const data = ref<any[]>([])
|
const data = ref<any[]>([])
|
||||||
@ -83,6 +91,10 @@ const filters = ref({
|
|||||||
up3: 0
|
up3: 0
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const modifyData = (data: any[]) => {
|
||||||
|
dataSub.value = data
|
||||||
|
}
|
||||||
|
|
||||||
const resetData = () => {
|
const resetData = () => {
|
||||||
data.value = []
|
data.value = []
|
||||||
dataSub.value = []
|
dataSub.value = []
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
<DxColumn
|
<DxColumn
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-field="nama_ulp"
|
data-field="nama_unit"
|
||||||
caption="Nama Unit"
|
caption="Nama Unit"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
cell-template="formatText"
|
cell-template="formatText"
|
||||||
@ -869,7 +869,8 @@ const props = defineProps({
|
|||||||
marking: {
|
marking: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 0
|
default: 0
|
||||||
}
|
},
|
||||||
|
dataGroup: Object as () => any
|
||||||
})
|
})
|
||||||
const filters = computed(() => props.filters)
|
const filters = computed(() => props.filters)
|
||||||
const emit = defineEmits(['update:loadingSubData'])
|
const emit = defineEmits(['update:loadingSubData'])
|
||||||
@ -906,22 +907,42 @@ const getDetail = async () => {
|
|||||||
const dateValue = filters.value.periode.split(' s/d ')
|
const dateValue = filters.value.periode.split(' s/d ')
|
||||||
|
|
||||||
const selected = dataSelected.value
|
const selected = dataSelected.value
|
||||||
const query = {
|
var query = {
|
||||||
dateFrom: dateValue[0]
|
dateFrom: dateValue[0]
|
||||||
? dateValue[0].split('-').reverse().join('-')
|
? dateValue[0].split('-').reverse().join('-')
|
||||||
: new Date().toISOString().slice(0, 10),
|
: new Date().toISOString().slice(0, 10),
|
||||||
dateTo: dateValue[1]
|
dateTo: dateValue[1]
|
||||||
? dateValue[1].split('-').reverse().join('-')
|
? dateValue[1].split('-').reverse().join('-')
|
||||||
: new Date().toISOString().slice(0, 10),
|
: new Date().toISOString().slice(0, 10),
|
||||||
idUlp: selected?.id_ulp ? selected?.id_ulp : 0,
|
idUlp: 0,
|
||||||
idUid: selected?.id_uid ? selected?.id_uid : 0,
|
idUid: 0,
|
||||||
idUp3: selected?.id_up3 ? selected?.id_up3 : 0,
|
idUp3: 0,
|
||||||
namaRegional: selected?.nama_regional ? selected?.nama_regional : '',
|
namaRegional: selected?.nama_regional ? selected?.nama_regional : '',
|
||||||
media: parameterRequest.value?.media,
|
media: parameterRequest.value?.media,
|
||||||
isMarking: props.marking,
|
isMarking: props.marking,
|
||||||
idPetugas: selected?.id_regu ? selected?.id_regu : 0
|
idPetugas: selected?.id_regu ? selected?.id_regu : 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (props.dataGroup.data == 'nama_uid') {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUid: selected?.id_uid ? selected?.id_uid : 0
|
||||||
|
}
|
||||||
|
} else if (props.dataGroup.data == 'nama_up3') {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUid: selected?.id_uid ? selected?.id_uid : 0,
|
||||||
|
idUp3: selected?.id_up3 ? selected?.id_up3 : 0
|
||||||
|
}
|
||||||
|
} else if (props.dataGroup.data == 'nama_ulp') {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUid: selected?.id_uid ? selected?.id_uid : 0,
|
||||||
|
idUp3: selected?.id_up3 ? selected?.id_up3 : 0,
|
||||||
|
idUlp: selected?.id_ulp ? selected?.id_ulp : 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
loadingSubData.value = true
|
loadingSubData.value = true
|
||||||
emit('update:loadingSubData', loadingSubData.value)
|
emit('update:loadingSubData', loadingSubData.value)
|
||||||
await requestGraphQl(
|
await requestGraphQl(
|
||||||
|
@ -349,7 +349,7 @@
|
|||||||
column="anomali_pln_mobile_marking"
|
column="anomali_pln_mobile_marking"
|
||||||
name="anomali_pln_mobile_marking"
|
name="anomali_pln_mobile_marking"
|
||||||
summary-type="custom"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
@ -358,7 +358,7 @@
|
|||||||
column="anomali_pln_mobile_non_marking"
|
column="anomali_pln_mobile_non_marking"
|
||||||
name="anomali_pln_mobile_non_marking"
|
name="anomali_pln_mobile_non_marking"
|
||||||
summary-type="custom"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
@ -367,7 +367,7 @@
|
|||||||
column="anomali_cc123_marking"
|
column="anomali_cc123_marking"
|
||||||
name="anomali_cc123_marking"
|
name="anomali_cc123_marking"
|
||||||
summary-type="custom"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
@ -376,7 +376,7 @@
|
|||||||
column="anomali_cc123_non_marking"
|
column="anomali_cc123_non_marking"
|
||||||
name="anomali_cc123_non_marking"
|
name="anomali_cc123_non_marking"
|
||||||
summary-type="custom"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
@ -385,7 +385,7 @@
|
|||||||
column="total_anomali_marking"
|
column="total_anomali_marking"
|
||||||
name="total_anomali_marking"
|
name="total_anomali_marking"
|
||||||
summary-type="custom"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
@ -394,7 +394,7 @@
|
|||||||
column="total_anomali_non_marking"
|
column="total_anomali_non_marking"
|
||||||
name="total_anomali_non_marking"
|
name="total_anomali_non_marking"
|
||||||
summary-type="custom"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
@ -506,7 +506,12 @@ const props = defineProps({
|
|||||||
},
|
},
|
||||||
loadingData: Boolean
|
loadingData: Boolean
|
||||||
})
|
})
|
||||||
const emit = defineEmits(['update:dataSub', 'update:loadingSubData', 'update:marking'])
|
const emit = defineEmits([
|
||||||
|
'update:dataSub',
|
||||||
|
'update:loadingSubData',
|
||||||
|
'update:marking',
|
||||||
|
'update:data-group'
|
||||||
|
])
|
||||||
const filters = ref<any>(computed(() => props.filters))
|
const filters = ref<any>(computed(() => props.filters))
|
||||||
const data = computed(() => props.data)
|
const data = computed(() => props.data)
|
||||||
const dataSub = ref<any[]>([])
|
const dataSub = ref<any[]>([])
|
||||||
@ -736,7 +741,7 @@ const getDetail = async () => {
|
|||||||
const dateValue = filters.value.periode.split(' s/d ')
|
const dateValue = filters.value.periode.split(' s/d ')
|
||||||
|
|
||||||
const selected = dataSelected.value
|
const selected = dataSelected.value
|
||||||
let query = {
|
var query = {
|
||||||
dateFrom: dateValue[0]
|
dateFrom: dateValue[0]
|
||||||
? dateValue[0].split('-').reverse().join('-')
|
? dateValue[0].split('-').reverse().join('-')
|
||||||
: new Date().toISOString().slice(0, 10),
|
: new Date().toISOString().slice(0, 10),
|
||||||
@ -768,12 +773,7 @@ const getDetail = async () => {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
query = {
|
query = {
|
||||||
dateFrom: dateValue[0]
|
...query,
|
||||||
? 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,
|
idUlp: selected?.id_ulp ? selected?.id_ulp : 0,
|
||||||
idUid: selected?.id_uid ? selected?.id_uid : 0,
|
idUid: selected?.id_uid ? selected?.id_uid : 0,
|
||||||
idUp3: selected?.id_up3 ? selected?.id_up3 : 0,
|
idUp3: selected?.id_up3 ? selected?.id_up3 : 0,
|
||||||
@ -806,7 +806,18 @@ const getDetail = async () => {
|
|||||||
} else {
|
} else {
|
||||||
dataSub.value = []
|
dataSub.value = []
|
||||||
}
|
}
|
||||||
|
dataSub.value = dataSub.value.map((e: any) => ({
|
||||||
|
...e,
|
||||||
|
nama_unit: groupDialog.value
|
||||||
|
? props.grouping[groupIndex.value].data == 'nama_uid'
|
||||||
|
? e.nama_uid
|
||||||
|
: props.grouping[groupIndex.value].data == 'nama_up3'
|
||||||
|
? e.nama_up3
|
||||||
|
: 'Semua Unit'
|
||||||
|
: e.nama_ulp
|
||||||
|
}))
|
||||||
emit('update:dataSub', dataSub.value)
|
emit('update:dataSub', dataSub.value)
|
||||||
|
emit('update:data-group', props.grouping[groupIndex.value])
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
:data="data"
|
:data="data"
|
||||||
:filters="filters"
|
:filters="filters"
|
||||||
:loading-data="loadingData"
|
:loading-data="loadingData"
|
||||||
|
:grouping="grouping"
|
||||||
@update:loading-sub-data="loadingData = $event"
|
@update:loading-sub-data="loadingData = $event"
|
||||||
/>
|
/>
|
||||||
<Anomali_LAPPGU_LPP :data="dataSecond" :filters="filters" />
|
<Anomali_LAPPGU_LPP :data="dataSecond" :filters="filters" />
|
||||||
@ -60,11 +61,66 @@ const resetData = () => {
|
|||||||
dataSecond.value = []
|
dataSecond.value = []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const grouping = ref<any[]>([
|
||||||
|
{
|
||||||
|
data: '',
|
||||||
|
caption: 'Semua Unit'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_uid',
|
||||||
|
caption: 'UID'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_up3',
|
||||||
|
caption: 'UP3'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
const filterData = async (params: any) => {
|
const filterData = async (params: any) => {
|
||||||
resetData()
|
resetData()
|
||||||
const { ulp, uid, up3, jenisLaporan } = params
|
const { ulp, uid, up3, jenisLaporan } = params
|
||||||
console.table('LAPPGU', jenisLaporan)
|
console.table('LAPPGU', jenisLaporan)
|
||||||
|
|
||||||
|
var groupList: any[] = [
|
||||||
|
{
|
||||||
|
data: '',
|
||||||
|
caption: 'Semua Unit'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_uid',
|
||||||
|
caption: 'UID'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_up3',
|
||||||
|
caption: 'UP3'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
if (uid?.id != 0) {
|
||||||
|
groupList.forEach((item, index) => {
|
||||||
|
if (item.caption == 'Semua Unit') {
|
||||||
|
groupList.splice(index, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (up3?.id != 0) {
|
||||||
|
groupList.forEach((item, index) => {
|
||||||
|
if (item.caption == 'UID') {
|
||||||
|
groupList.splice(index, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (ulp?.id != 0) {
|
||||||
|
groupList.forEach((item, index) => {
|
||||||
|
if (item.caption == 'UP3') {
|
||||||
|
groupList.splice(index, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
grouping.value = groupList
|
||||||
|
|
||||||
const dateValue = params.periode.split(' s/d ')
|
const dateValue = params.periode.split(' s/d ')
|
||||||
const query = {
|
const query = {
|
||||||
dateFrom: dateValue[0]
|
dateFrom: dateValue[0]
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<DxDataGrid
|
<DxDataGrid
|
||||||
|
@cell-click="onCellClicked"
|
||||||
ref="dataGridRef"
|
ref="dataGridRef"
|
||||||
:allow-column-reordering="true"
|
:allow-column-reordering="true"
|
||||||
class="max-h-[calc(100vh-140px)] mb-10"
|
class="max-h-[calc(100vh-140px)] mb-10"
|
||||||
@ -21,7 +22,7 @@
|
|||||||
column-resizing-mode="widget"
|
column-resizing-mode="widget"
|
||||||
:word-wrap-enabled="true"
|
:word-wrap-enabled="true"
|
||||||
>
|
>
|
||||||
<DxGrouping expand-mode="rowClick" :auto-expand-all="false" />
|
<DxGrouping :auto-expand-all="false" />
|
||||||
<DxSelection mode="single" />
|
<DxSelection mode="single" />
|
||||||
<DxPaging :enabled="false" />
|
<DxPaging :enabled="false" />
|
||||||
<DxScrolling column-rendering-mode="virtual" mode="virtual" />
|
<DxScrolling column-rendering-mode="virtual" mode="virtual" />
|
||||||
@ -44,35 +45,15 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<DxColumn
|
<DxColumn
|
||||||
|
v-if="grouping.length > 0"
|
||||||
|
v-for="(group, index) in grouping"
|
||||||
|
:width="150"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
:min-width="170"
|
:data-field="group.data"
|
||||||
data-type="text"
|
:caption="group.caption"
|
||||||
data-field=""
|
|
||||||
caption="Semua Unit"
|
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
:group-index="0"
|
cell-template="formatText"
|
||||||
/>
|
:group-index="index"
|
||||||
<DxColumn
|
|
||||||
alignment="center"
|
|
||||||
:min-width="170"
|
|
||||||
data-type="text"
|
|
||||||
data-field="id_uid"
|
|
||||||
caption="UID"
|
|
||||||
css-class="custom-table-column"
|
|
||||||
:group-index="1"
|
|
||||||
name="namaUID"
|
|
||||||
:calculate-group-value="(rowData: any) => rowData.nama_uid"
|
|
||||||
/>
|
|
||||||
<DxColumn
|
|
||||||
alignment="center"
|
|
||||||
:min-width="170"
|
|
||||||
data-type="text"
|
|
||||||
data-field="id_up3"
|
|
||||||
caption="UP3"
|
|
||||||
css-class="custom-table-column"
|
|
||||||
:group-index="1"
|
|
||||||
name="namaUID"
|
|
||||||
:calculate-group-value="(rowData: any) => rowData.nama_up3"
|
|
||||||
/>
|
/>
|
||||||
<DxColumn alignment="center" caption="Total WO" css-class="custom-table-column">
|
<DxColumn alignment="center" caption="Total WO" css-class="custom-table-column">
|
||||||
<DxColumn alignment="center" caption="CC 123" css-class="custom-table-column">
|
<DxColumn alignment="center" caption="CC 123" css-class="custom-table-column">
|
||||||
@ -400,12 +381,13 @@
|
|||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<DxSummary>
|
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="wo_cc123"
|
column="wo_cc123"
|
||||||
summary-type="sum"
|
name="wo_cc123"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -413,7 +395,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="wo_pln_mobile"
|
column="wo_pln_mobile"
|
||||||
summary-type="sum"
|
name="wo_pln_mobile"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -421,7 +404,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="wo_loket"
|
column="wo_loket"
|
||||||
summary-type="sum"
|
name="wo_loket"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -429,7 +413,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="wo_lainnya"
|
column="wo_lainnya"
|
||||||
summary-type="sum"
|
summary-type="custom"
|
||||||
|
name="wo_lainnya"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -437,7 +422,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="wo_total"
|
column="wo_total"
|
||||||
summary-type="sum"
|
name="wo_total"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -445,55 +431,62 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="anomali_pln_mobile_marking"
|
column="anomali_pln_mobile_marking"
|
||||||
summary-type="sum"
|
name="anomali_pln_mobile_marking"
|
||||||
css-class="!text-right"
|
summary-type="custom"
|
||||||
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="anomali_pln_mobile_non_marking"
|
column="anomali_pln_mobile_non_marking"
|
||||||
summary-type="sum"
|
name="anomali_pln_mobile_non_marking"
|
||||||
css-class="!text-right"
|
summary-type="custom"
|
||||||
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="anomali_cc123_marking"
|
column="anomali_cc123_marking"
|
||||||
summary-type="sum"
|
name="anomali_cc123_marking"
|
||||||
css-class="!text-right"
|
summary-type="custom"
|
||||||
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="anomali_cc123_non_marking"
|
column="anomali_cc123_non_marking"
|
||||||
summary-type="sum"
|
name="anomali_cc123_non_marking"
|
||||||
css-class="!text-right"
|
summary-type="custom"
|
||||||
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="total_anomali_marking"
|
column="total_anomali_marking"
|
||||||
summary-type="sum"
|
name="total_anomali_marking"
|
||||||
css-class="!text-right"
|
summary-type="custom"
|
||||||
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="total_anomali_non_marking"
|
column="total_anomali_non_marking"
|
||||||
summary-type="sum"
|
name="total_anomali_non_marking"
|
||||||
css-class="!text-right"
|
summary-type="custom"
|
||||||
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="persen_anomali_pln_mobile_marking"
|
column="persen_anomali_pln_mobile_marking"
|
||||||
summary-type="avg"
|
name="persen_anomali_pln_mobile_marking"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -501,7 +494,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="persen_anomali_pln_mobile_non_marking"
|
column="persen_anomali_pln_mobile_non_marking"
|
||||||
summary-type="avg"
|
name="persen_anomali_pln_mobile_non_marking"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -509,7 +503,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="persen_anomali_cc123_marking"
|
column="persen_anomali_cc123_marking"
|
||||||
summary-type="avg"
|
name="persen_anomali_cc123_marking"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -517,7 +512,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="persen_anomali_cc123_non_marking"
|
column="persen_anomali_cc123_non_marking"
|
||||||
summary-type="avg"
|
name="persen_anomali_cc123_non_marking"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -525,7 +521,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="persen_anomali_marking"
|
column="persen_anomali_marking"
|
||||||
summary-type="avg"
|
name="persen_anomali_marking"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -533,7 +530,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="persen_anomali_non_marking"
|
column="persen_anomali_non_marking"
|
||||||
summary-type="avg"
|
name="persen_anomali_non_marking"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -1077,6 +1075,7 @@ import {
|
|||||||
exportDetailToDOCX
|
exportDetailToDOCX
|
||||||
} from '@/report/Anomali/Gangguan/Anomali_LAPPGU_LPT'
|
} from '@/report/Anomali/Gangguan/Anomali_LAPPGU_LPT'
|
||||||
import BufferDialog from '@/components/Dialogs/BufferDialog.vue'
|
import BufferDialog from '@/components/Dialogs/BufferDialog.vue'
|
||||||
|
import { getDataRowGroup } from '@/utils/helper'
|
||||||
|
|
||||||
const position = { of: '#data' }
|
const position = { of: '#data' }
|
||||||
const showIndicator = ref(true)
|
const showIndicator = ref(true)
|
||||||
@ -1085,7 +1084,11 @@ const showPane = ref(true)
|
|||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
data: Array as () => any[],
|
data: Array as () => any[],
|
||||||
filters: Object as () => any,
|
filters: Object as () => any,
|
||||||
loadingData: Boolean
|
loadingData: Boolean,
|
||||||
|
grouping: {
|
||||||
|
type: Array as () => any[],
|
||||||
|
default: []
|
||||||
|
}
|
||||||
})
|
})
|
||||||
const emit = defineEmits(['update:loadingSubData'])
|
const emit = defineEmits(['update:loadingSubData'])
|
||||||
const filters = ref<any>(computed(() => props.filters))
|
const filters = ref<any>(computed(() => props.filters))
|
||||||
@ -1102,6 +1105,9 @@ const parameterRequest = ref<any>({
|
|||||||
media: null,
|
media: null,
|
||||||
marking: null
|
marking: null
|
||||||
})
|
})
|
||||||
|
const groupDialog = ref(false)
|
||||||
|
const groupData = ref<any>(null)
|
||||||
|
const groupIndex = ref(0)
|
||||||
|
|
||||||
const setParameterRequest = (data: any) => {
|
const setParameterRequest = (data: any) => {
|
||||||
parameterRequest.value = data
|
parameterRequest.value = data
|
||||||
@ -1113,6 +1119,234 @@ const setParameterRequest = (data: any) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const onCellClicked = (e: any) => {
|
||||||
|
if (e.rowType == 'group') {
|
||||||
|
groupDialog.value = true
|
||||||
|
groupIndex.value = e.row.groupIndex
|
||||||
|
|
||||||
|
if (e.column.dataField == 'anomali_pln_mobile_marking') {
|
||||||
|
setParameterRequest({ media: 'PLN Mobile', marking: 1 })
|
||||||
|
} else if (e.column.dataField == 'anomali_pln_mobile_non_marking') {
|
||||||
|
setParameterRequest({ media: 'PLN Mobile', marking: 2 })
|
||||||
|
} else if (e.column.dataField == 'anomali_cc123_marking') {
|
||||||
|
setParameterRequest({ media: 'Call PLN 123', marking: 1 })
|
||||||
|
} else if (e.column.dataField == 'anomali_cc123_non_marking') {
|
||||||
|
setParameterRequest({ media: 'Call PLN 123', marking: 2 })
|
||||||
|
} else if (e.column.dataField == 'total_anomali_marking') {
|
||||||
|
setParameterRequest({ media: '', marking: 1 })
|
||||||
|
} else if (e.column.dataField == 'total_anomali_non_marking') {
|
||||||
|
setParameterRequest({ media: '', marking: 2 })
|
||||||
|
} else {
|
||||||
|
setParameterRequest({ media: null, marking: null })
|
||||||
|
}
|
||||||
|
groupData.value = getDataRowGroup(e.data)
|
||||||
|
showDetail()
|
||||||
|
} else {
|
||||||
|
groupDialog.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let wo_cc123 = 0
|
||||||
|
let wo_pln_mobile = 0
|
||||||
|
let wo_loket = 0
|
||||||
|
let wo_lainnya = 0
|
||||||
|
let wo_total = 0
|
||||||
|
let anomali_pln_mobile_marking = 0
|
||||||
|
let anomali_pln_mobile_non_marking = 0
|
||||||
|
let anomali_cc123_marking = 0
|
||||||
|
let anomali_cc123_non_marking = 0
|
||||||
|
let total_anomali_marking = 0
|
||||||
|
let total_anomali_non_marking = 0
|
||||||
|
let persen_anomali_pln_mobile_marking = 0
|
||||||
|
let persen_anomali_pln_mobile_non_marking = 0
|
||||||
|
let persen_anomali_cc123_marking = 0
|
||||||
|
let persen_anomali_cc123_non_marking = 0
|
||||||
|
let persen_anomali_marking = 0
|
||||||
|
let persen_anomali_non_marking = 0
|
||||||
|
|
||||||
|
const calculateCustomSummary = (options: any) => {
|
||||||
|
if (options.name === 'wo_cc123') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
wo_cc123 += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = wo_cc123
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'wo_pln_mobile') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
wo_pln_mobile += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = wo_pln_mobile
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'wo_loket') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
wo_loket += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = wo_loket
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'wo_lainnya') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
wo_lainnya += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = wo_lainnya
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'wo_total') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
wo_cc123 = 0
|
||||||
|
wo_pln_mobile = 0
|
||||||
|
wo_loket = 0
|
||||||
|
wo_lainnya = 0
|
||||||
|
} else if (options.summaryProcess === 'calculate') {
|
||||||
|
wo_total = wo_cc123 + wo_pln_mobile + wo_loket + wo_lainnya
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = wo_cc123 + wo_pln_mobile + wo_loket + wo_lainnya
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'anomali_pln_mobile_marking') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
anomali_pln_mobile_marking += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = anomali_pln_mobile_marking
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'anomali_pln_mobile_non_marking') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
anomali_pln_mobile_non_marking += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = anomali_pln_mobile_non_marking
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'anomali_cc123_marking') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
anomali_cc123_marking += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = anomali_cc123_marking
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'anomali_cc123_non_marking') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
anomali_cc123_non_marking += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = anomali_cc123_non_marking
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'total_anomali_marking') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
anomali_pln_mobile_marking = 0
|
||||||
|
anomali_cc123_marking = 0
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = anomali_pln_mobile_marking + anomali_cc123_marking
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'total_anomali_non_marking') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
anomali_pln_mobile_non_marking = 0
|
||||||
|
anomali_cc123_non_marking = 0
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = anomali_pln_mobile_non_marking + anomali_cc123_non_marking
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'persen_anomali_pln_mobile_marking') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
anomali_pln_mobile_marking = 0
|
||||||
|
wo_total = 0
|
||||||
|
} else if (options.summaryProcess === 'calculate') {
|
||||||
|
persen_anomali_pln_mobile_marking =
|
||||||
|
!isFinite(anomali_pln_mobile_marking / wo_total) || anomali_pln_mobile_marking == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_pln_mobile_marking / wo_total) * 100
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue =
|
||||||
|
!isFinite(anomali_pln_mobile_marking / wo_total) || anomali_pln_mobile_marking == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_pln_mobile_marking / wo_total) * 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'persen_anomali_pln_mobile_non_marking') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
anomali_pln_mobile_non_marking = 0
|
||||||
|
wo_total = 0
|
||||||
|
} else if (options.summaryProcess === 'calculate') {
|
||||||
|
persen_anomali_pln_mobile_non_marking =
|
||||||
|
!isFinite(anomali_pln_mobile_non_marking / wo_total) || anomali_pln_mobile_non_marking == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_pln_mobile_non_marking / wo_total) * 100
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue =
|
||||||
|
!isFinite(anomali_pln_mobile_non_marking / wo_total) || anomali_pln_mobile_non_marking == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_pln_mobile_non_marking / wo_total) * 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'persen_anomali_cc123_marking') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
anomali_cc123_marking = 0
|
||||||
|
wo_total = 0
|
||||||
|
} else if (options.summaryProcess === 'calculate') {
|
||||||
|
persen_anomali_cc123_marking =
|
||||||
|
!isFinite(anomali_cc123_marking / wo_total) || anomali_cc123_marking == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_cc123_marking / wo_total) * 100
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue =
|
||||||
|
!isFinite(anomali_cc123_marking / wo_total) || anomali_cc123_marking == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_cc123_marking / wo_total) * 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'persen_anomali_cc123_non_marking') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
anomali_cc123_non_marking = 0
|
||||||
|
wo_total = 0
|
||||||
|
} else if (options.summaryProcess === 'calculate') {
|
||||||
|
persen_anomali_cc123_non_marking =
|
||||||
|
!isFinite(anomali_cc123_non_marking / wo_total) || anomali_cc123_non_marking == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_cc123_non_marking / wo_total) * 100
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue =
|
||||||
|
!isFinite(anomali_cc123_non_marking / wo_total) || anomali_cc123_non_marking == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_cc123_non_marking / wo_total) * 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'persen_anomali_marking') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
persen_anomali_pln_mobile_marking = 0
|
||||||
|
persen_anomali_cc123_marking = 0
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = persen_anomali_pln_mobile_marking + persen_anomali_cc123_marking
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'persen_anomali_non_marking') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
persen_anomali_cc123_non_marking = 0
|
||||||
|
persen_anomali_pln_mobile_non_marking = 0
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = persen_anomali_pln_mobile_non_marking + persen_anomali_cc123_non_marking
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const resetData = () => {
|
const resetData = () => {
|
||||||
dataSub.value = []
|
dataSub.value = []
|
||||||
dataSubSelected.value = null
|
dataSubSelected.value = null
|
||||||
@ -1124,21 +1358,53 @@ const getDetail = async () => {
|
|||||||
|
|
||||||
const dateValue = periode.split(' s/d ')
|
const dateValue = periode.split(' s/d ')
|
||||||
const selected = dataSelected.value
|
const selected = dataSelected.value
|
||||||
const query = {
|
let query = {
|
||||||
dateFrom: dateValue[0]
|
dateFrom: dateValue[0]
|
||||||
? dateValue[0].split('-').reverse().join('-')
|
? dateValue[0].split('-').reverse().join('-')
|
||||||
: new Date().toISOString().slice(0, 10),
|
: new Date().toISOString().slice(0, 10),
|
||||||
dateTo: dateValue[1]
|
dateTo: dateValue[1]
|
||||||
? dateValue[1].split('-').reverse().join('-')
|
? dateValue[1].split('-').reverse().join('-')
|
||||||
: new Date().toISOString().slice(0, 10),
|
: new Date().toISOString().slice(0, 10),
|
||||||
idUlp: selected?.id_ulp ? selected?.id_ulp : 0,
|
idUlp: 0,
|
||||||
idUid: selected?.id_uid ? selected?.id_uid : 0,
|
idUid: 0,
|
||||||
idUp3: selected?.id_up3 ? selected?.id_up3 : 0,
|
idUp3: 0,
|
||||||
namaRegional: '',
|
namaRegional: '',
|
||||||
media: parameterRequest.value?.media,
|
media: parameterRequest.value?.media,
|
||||||
isMarking: parameterRequest.value?.marking
|
isMarking: parameterRequest.value?.marking
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (groupDialog.value) {
|
||||||
|
if (props.grouping[groupIndex.value].data == 'nama_uid') {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUid: groupData.value?.id_uid ? groupData.value?.id_uid : 0,
|
||||||
|
namaRegional: groupData.value?.nama_regional ? groupData.value?.nama_regional : ''
|
||||||
|
}
|
||||||
|
} else if (props.grouping[groupIndex.value].data == 'nama_up3') {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUid: groupData.value?.id_uid ? groupData.value?.id_uid : 0,
|
||||||
|
idUp3: groupData.value?.id_up3 ? groupData.value?.id_up3 : 0,
|
||||||
|
namaRegional: groupData.value?.nama_regional ? groupData.value?.nama_regional : ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
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,
|
||||||
|
namaRegional: selected?.nama_regional ? selected?.nama_regional : '',
|
||||||
|
media: parameterRequest.value?.media,
|
||||||
|
isMarking: parameterRequest.value?.marking
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
loadingSubData.value = true
|
loadingSubData.value = true
|
||||||
emit('update:loadingSubData', true)
|
emit('update:loadingSubData', true)
|
||||||
await requestGraphQl(
|
await requestGraphQl(
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
/>
|
/>
|
||||||
</Filters>
|
</Filters>
|
||||||
|
|
||||||
<Anomali_LAPPKU_LPT :data="data" :loading="loadingData" :filters="filters" />
|
<Anomali_LAPPKU_LPT :data="data" :loading="loadingData" :grouping="grouping" :filters="filters" />
|
||||||
<Anomali_LAPPKU_LPP :data="dataSecond" :filters="filters" />
|
<Anomali_LAPPKU_LPP :data="dataSecond" :filters="filters" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -43,6 +43,21 @@ const filters = ref({
|
|||||||
up3: 0
|
up3: 0
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const grouping = ref<any[]>([
|
||||||
|
{
|
||||||
|
data: '',
|
||||||
|
caption: 'Semua Unit'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_uid',
|
||||||
|
caption: 'UID'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_up3',
|
||||||
|
caption: 'UP3'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
const resetData = () => {
|
const resetData = () => {
|
||||||
data.value = []
|
data.value = []
|
||||||
dataSecond.value = []
|
dataSecond.value = []
|
||||||
@ -53,6 +68,46 @@ const filterData = async (params: any) => {
|
|||||||
const { ulp, uid, up3, jenisLaporan } = params
|
const { ulp, uid, up3, jenisLaporan } = params
|
||||||
console.table('LAPPGU', jenisLaporan)
|
console.table('LAPPGU', jenisLaporan)
|
||||||
|
|
||||||
|
var groupList: any[] = [
|
||||||
|
{
|
||||||
|
data: '',
|
||||||
|
caption: 'Semua Unit'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_uid',
|
||||||
|
caption: 'UID'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_up3',
|
||||||
|
caption: 'UP3'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
if (uid?.id != 0) {
|
||||||
|
groupList.forEach((item, index) => {
|
||||||
|
if (item.caption == 'Semua Unit') {
|
||||||
|
groupList.splice(index, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (up3?.id != 0) {
|
||||||
|
groupList.forEach((item, index) => {
|
||||||
|
if (item.caption == 'UID') {
|
||||||
|
groupList.splice(index, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (ulp?.id != 0) {
|
||||||
|
groupList.forEach((item, index) => {
|
||||||
|
if (item.caption == 'UP3') {
|
||||||
|
groupList.splice(index, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
grouping.value = groupList
|
||||||
|
|
||||||
const dateValue = params.periode.split(' s/d ')
|
const dateValue = params.periode.split(' s/d ')
|
||||||
const query = {
|
const query = {
|
||||||
dateFrom: dateValue[0]
|
dateFrom: dateValue[0]
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
<h1 class="text-xl font-medium md:text-2xl text-dark">Laporan Pengaduan Total</h1>
|
<h1 class="text-xl font-medium md:text-2xl text-dark">Laporan Pengaduan Total</h1>
|
||||||
</div>
|
</div>
|
||||||
<DxDataGrid
|
<DxDataGrid
|
||||||
|
@cell-click="onCellClicked"
|
||||||
ref="dataGridRef"
|
ref="dataGridRef"
|
||||||
:data-source="data"
|
:data-source="data"
|
||||||
v-if="loading == false"
|
v-if="loading == false"
|
||||||
@ -20,7 +21,7 @@
|
|||||||
column-resizing-mode="widget"
|
column-resizing-mode="widget"
|
||||||
:word-wrap-enabled="true"
|
:word-wrap-enabled="true"
|
||||||
>
|
>
|
||||||
<DxGrouping expand-mode="rowClick" :auto-expand-all="false" />
|
<DxGrouping :auto-expand-all="false" />
|
||||||
<DxSelection mode="single" />
|
<DxSelection mode="single" />
|
||||||
<DxPaging :enabled="false" />
|
<DxPaging :enabled="false" />
|
||||||
<DxScrolling column-rendering-mode="virtual" mode="virtual" />
|
<DxScrolling column-rendering-mode="virtual" mode="virtual" />
|
||||||
@ -42,35 +43,15 @@
|
|||||||
cell-template="formatText"
|
cell-template="formatText"
|
||||||
/>
|
/>
|
||||||
<DxColumn
|
<DxColumn
|
||||||
|
v-if="grouping.length > 0"
|
||||||
|
v-for="(group, index) in grouping"
|
||||||
|
:width="150"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
:min-width="170"
|
:data-field="group.data"
|
||||||
data-type="text"
|
:caption="group.caption"
|
||||||
data-field=""
|
|
||||||
caption="Semua Unit"
|
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
:group-index="0"
|
cell-template="formatText"
|
||||||
/>
|
:group-index="index"
|
||||||
<DxColumn
|
|
||||||
alignment="center"
|
|
||||||
:min-width="170"
|
|
||||||
data-type="text"
|
|
||||||
data-field="id_uid"
|
|
||||||
caption="UID"
|
|
||||||
css-class="custom-table-column"
|
|
||||||
:group-index="1"
|
|
||||||
name="namaUID"
|
|
||||||
:calculate-group-value="(rowData: any) => rowData.nama_uid"
|
|
||||||
/>
|
|
||||||
<DxColumn
|
|
||||||
alignment="center"
|
|
||||||
:min-width="170"
|
|
||||||
data-type="text"
|
|
||||||
data-field="id_up3"
|
|
||||||
caption="UP3"
|
|
||||||
css-class="custom-table-column"
|
|
||||||
:group-index="1"
|
|
||||||
name="namaUID"
|
|
||||||
:calculate-group-value="(rowData: any) => rowData.nama_up3"
|
|
||||||
/>
|
/>
|
||||||
<DxColumn alignment="center" caption="Total WO" css-class="custom-table-column">
|
<DxColumn alignment="center" caption="Total WO" css-class="custom-table-column">
|
||||||
<DxColumn alignment="center" caption="CC 123" css-class="custom-table-column">
|
<DxColumn alignment="center" caption="CC 123" css-class="custom-table-column">
|
||||||
@ -275,12 +256,13 @@
|
|||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<DxSummary>
|
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="wo_cc123"
|
column="wo_cc123"
|
||||||
summary-type="sum"
|
name="wo_cc123"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -288,7 +270,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="wo_pln_mobile"
|
column="wo_pln_mobile"
|
||||||
summary-type="sum"
|
name="wo_pln_mobile"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -296,7 +279,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="wo_loket"
|
column="wo_loket"
|
||||||
summary-type="sum"
|
name="wo_loket"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -304,7 +288,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="wo_lainnya"
|
column="wo_lainnya"
|
||||||
summary-type="sum"
|
name="wo_lainnya"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -312,7 +297,8 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="wo_total"
|
column="wo_total"
|
||||||
summary-type="sum"
|
name="wo_total"
|
||||||
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
@ -320,24 +306,27 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="anomali_pln_mobile"
|
column="anomali_pln_mobile"
|
||||||
summary-type="sum"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
name="anomali_pln_mobile"
|
||||||
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="anomali_cc123"
|
column="anomali_cc123"
|
||||||
summary-type="sum"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
name="anomali_cc123"
|
||||||
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="total_anomali"
|
column="total_anomali"
|
||||||
summary-type="sum"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
name="total_anomali"
|
||||||
|
css-class="!text-right cursor-pointer"
|
||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@ -345,24 +334,27 @@
|
|||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="persen_anomali_pln_mobile"
|
column="persen_anomali_pln_mobile"
|
||||||
summary-type="avg"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
|
name="persen_anomali_pln_mobile"
|
||||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="persen_anomali_cc123"
|
column="persen_anomali_cc123"
|
||||||
summary-type="avg"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
|
name="persen_anomali_cc123"
|
||||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
column="total_persen_anomali"
|
column="total_persen_anomali"
|
||||||
summary-type="avg"
|
summary-type="custom"
|
||||||
css-class="!text-right"
|
css-class="!text-right"
|
||||||
|
name="total_persen_anomali"
|
||||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||||
/>
|
/>
|
||||||
</DxSummary>
|
</DxSummary>
|
||||||
@ -730,7 +722,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</DetailDialog>
|
</DetailDialog>
|
||||||
|
|
||||||
<BufferDialog v-if="loading" />
|
<BufferDialog v-if="loading || loadingSubData" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -764,6 +756,7 @@ import {
|
|||||||
exportDetailToDOCX
|
exportDetailToDOCX
|
||||||
} from '@/report/Anomali/Keluhan/Anomali_LAPPKU_LPT'
|
} from '@/report/Anomali/Keluhan/Anomali_LAPPKU_LPT'
|
||||||
import BufferDialog from '@/components/Dialogs/BufferDialog.vue'
|
import BufferDialog from '@/components/Dialogs/BufferDialog.vue'
|
||||||
|
import { getDataRowGroup } from '@/utils/helper'
|
||||||
|
|
||||||
const position = { of: '#data' }
|
const position = { of: '#data' }
|
||||||
const showIndicator = ref(true)
|
const showIndicator = ref(true)
|
||||||
@ -775,6 +768,10 @@ const props = defineProps({
|
|||||||
loading: {
|
loading: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
grouping: {
|
||||||
|
type: Array as () => any[],
|
||||||
|
default: []
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const filters = ref<any>(computed(() => props.filters))
|
const filters = ref<any>(computed(() => props.filters))
|
||||||
@ -789,6 +786,9 @@ const loadingSubData = ref(false)
|
|||||||
const agreeToShowDialog = ref(false)
|
const agreeToShowDialog = ref(false)
|
||||||
const mediaSelected = ref<any>(null)
|
const mediaSelected = ref<any>(null)
|
||||||
const reportMeta = ref<any>(computed(() => props.filters))
|
const reportMeta = ref<any>(computed(() => props.filters))
|
||||||
|
const groupDialog = ref(false)
|
||||||
|
const groupData = ref<any>(null)
|
||||||
|
const groupIndex = ref(0)
|
||||||
|
|
||||||
const setParameterRequest = (media: any) => {
|
const setParameterRequest = (media: any) => {
|
||||||
mediaSelected.value = media
|
mediaSelected.value = media
|
||||||
@ -800,6 +800,27 @@ const setParameterRequest = (media: any) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const onCellClicked = (e: any) => {
|
||||||
|
if (e.rowType == 'group') {
|
||||||
|
groupDialog.value = true
|
||||||
|
groupIndex.value = e.row.groupIndex
|
||||||
|
|
||||||
|
if (e.column.dataField == 'anomali_pln_mobile') {
|
||||||
|
setParameterRequest('PLN Mobile')
|
||||||
|
} else if (e.column.dataField == 'anomali_cc123') {
|
||||||
|
setParameterRequest('Call PLN 123')
|
||||||
|
} else if (e.column.dataField == 'total_anomali') {
|
||||||
|
setParameterRequest('')
|
||||||
|
} else {
|
||||||
|
setParameterRequest(null)
|
||||||
|
}
|
||||||
|
groupData.value = getDataRowGroup(e.data)
|
||||||
|
showDetail()
|
||||||
|
} else {
|
||||||
|
groupDialog.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const resetData = () => {
|
const resetData = () => {
|
||||||
dataSub.value = []
|
dataSub.value = []
|
||||||
dataSubSelected.value = null
|
dataSubSelected.value = null
|
||||||
@ -814,20 +835,51 @@ const getDetail = async () => {
|
|||||||
|
|
||||||
const dateValue = periode.split(' s/d ')
|
const dateValue = periode.split(' s/d ')
|
||||||
const selected = dataSelected.value
|
const selected = dataSelected.value
|
||||||
const query = {
|
let query = {
|
||||||
dateFrom: dateValue[0]
|
dateFrom: dateValue[0]
|
||||||
? dateValue[0].split('-').reverse().join('-')
|
? dateValue[0].split('-').reverse().join('-')
|
||||||
: new Date().toISOString().slice(0, 10),
|
: new Date().toISOString().slice(0, 10),
|
||||||
dateTo: dateValue[1]
|
dateTo: dateValue[1]
|
||||||
? dateValue[1].split('-').reverse().join('-')
|
? dateValue[1].split('-').reverse().join('-')
|
||||||
: new Date().toISOString().slice(0, 10),
|
: new Date().toISOString().slice(0, 10),
|
||||||
idUlp: selected?.id_ulp ? selected?.id_ulp : 0,
|
idUlp: 0,
|
||||||
idUid: selected?.id_uid ? selected?.id_uid : 0,
|
idUid: 0,
|
||||||
idUp3: selected?.id_up3 ? selected?.id_up3 : 0,
|
idUp3: 0,
|
||||||
namaRegional: '',
|
namaRegional: '',
|
||||||
media: mediaSelected.value
|
media: mediaSelected.value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (groupDialog.value) {
|
||||||
|
if (props.grouping[groupIndex.value].data == 'nama_uid') {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUid: groupData.value?.id_uid ? groupData.value?.id_uid : 0,
|
||||||
|
namaRegional: groupData.value?.nama_regional ? groupData.value?.nama_regional : ''
|
||||||
|
}
|
||||||
|
} else if (props.grouping[groupIndex.value].data == 'nama_up3') {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUid: groupData.value?.id_uid ? groupData.value?.id_uid : 0,
|
||||||
|
idUp3: groupData.value?.id_up3 ? groupData.value?.id_up3 : 0,
|
||||||
|
namaRegional: groupData.value?.nama_regional ? groupData.value?.nama_regional : ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
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,
|
||||||
|
namaRegional: selected?.nama_regional ? selected?.nama_regional : '',
|
||||||
|
media: mediaSelected.value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
loadingSubData.value = true
|
loadingSubData.value = true
|
||||||
await requestGraphQl(
|
await requestGraphQl(
|
||||||
jenisLaporan.name == 'Laporan Berulang Unit'
|
jenisLaporan.name == 'Laporan Berulang Unit'
|
||||||
@ -862,6 +914,135 @@ const getDetail = async () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let wo_cc123 = 0
|
||||||
|
let wo_pln_mobile = 0
|
||||||
|
let wo_loket = 0
|
||||||
|
let wo_lainnya = 0
|
||||||
|
let wo_total = 0
|
||||||
|
let anomali_pln_mobile = 0
|
||||||
|
let anomali_cc123 = 0
|
||||||
|
let total_anomali = 0
|
||||||
|
let persen_anomali_pln_mobile = 0
|
||||||
|
let persen_anomali_cc123 = 0
|
||||||
|
let total_persen_anomali = 0
|
||||||
|
|
||||||
|
const calculateCustomSummary = (options: any) => {
|
||||||
|
if (options.name === 'wo_cc123') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
wo_cc123 += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = wo_cc123
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'wo_pln_mobile') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
wo_pln_mobile += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = wo_pln_mobile
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'wo_loket') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
wo_loket += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = wo_loket
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'wo_lainnya') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
wo_lainnya += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = wo_lainnya
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'wo_total') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
wo_cc123 = 0
|
||||||
|
wo_pln_mobile = 0
|
||||||
|
wo_loket = 0
|
||||||
|
wo_lainnya = 0
|
||||||
|
} else if (options.summaryProcess === 'calculate') {
|
||||||
|
wo_total = wo_cc123 + wo_pln_mobile + wo_loket + wo_lainnya
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = wo_cc123 + wo_pln_mobile + wo_loket + wo_lainnya
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'anomali_pln_mobile') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
anomali_pln_mobile += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = anomali_pln_mobile
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'anomali_cc123') {
|
||||||
|
if (options.summaryProcess === 'calculate') {
|
||||||
|
anomali_cc123 += options.value
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = anomali_cc123
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'total_anomali') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
anomali_pln_mobile = 0
|
||||||
|
anomali_cc123 = 0
|
||||||
|
} else if (options.summaryProcess === 'calculate') {
|
||||||
|
total_anomali = anomali_pln_mobile + anomali_cc123
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = anomali_pln_mobile + anomali_cc123
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'persen_anomali_pln_mobile') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
anomali_pln_mobile = 0
|
||||||
|
wo_total = 0
|
||||||
|
} else if (options.summaryProcess === 'calculate') {
|
||||||
|
persen_anomali_pln_mobile =
|
||||||
|
!isFinite(anomali_pln_mobile / wo_total) || anomali_pln_mobile == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_pln_mobile / wo_total) * 100
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue =
|
||||||
|
!isFinite(anomali_pln_mobile / wo_total) || anomali_pln_mobile == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_pln_mobile / wo_total) * 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'persen_anomali_cc123') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
anomali_cc123 = 0
|
||||||
|
wo_total = 0
|
||||||
|
} else if (options.summaryProcess === 'calculate') {
|
||||||
|
persen_anomali_cc123 =
|
||||||
|
!isFinite(anomali_cc123 / wo_total) || anomali_cc123 == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_cc123 / wo_total) * 100
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue =
|
||||||
|
!isFinite(anomali_cc123 / wo_total) || anomali_cc123 == 0
|
||||||
|
? 0
|
||||||
|
: (anomali_cc123 / wo_total) * 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.name === 'total_persen_anomali') {
|
||||||
|
if (options.summaryProcess === 'start') {
|
||||||
|
persen_anomali_pln_mobile = 0
|
||||||
|
persen_anomali_cc123 = 0
|
||||||
|
} else if (options.summaryProcess === 'finalize') {
|
||||||
|
options.totalValue = persen_anomali_pln_mobile + persen_anomali_cc123
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const onExporting = (e: any) => {
|
const onExporting = (e: any) => {
|
||||||
if (e.format === 'pdf') {
|
if (e.format === 'pdf') {
|
||||||
exportToPDF(reportMeta.value, data.value)
|
exportToPDF(reportMeta.value, data.value)
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
<div id="data">
|
<div id="data">
|
||||||
<DxDataGrid
|
<DxDataGrid
|
||||||
|
@cell-click="onCellClicked"
|
||||||
ref="dataGridRef"
|
ref="dataGridRef"
|
||||||
:data-source="data"
|
:data-source="data"
|
||||||
v-if="loadingData == false"
|
v-if="loadingData == false"
|
||||||
@ -21,7 +22,7 @@
|
|||||||
column-resizing-mode="widget"
|
column-resizing-mode="widget"
|
||||||
:word-wrap-enabled="true"
|
:word-wrap-enabled="true"
|
||||||
>
|
>
|
||||||
<DxGrouping :auto-expand-all="false" expand-mode="rowClick" />
|
<DxGrouping :auto-expand-all="false" />
|
||||||
<DxSelection mode="single" />
|
<DxSelection mode="single" />
|
||||||
<DxPaging :enabled="false" />
|
<DxPaging :enabled="false" />
|
||||||
<DxScrolling column-rendering-mode="virtual" mode="virtual" />
|
<DxScrolling column-rendering-mode="virtual" mode="virtual" />
|
||||||
@ -34,30 +35,15 @@
|
|||||||
/>
|
/>
|
||||||
<DxColumnFixing :enabled="true" />
|
<DxColumnFixing :enabled="true" />
|
||||||
<DxColumn
|
<DxColumn
|
||||||
|
v-if="grouping.length > 0"
|
||||||
|
v-for="(group, index) in grouping"
|
||||||
|
:width="150"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-field=""
|
:data-field="group.data"
|
||||||
caption="Semua Unit"
|
:caption="group.caption"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
cell-template="formatText"
|
cell-template="formatText"
|
||||||
:group-index="0"
|
:group-index="index"
|
||||||
/>
|
|
||||||
<DxColumn
|
|
||||||
alignment="center"
|
|
||||||
data-field="id_uid"
|
|
||||||
caption="UID"
|
|
||||||
css-class="custom-table-column"
|
|
||||||
cell-template="formatText"
|
|
||||||
:group-index="1"
|
|
||||||
:calculate-display-value="(dataRow: any) => dataRow.nama_uid"
|
|
||||||
/>
|
|
||||||
<DxColumn
|
|
||||||
alignment="center"
|
|
||||||
data-field="id_up3"
|
|
||||||
caption="UP3"
|
|
||||||
css-class="custom-table-column"
|
|
||||||
cell-template="formatText"
|
|
||||||
:group-index="2"
|
|
||||||
:calculate-display-value="(dataRow: any) => dataRow.nama_up3"
|
|
||||||
/>
|
/>
|
||||||
<DxColumn
|
<DxColumn
|
||||||
alignment="center"
|
alignment="center"
|
||||||
@ -365,7 +351,7 @@
|
|||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
column="wo_pln_mobile"
|
column="wo_pln_mobile"
|
||||||
@ -374,7 +360,7 @@
|
|||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
column="wo_comcen"
|
column="wo_comcen"
|
||||||
@ -383,7 +369,7 @@
|
|||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
column="wo_total"
|
column="wo_total"
|
||||||
@ -392,7 +378,7 @@
|
|||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
column="rekomendasi_mendatangkan_petugas"
|
column="rekomendasi_mendatangkan_petugas"
|
||||||
@ -400,7 +386,7 @@
|
|||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
column="rekomendasi_diberikan_ke_pelanggan"
|
column="rekomendasi_diberikan_ke_pelanggan"
|
||||||
@ -408,7 +394,7 @@
|
|||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
column="dpld"
|
column="dpld"
|
||||||
@ -416,7 +402,7 @@
|
|||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
/>
|
/>
|
||||||
<DxGroupItem
|
<DxGroupItem
|
||||||
column="history_p2lt"
|
column="history_p2lt"
|
||||||
@ -424,7 +410,7 @@
|
|||||||
:customize-text="(e: any) => formatNumber(e.value)"
|
:customize-text="(e: any) => formatNumber(e.value)"
|
||||||
:show-in-group-footer="false"
|
:show-in-group-footer="false"
|
||||||
:align-by-column="true"
|
:align-by-column="true"
|
||||||
css-class="!text-right"
|
css-class="!text-right cursor-pointer"
|
||||||
/>
|
/>
|
||||||
</DxSummary>
|
</DxSummary>
|
||||||
</DxDataGrid>
|
</DxDataGrid>
|
||||||
@ -944,6 +930,7 @@ import {
|
|||||||
exportToDOCX,
|
exportToDOCX,
|
||||||
exportDetailToDOCX
|
exportDetailToDOCX
|
||||||
} from '@/report/Ctt/CTT_LaporanCttKwhPeriksa'
|
} from '@/report/Ctt/CTT_LaporanCttKwhPeriksa'
|
||||||
|
import { getDataRowGroup } from '@/utils/helper'
|
||||||
|
|
||||||
const client = apolloClient()
|
const client = apolloClient()
|
||||||
provideApolloClient(client)
|
provideApolloClient(client)
|
||||||
@ -959,6 +946,7 @@ const dialogDetail = ref(false)
|
|||||||
const closedialogDetail = () => (dialogDetail.value = false)
|
const closedialogDetail = () => (dialogDetail.value = false)
|
||||||
const loadingData = ref(false)
|
const loadingData = ref(false)
|
||||||
const loadingSubData = ref(false)
|
const loadingSubData = ref(false)
|
||||||
|
const agreeToShowDialog = ref(false)
|
||||||
const requirementData = ref<any>({
|
const requirementData = ref<any>({
|
||||||
woType: 0,
|
woType: 0,
|
||||||
rekomendasiSistem: 0,
|
rekomendasiSistem: 0,
|
||||||
@ -971,9 +959,100 @@ const reportMeta = ref({
|
|||||||
ulp: { id: 0, name: 'Semua Unit Layanan Pelanggan' },
|
ulp: { id: 0, name: 'Semua Unit Layanan Pelanggan' },
|
||||||
periode: ''
|
periode: ''
|
||||||
})
|
})
|
||||||
|
const groupDialog = ref(false)
|
||||||
|
const groupData = ref<any>(null)
|
||||||
|
const groupIndex = ref(0)
|
||||||
|
|
||||||
|
const grouping = ref<any[]>([
|
||||||
|
{
|
||||||
|
data: '',
|
||||||
|
caption: 'Semua Unit'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_uid',
|
||||||
|
caption: 'UID'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_up3',
|
||||||
|
caption: 'UP3'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
const setRequirementData = (data: any) => (requirementData.value = data)
|
const setRequirementData = (data: any) => (requirementData.value = data)
|
||||||
|
|
||||||
|
const onCellClicked = (e: any) => {
|
||||||
|
if (e.rowType == 'group') {
|
||||||
|
groupDialog.value = true
|
||||||
|
groupIndex.value = e.row.groupIndex
|
||||||
|
agreeToShowDialog.value = true
|
||||||
|
|
||||||
|
if (e.column.dataField == 'wo_cc123') {
|
||||||
|
setRequirementData({
|
||||||
|
woType: 1,
|
||||||
|
rekomendasiSistem: 0,
|
||||||
|
dlpd: 0,
|
||||||
|
historyP2tl: 0
|
||||||
|
})
|
||||||
|
} else if (e.column.dataField == 'wo_pln_mobile') {
|
||||||
|
setRequirementData({
|
||||||
|
woType: 2,
|
||||||
|
rekomendasiSistem: 0,
|
||||||
|
dlpd: 0,
|
||||||
|
historyP2tl: 0
|
||||||
|
})
|
||||||
|
} else if (e.column.dataField == 'wo_comcen') {
|
||||||
|
setRequirementData({
|
||||||
|
woType: 3,
|
||||||
|
rekomendasiSistem: 0,
|
||||||
|
dlpd: 0,
|
||||||
|
historyP2tl: 0
|
||||||
|
})
|
||||||
|
} else if (e.column.dataField == 'wo_total') {
|
||||||
|
setRequirementData({
|
||||||
|
woType: 0,
|
||||||
|
rekomendasiSistem: 0,
|
||||||
|
dlpd: 0,
|
||||||
|
historyP2tl: 0
|
||||||
|
})
|
||||||
|
} else if (e.column.dataField == 'rekomendasi_mendatangkan_petugas') {
|
||||||
|
setRequirementData({
|
||||||
|
woType: 0,
|
||||||
|
rekomendasiSistem: 1,
|
||||||
|
dlpd: 0,
|
||||||
|
historyP2tl: 0
|
||||||
|
})
|
||||||
|
} else if (e.column.dataField == 'rekomendasi_diberikan_ke_pelanggan') {
|
||||||
|
setRequirementData({
|
||||||
|
woType: 0,
|
||||||
|
rekomendasiSistem: 2,
|
||||||
|
dlpd: 0,
|
||||||
|
historyP2tl: 0
|
||||||
|
})
|
||||||
|
} else if (e.column.dataField == 'dpld') {
|
||||||
|
setRequirementData({
|
||||||
|
woType: 0,
|
||||||
|
rekomendasiSistem: 0,
|
||||||
|
dlpd: 1,
|
||||||
|
historyP2tl: 0
|
||||||
|
})
|
||||||
|
} else if (e.column.dataField == 'history_p2lt') {
|
||||||
|
setRequirementData({
|
||||||
|
woType: 0,
|
||||||
|
rekomendasiSistem: 0,
|
||||||
|
dlpd: 0,
|
||||||
|
historyP2tl: 1
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
agreeToShowDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
groupData.value = getDataRowGroup(e.data)
|
||||||
|
showDetail()
|
||||||
|
} else {
|
||||||
|
groupDialog.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let cc123 = 0
|
let cc123 = 0
|
||||||
let plnMobile = 0
|
let plnMobile = 0
|
||||||
let comcen = 0
|
let comcen = 0
|
||||||
@ -1044,6 +1123,46 @@ const filterData = async (params: any) => {
|
|||||||
const { posko, uid, up3, ulp } = params
|
const { posko, uid, up3, ulp } = params
|
||||||
const dateValue = params.periode.split(' s/d ')
|
const dateValue = params.periode.split(' s/d ')
|
||||||
|
|
||||||
|
var groupList: any[] = [
|
||||||
|
{
|
||||||
|
data: '',
|
||||||
|
caption: 'Semua Unit'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_uid',
|
||||||
|
caption: 'UID'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: 'nama_up3',
|
||||||
|
caption: 'UP3'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
if (uid?.id != 0) {
|
||||||
|
groupList.forEach((item, index) => {
|
||||||
|
if (item.caption == 'Semua Unit') {
|
||||||
|
groupList.splice(index, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (up3?.id != 0) {
|
||||||
|
groupList.forEach((item, index) => {
|
||||||
|
if (item.caption == 'UID') {
|
||||||
|
groupList.splice(index, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (ulp?.id != 0) {
|
||||||
|
groupList.forEach((item, index) => {
|
||||||
|
if (item.caption == 'UP3') {
|
||||||
|
groupList.splice(index, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
grouping.value = groupList
|
||||||
|
|
||||||
const query = {
|
const query = {
|
||||||
dateFrom: dateValue[0]
|
dateFrom: dateValue[0]
|
||||||
? dateValue[0].split('-').reverse().join('-')
|
? dateValue[0].split('-').reverse().join('-')
|
||||||
@ -1081,18 +1200,17 @@ const getDetail = async () => {
|
|||||||
const dateValue = filters.value.periode.split(' s/d ')
|
const dateValue = filters.value.periode.split(' s/d ')
|
||||||
const selected = dataSelected.value
|
const selected = dataSelected.value
|
||||||
|
|
||||||
const query = {
|
let query = {
|
||||||
dateFrom: dateValue[0]
|
dateFrom: dateValue[0]
|
||||||
? dateValue[0].split('-').reverse().join('-')
|
? dateValue[0].split('-').reverse().join('-')
|
||||||
: new Date().toISOString().slice(0, 10),
|
: new Date().toISOString().slice(0, 10),
|
||||||
dateTo: dateValue[1]
|
dateTo: dateValue[1]
|
||||||
? dateValue[1].split('-').reverse().join('-')
|
? dateValue[1].split('-').reverse().join('-')
|
||||||
: new Date().toISOString().slice(0, 10),
|
: new Date().toISOString().slice(0, 10),
|
||||||
idUlp: selected?.id_ulp ? selected?.id_ulp : 0,
|
idUlp: 0,
|
||||||
idPosko: selected?.id_posko ? selected?.id_posko : 0,
|
idUid: 0,
|
||||||
idUid: selected?.id_uid ? selected?.id_uid : 0,
|
idUp3: 0,
|
||||||
idUp3: selected?.id_up3 ? selected?.id_up3 : 0,
|
namaRegional: '',
|
||||||
namaRegional: selected?.nama_regional ? selected?.nama_regional : '',
|
|
||||||
tipeWo: requirementData.value?.woType ? requirementData.value?.woType : '',
|
tipeWo: requirementData.value?.woType ? requirementData.value?.woType : '',
|
||||||
rekomendasiSistem: requirementData.value?.rekomendasiSistem
|
rekomendasiSistem: requirementData.value?.rekomendasiSistem
|
||||||
? requirementData.value?.rekomendasiSistem == 1
|
? requirementData.value?.rekomendasiSistem == 1
|
||||||
@ -1103,6 +1221,44 @@ const getDetail = async () => {
|
|||||||
isHistoriP2tl: requirementData.value?.historyP2tl ? requirementData.value?.historyP2tl : 0
|
isHistoriP2tl: requirementData.value?.historyP2tl ? requirementData.value?.historyP2tl : 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (groupDialog.value) {
|
||||||
|
if (grouping.value[groupIndex.value].data == 'nama_uid') {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUid: groupData.value?.id_uid ? groupData.value?.id_uid : 0,
|
||||||
|
namaRegional: groupData.value?.nama_regional ? groupData.value?.nama_regional : ''
|
||||||
|
}
|
||||||
|
} else if (grouping.value[groupIndex.value].data == 'nama_up3') {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUid: groupData.value?.id_uid ? groupData.value?.id_uid : 0,
|
||||||
|
idUp3: groupData.value?.id_up3 ? groupData.value?.id_up3 : 0,
|
||||||
|
namaRegional: groupData.value?.nama_regional ? groupData.value?.nama_regional : ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
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,
|
||||||
|
namaRegional: selected?.nama_regional ? selected?.nama_regional : '',
|
||||||
|
tipeWo: requirementData.value?.woType ? requirementData.value?.woType : '',
|
||||||
|
rekomendasiSistem: requirementData.value?.rekomendasiSistem
|
||||||
|
? requirementData.value?.rekomendasiSistem == 1
|
||||||
|
? 'Mendatangkan Petugas'
|
||||||
|
: 'Diberikan ke Pelanggan'
|
||||||
|
: '',
|
||||||
|
isDlpd: requirementData.value?.dlpd ? requirementData.value?.dlpd : 0,
|
||||||
|
isHistoriP2tl: requirementData.value?.historyP2tl ? requirementData.value?.historyP2tl : 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
loadingSubData.value = true
|
loadingSubData.value = true
|
||||||
await requestGraphQl(queries.cttKwhPeriksa.laporanCttKwhPeriksaDetail, query)
|
await requestGraphQl(queries.cttKwhPeriksa.laporanCttKwhPeriksaDetail, query)
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
@ -1128,8 +1284,11 @@ const clearSelection = () => {
|
|||||||
}
|
}
|
||||||
const showDetail = () => {
|
const showDetail = () => {
|
||||||
clearSelection()
|
clearSelection()
|
||||||
|
dataSub.value = []
|
||||||
dataSubSelected.value = null
|
dataSubSelected.value = null
|
||||||
getDetail()
|
if (agreeToShowDialog.value) {
|
||||||
|
getDetail()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const onDataSelectionChanged = ({ selectedRowsData }: any) => {
|
const onDataSelectionChanged = ({ selectedRowsData }: any) => {
|
||||||
|
@ -325,7 +325,7 @@
|
|||||||
<DxColumn
|
<DxColumn
|
||||||
:width="150"
|
:width="150"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-field=""
|
data-field="pembuat_laporan"
|
||||||
caption="Nama Petugas"
|
caption="Nama Petugas"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
cell-template="formatText"
|
cell-template="formatText"
|
||||||
@ -333,7 +333,7 @@
|
|||||||
<DxColumn
|
<DxColumn
|
||||||
:width="150"
|
:width="150"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-field=""
|
data-field="nama_posko_lama"
|
||||||
caption="Posko Asal"
|
caption="Posko Asal"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
cell-template="formatText"
|
cell-template="formatText"
|
||||||
@ -341,7 +341,7 @@
|
|||||||
<DxColumn
|
<DxColumn
|
||||||
:width="150"
|
:width="150"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-field=""
|
data-field="nama_posko_baru"
|
||||||
caption="Posko Tujuan"
|
caption="Posko Tujuan"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
cell-template="formatText"
|
cell-template="formatText"
|
||||||
@ -477,17 +477,29 @@
|
|||||||
|
|
||||||
<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-[135px] text-gray-800">Nama Petugas:</h3>
|
<h3 class="text-sm font-medium w-[135px] text-gray-800">Nama Petugas:</h3>
|
||||||
<InputText :readonly="true" value="" class-name="flex-1" />
|
<InputText
|
||||||
|
:readonly="true"
|
||||||
|
:value="dataSubSelected?.pembuat_laporan"
|
||||||
|
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">
|
||||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Posko Asal:</h3>
|
<h3 class="text-sm font-medium w-[135px] text-gray-800">Posko Asal:</h3>
|
||||||
<InputText :readonly="true" value="" class-name="flex-1" />
|
<InputText
|
||||||
|
:readonly="true"
|
||||||
|
:value="dataSubSelected?.nama_posko_lama"
|
||||||
|
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">
|
||||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Posko Tujuan:</h3>
|
<h3 class="text-sm font-medium w-[135px] text-gray-800">Posko Tujuan:</h3>
|
||||||
<InputText :readonly="true" value="" class-name="flex-1" />
|
<InputText
|
||||||
|
:readonly="true"
|
||||||
|
:value="dataSubSelected?.nama_posko_baru"
|
||||||
|
class-name="flex-1"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -334,13 +334,13 @@
|
|||||||
</DxColumn>
|
</DxColumn>
|
||||||
|
|
||||||
<template #formatText="{ data }">
|
<template #formatText="{ data }">
|
||||||
<p class="text-left cursor-pointer">
|
<p class="text-left" @click="setAgreementDialog(data.column.caption)">
|
||||||
{{ data.text }}
|
{{ data.text }}
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #formatNumber="{ data }">
|
<template #formatNumber="{ data }">
|
||||||
<p class="text-right cursor-pointer">
|
<p class="text-right cursor-pointer" @click="setAgreementDialog(data.column.caption)">
|
||||||
{{
|
{{
|
||||||
isNumber(data.text)
|
isNumber(data.text)
|
||||||
? data.column.caption == '%'
|
? data.column.caption == '%'
|
||||||
@ -352,13 +352,13 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #formatPercentage="{ data }">
|
<template #formatPercentage="{ data }">
|
||||||
<p class="text-right cursor-pointer">
|
<p class="text-right" @click="setAgreementDialog(data.column.caption)">
|
||||||
{{ parseFloat(data.text) ? formatPercentage(data.text) : '0%' }}
|
{{ parseFloat(data.text) ? formatPercentage(data.text) : '0%' }}
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #formatTime="{ data }">
|
<template #formatTime="{ data }">
|
||||||
<p class="!text-right cursor-pointer">
|
<p class="!text-right" @click="setAgreementDialog(data.column.caption)">
|
||||||
{{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}
|
{{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
@ -796,6 +796,8 @@ const dataSubSelected = ref<any>()
|
|||||||
const dialogDetail = ref(false)
|
const dialogDetail = ref(false)
|
||||||
const loadingData = ref(false)
|
const loadingData = ref(false)
|
||||||
const loadingSubData = ref(false)
|
const loadingSubData = ref(false)
|
||||||
|
const progressSelected = ref(0)
|
||||||
|
const agreeToShowDialog = ref(false)
|
||||||
const reportMeta = ref({
|
const reportMeta = ref({
|
||||||
uid: { id: 0, name: 'Semua Unit Induk Distribusi/Wilayah' },
|
uid: { id: 0, name: 'Semua Unit Induk Distribusi/Wilayah' },
|
||||||
up3: { id: 0, name: 'Semua Unit Pelaksanaan Pelayanan Pelanggan' },
|
up3: { id: 0, name: 'Semua Unit Pelaksanaan Pelayanan Pelanggan' },
|
||||||
@ -803,6 +805,21 @@ const reportMeta = ref({
|
|||||||
periode: ''
|
periode: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const setAgreementDialog = (column: string) => {
|
||||||
|
if (column == 'd=(e+g)' || column == 'e' || column == 'g') {
|
||||||
|
agreeToShowDialog.value = true
|
||||||
|
if (column == 'd=(e+g)') {
|
||||||
|
progressSelected.value = 0
|
||||||
|
} else if (column == 'e') {
|
||||||
|
progressSelected.value = 1
|
||||||
|
} else {
|
||||||
|
progressSelected.value = 2
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
agreeToShowDialog.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const getDetail = async () => {
|
const getDetail = async () => {
|
||||||
loadingSubData.value = true
|
loadingSubData.value = true
|
||||||
const dateValue = filters.value.periode.split(' s/d ')
|
const dateValue = filters.value.periode.split(' s/d ')
|
||||||
@ -819,7 +836,8 @@ const getDetail = async () => {
|
|||||||
posko: posko ? posko.id : 0,
|
posko: posko ? posko.id : 0,
|
||||||
idUid: uid ? uid.id : 0,
|
idUid: uid ? uid.id : 0,
|
||||||
idUp3: up3 ? up3.id : 0,
|
idUp3: up3 ? up3.id : 0,
|
||||||
idRegu: ref.id_regu
|
idRegu: ref?.id_regu ? ref.id_regu : 0,
|
||||||
|
isSelesai: progressSelected.value
|
||||||
}
|
}
|
||||||
|
|
||||||
await requestGraphQl(queries.gangguan.rekap.gangguanDiselesaikanMobileAPKTDetail, query)
|
await requestGraphQl(queries.gangguan.rekap.gangguanDiselesaikanMobileAPKTDetail, query)
|
||||||
@ -846,10 +864,11 @@ const clearSelection = () => {
|
|||||||
}
|
}
|
||||||
const showDetail = () => {
|
const showDetail = () => {
|
||||||
clearSelection()
|
clearSelection()
|
||||||
dataSub.value = []
|
if (agreeToShowDialog.value) {
|
||||||
dataSubSelected.value = null
|
dataSub.value = []
|
||||||
// dialogDetail.value = true
|
dataSubSelected.value = null
|
||||||
getDetail()
|
getDetail()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const closeDialog = () => {
|
const closeDialog = () => {
|
||||||
|
@ -871,21 +871,68 @@ const setAgreementDialog = (status: boolean, progress: number) => {
|
|||||||
const getDetail = async () => {
|
const getDetail = async () => {
|
||||||
const dateValue = filters.value?.periode.split(' s/d ')
|
const dateValue = filters.value?.periode.split(' s/d ')
|
||||||
const ref = dataSelected.value
|
const ref = dataSelected.value
|
||||||
|
const { posko, uid, up3 } = filters.value
|
||||||
|
|
||||||
const query = {
|
var query = {
|
||||||
dateFrom: ref?.tanggal ? reformatDate(ref?.tanggal, 'yyyy/MM/dd', 'yyyy-MM-dd') : '',
|
dateFrom: ref?.tanggal ? reformatDate(ref?.tanggal, 'yyyy/MM/dd', 'yyyy-MM-dd') : '',
|
||||||
dateTo: ref?.tanggal ? reformatDate(ref?.tanggal, 'yyyy/MM/dd', 'yyyy-MM-dd') : '',
|
dateTo: ref?.tanggal ? reformatDate(ref?.tanggal, 'yyyy/MM/dd', 'yyyy-MM-dd') : '',
|
||||||
posko: progressSelected.value == 0 ? 0 : ref?.id_posko ? ref?.id_posko : 0,
|
posko: 0,
|
||||||
idUid: progressSelected.value == 0 ? 0 : ref?.id_uid ? ref?.id_uid : 0,
|
idUid: 0,
|
||||||
idUp3: progressSelected.value == 0 ? 0 : ref?.id_up3 ? ref?.id_up3 : 0,
|
idUp3: 0,
|
||||||
idRegu: ref?.id_regu ? ref?.id_regu : 0,
|
idUlp: 0,
|
||||||
idUlp: progressSelected.value == 0 ? 0 : ref?.id_ulp ? ref?.id_ulp : 0,
|
idRegu: 0,
|
||||||
namaRegional: ref?.nama_regional ? ref?.nama_regional : '',
|
namaRegional: ref?.nama_regional ? ref?.nama_regional : '',
|
||||||
media: ref?.media ? ref?.media : '',
|
media: ref?.media ? ref?.media : '',
|
||||||
isSelesai: progressSelected.value,
|
isSelesai: progressSelected.value,
|
||||||
tanggal: ref?.tanggal ? reformatDate(ref?.tanggal, 'yyyy/MM/dd', 'yyyy-MM-dd') : ''
|
tanggal: ref?.tanggal ? reformatDate(ref?.tanggal, 'yyyy/MM/dd', 'yyyy-MM-dd') : ''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isGroupBy.value) {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUid: ref?.id_uid
|
||||||
|
}
|
||||||
|
if (uid.id != 0) {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUp3: ref?.id_up3
|
||||||
|
}
|
||||||
|
|
||||||
|
if (up3.id != 0) {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
posko: ref?.id_posko
|
||||||
|
}
|
||||||
|
|
||||||
|
if (posko.id != 0) {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUlp: ref?.id_ulp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (uid.id != 0) {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUid: uid.id
|
||||||
|
}
|
||||||
|
if (up3.id != 0) {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
idUp3: up3.id
|
||||||
|
}
|
||||||
|
if (posko.id != 0) {
|
||||||
|
query = {
|
||||||
|
...query,
|
||||||
|
posko: posko.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
loadingSubData.value = true
|
loadingSubData.value = true
|
||||||
await requestGraphQl(queries.gangguan.rekap.gangguanAllDetail, query)
|
await requestGraphQl(queries.gangguan.rekap.gangguanAllDetail, query)
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
|
@ -876,8 +876,8 @@ const getDetail = async () => {
|
|||||||
loadingSubData.value = true
|
loadingSubData.value = true
|
||||||
await requestGraphQl(
|
await requestGraphQl(
|
||||||
parameterRequest.value.type == 'gangguan'
|
parameterRequest.value.type == 'gangguan'
|
||||||
? queries.keluhan.rekap.rekapKeluhanAllDetail
|
? queries.monalisa.laporan.bulanan.agingComplaintBulananDetail
|
||||||
: queries.keluhan.rekap.rekapKeluhanAllDetail,
|
: queries.monalisa.laporan.bulanan.agingComplaintBulananDetail,
|
||||||
query
|
query
|
||||||
)
|
)
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
|
@ -129,6 +129,7 @@
|
|||||||
<dt class="text-xs text-center text-gray-500">
|
<dt class="text-xs text-center text-gray-500">
|
||||||
Copyright © 2023 PT PLN (Persero). All Rights Reserved
|
Copyright © 2023 PT PLN (Persero). All Rights Reserved
|
||||||
</dt>
|
</dt>
|
||||||
|
<dt class="mt-4 text-xs font-bold text-center text-gray-800">Version {{ version }}</dt>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -142,6 +143,7 @@ import { type RouteRecordRaw } from 'vue-router'
|
|||||||
import { routes, extractLeafRoutes } from '@/router'
|
import { routes, extractLeafRoutes } from '@/router'
|
||||||
import { navigationIcon } from '@/utils/route'
|
import { navigationIcon } from '@/utils/route'
|
||||||
import { detectOS } from '@/utils/helper'
|
import { detectOS } from '@/utils/helper'
|
||||||
|
import { version } from '../../../package.json'
|
||||||
|
|
||||||
const os = ref(detectOS())
|
const os = ref(detectOS())
|
||||||
const command = useCommandPalattesStore()
|
const command = useCommandPalattesStore()
|
||||||
|
@ -15,7 +15,8 @@ const formatData = (rawData: any) => {
|
|||||||
|
|
||||||
const total: any = {
|
const total: any = {
|
||||||
jumlah: 0,
|
jumlah: 0,
|
||||||
persen: []
|
persen: [],
|
||||||
|
ens: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
rawData.forEach((data: any, index: any) => {
|
rawData.forEach((data: any, index: any) => {
|
||||||
@ -29,6 +30,7 @@ const formatData = (rawData: any) => {
|
|||||||
|
|
||||||
total.jumlah += data.jumlah
|
total.jumlah += data.jumlah
|
||||||
total.persen.push(data.persen)
|
total.persen.push(data.persen)
|
||||||
|
total.ens += data.ens
|
||||||
})
|
})
|
||||||
|
|
||||||
formattedData.push([
|
formattedData.push([
|
||||||
@ -46,7 +48,7 @@ const formatData = (rawData: any) => {
|
|||||||
colSpan: 3
|
colSpan: 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
content: '19.169.174,65',
|
content: formatNumber(total.ens),
|
||||||
colSpan: 2
|
colSpan: 2
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
@ -1723,6 +1723,7 @@ export const queries = {
|
|||||||
$is_cleansing_transaksi_tm: Int!
|
$is_cleansing_transaksi_tm: Int!
|
||||||
$is_koreksi_transaksi_tm: Int!
|
$is_koreksi_transaksi_tm: Int!
|
||||||
$is_koreksi_gangguan_dan_anev: Int!
|
$is_koreksi_gangguan_dan_anev: Int!
|
||||||
|
$namaRegional: String
|
||||||
) {
|
) {
|
||||||
detailGangguanKoreksiTransaksiIndividu(
|
detailGangguanKoreksiTransaksiIndividu(
|
||||||
bulan: $bulan
|
bulan: $bulan
|
||||||
@ -1736,6 +1737,7 @@ export const queries = {
|
|||||||
is_cleansing_transaksi_tm: $is_cleansing_transaksi_tm
|
is_cleansing_transaksi_tm: $is_cleansing_transaksi_tm
|
||||||
is_koreksi_transaksi_tm: $is_koreksi_transaksi_tm
|
is_koreksi_transaksi_tm: $is_koreksi_transaksi_tm
|
||||||
is_koreksi_gangguan_dan_anev: $is_koreksi_gangguan_dan_anev
|
is_koreksi_gangguan_dan_anev: $is_koreksi_gangguan_dan_anev
|
||||||
|
namaRegional: $namaRegional
|
||||||
) {
|
) {
|
||||||
id
|
id
|
||||||
no_laporan
|
no_laporan
|
||||||
@ -1959,6 +1961,7 @@ export const queries = {
|
|||||||
$idUid: Int!
|
$idUid: Int!
|
||||||
$idUp3: Int!
|
$idUp3: Int!
|
||||||
$idRegu: Int!
|
$idRegu: Int!
|
||||||
|
$isSelesai: Int!
|
||||||
) {
|
) {
|
||||||
detailGangguanDiselesaikanMobileApkt(
|
detailGangguanDiselesaikanMobileApkt(
|
||||||
dateFrom: $dateFrom
|
dateFrom: $dateFrom
|
||||||
@ -1967,6 +1970,7 @@ export const queries = {
|
|||||||
idUid: $idUid
|
idUid: $idUid
|
||||||
idUp3: $idUp3
|
idUp3: $idUp3
|
||||||
idRegu: $idRegu
|
idRegu: $idRegu
|
||||||
|
isSelesai: $isSelesai
|
||||||
) {
|
) {
|
||||||
id
|
id
|
||||||
nama_regional
|
nama_regional
|
||||||
@ -2330,6 +2334,8 @@ export const queries = {
|
|||||||
no_telp_pelapor
|
no_telp_pelapor
|
||||||
keterangan_pelapor
|
keterangan_pelapor
|
||||||
media
|
media
|
||||||
|
nama_posko_baru
|
||||||
|
nama_posko_lama
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
@ -3395,6 +3401,44 @@ export const queries = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
|
agingComplaintBulananDetail: gql`
|
||||||
|
query detailAgingComplaintBulanan(
|
||||||
|
$bulan: Int!
|
||||||
|
$tahun: Int!
|
||||||
|
$namaRegional: String!
|
||||||
|
$idUlp: Int!
|
||||||
|
$idUid: Int!
|
||||||
|
$idUp3: Int!
|
||||||
|
) {
|
||||||
|
detailAgingComplaintBulanan(
|
||||||
|
bulan: $bulan
|
||||||
|
tahun: $tahun
|
||||||
|
namaRegional: $namaRegional
|
||||||
|
idUlp: $idUlp
|
||||||
|
idUid: $idUid
|
||||||
|
idUp3: $idUp3
|
||||||
|
) {
|
||||||
|
id
|
||||||
|
nama_regional
|
||||||
|
id_uid
|
||||||
|
nama_uid
|
||||||
|
id_up3
|
||||||
|
nama_up3
|
||||||
|
id_ulp
|
||||||
|
nama_ulp
|
||||||
|
no_laporan
|
||||||
|
alamat_pelapor
|
||||||
|
no_telp_pelapor
|
||||||
|
keterangan_pelapor
|
||||||
|
penyebab
|
||||||
|
kode_gangguan
|
||||||
|
jenis_gangguan
|
||||||
|
durasi_response_time
|
||||||
|
durasi_recovery_time
|
||||||
|
waktu_lapor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
agingComplaintBulanan: gql`
|
agingComplaintBulanan: gql`
|
||||||
query agingComplaintBulanan(
|
query agingComplaintBulanan(
|
||||||
$namaRegional: String
|
$namaRegional: String
|
||||||
@ -4933,7 +4977,6 @@ export const queries = {
|
|||||||
$rekomendasiSistem: String
|
$rekomendasiSistem: String
|
||||||
$isDlpd: Int!
|
$isDlpd: Int!
|
||||||
$idUlp: Int!
|
$idUlp: Int!
|
||||||
$idPosko: Int!
|
|
||||||
$idUid: Int!
|
$idUid: Int!
|
||||||
$idUp3: Int!
|
$idUp3: Int!
|
||||||
$namaRegional: String
|
$namaRegional: String
|
||||||
@ -4946,7 +4989,6 @@ export const queries = {
|
|||||||
rekomendasiSistem: $rekomendasiSistem
|
rekomendasiSistem: $rekomendasiSistem
|
||||||
isDlpd: $isDlpd
|
isDlpd: $isDlpd
|
||||||
idUlp: $idUlp
|
idUlp: $idUlp
|
||||||
idPosko: $idPosko
|
|
||||||
idUid: $idUid
|
idUid: $idUid
|
||||||
idUp3: $idUp3
|
idUp3: $idUp3
|
||||||
namaRegional: $namaRegional
|
namaRegional: $namaRegional
|
||||||
|
@ -5,6 +5,10 @@ const instance = axios.create({
|
|||||||
baseURL: url
|
baseURL: url
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const ax = axios.create({
|
||||||
|
baseURL: window.location.origin
|
||||||
|
})
|
||||||
|
|
||||||
const getUid = async () => await instance.get('/uid')
|
const getUid = async () => await instance.get('/uid')
|
||||||
const getUidRegional = async (regional: number) => await instance.get('/uid?regional=' + regional)
|
const getUidRegional = async (regional: number) => await instance.get('/uid?regional=' + regional)
|
||||||
const getRegional = async () => await instance.get('/regional')
|
const getRegional = async () => await instance.get('/regional')
|
||||||
@ -13,6 +17,7 @@ const getJenisTransaksi = async () => await instance.get('/jenisTransaksi')
|
|||||||
const getUp3 = async (uid: number) => await instance.get('/up3?uid=' + uid)
|
const getUp3 = async (uid: number) => await instance.get('/up3?uid=' + uid)
|
||||||
const getUlp = async (up3: number) => await instance.get('/ulp?up3=' + up3)
|
const getUlp = async (up3: number) => await instance.get('/ulp?up3=' + up3)
|
||||||
const getPosko = async (uppp: number) => await instance.get('/posko?up3=' + uppp)
|
const getPosko = async (uppp: number) => await instance.get('/posko?up3=' + uppp)
|
||||||
|
const getVersion = async () => await ax.get('/version.json')
|
||||||
export {
|
export {
|
||||||
getUid,
|
getUid,
|
||||||
getUp3,
|
getUp3,
|
||||||
@ -21,5 +26,6 @@ export {
|
|||||||
getMedia,
|
getMedia,
|
||||||
getJenisTransaksi,
|
getJenisTransaksi,
|
||||||
getUidRegional,
|
getUidRegional,
|
||||||
getRegional
|
getRegional,
|
||||||
|
getVersion
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,48 @@ import MenuProvider from '@/components/Pages/MenuProvider.vue'
|
|||||||
import Navigation from '@/components/Navigation/Navigation.vue'
|
import Navigation from '@/components/Navigation/Navigation.vue'
|
||||||
import { useMenuStore } from '@/stores/menu'
|
import { useMenuStore } from '@/stores/menu'
|
||||||
import { RouterView } from 'vue-router'
|
import { RouterView } from 'vue-router'
|
||||||
|
import { useDialogStore } from '@/stores/dialog'
|
||||||
|
import { onMounted } from 'vue'
|
||||||
|
import { getVersion } from '@/utils/api/api.rest'
|
||||||
const menu = useMenuStore()
|
const menu = useMenuStore()
|
||||||
|
const dialog = useDialogStore()
|
||||||
|
|
||||||
|
const showDialogUpdate = () => {
|
||||||
|
dialog.type = 'success'
|
||||||
|
dialog.title = 'Update Aplikasi'
|
||||||
|
dialog.content =
|
||||||
|
'Aplikasi telah diperbarui. Silahkan muat ulang aplikasi untuk melihat perubahan.'
|
||||||
|
dialog.confirmText = 'Muat Ulang'
|
||||||
|
dialog.showCancelButton = false
|
||||||
|
dialog.onConfirm = () => {
|
||||||
|
window.location.reload()
|
||||||
|
}
|
||||||
|
dialog.dismissOnAction = false
|
||||||
|
dialog.open = true
|
||||||
|
}
|
||||||
|
|
||||||
|
const checkVersion = () => {
|
||||||
|
getVersion().then((response) => {
|
||||||
|
if (response.data.version) {
|
||||||
|
const version = response.data.version
|
||||||
|
const localVersion = localStorage.getItem('version')
|
||||||
|
if (localVersion) {
|
||||||
|
if (localVersion !== version) {
|
||||||
|
localStorage.setItem('version', version)
|
||||||
|
showDialogUpdate()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
localStorage.setItem('version', version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
checkVersion()
|
||||||
|
}, 60000)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => checkVersion())
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user