Initial import

This commit is contained in:
sas.fajri
2026-05-25 20:01:37 +07:00
commit 710d7c1b97
10371 changed files with 2381698 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
// API :
// search bank
// paramater : query , page , rowPerPage
const URL =
"http://lebaran.aplikasi.web.id/smartlab_api/vuex/t02/search_bank";
export async function searchBank(query, page, rowPerPage = 15) {
try {
var resp = await axios.post(URL, {
query: query,
page: page,
rowPerPage: rowPerPage
});
if (resp.status != 200) {
return {
status: "ERR",
query: query,
message: resp.statusText
};
}
let data = resp.data;
data.query = query;
return data;
} catch (e) {
return {
status: "ERR",
query: query,
message: e.message
};
}
}

View File

@@ -0,0 +1,128 @@
<template>
<v-layout class="fill-height" column>
<v-card class="mb-2 pa-2 searchbox">
<v-layout >
<v-text-field class="xs3 ma-1"
placeholder="No Lab"
single-line
outline
hide-details
></v-text-field>
<v-text-field class="xs6 ma-1"
label=""
placeholder="Nama"
single-line
outline
hide-details
></v-text-field>
<v-select class="xs6 ma-1" :items="items" label="Status" outline hide-details></v-select>
<v-btn class="xs3 ma-1" color="success" >Search</v-btn>
</v-layout>
</v-card>
<v-card class="grow">
<v-data-table :headers="headers" :items="patients"
:loading="isLoading"
hide-actions class="elevation-1">
<template slot="items" slot-scope="props">
<td class="text-xs-left pa-2" v-bind:class="{'amber lighten-4':props.item.selected}" @click="selectMe(props.item)">{{ props.item.mr }}</td>
<td class="pa-2" v-bind:class="{'amber lighten-4':props.item.selected}" @click="selectMe(props.item)">{{ props.item.lab}}</td>
<td class="text-xs-left pa-2" v-bind:class="{'amber lighten-4':props.item.selected}" @click="selectMe(props.item)">{{ props.item.name }}</td>
<td class="text-xs-left pa-2" v-bind:class="{'amber lighten-4':props.item.selected}" @click="selectMe(props.item)">{{ props.item.status }}</td>
</template>
</v-data-table>
</v-card>
</v-layout>
</template>
<style scoped>
.searchbox .v-input.v-text-field .v-input__slot{
min-height:60px;
}
.searchbox .v-btn {
min-height:60px;
}
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: "NO REG",
align: "left",
sortable: false,
value: "mr",
width: "15%",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "NO LAB",
align: "left",
sortable: false,
value: "lab",
width: "15%",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "NAMA",
align: "left",
sortable: false,
value: "name",
width: "25%",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "STATUS",
align: "left",
sortable: false,
value: "status",
width: "15%",
class: "pa-2 blue lighten-3 white--text"
}
],
isLoading: true,
patients: [
{"status":"Data Verified","lab":"08000198909", "mr": "MR-18107237", "name": "Pasien Umum", "sex": "Perempuan", "address": "Klero\r\nKabupaten Semarang", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Payment Verified","lab":"08000198111", "mr": "MR-18107238", "name": "Heri Suryawan", "sex": "Laki - laki", "address": "Ampel", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Payment Verified","lab":"08000198222", "mr": "MR-18107239", "name": "LUKA MODRIC", "sex": "Laki - laki", "address": "Jl. Raya No 1", "action":"", "dob":"19-09-1992", "selected":true},
{"status":"Data Verified","lab":"08000198121", "mr": "MR-18107247", "name": "Tyas Medika Pranandita", "sex": "Laki - laki", "address": "KP. Karangpanas", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Data & Payment Verified","lab":"08000198131", "mr": "MR-18107248", "name": "Astrid", "sex": "Perempuan", "address": "Jl. Ketintang Raya No.81", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Data & Payment Verified","lab":"08000198123", "mr": "MR-18107249", "name": "Happy", "sex": "Perempuan", "address": "Karangpanas", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Data Verified","lab":"08000198111", "mr": "MR-18107251", "name": "Juan Alexis Sukir", "sex": "Laki - laki", "address": "Jl. Sawi", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Data & Payment Verified","lab":"08000198555", "mr": "MR-18107252", "name": "Alexander Wang", "sex": "Laki - laki", "address": "Jl. Mangga Muda No. 7", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Payment Verified","lab":"08000198444", "mr": "MR-18107253", "name": "CILA CILANI", "sex": "Perempuan", "address": "Jl. Duren PInang No. 67", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Data & Payment Verified","lab":"08000198123", "mr": "MR-18107254", "name": "Untung Suropati", "sex": "Laki - laki", "address": "Pasar Kapling Semarang", "action":"", "dob":"19-09-1992", "selected":false}
]
};
}
}
</script>

View File

