diff --git a/src/components/header.vue b/src/components/header.vue index a63761787189da2aaa6ad4f410987c04b1b2d3f7..4a94102e9a34d2485e8bc57798064b84152068d7 100644 --- a/src/components/header.vue +++ b/src/components/header.vue @@ -3,6 +3,8 @@ <div class="container-fluid" > <div class="row justify-content-between"> <div class="col align-self-center"> + <button hidden="hidden" id="toggleSidebar" data-bs-target="#sidebar" + data-bs-toggle="collapse"> </button> <button @click="onclick" v-if="nav_active" @@ -28,12 +30,10 @@ <div class="col"> <div class="d-flex flex-row-reverse justify-content-start align-items-center illustration" - > - <h2 class="text-red" style="text-align: right">Hello, {{name}}</h2> - + > <Dropdown type="dropdownUser"> <template v-slot:start-button-item> - <i + <i @click="onDisplayName" class="icon ion-ios-person-outline text-red" style="font-size: 65px" ></i> @@ -51,7 +51,7 @@ </button> </template> </Dropdown> - + <Name v-if="isNameDisplayed" :value="this.name"></Name> </div> </div> </div> @@ -63,20 +63,24 @@ <script> import Dropdown from "../components/dropdown"; +import Name from "../components/name" import { HTTP } from '../http-common' export default { name: "Header", components: { Dropdown, + Name }, data() { return { - nav_active: true, + nav_active: JSON.parse(localStorage.getItem('navActive')), isModalVisible: false, profile_employee:[], profile_admin:[], + isNameDisplayed: true, name:"", + helloName:"", id: null, user_id: null, is_admin: false, @@ -86,6 +90,10 @@ export default { onclick() { this.nav_active = !this.nav_active document.getElementById("toggleNav").click() + localStorage.setItem("navActive", this.nav_active) + }, + onDisplayName(){ + this.isNameDisplayed = !this.isNameDisplayed; }, toProfile(){ if (this.is_admin){ @@ -118,10 +126,14 @@ export default { this.user_id = this.profile_employee.user_id } }}) + // console.log(this.isNameDisplayed) }, }, mounted(){ this.getProfile(); + if (!this.nav_active){ + document.getElementById("toggleSidebar").click() + } }, }; </script> diff --git a/src/components/modal.vue b/src/components/modal.vue index 3dbd2ea0bf60e96b854bb68e9d4de13a55de33e3..1032414291668f62268411b7aceabdb1bb53ba0a 100644 --- a/src/components/modal.vue +++ b/src/components/modal.vue @@ -58,8 +58,8 @@ border: 1px solid #6992b4; /* overflow-x: auto; */ overflow: hidden; - width: 50%; - height: 30%; + width: 35%; + height: 195px; display: flex; flex-direction: column; top: 50%; @@ -81,8 +81,9 @@ } .modal-body { - position: relative; + /* position: relative; */ padding: 18px 10px; + /* height: 20%; */ } .btn-close { diff --git a/src/components/name.vue b/src/components/name.vue index 018d6746694830a4c4f7f1fa811bef344154ee05..be2315632ff3171e8927d53718c36d0582835d5a 100644 --- a/src/components/name.vue +++ b/src/components/name.vue @@ -1,11 +1,11 @@ <template> - <h2 class="text-red" style="text-align: right">Hello, {{name}}</h2> + <h2 class="text-red" style="text-align: right">Hello, {{value}}</h2> </template> <script> export default { name: "Name", - props:{name: String}, + props:{value: String}, }; </script> \ No newline at end of file diff --git a/src/components/sidebar.vue b/src/components/sidebar.vue index db93e776a59205349f6fd18d48dcc459eb369881..abc506db42a1d2ae8ed5de0c4681bf11f082f655 100644 --- a/src/components/sidebar.vue +++ b/src/components/sidebar.vue @@ -90,15 +90,11 @@ export default { "KPI Bawahan": "ManagerkpiIndex", Bawahan: "ManagerkaryawanIndex", }, - isActive: true, isAdmin: false, isEmp: false, }; }, methods: { - setActive() { - this.isActive = !this.isActive; - }, checkAdmin(){ HTTP.get("users/profile").then((res)=>{ this.isAdmin = res.data.data.is_admin @@ -110,7 +106,7 @@ export default { }, created(){ this.checkAdmin() - } + }, }; </script> @@ -136,7 +132,7 @@ export default { position: fixed; margin-left: -300px; background-color: #f1f7fc; - transition: 0.4s; + /* transition: 0.4s; */ } .nav-link { @@ -165,13 +161,13 @@ export default { .active_cont { margin-left: 250px; visibility: hidden; - transition: 0.4s; + /* transition: 0.4s; */ } .btn { background-color: #6992b4; color: #f1f7fc; - transition: 0.4s; + /* transition: 0.4s; */ align-content: left; } diff --git a/src/components/table-response.vue b/src/components/table-response.vue index 9d0b8322124fa2c89ebd9f3f250efc7e767bd122..329b6039a82f6399aa552923d45edd55591d68ae 100644 --- a/src/components/table-response.vue +++ b/src/components/table-response.vue @@ -34,7 +34,7 @@ </td> </template> <td v-if="c.name=='Bukti'" > - <a :href="e[c.data][0].image">link</a> + <a :href="e[c.data][0].image">{{e[c.data][0].name}}</a> </td> </template> diff --git a/src/router/index.js b/src/router/index.js index 832bff200f952167d6b061554df04aca263c582c..ded9c880ce6dfef1278adb81b6d6d14bf9b07fb9 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,4 +1,4 @@ -import { createRouter, createWebHistory } from "vue-router"; +import { createRouter, createWebHashHistory } from "vue-router"; //import Home from "../views/Home.vue"; import ProfilUser from "../views/ProfilUser.vue"; import ProfilAdmin from "../views/ProfilAdmin.vue"; @@ -158,7 +158,8 @@ const routes = [ ]; const router = createRouter({ - history: createWebHistory(process.env.BASE_URL), + // history: createWebHistory(process.env.BASE_URL), + history: createWebHashHistory(), routes, }); diff --git a/src/views/AdminEdit.vue b/src/views/AdminEdit.vue index f580e370318edf1ae952fda9a8f911569af37406..b3bdf87b382c2c79a5676804a5c2fc5bbcbfffe2 100644 --- a/src/views/AdminEdit.vue +++ b/src/views/AdminEdit.vue @@ -69,7 +69,7 @@ export default { username: "", email: "", password: "", - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/AdminIndex.vue b/src/views/AdminIndex.vue index 7362cadd9f5f6e305b66b705fd503f8f1d9d9646..5244b9735ab3677ed49c8ee0449d5591450b5adb 100644 --- a/src/views/AdminIndex.vue +++ b/src/views/AdminIndex.vue @@ -100,7 +100,7 @@ export default { }, filter: "", - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), }; }, methods: { diff --git a/src/views/AdminInsert.vue b/src/views/AdminInsert.vue index 98c5a1b0d211cb936761cdc8277bcfd8a70c817d..1719eb392e4d2459a6541b9f850fa576b5fc216f 100644 --- a/src/views/AdminInsert.vue +++ b/src/views/AdminInsert.vue @@ -69,7 +69,7 @@ export default { username: "", email: "", password: "", - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/ChangePass.vue b/src/views/ChangePass.vue index 3507d5fd03635fc362128a9c150b8f69ced613e8..f7db0dae52709611ab53e15c998958e5595e2d33 100644 --- a/src/views/ChangePass.vue +++ b/src/views/ChangePass.vue @@ -48,7 +48,7 @@ export default { current_password: "", new_password:"", new_password_confirmation:"", - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/DepartemenIndex.vue b/src/views/DepartemenIndex.vue index ad67c0c26524311e331b47ba98822081088852e6..7de2dad62d9ff95f83932a7b3c23414bc6f045dc 100644 --- a/src/views/DepartemenIndex.vue +++ b/src/views/DepartemenIndex.vue @@ -132,7 +132,7 @@ export default { }, }, filter: "", - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), }; }, props:{}, diff --git a/src/views/KaryawanDetail.vue b/src/views/KaryawanDetail.vue index 56d6afd5208e7129399192c0e5f8960e6a5ce69a..4fe3ad4b5efce985bf78d07f56ac2d2240f1181d 100644 --- a/src/views/KaryawanDetail.vue +++ b/src/views/KaryawanDetail.vue @@ -184,7 +184,7 @@ export default { }, ], dept_last_page : 1, - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/KaryawanEdit.vue b/src/views/KaryawanEdit.vue index bd91509f14b82243f8a4236e96167e6717bd19dd..06c91903b9bc6dcf0eb229b0ce06668288adf7ce 100644 --- a/src/views/KaryawanEdit.vue +++ b/src/views/KaryawanEdit.vue @@ -188,7 +188,7 @@ export default { }, ], dept_last_page : 1, - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/KaryawanInsert.vue b/src/views/KaryawanInsert.vue index fd2213b1c122481a4b8535aa005f0d86c7940730..8e0e552a703ec5e0d66c263607d9e79e85bea4ce 100644 --- a/src/views/KaryawanInsert.vue +++ b/src/views/KaryawanInsert.vue @@ -108,7 +108,7 @@ export default { temp_dept: ["Keuangan", "Marketing", "Operasional"], temp_atasan: ["Yusuf", "Budi"], temp_jabatan: ["Manager", "Staf"], - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/KpiCreate.vue b/src/views/KpiCreate.vue index 3c0b414f7252747bc6f3e645e878243f0ea7b437..417f110a84180eb080e4373546c07dd6a3ef5b80 100644 --- a/src/views/KpiCreate.vue +++ b/src/views/KpiCreate.vue @@ -115,7 +115,7 @@ export default { period_type: "Daily", deadline: null, deadline_time: "", - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/KpiDetail.vue b/src/views/KpiDetail.vue index 51d5b69720da502cd34d09a20cdf011222af1dd7..fe3530910fa2cb7a741aab9242890a1fd0c1d0b3 100644 --- a/src/views/KpiDetail.vue +++ b/src/views/KpiDetail.vue @@ -136,7 +136,7 @@ export default { date : "", images:[] }, - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/KpiIndex.vue b/src/views/KpiIndex.vue index 71d39c92d60d0e239fe61cf5f8949b674c47445b..40365a0622210f53d2f3bbbd8a019914ebe9644f 100644 --- a/src/views/KpiIndex.vue +++ b/src/views/KpiIndex.vue @@ -89,7 +89,7 @@ export default { page_num : 0, entry_per_page: 10, pagination: [], - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/KpiManagerDetail.vue b/src/views/KpiManagerDetail.vue index 18d2d28c413d05f014f1aadf912f4b057dcb314c..94b889b7b750c57331102aaa10f44b0e93f0981d 100644 --- a/src/views/KpiManagerDetail.vue +++ b/src/views/KpiManagerDetail.vue @@ -199,7 +199,7 @@ export default { name: "Hadi", }, ], - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/Login.vue b/src/views/Login.vue index f1fbac30b58f2bfac806949d26d737abe483a4b3..7b40a19a4bd8deab139549d4d04a04126c660d4f 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -109,13 +109,18 @@ export default { }) .then((response) => { localStorage.setItem("token", response.data.token) + localStorage.setItem("navActive", true) if (response.data.success) { window.location.reload() } }) .catch(() => alert("username atau password salah")); }, + }, + mounted(){ + document.getElementById("app").style.padding = "0" + } }; </script> diff --git a/src/views/ManagerKaryawanDetail.vue b/src/views/ManagerKaryawanDetail.vue index 6452deafd4772c523f67fc3892e9c7c516d4b588..083590309d3efbad65ee87a448aff8ff3d12b0cd 100644 --- a/src/views/ManagerKaryawanDetail.vue +++ b/src/views/ManagerKaryawanDetail.vue @@ -126,7 +126,7 @@ export default { endpoint:"", startReport : "", endReport:"", - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, created(){ @@ -137,8 +137,15 @@ export default { openResponses(idKpi){ this.$router.push({ name: "ResponseIndex", params: { kpiId: idKpi, empId:this.slug}}); }, - report(){ + report(e){ + e.preventDefault() //download report + HTTP.get(`report/${this.emp.slug}?before=${this.endReport}&after=${this.startReport}`).then((res)=>{ + console.log(res.data.data) + }).catch((e)=>{console.log(e.response.data)}) + // HTTP.get(`report/${this.emp.slug}?before=${this.endReport}`).then((res)=>{ + // console.log(res.data.data) + // }).catch((e)=>{console.log(e.response.data)}) }, getEmp(){ HTTP.get(`employees/${this.slug}`).then((res)=>{ diff --git a/src/views/ManagerKaryawanIndex.vue b/src/views/ManagerKaryawanIndex.vue index 862f75718fe20d03dfc151d42b3f85de748cd6a8..1382ed6f7b7e71fbed22bd76b6d30d931966983e 100644 --- a/src/views/ManagerKaryawanIndex.vue +++ b/src/views/ManagerKaryawanIndex.vue @@ -67,7 +67,7 @@ export default { clickable : false }, }, - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/ManagerKpiIndex.vue b/src/views/ManagerKpiIndex.vue index 4c0af268c5a2c5bb143555c2014cb2016aa0a1b9..1a303747d00995d4cab9c709261735ff23b6d8d3 100644 --- a/src/views/ManagerKpiIndex.vue +++ b/src/views/ManagerKpiIndex.vue @@ -97,7 +97,7 @@ export default { data: "custom"}, ], componentKey : 1, - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods: { diff --git a/src/views/ProfilAdmin.vue b/src/views/ProfilAdmin.vue index a4791f78a9402dc3f3b27f9b07be0679593a6342..beb5a3b9ee8f2dd7dec9f0be44f301e8a19b6ec6 100644 --- a/src/views/ProfilAdmin.vue +++ b/src/views/ProfilAdmin.vue @@ -53,7 +53,7 @@ export default { return{ username:"", email:"", - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, methods:{ diff --git a/src/views/ProfilUser.vue b/src/views/ProfilUser.vue index 7cd3c9d2a312c437f24b167cfb7627ab85e74cfe..ffccd29d9d606d8782019d3de81e330a73baf788 100644 --- a/src/views/ProfilUser.vue +++ b/src/views/ProfilUser.vue @@ -79,7 +79,7 @@ export default { atasan_name:null, username:"", email:"", - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), }; }, diff --git a/src/views/ResponseDetail.vue b/src/views/ResponseDetail.vue index 301e1c80a07990337c4a2ef4d7687fea394ea9e9..27c2395a00d5ce9eee0f9d15f9ee58edeec5ab40 100644 --- a/src/views/ResponseDetail.vue +++ b/src/views/ResponseDetail.vue @@ -48,13 +48,13 @@ </div> <div class="mb-3 me-3"> <label for="NameInput" class="text-blue"> Bukti: </label> - <a class="mx-2" :href="response.images[0].image">link</a> + <a class="mx-2" :href="response.images[0].image">{{response.images[0].name}}</a> </div> <div v-if="response.status == 'pending'" class="col"> <!-- <div class="col"> --> <button @click="reject" class="btn-reject float-end mx-2">Reject</button> <button @click="adjust" class="btn-blue float-end mx-2">Adjust</button> - <button @click="Reject" class="btn-green float-end mx-2">Approve</button> + <button @click="approve" class="btn-green float-end mx-2">Approve</button> </div> </div> <hr class="m-2"> @@ -149,9 +149,8 @@ export default { target: 20 }, emp: {}, - responseAdj:{}, newComment:"", - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, created(){ @@ -189,13 +188,13 @@ export default { changeStatus(id, status){ let response = { "kpi_id": this.response.kpi_id, - "actual" : this.responseId.actual, - "description" : this.responseId.description, + "actual" : this.response.actual, + "description" : this.response.description, "status" : status, - "date" : this.responseId.date + "date" : this.response.date } HTTP.put(`kpi-responses/${id}`, response).then(()=>{ - this.refresh = !this.refresh + window.location.reload() }).catch(()=> {alert("Gagal Mengubah Status")}) }, approve(){ @@ -208,8 +207,15 @@ export default { document.getElementById("modalButton").click() }, saveAdj(){ - HTTP.put(`kpi-responses/${this.responseId}`, this.responseAdj).then(()=>{ - this.refresh = !this.refresh + let response = { + "kpi_id": this.response.kpi_id, + "actual" : this.response.actual, + "description" : this.response.description, + "status" : "approved", + "date" : this.response.date + } + HTTP.put(`kpi-responses/${this.responseId}`, response).then(()=>{ + window.location.reload() }).catch(()=> {alert("Gagal Mengubah Nilai")}) }, postComment(){ diff --git a/src/views/ResponseEmployee.vue b/src/views/ResponseEmployee.vue index 3e1b9d6d44bc363b8f5c38277d21db9986e3a8de..ec061ca14af919bdc2eabf49bd659cc4bb96f1ec 100644 --- a/src/views/ResponseEmployee.vue +++ b/src/views/ResponseEmployee.vue @@ -125,7 +125,7 @@ export default { emp: {}, responseAdj:{}, newComment:"", - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, created(){ diff --git a/src/views/ResponseIndex.vue b/src/views/ResponseIndex.vue index bd631b8e827720c36d04175025c01e55ef7df3c8..4b1bf977acc677df0a47ee58950481dd41567dce 100644 --- a/src/views/ResponseIndex.vue +++ b/src/views/ResponseIndex.vue @@ -204,7 +204,7 @@ export default { showModal : false, responseAdj : {actual : 0}, responseId : -1, - nav_active : true, + nav_active : JSON.parse(localStorage.getItem('navActive')), } }, created(){ diff --git a/src/views/UserIndex.vue b/src/views/UserIndex.vue index fcdb260e3260412ea5991dae5ef00c37b5bd8d6a..f7f3cf5216b13bcad4d83df8d1a3e275658ca82f 100644 --- a/src/views/UserIndex.vue +++ b/src/views/UserIndex.vue @@ -107,27 +107,34 @@ <template v-slot:body> <!-- upload csv --> <!-- open modal, upload, post --> - <form id="upload-form" @submit.prevent="uploadCSV"> - <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> - <div class="flex items-center"> - <input type="file" @input="onInput"> + <form id="upload-form" @submit="uploadCSV"> + <div class="flex items-center p-2"> + + <p style="font-size: 12.5px">Masukkan CSV dengan nama kolom: </p> + <p style="font-size: 12.5px" class="mb-4"> <b>name, nik, email, department_id, position, nik_manager </b>(opsional)<b>, username, email,</b> dan <b>password</b></p> + <div class="row"> + <div class="col"> + <input type="file" @input="onInput" name="employees"> + </div> + <div class="col"> + <button + type="submit" + class="btn-blue-ori float-end" + > + Upload + </button> + </div> + <div class="col"> + <button + type="button" + class="btn-red ms-3" + @click="closeModal" + > + Cancel + </button> </div> - </div> - <div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse"> - <button - type="submit" - class="me-2 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium" - > - Upload - </button> - <button - type="button" - class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm" - @click="closeModal" - > - Cancel - </button> - </div> + </div> + </div> </form> </template> </Modal> @@ -212,20 +219,24 @@ export default { }; }, methods: { - uploadCSV(){ - let data = { file: this.file } - console.log(data); - HTTP.post("register-employee-csv", data, { + uploadCSV(e){ + e.preventDefault(); + let formData = new FormData(); + console.log(this.file); + formData.append("employees",this.file); + console.log(formData); + HTTP.post("register-employee-csv", formData, { headers:{ - 'Content-Type': 'application/json' + 'Content-Type': 'multipart/form-data' } }).then((res)=>{ if (res.status == 200){ alert("File berhasil diupload") - document.getElementById("upload-form").reset(); //gatau bener ato ngga + document.getElementById("upload-form").reset(); } - }).catch(()=>{ - alert("Gagal meng-upload file") + }).catch((e)=>{ + console.log(e.response.data); + alert("Gagal meng-upload file"); }) //this.closeModal(); }, @@ -287,10 +298,8 @@ export default { }, closeModal(){ this.isModalVisible = false; - //console.log(this.isModalVisible) }, toAddIndividu(){ - //console.log("profile") this.$router.push({ path: '/user/insert'}); }, @@ -338,12 +347,18 @@ export default { } .btn-red { background: #f4476b; -border-radius: 15px; +border-radius: 16px; color: white; border: none; -padding: 2% 13% 2% 10%; +padding: 3% 18% 3% 18%; +} +.btn-blue-ori { +background: #6992b4; +border-radius: 16px; +color: white; +border: none; +padding: 3% 18% 3% 18%; } - .btn-blue { background: white; border-radius: 15px;