Files
2026-04-27 10:08:27 +07:00

203 lines
6.6 KiB
Vue

<template>
<v-layout class="fill-height" column>
<v-card class="grow">
<hr style="border-top:0px solid #c8c8c8;" />
<v-data-table
:headers="headers" :items="orders"
:loading="isLoading"
hide-actions class="tblresult xelevation-1">
<template slot="items" slot-scope="props">
<td class="text-xs-left pl-2 pa-1" :class="getClass(props.item)"
>
{{ short_name(props.item.M_PatientName) }}
</td>
<td class="text-xs-left pa-1" :class="getClass(props.item)"
>
{{ props.item.T_OrderHeaderLabNumber}}
</td>
<td class="text-xs-left pa-1" :class="getClass(props.item)" >
<v-textarea
style="text-align:right"
label=""
solo
rows=1
hide-details
class="text_on_right"
:value="props.item.T_OrderDetailResult"
v-on:keyup="doChange($event.target.value,props.item)"
v-if="props.item.T_TestIsQuantitative == 'Y' && isShowResult(props.item) "
auto-grow
:readonly="props.item.T_OrderDetailVerification == 'Y'"
:flat="props.item.T_OrderDetailVerification == 'Y'"
></v-textarea>
<v-select
:items="props.item.template"
label=""
item-value="T_ResultTemplateValue"
item-text="T_ResultTemplateValue"
v-if="props.item.is_quantitative == 'N' && isShowResult(props.item) "
solo
hide-details
:value="props.item.T_OrderDetailResult"
:disabled="props.item.T_OrderDetailVerification == 'Y'"
></v-select>
<span class="d_right" :class="getResultClass(props.item)">
{{ labelResult(props.item) }}
</span>
</td>
<td class="text-xs-left pa-1" :class="getClass(props.item)"
>
{{ props.item.Nat_UnitName}}
</td>
<td class="text-xs-left pa-1 " :class="getClass(props.item)"
>
{{ props.item.T_OrderDetailNormalValueNote}}
</td>
<td class="text-xs-left pa-1 " :class="getClass(props.item)"
>
{{ props.item.T_OrderDetailNote}}
</td>
</template>
</v-data-table>
</v-card>
</v-layout>
</template>
<style scoped>
span.d_right {
display:inline-block;
width:100%;
padding-right:15px;
text-align:right;
}
.text_on_right textarea {
text-align:right;
}
td.selected {
}
table.v-table tbody td,table.v-table tbody th {
height: 40px;
}
table.v-table thead tr {
height: 40px;
}
</style>
<script>
module.exports = {
data() {
return {
query: "",
items: [],
headers: [
{
text: "Nama",
align: "left",
sortable: false,
value: "mr",
width: "20%",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "No Reg",
align: "left",
sortable: false,
value: "mr",
width: "10%",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "Hasil",
align: "right",
sortable: false,
value: "mr",
width: "20%",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "Unit",
align: "left",
sortable: false,
value: "mr",
width: "10%",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "Nilai Normal",
align: "left",
sortable: false,
value: "mr",
width: "30%",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "Catatan",
align: "left",
sortable: false,
value: "mr",
width: "10%",
class: "pa-2 blue lighten-3 white--text"
}
],
isLoading: false
};
},
methods : {
doChange(v,item) {
let orders = this.$store.state.list_px.orders
let idx = _.findIndex(orders,function(order) { return order.T_OrderDetailID == item.T_OrderDetailID })
if (idx > -1) {
orders[idx].T_OrderDetailResult = v
this.$store.commit("list_px/update_orders",orders)
}
},
getResultClass(it) {
return {}
if (it.SampleStatus == "OK") {
if (it.T_OrderSampleWorklistReceive== 'N') return {};
if (it.IsPreAnalytic == "N") return {"red--text":true};
return {};
}
if (it.IsPreAnalytic == "N") return {"red--text":true};
},
oneMoment : function(d) {
return window.oneMoment(d)
},
short_name(p) {
if (p.length > 20) return p.substr(0,20) + '...'
return p
},
getClass(item) {
let cls={ 'amber lighten-4' : false }
if (item.Nat_TestID == this.$store.state.list_px.selected_px.Nat_TestID ) {
cls = { 'amber lighten-4' : true }
}
return cls
},
isShowResult(it) {
if (it.SampleStatus == "OK") {
if (it.T_OrderSampleWorklistReceive== 'N') return false;
if (it.IsPreAnalytic == "N") return false;
return true;
}
return false;
},
labelResult(it) {
if (it.SampleStatus != "OK") return it.SampleStatus;
if (it.IsPreAnalytic == "N" ) return "Belum Pre-Analytic";
if (it.T_OrderSampleWorklistReceive == "N") return it.T_OrderDetailResult;
return "";
}
},
computed : {
orders() {
return this.$store.state.list_px.orders
}
},
mounted() {
this.$store.dispatch("list_px/search_order")
}
}
</script>