@@ -0,0 +1,258 @@
<template>
<v-layout fil-height column>
<v-card class="mb-2">
<v-layout row wrap>
<v-flex xs12>
<v-layout>
<v-flex xs3 pa-2>
<v-layout row wrap>
<v-flex xs12>
<v-img
src="https://www.sgm-inc.com/wp-content/uploads/2014/06/no-profile-male-img.gif"
aspect-ratio="1"
class="grey lighten-2 elevation-2"
>
</v-flex>
</v-flex>
<v-flex xs9>
<v-flex xs12>
<v-layout>
<v-flex xs7 pa-1>
<v-text-field
label="Nama"
placeholder=""
:value="p_name"
readonly
></v-text-field>
</v-flex>
<v-flex xs5 pa-1>
<v-text-field
label="RM"
placeholder=""
:value="p_mr"
readonly
></v-text-field>
</v-flex>
</v-layout>
</v-flex>
<v-flex xs12 pa-1>
<v-textarea
auto-grow
label="Alamat"
rows="2"
:value="p_address"
readonly
></v-textarea>
</v-flex>
<v-flex xs12>
<v-layout>
<v-flex xs7 pa-1>
<v-text-field
label="Telephon / HP"
placeholder=""
:value="p_phone"
readonly
></v-text-field>
</v-flex>
<v-flex xs5 pa-1>
<v-text-field
label="Jenis Kelamin"
placeholder=""
:value="p_kelamin"
readonly
></v-text-field>
</v-flex>
</v-layout>
</v-flex>
<v-flex xs12>
<v-layout>
<v-flex xs7 pa-1>
<v-text-field
label="Tanggal Lahir"
placeholder=""
:value="p_dob"
readonly
></v-text-field>
</v-flex>
<v-flex xs5 pa-1>
<v-text-field
label="Umur"
placeholder=""
:value="p_age"
readonly
></v-text-field>
</v-flex>
</v-layout>
</v-flex>
</v-flex>
</v-layout>
</v-flex>
<v-flex xs12 >
<v-layout>
<v-flex xs6 pa-2>
<one-field-verification
:is_error="true"
label="Nama sudah sesuai"
@x_change="companyChange"
value=false
></one-field-verification>
</v-flex>
<v-flex xs6 pa-2>
<one-field-verification
:is_error="true"
label="No RM sudah sesuai "
@x_change="companyChange"
value=false
></one-field-verification>
</v-flex>
</v-layout>
</v-flex>
<v-flex xs12 >
<v-layout>
<v-flex xs6 pa-2>
<one-field-verification
:is_error="true"
label="Alamat sudah sesuai"
@x_change="companyChange"
value=false
></one-field-verification>
</v-flex>
<v-flex xs6 pa-2>
<one-field-verification
:is_error="true"
label="No HP sudah sesuai "
@x_change="companyChange"
value=false
></one-field-verification>
</v-flex>
</v-layout>
</v-flex>
<v-flex xs12 >
<v-layout>
<v-flex xs6 pa-2>
<one-field-verification
:is_error="true"
label="DOB sudah sesuai"
@x_change="companyChange"
value=false
></one-field-verification>
</v-flex>
<v-flex xs6 pa-2>
<one-field-verification
:is_error="true"
label="Umur sudah sesuai "
@x_change="companyChange"
value=false
></one-field-verification>
</v-flex>
</v-layout>
</v-flex>
</v-card>
<v-card >
<v-subheader>
DATA DOKTER
</v-subheader>
<v-divider></v-divider>
<v-flex xs12 pa-3>
<v-text-field
label="Nama"
placeholder=""
:value="p_namedoctor"
readonly
></v-text-field>
</v-flex>
<v-flex xs12 pa-3>
<v-text-field
label="Alamat Dokter"
placeholder=""
:value="p_addressdokter"
readonly
></v-text-field>
</v-flex>
<v-flex xs12 >
<v-layout>
<v-flex xs6 pa-2>
<one-field-verification
:is_error="true"
label="Nama DOkter sudah sesuai"
@x_change="companyChange"
value=false
></one-field-verification>
</v-flex>
<v-flex xs6 pa-2>
<one-field-verification
:is_error="true"
label="Alamat Dokter sudah sesuai "
@x_change="companyChange"
value=false
></one-field-verification>
</v-flex>
</v-layout>
</v-flex>
</v-card>
</v-layout>
</template>
<style scoped>
</style>
<script>
module.exports = {
components : {
'one-field-verification' : httpVueLoader('../../common/oneFieldVerification.vue')
},
data() {
return {
p_name : 'HERI SURYAWAN ST.',
p_address : `KPA Regency 221 Klipang\nSendangmulyo Semarang`,
p_phone : '0898-5945-837',
p_note : `Pasien ini agak bawel, tidak usah ditanggapi kalau sedang ngomel - ngomel`,
p_dob : '19-09-1999',
p_age : '20th 3bl 2hr',
p_mr : 'MR-1902020001',
p_kelamin : 'Laki-Laki',
p_namedoctor : 'Dr. Anwar Sonot',
p_addressdokter : 'Jl DUrian No 5 Jogjakarta'
}
},
methods : {
companyChange : function (p){
console.log(p)
}
}
}
</script>

