From 62ea8edb431bedbdd90cd2df752cd3d83c2dde62 Mon Sep 17 00:00:00 2001 From: Saladin21 <13519187@std.stei.itb.ac.id> Date: Sat, 16 Apr 2022 20:32:13 +0700 Subject: [PATCH] adjust modal --- src/components/table-response.vue | 5 ++- src/views/KpiCreate.vue | 4 +- src/views/KpiDetail.vue | 2 +- src/views/ResponseDetail.vue | 5 ++- src/views/ResponseIndex.vue | 74 ++++++++++++++++++++++++++++--- 5 files changed, 78 insertions(+), 12 deletions(-) diff --git a/src/components/table-response.vue b/src/components/table-response.vue index f7157d6..181bd29 100644 --- a/src/components/table-response.vue +++ b/src/components/table-response.vue @@ -12,7 +12,7 @@ {{ c.name}} </th> </template> - <th class="text-blue">Aksi</th> + <th v-if="isManager" class="text-blue">Aksi</th> </tr> </thead> <tbody> @@ -35,7 +35,7 @@ </template> </template> - <td v-if="e.status == 'pending'" style="text-align: center"> + <td v-if="e.status == 'pending' && isManager" style="text-align: center"> <button @click="this.$emit('approve', e[columns.Id.data])" class="btn-green mx-2">Approve</button> <button @click="this.$emit('adjust', e[columns.Id.data])" class="btn-blue mx-2">Adjust</button> <button @click="this.$emit('reject', e[columns.Id.data])" class="btn-reject mx-2">Reject</button> @@ -100,6 +100,7 @@ export default { type: Boolean, default: true }, + isManager: Boolean, }, data() { return { diff --git a/src/views/KpiCreate.vue b/src/views/KpiCreate.vue index ccc33f2..18201ff 100644 --- a/src/views/KpiCreate.vue +++ b/src/views/KpiCreate.vue @@ -68,11 +68,11 @@ </div> <div class="mb-3"> <label for="targetInput" class="text-blue"> Target </label> - <input v-model="target" type="number" id="tarrgetInput" class="form-control" required> + <input v-model="target" type="number" min="0" id="tarrgetInput" class="form-control" required> </div> <div class="mb-3"> <label for="weightInput" class="text-blue"> Bobot </label> - <input v-model="weight" type="number" id="weightInput" class="form-control" required> + <input v-model="weight" type="number" min="0" id="weightInput" class="form-control" required> </div> <div class="mb-3"> <input v-model="inverted" class="form-check-input mt-1" type="checkbox" value="" id="CheckDefault" > diff --git a/src/views/KpiDetail.vue b/src/views/KpiDetail.vue index 0b8a863..1286c06 100644 --- a/src/views/KpiDetail.vue +++ b/src/views/KpiDetail.vue @@ -88,7 +88,7 @@ <form @submit="insert" autocomplete="off"> <div class="mb-3 me-3"> <label class="text-blue"> Nilai Aktual </label> - <input v-model="response.actual" type="number" class="form-control" required> + <input v-model="response.actual" type="number" min="0" class="form-control" required> </div> <div class="mb-3 me-3"> <label class="text-blue"> Deskripsi </label> diff --git a/src/views/ResponseDetail.vue b/src/views/ResponseDetail.vue index 588a496..1940324 100644 --- a/src/views/ResponseDetail.vue +++ b/src/views/ResponseDetail.vue @@ -62,6 +62,8 @@ import Header from "../components/header" import Sidebar from "../components/sidebar" import CommentCard from "../components/commentCard" +// import VueFinalModal from 'vue-final-modal' + export default { @@ -69,7 +71,8 @@ export default { components: { Header, Sidebar, - CommentCard + CommentCard, + // VueFinalModal }, data(){ return{ diff --git a/src/views/ResponseIndex.vue b/src/views/ResponseIndex.vue index 83eabdd..058a5f5 100644 --- a/src/views/ResponseIndex.vue +++ b/src/views/ResponseIndex.vue @@ -4,7 +4,16 @@ <Sidebar current_page = "About"></Sidebar> <div class="col ps-md-2 pt-2"> <Header></Header> - <div class="row p-3"> + <div v-if="isManager" class="row p-3"> + <router-link :to="{ path: `/manager/employees/${this.slug}` }" style="text-decoration: none"> + <div class="d-flex flex-row justify-content-start align-items-center illustration" id="back"> + <i class="icon ion-chevron-left text-blue" style="font-size: 20px"></i> + <p class="text-blue ms-1">kembali</p> + </div> + </router-link> + </div> + <div v-else class="row p-3"> + <!-- Ganti Path --> <router-link :to="{ path: `/manager/employees/${this.slug}` }" style="text-decoration: none"> <div class="d-flex flex-row justify-content-start align-items-center illustration" id="back"> <i class="icon ion-chevron-left text-blue" style="font-size: 20px"></i> @@ -32,7 +41,7 @@ </div> <div class="mb-3 me-3"> <label for="deskripsiInput" class="text-blue"> Deskripsi </label> - <input v-model="kpi.description" type="text" id="deskripsiInput" class="form-control" readonly> + <textarea v-model="kpi.description" id="deskripsiInput" class="form-control" readonly></textarea> </div> <div class="mb-3 me-3"> <label for="typeInput" class="text-blue"> Periode </label> @@ -84,6 +93,26 @@ </div> </div> + <!-- Button trigger modal --> + <button v-if="isManager" hidden="hidden" type="button" class="btn" data-bs-toggle="modal" data-bs-target="#adjustModal" id="modalButton"> + Launch modal + </button> + <div v-if="isManager" class="modal fade" id="adjustModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"> + <div class="modal-dialog modal-dialog-centered mx-auto"> + <div class="modal-content"> + <div class="modal-body"> + <div class="mb-3 me-3 p-2"> + <label class="text-blue"> Nilai Aktual </label> + <input v-model="responseAdj.actual" type="number" min="0" class="form-control" required> + </div> + </div> + <div class="modal-footer"> + <button type="button" class="btn-red m-2" data-bs-dismiss="modal">Tutup</button> + <button type="submit" class="btn m-2" data-bs-dismiss="modal" @click="saveAdj">Simpan</button> + </div> + </div> + </div> + </div> <div class="row p-2"> <div class="col"> <h3 class="text-blue">Responses</h3> @@ -97,6 +126,7 @@ :filter_column="'status'" :default_sort = "'status'" :refresh = "refresh" + :isManager="isManager" @detail-entry="detailResponse" @approve="approve" @reject="reject" @@ -114,6 +144,7 @@ import TableR from "../components/table-response"; import Header from "../components/header"; import Sidebar from "../components/sidebar"; import { HTTP } from "../http-common"; +// import {VueFinalModal} from 'vue-final-modal'; export default { @@ -121,7 +152,8 @@ export default { components: { Header, Sidebar, - TableR + TableR, + // VueFinalModal }, props:{ isManager : Boolean @@ -161,17 +193,23 @@ export default { endpoint:"", kpi:{}, refresh:true, + showModal : false, + responseAdj : {actual : 0} } }, created(){ this.slug = this.$route.params.empId this.kpiId = this.$route.params.kpiId this.getEmpId() + }, + methods: { detailResponse(id){ //routing page detail - this.$router.push({ name: "ResponseDetail", params: { kpiId: this.kpiId, empId:this.slug, responseId:id }}); + if (this.isManager){ + this.$router.push({ name: "ResponseDetail", params: { kpiId: this.kpiId, empId:this.slug, responseId:id }}); + } }, getEmpId(){ HTTP.get(`employees/${this.slug}`).then((res)=>{ @@ -198,7 +236,7 @@ export default { } HTTP.put(`kpi-responses/${id}`, response).then(()=>{ this.refresh = !this.refresh - }).catch((e)=> {console.log(e.response.data)}) + }).catch(()=> {alert("Gagal Mengubah Status")}) }) }, approve(id){ @@ -208,7 +246,25 @@ export default { this.changeStatus(id, "rejected") }, adjust(id){ - console.log(id) + HTTP.get(`kpi-responses/${id}`).then((res)=>{ + let kpiRes = res.data.data + kpiRes.status = "approved" + this.responseAdj = { + "kpi_id": kpiRes.kpi_id, + "actual" : kpiRes.actual, + "description" : kpiRes.description, + "status" : kpiRes.status, + "date" : kpiRes.date + } + console.log(this.responseAdj) + document.getElementById("modalButton").click() + }) + }, + saveAdj(){ + console.log(this.responseAdj) + HTTP.put(`kpi-responses/${this.responseAdj.kpi_id}`, this.responseAdj).then(()=>{ + this.refresh = !this.refresh + }).catch(()=> {alert("Gagal Mengubah Nilai")}) } } @@ -234,5 +290,11 @@ body { padding: 7px; } +.btn-red { + background-color: #f4476b; + color: #f1f7fc; + border-radius: 15px; + padding: 7px; +} </style> \ No newline at end of file -- GitLab