Files
FE_CPONE/test/vuex/cpone-masterdata-packet/components/oneMdPacketList.vue
2026-04-27 10:13:31 +07:00

1165 lines
57 KiB
Vue

<template>
<v-layout class="fill-height" column>
<!-- alert dialog start -->
<v-dialog v-model="dialogsuccess" persistent max-width="290">
<v-card>
<v-card-title color="success" class="headline">Berhasil !</v-card-title>
<v-card-text>
{{msgsuccess}}
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="green darken-1" flat @click="closeDialogSuccess">OK</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
<!-- alert dialog end -->
<!-- alert dialog error start -->
<v-dialog v-model="dialogerror" persistent max-width="290">
<v-card>
<v-card-title color="error" class="headline">Error !</v-card-title>
<v-card-text>
{{msgerror}}
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="green darken-1" flat @click="closeDialogError">OK</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
<!-- alert dialog error end -->
<!-- dialog confirmation start -->
<v-dialog v-model="dialogconfirmationdelete" persistent max-width="290">
<v-card>
<v-card-title dark class="headline error pt-2 pb-2" primary-title style="color:white">
<h4 dark>Konfirmasi</h4>
</v-card-title>
<v-card-text>
{{msgconfirmationdelete}}
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn small color="error darken-1 text-sm-left" flat @click="doDeleteData()">Hapus</v-btn>
<v-btn small color="primary darken-1 text-sm-right" flat @click="dialogconfirmationdelete = false">Batal</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
<!-- dialog confirmation end -->
<!-- dialog add start -->
<v-dialog v-model="dialogadd" persistent max-width="900">
<v-card>
<v-card-title dark class="headline primary pt-2 pb-2" primary-title style="color:white; display: flex; justify-content: space-between;">
<h4 dark>Paket</h4>
<!-- <v-btn icon @click="dialogadd = false" class="pt-2 pb-2" style="color: white;">
<v-icon>close</v-icon>
</v-btn> -->
<v-btn icon @click="closeForm()" class="pt-2 pb-2" style="color: white;">
<v-icon>close</v-icon>
</v-btn>
</v-card-title>
<v-card-text class="pt-0 pb-0">
<v-layout row wrap>
<!-- left start -->
<v-flex xs6 pa-2>
<!-- nama paket -->
<v-text-field
color="black"
label="Nama Paket"
v-model="inp_T_PacketName"
single-line
hide-details
></v-text-field>
<p v-if="_.isEmpty(inp_T_PacketName)" class="error caption mt-1 mb-0 pl-2 pr-2 pb-2" style="color:#fff">Belum isi nama paket</p>
<!-- nama paket -->
<!-- tgl start date -->
<v-flex xs12 pt-2>
<v-menu
v-model="menufilterdatestart"
:close-on-content-click="false"
:nudge-right="40"
lazy
transition="scale-transition"
offset-y
hide-details
full-width
max-width="290px"
min-width="290px"
>
<template v-slot:activator="{ on }">
<v-text-field
v-model="filterComputedDateFormattedStart"
label="Tanggal Awal"
style="font-size:12px"
outline
hide-details
readonly
v-on="on"
@blur="date = deFormatedDate(filterComputedDateFormattedStart)"
></v-text-field>
</template>
<v-date-picker v-model="xdatestart" no-title @input="menufilterdatestart = false"></v-date-picker>
</v-menu>
</v-flex>
<!-- tgl start date -->
<!-- tgl end date -->
<v-flex xs12 pt-2>
<v-menu
v-model="menufilterdateend"
:close-on-content-click="false"
:nudge-right="40"
lazy
transition="scale-transition"
offset-y
full-width
hide-details
max-width="290px"
min-width="290px"
>
<template v-slot:activator="{ on }">
<v-text-field
v-model="filterComputedDateFormattedEnd"
label="Tanggal Akhir"
outline
style="font-size:12px"
readonly
hide-details
v-on="on"
@blur="date = deFormatedDate(filterComputedDateFormattedEnd)"
></v-text-field>
</template>
<v-date-picker :min="xdatestart" v-model="xdateend" no-title @input="menufilterdateend = false"></v-date-picker>
</v-menu>
</v-flex>
<!-- tgl end date -->
<!-- dropdown tpriceheader current -->
<v-flex xs12 pt-2>
<v-select
:items="xtpriceheaderformCb"
v-model="selected_tpriceheaderformCb"
item-text="T_PriceHeaderName"
hide-details
item-value="T_PriceHeaderID"
return-object
label="Price Header"
@change="changePriceHeaderForm"
>
</v-select>
<p v-if="_.isEmpty(selected_tpriceheaderformCb)" class="error caption mt-1 mb-0 pl-2 pr-2 pb-2" style="color:#fff">Belum pilih price header</p>
</v-flex>
<!-- dropdown tpriceheader current -->
<!-- dropdown auto complete grup pemeriksaan -->
<v-flex xs12 pt-2>
<v-autocomplete
:items="xnatsubgroupCb"
v-model="selected_natsubgroupCb"
item-text="Nat_SubGroupName"
hide-details
item-value="Nat_SubGroupID"
return-object
label="Grup Pemeriksaan"
@change="changeGroupPemeriksaanForm"
>
</v-autocomplete>
<p v-if="_.isEmpty(selected_tpriceheaderformCb)" class="error caption mt-1 mb-0 pl-2 pr-2 pb-2" style="color:#fff">Belum pilih price header</p>
</v-flex>
<!-- dropdown auto complete group pemeriksaan -->
<v-layout row>
<!-- cari kode -->
<v-flex xs6 pt-2>
<v-text-field
color="black"
label="Cari Kode"
placeholder="Cari Kode, Lalu Enter"
v-model="search_kode"
@keyup.enter="searchKode()"
single-line
hide-details
></v-text-field>
</v-flex>
<!-- cari kode -->
<!-- cari nama -->
<v-flex xs6 pt-2 pl-3>
<v-text-field
color="black"
label="Cari Nama"
placeholder="Cari Nama, Lalu Enter"
v-model="search_nama"
@keyup.enter="searchNama()"
single-line
hide-details
></v-text-field>
</v-flex>
<!-- cari nama -->
</v-layout>
<!-- list t_price start -->
<v-layout row>
<v-flex xs12 pt-4 pb-2>
<v-data-table
:headers="headersTPrice"
:items="tprices"
:loading="isLoading"
hide-actions
class="elevation-1">
<template slot="items" slot-scope="props">
<td v-bind:class="{'amber lighten-4':isSelectedTPrice(props.item)}" class="text-xs-left pa-1">
{{ props.item.T_TestCode}}
</td>
<td v-bind:class="{'amber lighten-4':isSelectedTPrice(props.item)}" class="text-xs-left pa-1">
{{ props.item.T_TestName}}
</td>
<td v-bind:class="{'amber lighten-4':isSelectedTPrice(props.item)}" class="text-xs-left pa-1" >
<v-btn
v-if="packetExist(props.item)"
style="min-width:25px;margin:0" @click="itemSelectedToPush(props.item)" small color="info">
Pilih
</v-btn>
<v-btn
v-if="!packetExist(props.item)"
style="min-width:25px;margin:0;background-color: red;color: white;" @click="itemSelectedToPush(props.item)" small disabled>
Sudah Dipilih
</v-btn>
</td>
</template>
</v-data-table>
<v-pagination style="margin-top:10px;margin-bottom:10px" :total-visible="15" v-model="curr_page_tprice" :length="xtotal_page_tprice"></v-pagination>
</v-flex>
</v-layout>
<!-- list t_price end -->
</v-flex>
<!-- left end -->
<!-- right start -->
<v-flex xs6 pa-2>
<!-- radio button jenis paket -->
<v-layout row>
<v-flex xs12 pt-3>
<!-- <p>Jenis Paket</p> -->
<p style="font-weight: bold;font-size: 14px;">Jenis Paket</p>
<!-- <v-radio-group
:readonly="tpacketdetails.length > 0"
v-model="xtpacketRb"
@change="showFields()"
row hide-details pt-0
>
<v-radio label="Panel" value="PN"></v-radio>
<v-radio label="Profile" value="PR"></v-radio>
</v-radio-group> -->
<v-radio-group
v-model="xtpacketRb"
row hide-details pt-0
>
<v-radio label="Panel" value="PN"></v-radio>
<v-radio label="Profile" value="PR"></v-radio>
</v-radio-group>
<p v-if="_.isEmpty(xtpacketRb)" class="error caption mt-1 mb-0 pl-2 pr-2 pb-2" style="color:#fff">Belum pilih jenis paket</p>
</v-flex>
</v-layout>
<!-- radio button jenis paket -->
<!-- list detail paket array -->
<v-layout row>
<v-flex xs12 pt-4 pb-2>
<p style="font-weight: bold;font-size: 18px;">Detail Paket</p>
<v-data-table
:headers="headersTPacketDetailArray"
:items="tpacketdetails"
:loading="isLoading"
hide-actions
class="elevation-1">
<template slot="items" slot-scope="props">
<!-- <td v-bind:class="{'amber lighten-4':isSelectedTPrice(props.item)}" class="text-xs-left pa-1">
{{ props.item.T_TestName}}
</td> -->
<td class="text-xs-left pa-1">
{{ props.item.T_TestName}}
</td>
<!-- <td v-bind:class="{'amber lighten-4':isSelectedTPrice(props.item)}" class="text-xs-right pa-1">
{{convertMoney(props.item.T_PriceTotal)}}
</td> -->
<td class="text-xs-right pa-1">
{{convertMoney(props.item.T_PriceTotal)}}
</td>
<!-- <td v-bind:class="{'amber lighten-4':isSelectedTPrice(props.item)}" class="text-xs-right pa-1">
<v-text-field
:readonly="xtpacketRb === 'PR'"
color="black"
v-model="props.item.T_PriceTotalPacket"
:value="xtpacketRb === 'PR' ? convertMoney(props.item.T_PriceTotal) : convertMoney(props.item.T_PriceTotalPacket)"
@input="updatePrice($event,props.item)"
single-line
hide-details
type="number"
:min="0"
class="right-input"
></v-text-field>
</td> -->
<td class="text-xs-right pa-1">
<!-- <v-text-field
:readonly="xtpacketRb === 'PR'"
color="black"
v-model="props.item.T_PriceTotalPacket"
:value="xtpacketRb === 'PR' ? convertMoney(props.item.T_PriceTotal) : convertMoney(props.item.T_PriceTotalPacket)"
@input="updatePrice($event,props.item)"
single-line
hide-details
type="number"
:min="0"
class="right-input"
></v-text-field> -->
<v-text-field
color="black"
v-model="props.item.T_PriceTotalPacket"
:value="convertMoney(props.item.T_PriceTotalPacket)"
@input="updatePrice($event,props.item)"
single-line
hide-details
type="number"
:min="0"
class="right-input"
></v-text-field>
</td>
<!-- <td v-bind:class="{'amber lighten-4':isSelectedTPrice(props.item)}" class="text-xs-right pa-1 pr-2" >
<v-btn style="min-width:25px;margin:0"
@click="removeFromDetailPackets(props.item)" small color="red">
<v-icon
style="cursor:pointer;font-size:18px">
delete
</v-icon>
</v-btn>
</td> -->
<td class="text-xs-right pa-1 pr-2" >
<v-btn style="min-width:25px;margin:0"
@click="removeFromDetailPackets(props.item)" small color="red">
<v-icon
style="cursor:pointer;font-size:18px">
delete
</v-icon>
</v-btn>
</td>
</template>
<template v-slot:footer v-if="!_.isEmpty(tpacketdetails)">
<td class="text-xs-left pa-1">
<strong>Total</strong>
</td>
<td class="text-xs-right pa-1">
<!-- {{ totalTPriceAwal }} -->
<strong>{{ convertMoney(totalTPriceAwal) }}</strong>
</td>
<td :colspan="1" class="text-xs-right pa-1">
<!-- {{ totalTPricePacket }} -->
<strong>{{ convertMoney(totalTPricePacket) }}</strong>
</td>
</template>
</v-data-table>
<p v-if="_.isEmpty(tpacketdetails)" class="error caption mt-1 mb-0 pl-2 pr-2 pb-2" style="color:#fff">Belum pilih price</p>
<!-- <v-pagination style="margin-top:10px;margin-bottom:10px" :total-visible="15" v-model="curr_page_tpacketdetails" :length="xtotal_page_tpacketdetails"></v-pagination> -->
</v-flex>
</v-layout>
<!-- list detail paket array -->
</v-flex>
<!-- right end -->
</v-layout>
</v-card-text>
<v-card-actions>
<v-btn color="blue darken-1" flat @click="closeForm()">Tutup</v-btn>
<v-spacer></v-spacer>
<v-btn v-if="
!_.isEmpty(inp_T_PacketName)
&& tpacketdetails.length > 0
&& !_.isEmpty(selected_tpriceheaderformCb)"
color="blue darken-1" flat @click="savePacket()">Simpan</v-btn>
<!-- <v-btn small color="primary darken-1 text-sm-right" flat @click="dialogconfirmationdetailpaket = false">Close</v-btn> -->
</v-card-actions>
</v-card>
</v-dialog>
<!-- dialog add end -->
<!-- listing start -->
<v-card class="mb-2 pa-2 searchbox">
<v-layout row>
<!-- filter start -->
<v-flex pt-1 pl-2 pr-2 pb-1 xs7>
<v-text-field
color="black"
label="Cari"
placeholder="Ketikkan Nama, Lalu tekan Enter"
v-model="search_tpacket"
@keyup.enter="searchTPacket()"
single-line
hide-details
></v-text-field>
</v-flex>
<!-- dropdown t_headerprice start -->
<v-flex pt-1 pl-2 pb-1 xs5>
<v-select
:items="xtpriceheaderCb"
v-model="selected_tpriceheaderCb"
item-text="T_PriceHeaderName"
hide-details
item-value="T_PriceHeaderID"
return-object
label="Price Header"
@change="onPriceHeaderChange"
>
</v-select>
</v-flex>
<!-- dropdown t_headerprice end -->
<!-- add button start -->
<v-flex class="text-xs-right">
<span
v-if="props.item.T_PacketIsGenerated !== 'Y'"
@click="setNewPacketX" class="icon-medium-fill-base xs1 white--text primary mr-0 icon-add"></span>
</v-flex>
<!-- add button end -->
<!-- filter end -->
</v-layout>
</v-card>
<v-card>
<v-layout row>
<v-flex xs12 pl-2 pr-2 pt-2 pb-2>
<v-data-table
:headers="headers"
:items="tpackets"
:loading="isLoading"
hide-actions
class="elevation-1">
<template slot="items" slot-scope="props">
<td v-bind:class="{'amber lighten-4':isSelected(props.item)}" class="text-xs-left pa-1">
{{ props.item.T_PacketType}}
</td>
<td v-bind:class="{'amber lighten-4':isSelected(props.item)}" class="text-xs-left pa-1">
{{ props.item.T_PacketName}}
</td>
<td v-bind:class="{'amber lighten-4':isSelected(props.item)}" class="text-xs-left pa-1" >
<v-btn
v-if="props.item.T_PacketIsGenerated !== 'Y'"
style="min-width:25px;margin:0" @click="editRow(props.item)" small color="info"><v-icon small>edit</v-icon></v-btn>
<v-btn
v-if="props.item.T_PacketIsGenerated !== 'Y'"
style="min-width:25px;margin:0" @click="deleteData(props.item)" small color="error"><v-icon small>close</v-icon></v-btn>
</td>
</template>
</v-data-table>
<v-pagination style="margin-top:10px;margin-bottom:10px" :total-visible="15" v-model="curr_page" :length="xtotal_page"></v-pagination>
</v-flex>
</v-layout>
</v-card>
<!-- listing end -->
<one-dialog-alert :status="openalertconfirmation" :msg="msgalertconfirmation" @forget-dialog-alert="forgetAlertConfirmation()" @close-dialog-alert="closeAlertConfirmation()"></one-dialog-alert>
</v-layout>
</template>
<style>
.right-input input {
text-align: right;
}
</style>
<script>
module.exports = {
components: {
'one-dialog-info' : httpVueLoader('../../common/oneDialogInfo.vue'),
'one-dialog-alert': httpVueLoader('../../common/oneDialogAlert.vue')
},
mounted() {
this.$store.dispatch("packet/getTPriceHeader")
this.$store.dispatch("packet/getTPriceHeaderCurrent")
this.$store.dispatch("packet/getGroupPemeriksaan")
// listing table
var prm = {}
prm.search = this.search_tpacket
prm.current_page = 1
prm.tpriceheader = "All"
// prm.natsubgroup = "All"
this.$store.commit("packet/update_current_page", 1)
this.$store.dispatch("packet/searchv0", prm)
},
methods: {
formatDate (date) {
if (!date) return null
const [year, month, day] = date.split('-')
return `${day}-${month}-${year}`
},
deFormatedDate (date) {
if (!date) return null
const [ day,month, year] = date.split('-')
return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`
},
changeGroupPemeriksaanForm(selectedItem){
console.log('Selected item pemeriksaan:', selectedItem.Nat_SubGroupID);
this.$store.commit("packet/update_selected_natsubgroupCb", {
Nat_SubGroupID: selectedItem.Nat_SubGroupID,
Nat_SubGroupNat_GroupID:"",
Nat_SubGroupCode:"",
Nat_SubGroupName:selectedItem.Nat_SubGroupName,
Nat_SubGroupLangName:"",
Nat_SubGroupIsResult:"",
Nat_SubGroupReportTitle:"",
Nat_SubGroupCreated:"",
Nat_SubGroupLastUpdated:"",
Nat_SubGroupIsActive:""
})
this.search_nama = "";
this.search_kode = "";
this.searchKode()
},
changePriceHeaderForm(selectedItem){
console.log('Selected item:', selectedItem.Nat_SubGroupID);
this.$store.commit("packet/update_selected_natsubgroupCb",{
Nat_SubGroupID:"All",
Nat_SubGroupNat_GroupID:"",
Nat_SubGroupCode:"",
Nat_SubGroupName:"All",
Nat_SubGroupLangName:"",
Nat_SubGroupIsResult:"",
Nat_SubGroupReportTitle:"",
Nat_SubGroupCreated:"",
Nat_SubGroupLastUpdated:"",
Nat_SubGroupIsActive:""
})
this.search_nama = "";
this.search_kode = "";
this.searchKode()
},
showFields(){
if(this.xtpacketRb === 'PR'){
this.tpacketdetails.forEach(detail => {
detail.T_PriceTotalPacket = detail.T_PriceTotal;
});
this.updateTotals()
}
},
editRow(row) {
console.log('item edit ', row)
this.$store.commit("packet/update_selected_packet", row)
this.$store.dispatch("packet/getPacketById", row)
},
deleteData(row){
console.log('item delete ', row)
this.$store.commit("packet/update_selected_packet", row)
console.log(this.$store.state.packet.selected_packet)
let msg = "Yakin, akan menghapus data paket " + this.$store.state.packet.selected_packet.T_PacketName + " ?"
this.$store.commit("packet/update_msg_confirmation_delete", msg)
this.$store.commit("packet/update_dialog_confirmation_delete", true)
},
doDeleteData() {
var prm = {}
prm.id = this.$store.state.packet.selected_packet.T_PacketID
prm.name = this.$store.state.packet.selected_packet.T_PacketName
console.log(prm)
this.$store.dispatch("packet/deletev0", prm)
},
closeForm(){
this.$store.commit("packet/update_inp_T_PacketName", "")
this.$store.commit("packet/update_selected_tpriceheaderformCb",{})
this.$store.commit("packet/update_selected_natsubgroupCb",{})
this.$store.commit("packet/update_tpackettypeRb",'PN')
this.$store.commit("packet/update_tpacketdetails", [])
this.$store.commit("packet/update_totalTPriceAwal", 0)
this.$store.commit("packet/update_totalTPricePacket", 0)
this.$store.commit("packet/update_search_nama", "")
this.$store.commit("packet/update_search_kode", "")
this.$store.commit("packet/update_tprices",[])
this.$store.commit("packet/update_total_prices",0)
// this.dialog_add = false;
this.$store.commit("packet/update_dialog_add", false)
},
closeDialogError(){
this.$store.commit("packet/update_dialog_error", false)
},
updatePrice(value,item) {
item.T_PriceTotalPacket = parseFloat(value.replace(/[^\d.-]/g, ''));
this.totalTPricePacket = this.tpacketdetails.reduce((sum, item) => {
const pricePacket = parseFloat(item.T_PriceTotalPacket) || 0;
return sum + pricePacket;
}, 0);
},
convertMoney(money) {
return one_money(money)
},
updateTotals() {
this.totalTPricePacket = this.tpacketdetails.reduce((sum, item) => {
const pricePacket = parseFloat(item.T_PriceTotalPacket) || 0;
return sum + pricePacket;
}, 0);
this.totalTPriceAwal = this.tpacketdetails.reduce((sum, item) => {
const priceTotal = parseFloat(item.T_PriceTotal) || 0;
return sum + priceTotal;
}, 0);
},
savePacket() {
var prm = {
xid:this.$store.state.packet.xid,
act:this.$store.state.packet.act,
namapacket:this.$store.state.packet.inp_T_PacketName,
priceheader:this.$store.state.packet.selected_tpriceheaderformCb,
jenispacket:this.$store.state.packet.tpackettypeRb,
detailpacket:this.$store.state.packet.tpacketdetails,
T_PacketOriginalPrice: this.totalTPriceAwal,
T_PacketPrice: this.totalTPricePacket,
lastid: -1
};
console.log('inputan ',prm)
this.$store.dispatch("packet/savesetupv0", prm)
},
removeFromDetailPackets(item) {
var selected_tpacketdetails = this.$store.state.packet.tpacketdetails
var idx = _.findIndex(selected_tpacketdetails, function(o) { return parseInt(o.T_TestID) === parseInt(item.T_TestID)})
selected_tpacketdetails.splice(idx, 1)
this.updateTotals();
},
packetExist(item) {
var selected_tpacketdetails = this.$store.state.packet.tpacketdetails
var idx = _.findIndex(selected_tpacketdetails, function(o) { return parseInt(o.T_TestID) === parseInt(item.T_TestID)})
if(idx === -1){
return true
}
else{
return false
}
},
itemSelectedToPush(row){
// console.log('item selected to push', row)
// this.$store.commit("packet/update_tpacketdetails", [row])
var arrTx = [];
arrTx.push(row);
for (let x = 0; x < arrTx.length; x++) {
let alreadyExists = false;
for (let index = 0; index < this.tpacketdetails.length; index++) {
if (this.tpacketdetails[index].T_TestID === arrTx[x].T_TestID) {
alreadyExists = true;
break;
}
}
if (!alreadyExists) {
// this.tpacketdetails.push(arrTx[x]);
this.tpacketdetails.push({
T_PacketDetailT_TestID: arrTx[x].T_PriceT_TestID,
T_PriceTotal: arrTx[x].T_PriceTotal,
T_PriceTotalPacket: arrTx[x].T_PriceTotalPacket,
T_PacketDetailIsActive: arrTx[x].T_PriceIsActive,
T_PacketDetailCreated: arrTx[x].T_PriceCreated,
T_PacketDetailLastUpdated: arrTx[x].T_PriceLastUpdated,
T_PacketDetailPriceAmount: arrTx[x].T_PriceAmount,
T_PacketDetailPriceDisc: arrTx[x].T_PriceDisc,
T_PacketDetailPriceDiscRp: arrTx[x].T_PriceDiscRp,
T_PacketDetailPriceSubTotal: arrTx[x].T_PriceSubTotal,
T_TestID: arrTx[x].T_TestID,
T_TestName: arrTx[x].T_TestName
})
this.updateTotals();
}
}
// this.tpacketdetails.push(row);
// this.$store.commit("packet/update_pricepackets", [row])
console.log('item selected to push', this.$store.state.packet.tpacketdetails)
},
isSelectedTPrice(p) {
return p.T_PriceID == this.$store.state.packet.selected_tprice.T_PriceID
},
searchKode(){
// alert('cari kode')
var prm = {}
prm.tpriceheader = this.selected_tpriceheaderformCb.T_PriceHeaderID
prm.natsubgroup = this.$store.state.packet.selected_natsubgroupCb.Nat_SubGroupID
prm.searchNama = this.search_nama
prm.searchKode = this.search_kode
prm.current_page = this.curr_page_tprice
this.$store.commit("packet/update_current_page_tprice", 1)
this.$store.dispatch("packet/searchTPricev0", prm)
},
searchNama(){
// alert('cari nama')
var prm = {}
prm.tpriceheader = this.selected_tpriceheaderformCb.T_PriceHeaderID
prm.natsubgroup = this.$store.state.packet.selected_natsubgroupCb.Nat_SubGroupID
prm.searchNama = this.search_nama
prm.searchKode = this.search_kode
prm.current_page = this.curr_page_tprice
this.$store.commit("packet/update_current_page_tprice", 1)
this.$store.dispatch("packet/searchTPricev0", prm)
},
onPriceHeaderChange(valuePriceHeader){
// console.log('Selected Price Header:', valuePriceHeader);
var prm = {}
prm.search = this.search_tpacket
prm.current_page = 1
prm.tpriceheader = valuePriceHeader.T_PriceHeaderID
this.$store.commit("packet/update_current_page", 1)
this.$store.dispatch("packet/searchv0", prm)
},
isSelected(p) {
return p.T_PacketID == this.$store.state.packet.selected_packet.T_PacketID
},
setNewPacketX(){
// alert('show add form')
this.$store.commit("packet/update_act", 'new')
this.$store.commit("packet/update_xid", -1)
this.$store.commit("packet/update_dialog_add", true)
},
searchTPacket(){
// alert('search t packet')
var prm = {}
prm.search = this.search_tpacket
prm.current_page = this.curr_page
prm.tpriceheader = this.$store.state.packet.selected_tpriceheaderCb.T_PriceHeaderID
// prm.natsubgroup = this.selected_natsubgroupCb
this.$store.commit("packet/update_current_page", 1)
this.$store.dispatch("packet/searchv0", prm)
},
closeAlertConfirmation() {
this.$store.commit("packet/update_open_alert_confirmation", false)
},
forgetAlertConfirmation() {
this.$store.commit("packet/update_no_save", 0)
this.$store.commit("packet/update_open_alert_confirmation", false)
},
closeDialogSuccess() {
let arrpacket = this.$store.state.packet.tpackets
var idx = _.findIndex(arrpacket, item => item.T_PacketID === this.$store.state.packet.last_id)
console.log(idx)
// this.$store.dispatch("patient/search", {
// status: this.status,
// current_page: this.curr_page,
// lastid: idx
// })
// var prm = {}
// prm.search = this.search_tpacket
// prm.current_page = this.curr_page
// prm.tpriceheader = this.$store.state.packet.selected_tpriceheaderCb.T_PriceHeaderID
this.$store.dispatch("packet/searchv0", {
// natsubgroup: this.selected_natsubgroupCb,
search: this.search_tpacket,
tpriceheader: this.$store.state.packet.selected_tpriceheaderCb.T_PriceHeaderID,
current_page: this.curr_page,
lastid: idx
})
this.$store.commit("packet/update_dialog_success", false)
},
},
computed: {
xdatestart : {
get() {
return this.$store.state.packet.start_date
},
set(val) {
this.$store.commit("packet/update_start_date",val)
//this.searchTransaction()
}
},
xdateend : {
get() {
return this.$store.state.packet.end_date
},
set(val) {
this.$store.commit("packet/update_end_date",val)
//this.searchTransaction()
}
},
filterComputedDateFormattedStart () {
return this.formatDate(this.xdatestart)
},
filterComputedDateFormattedEnd () {
return this.formatDate(this.xdateend)
},
dialogconfirmationdelete: {
get() {
return this.$store.state.packet.dialog_confirmation_delete
},
set(val) {
this.$store.commit("packet/update_dialog_confirmation_delete", val)
}
},
msgconfirmationdelete() {
return this.$store.state.packet.msg_confirmation_delete
},
xnatsubgroupCb() {
return this.$store.state.packet.natsubgroupCb
},
selected_natsubgroupCb: {
get() {
return this.$store.state.packet.selected_natsubgroupCb
},
set(val) {
this.$store.commit("packet/update_selected_natsubgroupCb", val)
}
},
dialogerror: {
get() {
return this.$store.state.packet.dialog_error
},
set(val) {
this.$store.commit("packet/update_dialog_error", val)
}
},
msgerror() {
return this.$store.state.packet.msg_error
},
totalTPricePacket:{
get(){
return this.$store.state.packet.totalTPricePacket
},
set(val) {
this.$store.commit("packet/update_totalTPricePacket", val)
},
},
totalTPriceAwal:{
get(){
return this.$store.state.packet.totalTPriceAwal
},
set(val) {
this.$store.commit("packet/update_totalTPriceAwal", val)
},
},
tpacketdetails: {
// return this.$store.state.packet.tpacketdetails
get() {
return this.$store.state.packet.tpacketdetails
},
set(val) {
this.$store.commit("packet/update_tpacketdetails", val)
}
},
curr_page_tpacketdetails: {
get() {
return this.$store.state.packet.current_page_tpacketdetails
},
set(val) {
this.$store.commit("packet/update_current_page_tpacketdetails", val)
// var prm = {}
// prm.searchNama = this.search_nama
// prm.searchKode = this.search_kode
// prm.current_page = val
// // prm.tpriceheader = this.$store.state.packet.selected_tpriceheaderCb.T_PriceHeaderID
// // this.$store.commit("packet/update_current_page", 1)
// this.$store.dispatch("packet/searchTPricev0", prm)
}
},
xtotal_page_tpacketdetails: {
get() {
return this.$store.state.packet.total_tpacketdetails
},
set(val) {
this.$store.commit("packet/update_total_tpacketdetails", val)
}
},
pricepackets: {
get() {
return this.$store.state.packet.pricepackets
},
set(val) {
this.$store.commit("packet/update_pricepackets", val)
}
},
xtpacketRb:{
get() {
return this.$store.state.packet.tpackettypeRb
},
set(val) {
this.$store.commit("packet/update_tpackettypeRb", val)
}
},
tprices() {
return this.$store.state.packet.tprices
},
curr_page_tprice: {
get() {
return this.$store.state.packet.current_page_tprice
},
set(val) {
this.$store.commit("packet/update_current_page_tprice", val)
var prm = {}
prm.natsubgroup = this.selected_natsubgroupCb.Nat_SubGroupID
prm.searchNama = this.search_nama
prm.searchKode = this.search_kode
prm.current_page = val
prm.tpriceheader = this.selected_tpriceheaderformCb.T_PriceHeaderID
// this.$store.commit("packet/update_current_page", 1)
this.$store.dispatch("packet/searchTPricev0", prm)
}
},
xtotal_page_tprice: {
get() {
return this.$store.state.packet.total_prices
},
set(val) {
this.$store.commit("packet/update_total_prices", val)
}
},
xtpriceheaderformCb() {
return this.$store.state.packet.tpriceheaderformCb
},
selected_tpriceheaderformCb: {
get() {
return this.$store.state.packet.selected_tpriceheaderformCb
},
set(val) {
this.$store.commit("packet/update_selected_tpriceheaderformCb", val)
}
},
search_kode: {
get() {
return this.$store.state.packet.search_kode
},
set(val) {
this.$store.commit("packet/update_search_kode", val)
this.$store.commit("packet/update_no_save", 1)
}
},
search_nama: {
get() {
return this.$store.state.packet.search_nama
},
set(val) {
this.$store.commit("packet/update_search_nama", val)
this.$store.commit("packet/update_no_save", 1)
}
},
inp_T_PacketName:{
get() {
return this.$store.state.packet.inp_T_PacketName
},
set(val) {
this.$store.commit("packet/update_inp_T_PacketName", val)
}
},
xact() {
return this.$store.state.packet.act
},
dialogadd: {
get() {
return this.$store.state.packet.dialog_add
},
set(val) {
this.$store.commit("packet/update_dialog_add", val)
}
},
dialogedit: {
get() {
return this.$store.state.packet.dialog_edit
},
set(val) {
this.$store.commit("packet/update_dialog_edit", val)
}
},
curr_page: {
get() {
return this.$store.state.packet.current_page
},
set(val) {
this.$store.commit("packet/update_current_page", val)
// this.$store.dispatch("packet/searchv0", {
// status: this.status,
// current_page: val,
// lastid: -1
// })
var prm = {}
prm.search = this.search_tpacket
// prm.natsubgroup = this.selected_natsubgroupCb
prm.current_page = val
prm.tpriceheader = this.$store.state.packet.selected_tpriceheaderCb.T_PriceHeaderID
// this.$store.commit("packet/update_current_page", 1)
this.$store.dispatch("packet/searchv0", prm)
}
},
xtotal_page: {
get() {
return this.$store.state.packet.total_packets
},
set(val) {
this.$store.commit("packet/update_total_packets", val)
}
},
tpackets() {
return this.$store.state.packet.tpackets
},
isLoading() {
return this.$store.state.packet.search_status == 1
},
xtpriceheaderCb() {
return this.$store.state.packet.tpriceheaderCb
},
selected_tpriceheaderCb: {
get() {
return this.$store.state.packet.selected_tpriceheaderCb
},
set(val) {
this.$store.commit("packet/update_selected_tpriceheaderCb", val)
}
},
search_tpacket: {
get() {
return this.$store.state.packet.search_tpacket
},
set(val) {
this.$store.commit("packet/update_search_tpacket", val)
this.$store.commit("packet/update_no_save", 1)
}
},
dialogsuccess: {
get() {
return this.$store.state.packet.dialog_success
},
set(val) {
this.$store.commit("packet/update_dialog_success", val)
}
},
msgsuccess() {
return this.$store.state.packet.msg_success
},
openalertconfirmation: {
get() {
return this.$store.state.packet.open_alert_confirmation
},
set(val) {
this.$store.commit("packet/update_open_alert_confirmation", val)
}
},
},
watch: {
},
data() {
return {
menufilterdatestart:false,
menufilterdateend:false,
date: new Date().toISOString().substr(0, 10),
msgalertconfirmation: "Perubahan yang telah dilakukan belum disimpan dong !",
page: 1,
headers: [
{
text: "JENIS PAKET",
align: "left",
sortable: false,
value: "mr",
width: "20%",
class: "pa-2 primary white--text"
},
{
text: "NAMA PAKET",
align: "left",
sortable: false,
value: "lab",
width: "55%",
class: "pa-2 primary white--text"
},
{
text: "AKSI",
align: "left",
sortable: false,
value: "lab",
width: "15%",
class: "pa-2 primary white--text"
}
],
pagination: {
descending: false,
page: 1,
rowsPerPage: 5,
sortBy: 'T_PacketID',
totalItems: this.$store.state.packet.total_packets
},
// t_price
headersTPrice: [
{
text: "KODE",
align: "left",
sortable: false,
value: "mr",
width: "20%",
class: "pa-2 primary white--text"
},
{
text: "NAMA",
align: "left",
sortable: false,
value: "lab",
width: "55%",
class: "pa-2 primary white--text"
},
{
text: "AKSI",
align: "left",
sortable: false,
value: "lab",
width: "15%",
class: "pa-2 primary white--text"
}
],
paginationTPrice: {
descending: false,
page: 1,
rowsPerPage: 5,
sortBy: 'T_PriceID',
totalItems: this.$store.state.packet.total_prices
},
// t_packetdetail array
headersTPacketDetailArray: [
{
text: "NAMA",
align: "left",
sortable: false,
value: "mr",
width: "20%",
class: "pa-2 primary white--text"
},
{
text: "HARGA AWAL",
align: "left",
sortable: false,
value: "lab",
width: "27.5%",
class: "pa-2 primary white--text"
},
{
text: "HARGA PAKET",
align: "left",
sortable: false,
value: "lab",
width: "27.5%",
class: "pa-2 primary white--text"
},
{
text: "AKSI",
align: "left",
sortable: false,
value: "lab",
width: "15%",
class: "pa-2 primary white--text"
}
],
paginationTPacketDetailArray: {
descending: false,
page: 1,
rowsPerPage: 5,
sortBy: 'T_PriceID',
totalItems: this.$store.state.packet.total_tpacketdetails
},
}
},
}
</script>