View File

@@ -0,0 +1,89 @@
<template>
<v-layout>
<v-checkbox
v-model="x_value"
@change="$emit('x_change',{x_value,x_note})"
hide-details class="shrink mr-2"
></v-checkbox>
<v-text-field
:label="__label"
placeholder="Alasan"
outline
:disabled="x_disabled"
:error-messages="is_error ? x_error_messages : ''"
:error_count="is_error ? x_error_count : 0 "
:error=is_error
:hide-details=!x_error
v-model="x_note"
></v-text-field>
</v-layout>
</template>
<script>
module.exports = {
props : ['label', 'value', 'is_error'],
data () {
return {
x_value : false,
x_note : ""
}
},
computed : {
__label () {
if (this.label)
return this.label;
return "";
},
x_disabled () {
return this.x_value;
},
x_error () {
if (!this.x_value && this.x_note.length < 1)
return true;
else {
this.x_note = "";
return false;
}
},
x_error_count () {
// return 0;
if (this.x_error)
return 1;
return 0;
},
x_error_messages () {
if (this.x_error)
return ["Harus diisi"];
return [];
},
// x_note : {
// set (newval) {
// return newval;
// },
// get () {
// return "";
// }
// }
}
}
</script>

View File

@@ -0,0 +1,127 @@
<template>
<v-layout column >
<v-card>
<v-layout row>
<v-flex xs12>
<v-subheader red--text text--lighten-1> BARCODE</v-subheader>
<v-divider></v-divider>
<v-layout row wrap>
<v-flex xs12 pt-2 pl-4 pr-4 pb-4>
<table>
<tr>
<th style="text-align:center" width="5%">#</th>
<th style="text-align:center" width="30%">JENIS</th>
<th style="text-align:center" width="60%">NOMOR</th>
<th style="text-align:center" width="10%">QTY</th>
</tr>
<tr>
<td class="mini-input" style="text-align:center;vertical-align:center;" align="center">
<v-checkbox class="pa-0" ></v-checkbox>
</td>
<td>Serum</td>
<td style="text-align:center">1212121281291</td>
<td>
<input type="text" class="fhm-input"/>
</td>
</tr>
<tr>
<td class="mini-input" style="text-align:center;vertical-align:center;" align="center">
<v-checkbox class="pa-0" ></v-checkbox>
</td>
<td>Serum</td>
<td style="text-align:center">1212121281291</td>
<td>
<input type="text" class="fhm-input"/>
</td>
</tr>
<tr>
<td class="mini-input" style="text-align:center;vertical-align:center;" align="center">
<v-checkbox class="pa-0" ></v-checkbox>
</td>
<td>Serum</td>
<td style="text-align:center">1212121281291</td>
<td>
<input type="text" class="fhm-input"/>
</td>
</tr>
</table>
</v-flex>
</v-layout>
</v-flex>
</v-flex>
</v-card>
</v-layout>
</template>
<style scoped>
table, td, th {
border: 1px solid #ddd;
text-align: left;
}
table {
border-collapse: collapse;
width: 100%;
}
th, td {
padding-top: 5px;
padding-bottom: 5px;
padding-left: 8px;
padding-right: 5px;
}
.mini-input .v-input{
margin-top: 0px;
}
.mini-input .v-input, .mini-input .v-input--selection-controls,.mini-input .v-input__slot{
margin-top: 0px;
margin-bottom:0px;
margin-left:3px;
}
.mini-input .v-messages{
min-height:0px;
}
input.fhm-input{
border: 1px solid black;
border-radius: 2px;
-webkit-box-shadow:
inset 0 0 2px rgba(0,0,0,0.1),
0 0 4px rgba(0,0,0,0.1);
-moz-box-shadow:
inset 0 0 2px rgba(0,0,0,0.1),
0 0 4px rgba(0,0,0,0.1);
box-shadow:
inset 0 0 2px rgba(0,0,0,0.1),
0 0 4px rgba(0,0,0,0.1);
padding: 2px 4px;
background: rgba(255,255,255,0.5);
margin: 0 0 1px 0;
width:30px;
text-align:center;
}
</style>
<script>
module.exports = {
components : {
'one-field-verification-supply' : httpVueLoader('../../common/oneFieldVerificationSupply.vue')
},
data () {
return {
}
},
methods: {
emailChange : function(val) {
console.log(val);
}
},
computed : {
_email () {
return this.$data._email;
}
}
}
</script>

View File

@@ -0,0 +1,101 @@
<template>
<v-layout column class="fill-height">
<v-card class="mb-2">
<v-layout row wrap>
<v-flex xs12 >
<v-subheader red--text text--lighten-1> DATA PENGIRIMAN
<v-flex text-md-right>
<v-btn small color="primary">Tambah Data</v-btn>
</v-flex>
</v-subheader>
<v-divider></v-divider>
<v-layout row>
<v-flex xs12 pa-1>
<one-field-verification
:is_error="true"
label="Email ke Dokter : sms.sipe@gmail.com"
@x_change="emailChange"
value=""
></one-field-verification>
</v-flex>
</v-layout>
<v-layout row>
<v-flex xs12 pa-1>
<one-field-verification
:is_error="true"
label="Kirim ke Pasien : Jl. Tegal Raya No. 1"
@x_change="emailChange"
value=""
></one-field-verification>
</v-flex>
</v-layout>
<v-divider></v-divider>
<v-layout row>
<v-flex xs9 pa-1 class="indigo lighten-5">
<one-field-verification
:is_error="true"
label="Email ke Dokter : sms.sipe@gmail.com"
@x_change="emailChange"
value=""
></one-field-verification>
</v-flex>
<v-flex class="indigo lighten-5" pt-3 xs3>
<v-layout align-center justify-center row>
<v-icon large color="red">delete</v-icon>
</v-layout>
</v-flex>
</v-layout>
</v-flex>
</v-flex>
</v-card>
<v-card>
<v-layout row>
<v-flex xs12>
<v-subheader red--text text--lighten-1> DATA PEMBAYARAN</v-subheader>
<v-divider></v-divider>
<v-layout row>
<v-flex xs12 pa-2>
<one-field-verification
:is_error="true"
label="Minimum pembayaran terpenuhi (Rp 50.000)"
@x_change="emailChange"
value=""
></one-field-verification>
</v-flex>
</v-layout>
</v-flex>
</v-flex>
</v-card>
</v-layout>
</template>
<style scoped>
</style>
<script>
module.exports = {
components : {
'one-field-verification' : httpVueLoader('../../common/oneFieldVerification.vue')
},
data () {
return {
email: 'sms@fajrihm.gmail.com"',
_email: true,
}
},
methods: {
emailChange : function(val) {
console.log(val);
}
},
computed : {
_email () {
return this.$data._email;
}
}
}
</script>

View File

@@ -0,0 +1,175 @@
<template>
<v-card class="pa-1">
<v-layout row wrap>
<v-flex xs12>
<v-card flat>
<v-layout>
<v-flex xs6 class="pa-2">
<v-text-field
label="Company"
placeholder=""
:value="c_company"
readonly
></v-text-field>
</v-flex>
<v-flex xs6 class="pa-2">
<v-text-field
label="MOU"
placeholder=""
:value="c_mou"
readonly
></v-text-field>
</v-flex>
</v-layout>
</v-card>
</v-flex>
<v-flex xs12>
<v-layout row wrap>
<v-flex xs6 pa-2>
<one-field-verification
:is_error="true"
label="Company sudah sesuai"
@x_change="companyChange"
value=false
:note="n_company_false"
></one-field-verification>
<!-- <v-layout>
<v-flex xs5>
<v-checkbox
v-model="$data._company"
:label="`Company Sudah Sesuai`"
></v-checkbox>
</v-flex>
<v-flex xs7 pt-2>
<v-text-field
label=""
placeholder=""
outline
:disabled="__company"
></v-text-field>
</v-flex>
</v-layout> -->
</v-flex>
<v-flex xs6 pa-2>
<one-field-verification
label="MOU sudah sesuai"
value=false
></one-field-verification>
</v-flex>
</v-layout>
</v-flex>
<v-flex xs12 class="pt-2">
<one-fo-verification-mou-px-curr-order></one-fo-verification-mou-px-curr-order>
</v-flex>
<v-flex xs12 class="pt-4">
<v-layout align-end justify-end>
<v-flex xs6>
<h3>Tambahan Pemeriksaan</h3>
</v-flex>
<v-flex xs6 class="text-xs-right">
<!-- <v-layout fill-height align-end justify-end> -->
<v-btn
color="green"
dark
class="mt-0 mb-0"
>
Tambah Pemeriksaan
</v-btn>
<!-- </v-layout> -->
</v-flex>
</v-layout>
</v-flex>
<v-flex xs12 class="pt-2">
<one-fo-verification-mou-px-add-order></one-fo-verification-mou-px-add-order>
</v-flex>
<v-flex xs12 class="pt-2">
<v-textarea
label="Catatan Verifikasi Pemeriksaan"
rows="3"
value=""
outline
></v-textarea>
</v-flex>
</v-layout>
</v-card>
</template>
<style scoped>
/* .v-text-field__details {
display: none;
} */
/* .v-text-field--box input, .v-text-field--full-width input, .v-text-field--outline input {
margin-top: 0px;
} */
.v-text-field--box>.v-input__control>.v-input__slot, .v-text-field--full-width>.v-input__control>.v-input__slot, .v-text-field--outline>.v-input__control>.v-input__slot {
min-height: 40px;
}
/* .v-input__slot {
margin-bottom: 0px !important;
} */
/* .v-messages {
display: none;
} */
</style>
<script>
module.exports = {
components : {
'one-fo-verification-mou-px-curr-order' : httpVueLoader('./oneFoVerificationMouPxCurrOrder.vue'),
'one-fo-verification-mou-px-add-order' : httpVueLoader('./oneFoVerificationMouPxAddOrder.vue'),
'one-field-verification' : httpVueLoader('./oneFieldVerification.vue')
},
data () {
return {
checkbox: true,
c_company: 'PT. Enseval Indonesia',
c_mou: 'Enseval 01',
_company: true,
_mou: true,
xx: true,
n_company_false: "bro nih yeee"
}
},
methods: {
companyChange : function(val) {
if (val == true)
this.n_company_false = "";
console.log(val)
}
},
computed : {
__company () {
return this.$data._company;
},
__mou () {
return this.$data._mou;
}
}
}
</script>

View File

@@ -0,0 +1,88 @@
<template>
<v-card flat>
<v-data-table :headers="headers" :items="orders"
:loading="isLoading"
hide-actions class="elevation-1">
<template slot="items" slot-scope="props">
<td class="text-xs-left pa-2" >
<v-btn color="red" dark class="pt-0 pb-0 pl-1 pr-1 mt-0 mb-0 mr-2 ml-0" small>
<v-icon dark>delete</v-icon>
</v-btn>
{{ props.item.px }}</td>
<td class="text-xs-right pa-2" >{{ props.item.bruto }}</td>
<td class="text-xs-right pa-2">{{ props.item.disc }}</td>
<td class="text-xs-right pa-2">{{ props.item.total }}</td>
</template>
</v-data-table>
</v-card>
</template>
<style scoped>
table.v-table tbody td,table.v-table tbody th {
height: 40px;
}
table.v-table thead tr {
height: 40px;
}
.v-btn {
min-width: auto;
}
</style>
<script>
module.exports = {
data () {
return {
headers: [
{
text: "PEMERIKSAAN",
align: "left",
sortable: false,
value: "px",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "BRUTO",
align: "left",
sortable: false,
value: "bruto",
width: "25%",
class: "text-xs-right pa-2 blue lighten-3 white--text",
width: "15%"
},
{
text: "DISKON",
align: "left",
sortable: false,
value: "disc",
class: "text-xs-right pa-2 blue lighten-3 white--text",
width: "15%"
},
{
text: "TOTAL",
align: "left",
sortable: false,
value: "total",
class: "text-xs-right pa-2 blue lighten-3 white--text",
width: "15%"
}
],
query : "",
isLoading: true,
orders: [
// {"px":"Hemoglobin", "bruto":"30,000", "disc":"10,000", "total":"20,000"},
// {"px":"Trombosit", "bruto":"30,000", "disc":"10,000", "total":"20,000"},
// {"px":"Eritrosit", "bruto":"30,000", "disc":"10,000", "total":"20,000"},
{"px":"SGOT", "bruto":"30,000", "disc":"10,000", "total":"20,000"},
{"px":"SGPT", "bruto":"30,000", "disc":"10,000", "total":"20,000"},
{"px":"Urine Lengkap", "bruto":"30,000", "disc":"10,000", "total":"20,000"}
]
}
}
}
</script>

View File

@@ -0,0 +1,83 @@
<template>
<v-card flat>
<v-data-table :headers="headers" :items="orders"
:loading="isLoading"
hide-actions class="elevation-1">
<template slot="items" slot-scope="props">
<td class="text-xs-left pa-2" >
<v-checkbox :label="`${props.item.px}`"></v-checkbox>
</td>
<td class="text-xs-right pa-2" >{{ props.item.bruto }}</td>
<td class="text-xs-right pa-2">{{ props.item.disc }}</td>
<td class="text-xs-right pa-2">{{ props.item.total }}</td>
</template>
</v-data-table>
</v-card>
</template>
<style scoped>
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 {
headers: [
{
text: "PEMERIKSAAN",
align: "left",
sortable: false,
value: "px",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "BRUTO",
align: "left",
sortable: false,
value: "bruto",
width: "25%",
class: "text-xs-right pa-2 blue lighten-3 white--text",
width: "15%"
},
{
text: "DISKON",
align: "left",
sortable: false,
value: "disc",
class: "text-xs-right pa-2 blue lighten-3 white--text",
width: "15%"
},
{
text: "TOTAL",
align: "left",
sortable: false,
value: "total",
class: "text-xs-right pa-2 blue lighten-3 white--text",
width: "15%"
}
],
query : "",
isLoading: true,
orders: [
{"px":"Hemoglobin", "bruto":"30,000", "disc":"10,000", "total":"20,000"},
{"px":"Trombosit", "bruto":"30,000", "disc":"10,000", "total":"20,000"},
{"px":"Eritrosit", "bruto":"30,000", "disc":"10,000", "total":"20,000"},
// {"px":"SGOT", "bruto":"30,000", "disc":"10,000", "total":"20,000"},
// {"px":"SGPT", "bruto":"30,000", "disc":"10,000", "total":"20,000"},
// {"px":"Urine Lengkap", "bruto":"30,000", "disc":"10,000", "total":"20,000"}
]
}
}
}
</script>

View File

@@ -0,0 +1,43 @@
<template>
<div>
<v-card>
<v-btn class= "button parallelogram" color="success">Pasien Dokter</v-btn>
<v-btn class= "button parallelogram" color="warning">MOU </v-btn>
<v-btn class= "button parallelogram" color="error">Kirim Hasil </v-btn>
<v-btn class= "button parallelogram" color="info"> Barcode</v-btn>
</v-card>
</div>
</template>
<style scoped>
.v-card{
text-align: center;
}
.v-btn__content{
margin-top : -10px;
}
.button {
padding: 30px 16px;
width : 20%;
text-decoration:none;
}
.parallelogram{
transform: skew(-20deg);
}
.v-btn {
word-break: break-all;
}
</style>
<script>
module.exports = {
}
</script>

View File

@@ -0,0 +1,55 @@
<template>
<v-layout column mb-2 >
<v-card>
<v-layout row>
<v-flex xs12>
<v-subheader red--text text--lighten-1> SUPPLIES</v-subheader>
<v-divider></v-divider>
<v-layout class="layout-supplies" row wrap>
<v-flex v-for="supply in supplies" xs3 pa-1 pt-0>
<one-field-verification-supply
:label="supply.name"
:value="supply.checked"
@x_change="cbxChange"
:note="1"
></one-field-verification-supply>
</v-flex>
</v-layout>
</v-flex>
</v-flex>
</v-card>
</v-layout>
</template>
<style scoped>
.v-messages, .v-text-field__details{
min-height:0px!important;
}
</style>
<script>
module.exports = {
components : {
'one-field-verification-supply' : httpVueLoader('../../common/oneFieldVerificationSupply.vue')
},
data () {
return {
supplies :[
{"id":"1","name":"Sedotan Tinja","qty":0,"checked":false},
{"id":"2","name":"Jarum Suntik","qty":0,"checked":false}
]
}
},
methods: {
cbxChange : function(val) {
console.log(val);
}
},
computed : {
_email () {
return this.$data._email;
}
}
}
</script>

View File

@@ -0,0 +1,76 @@
<template>
<v-card class="mb-2 one-fo-tab">
<v-layout justify-center class="tab-container">
<v-btn @click="changeTo('pasien-dokter')" justify-center multi-line class= "buttonkiri active" color="success">
Pasien <br/> Dokter
<v-icon v-if="tab_selected('pasien-dokter')" right dark>verified_user</v-icon>
</v-btn>
<v-btn @click="changeTo('mou-px')" justify-center multi-line class= "buttonnew" color="error">MOU <br/> Pemeriksaan
<v-icon v-if="tab_selected('mou-px')" right dark>verified_user</v-icon>
</v-btn>
<v-btn @click="changeTo('delivery-payment')" justify-center multi-line class= "buttonnew" color="warning">Kirim Hasil <br/> Payment
<v-icon v-if="tab_selected('delivery-payment')" right dark>verified_user</v-icon>
</v-btn>
<v-btn @click="changeTo('barcode-supplies')" justify-center multi-line class= "buttonkanan" color="info">
<v-icon v-if="tab_selected('barcode-supplies')" left dark>verified_user</v-icon>
Supplies <br/> Barcode
</v-btn>
</v-layout>
</v-card>
</template>
<style scoped>
.one-fo-tab {
min-height:84px;
}
.layout.tab-container .v-btn {
min-height:64px;
margin-top:10px;
}
.v-card{
text-align: center;
}
.v-btn__content{
margin-top : 0px;
}
.buttonnew {
width : 20%;
text-decoration:none;
}
.buttonkiri {
width : 20%;
text-decoration:none;
border-top-left-radius: 50px;
border-bottom-left-radius: 50px;
}
.buttonkanan {
width : 20%;
text-decoration:none;
border-top-right-radius: 50px;
border-bottom-right-radius: 50px;
}
.active{
}
</style>
<script>
module.exports = {
methods: {
tab_selected : function(tab) {
return this.$store.state.tab_selected == tab
},
changeTo : function(tab) {
this.$store.dispatch('change_tab',tab)
}
}
}
</script>

View File

@@ -0,0 +1,28 @@
<template>
<v-layout row wrap>
<v-flex xs6 class="left">
<v-layout column wrap fill-height>
<search-box></search-box>
<v-flex grow class="searchresult">
search result
</v-flex>
</v-layout>
</v-flex>
</v-layout>
</template>
<style scoped>
.searchresult {
background-color:red;
}
</style>
<script>
module.exports = {
components : {
'search-box' : httpVueLoader('./searchBoxV3.vue')
}
}
</script>

View File

@@ -0,0 +1,70 @@
<template>
<v-card class="fill-height ">
<v-layout>
<v-flex xs3 pa-1>
<v-text-field
label="Search"
placeholder="No Lab"
single-line
outline
></v-text-field>
</v-flex>
<v-flex xs6 pa-1>
<v-text-field
label=""
placeholder="Nama"
single-line
outline
></v-text-field>
</v-flex>
<v-flex xs6 pa-1>
<v-select
:items="items"
label="Status"
outline
></v-select>
</v-flex>
<v-flex xs3>
<v-btn color="success" class="mr-1 ml-1">Search</v-btn>
</v-flex>
</v-layout>
</v-card>
</template>
<style scoped>
.v-btn {
min-width: auto;
}
.v-input__slot {
margin-bottom: 0px !important;
}
.v-messages {
display: none;
}
.v-text-field--box>.v-input__control>.v-input__slot,.v-text-field--full-width>.v-input__control>.v-input__slot,.v-text-field--outline>.v-input__control>.v-input__slot {
min-height: 44px;
}
.v-text-field--box.v-text-field--single-line input,.v-text-field--full-width.v-text-field--single-line input,.v-text-field--outline.v-text-field--single-line input {
margin-top: 6px;
}
.v-input__control{
height: 10px;
}
.v-btn {
margin : 10px
}
</style>
<script>
module.exports = {
}
</script>

View File

@@ -0,0 +1,86 @@
<template>
<v-card class="fill-height " >
<v-data-table :headers="headers" :items="patients"
:loading="isLoading"
hide-actions class="elevation-1">
<template slot="items" slot-scope="props">
<td class="text-xs-left pa-2" v-bind:class="{'amber lighten-4':props.item.selected}" @click="selectMe(props.item)">{{ props.item.mr }}</td>
<td class="pa-2" v-bind:class="{'amber lighten-4':props.item.selected}" @click="selectMe(props.item)">{{ props.item.lab}}</td>
<td class="text-xs-left pa-2" v-bind:class="{'amber lighten-4':props.item.selected}" @click="selectMe(props.item)">{{ props.item.name }}</td>
<td class="text-xs-left pa-2" v-bind:class="{'amber lighten-4':props.item.selected}" @click="selectMe(props.item)">{{ props.item.status }}</td>
</template>
</v-data-table>
</v-card>
</template>
<style scoped>
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: "",
headers: [
{
text: "NO REG",
align: "left",
sortable: false,
value: "mr",
width: "15%",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "NO LAB",
align: "left",
sortable: false,
value: "lab",
width: "15%",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "NAMA",
align: "left",
sortable: false,
value: "name",
width: "25%",
class: "pa-2 blue lighten-3 white--text"
},
{
text: "STATUS",
align: "left",
sortable: false,
value: "status",
width: "15%",
class: "pa-2 blue lighten-3 white--text"
}
],
isLoading: true,
patients: [
{"status":"Data Verified","lab":"08000198909", "mr": "MR-18107237", "name": "Pasien Umum", "sex": "Perempuan", "address": "Klero\r\nKabupaten Semarang", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Payment Verified","lab":"08000198111", "mr": "MR-18107238", "name": "Heri Suryawan", "sex": "Laki - laki", "address": "Ampel", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Payment Verified","lab":"08000198222", "mr": "MR-18107239", "name": "LUKA MODRIC", "sex": "Laki - laki", "address": "Jl. Raya No 1", "action":"", "dob":"19-09-1992", "selected":true},
{"status":"Data Verified","lab":"08000198121", "mr": "MR-18107247", "name": "Tyas Medika Pranandita", "sex": "Laki - laki", "address": "KP. Karangpanas", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Data & Payment Verified","lab":"08000198131", "mr": "MR-18107248", "name": "Astrid", "sex": "Perempuan", "address": "Jl. Ketintang Raya No.81", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Data & Payment Verified","lab":"08000198123", "mr": "MR-18107249", "name": "Happy", "sex": "Perempuan", "address": "Karangpanas", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Data Verified","lab":"08000198111", "mr": "MR-18107251", "name": "Juan Alexis Sukir", "sex": "Laki - laki", "address": "Jl. Sawi", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Data & Payment Verified","lab":"08000198555", "mr": "MR-18107252", "name": "Alexander Wang", "sex": "Laki - laki", "address": "Jl. Mangga Muda No. 7", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Payment Verified","lab":"08000198444", "mr": "MR-18107253", "name": "CILA CILANI", "sex": "Perempuan", "address": "Jl. Duren PInang No. 67", "action":"", "dob":"19-09-1992", "selected":false},
{"status":"Data & Payment Verified","lab":"08000198123", "mr": "MR-18107254", "name": "Untung Suropati", "sex": "Laki - laki", "address": "Pasar Kapling Semarang", "action":"", "dob":"19-09-1992", "selected":false}
]
};
}
}
</script>

View File

@@ -0,0 +1,98 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>One</title>
<link rel="stylesheet" href="../../../libs/vendor/css/google-fonts.css">
<link rel="stylesheet" href="../../../libs/vendor/css/vuetify.min.css">
</head>
<body>
<div v-cloak id="app">
<v-app id="smartApp" >
<one-navbar></one-navbar>
<v-content class="blue lighten-5" >
<v-container fluid fill-height class="pl-1 pr-1 pt-2 pb-2">
<v-layout row wrap >
<v-flex xs6 class="left" fill-height pa-1>
<!-- komponen kiri -->
<one-fo-verification-list></one-fo-verification-list>
</v-flex>
<v-flex xs6 class="right" fill-height pa-1>
<!-- komponen kanan -->
<one-fo-verification-tab></one-fo-verification-tab>
<one-fo-verification-pasien-dokter v-if="tab_selected('pasien-dokter')">
</one-fo-verification-pasien-dokter>
<one-fo-verification-mou-px v-if="tab_selected('mou-px')" >
</one-fo-verification-mou-px>
<one-fo-verification-delivery-payment v-if="tab_selected('delivery-payment')" >
</one-fo-verification-delivery-payment>
<one-fo-verification-supplies v-if="tab_selected('barcode-supplies')" >
</one-fo-verification-supplies>
<one-fo-verification-barcode v-if="tab_selected('barcode-supplies')" >
</one-fo-verification-barcode >
</v-flex>
</v-layout>
</v-container>
</v-content>
<one-footer> </one-footer>
</v-app>
</div>
<!-- Vendor -->
<script src="../../../libs/vendor/axios.min.js"></script>
<script src="../../../libs/vendor/vue.js"></script>
<script src="../../../libs/vendor/vuex.js"></script>
<script src="../../../libs/vendor/vuetify.js"></script>
<script src="../../../libs/vendor/httpVueLoader.js"></script>
<!-- App Script -->
<?php
$ts = "?ts=" . Date("ymdhis");
?>
<script type="module">
import { store } from './store.js<?php echo $ts ?>';
//for testing
window.store = store;
new Vue({
store,
el: '#app',
methods: {
tab_selected : function(tab) {
return this.$store.state.tab_selected == tab
}
},
components: {
'one-navbar': httpVueLoader('../../../apps/components/oneNavbarComponent.vue'),
'one-footer': httpVueLoader('../../../apps/components/oneFooter.vue'),
'one-fo-verification-list': httpVueLoader('./components/foVerificationList.vue'),
'one-fo-verification-tab': httpVueLoader('./components/oneFoVerificationTab.vue'),
'one-fo-verification-pasien-dokter' : httpVueLoader('./components/oneFOVerificationPasienDokter.vue'),
'one-fo-verification-mou-px': httpVueLoader('./components/oneFoVerificationMouPx.vue'),
'one-fo-verification-delivery-payment': httpVueLoader('./components/oneFoVerificationDeliveryPayment.vue'),
'one-fo-verification-barcode': httpVueLoader('./components/oneFoVerificationBarcode.vue'),
'one-fo-verification-supplies': httpVueLoader('./components/oneFoVerificationSupplies.vue'),
}
})
</script>
<style>
[v-cloak] {
display: none
}
.left {
}
.right {
}
</style>
</body>
</html>

View File

@@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>One</title>
<link rel="stylesheet" href="../../../libs/vendor/css/google-fonts.css">
<link rel="stylesheet" href="../../../libs/vendor/css/vuetify.min.css">
</head>
<body>
<div v-cloak id="app">
<v-app id="smartApp" >
<one-navbar></one-navbar>
<v-content class="blue lighten-5" >
<v-container fluid fill-height>
<one-fo-verification-list> <one-fo-verification-list>
</v-container>
</v-content>
<one-footer> </one-footer>
</v-app>
</div>
<!-- Vendor -->
<script src="../../../libs/vendor/axios.min.js"></script>
<script src="../../../libs/vendor/vue.js"></script>
<script src="../../../libs/vendor/vuex.js"></script>
<script src="../../../libs/vendor/vuetify.js"></script>
<script src="../../../libs/vendor/httpVueLoader.js"></script>
<!-- App Script -->
<?php
$ts = "?ts=" . Date("ymdhis");
?>
<script type="module">
import { store } from './store.js<?php echo $ts ?>';
//for testing
// window.store = store;
new Vue({
store,
el: '#app',
components: {
'one-navbar': httpVueLoader('../../../apps/components/oneNavbarComponent.vue'),
'one-footer': httpVueLoader('../../../apps/components/oneFooter.vue'),
'one-fo-verification-list': httpVueLoader('./components/foVerificationList.vue'),
}
})
</script>
<style>
[v-cloak] {
display: none
}
</style>
</body>
</html>

View File

@@ -0,0 +1,23 @@
// State
// data ...
// Mutations
//
//
// Actions
import * as api from "./api.js";
export const store = new Vuex.Store({
state: {
tab_selected : 'pasien-dokter'
},
mutations: {
change_tab(state,ntab) {
state.tab_selected = ntab
}
},
actions: {
change_tab(context,ntab) {
context.commit('change_tab',ntab)
}
}
});