Merge branch 'folder' into 'main'
Folder See merge request online-sistem1/admin-portal!6
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Session;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class KelulusanController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$api_url = config('api.url');
|
||||
$auth_user = Auth::user();
|
||||
|
||||
return view('kelulusan.index',compact('api_url','auth_user'));
|
||||
}
|
||||
}
|
||||
Generated
+2
-36
@@ -4658,7 +4658,8 @@
|
||||
"jquery": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
|
||||
"integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
|
||||
"integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==",
|
||||
"dev": true
|
||||
},
|
||||
"js-tokens": {
|
||||
"version": "4.0.0",
|
||||
@@ -4912,11 +4913,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"marked": {
|
||||
"version": "0.3.19",
|
||||
"resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz",
|
||||
"integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg=="
|
||||
},
|
||||
"md5": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
|
||||
@@ -7345,11 +7341,6 @@
|
||||
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
|
||||
"dev": true
|
||||
},
|
||||
"trumbowyg": {
|
||||
"version": "2.25.1",
|
||||
"resolved": "https://registry.npmjs.org/trumbowyg/-/trumbowyg-2.25.1.tgz",
|
||||
"integrity": "sha512-bmmV1qC+fTLfyVpLE5iZjCzHG5DfAwM7p8K2fdq6L1kOi+IrVJk/qGFVEEmYyJ0Ofd1z3g2vavfABpmkVLzV6A=="
|
||||
},
|
||||
"tslib": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
||||
@@ -7361,11 +7352,6 @@
|
||||
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
|
||||
"dev": true
|
||||
},
|
||||
"twemoji": {
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/twemoji/-/twemoji-2.5.1.tgz",
|
||||
"integrity": "sha1-KWZHxhY8fwR0WIccKuviXqj/6DQ="
|
||||
},
|
||||
"type": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
|
||||
@@ -7636,26 +7622,6 @@
|
||||
"resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-1.7.14.tgz",
|
||||
"integrity": "sha512-khZR8t3NWZ/JJ2MZxXLbesHrRJ8AKa75PY5Zq8yMifF9x8lHq8ljYkC0d2PD9yahooygQB5tcFyRDkbbIPx8hw=="
|
||||
},
|
||||
"vue-trumbowyg": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/vue-trumbowyg/-/vue-trumbowyg-4.0.0.tgz",
|
||||
"integrity": "sha512-lvq7lNbMMsAl7FeLKO+0qZR3guvwgunq4uPKTgXpzOI7DlXrUXQOukFn6fBrAQ0M1qXNUW57bl9qdh2v6e9ypQ==",
|
||||
"requires": {
|
||||
"jquery": ">=1.8",
|
||||
"trumbowyg": "^2.21.0"
|
||||
}
|
||||
},
|
||||
"vueditor": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/vueditor/-/vueditor-0.3.1.tgz",
|
||||
"integrity": "sha512-yJ9yJGWBvr75O/tdm2P8liOfnp7OB/jiURK4dcTPVG18cElxYOVMLTLMJTDFcrApt4b9Co635H8h84gUUI8NPA==",
|
||||
"requires": {
|
||||
"marked": "^0.3.6",
|
||||
"twemoji": "^2.4.1",
|
||||
"vue": ">=2.0.5",
|
||||
"vuex": ">=2.0.0"
|
||||
}
|
||||
},
|
||||
"vuejs-datetimepicker": {
|
||||
"version": "1.1.13",
|
||||
"resolved": "https://registry.npmjs.org/vuejs-datetimepicker/-/vuejs-datetimepicker-1.1.13.tgz",
|
||||
|
||||
Vendored
+1895
-93
File diff suppressed because one or more lines are too long
@@ -0,0 +1,66 @@
|
||||
<template>
|
||||
<div >
|
||||
<modal ref="modal"></modal>
|
||||
|
||||
<div class="bg-white md:items-center md:justify-between shadow rounded-lg p-4 md:p-6 xl:p-8 my-6">
|
||||
|
||||
<div v-for="index in 2" :key="index" class="flex flex-wrap w-full">
|
||||
<div class="w-full border rounded-l p-4">
|
||||
|
||||
<div class="flex flex-wrap mb-4">
|
||||
<p class="font-bold text-xl w-1/3">KB2210232-00032</p>
|
||||
<p class="font-bold text-md w-1/3 text-red-500 justify-center flex text-center">[Auto Tawarruq] Pembiayaan Melebihi Margin 75%</p>
|
||||
<p class="font-bold text-xl w-1/3 text-gray-500 flex justify-end">Ar-Rahn Kota Bharu 2</p>
|
||||
</div>
|
||||
<div class="flex flex-wrap">
|
||||
<p class="font-bold text-green-500 w-1/2">PC/PPC: <span class="text-black font-normal text-md capitalize">wan ramlah binti azam baki</span></p>
|
||||
<p class="w-1/4 text-sm text-gray-700">Pembiayaan: RM100,400.00</p>
|
||||
<p class="w-1/4 text-sm text-gray-700">Nilai Marhun: RM100,400.00</p>
|
||||
</div>
|
||||
<div class="flex flex-wrap">
|
||||
<p class="font-bold text-green-500 w-1/2">Teller: <span class="text-black font-normal text-md capitalize">mohd rusyaidi bin ruseli</span></p>
|
||||
<p class="w-1/4 text-sm text-gray-700">Margin: 78%</p>
|
||||
<p class="w-1/4 text-sm text-gray-700">Berat: 100.00 gram</p>
|
||||
</div>
|
||||
<div class="flex flex-wrap">
|
||||
<p class="font-bold text-green-500 w-3/4">Komen: <span class="text-black font-normal text-md w-1/4">Tiada Komen</span></p>
|
||||
</div>
|
||||
<!-- <p class="font-bold text-xl">KB2210232-00032</p> -->
|
||||
|
||||
<div class="mx-auto flex justify-between mb-auto text-sm text-gray-500 mt-4">
|
||||
10 Jul 2018, 05:56PM
|
||||
|
||||
<div class="pl-4">
|
||||
<button class="bg-green-500 hover:bg-green-700 text-white font-bold py-1 px-6 border border-green-700 rounded mr-1" @click.prevent="ApproveFunc"><i class="fas fa-thumbs-up mr-1 text-md"></i> Lulus</button>
|
||||
<button class="bg-red-500 hover:bg-red-700 text-white font-bold py-1 px-6 border border-red-700 rounded mr-1" @click.prevent="DisapproveFunc"><i class="fas fa-thumbs-down mr-1 text-md"></i> Tidak Lulus</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<script>
|
||||
import modal from '../components/util/KomenModal.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
// pagination,
|
||||
modal,
|
||||
// deletemodal
|
||||
|
||||
},
|
||||
methods:{
|
||||
ApproveFunc:function(){
|
||||
this.$refs.modal.showModal = true;
|
||||
},
|
||||
DisapproveFunc:function(){
|
||||
console.log('taklulus');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
Vendored
+5
-4
@@ -119,15 +119,15 @@ Vue.use(require('vue-pusher'), {
|
||||
}
|
||||
});
|
||||
|
||||
Vue.prototype.$api1 = 'http://api.arrahn'
|
||||
Vue.prototype.$api1 = 'http://localhost:8000'
|
||||
|
||||
let initial = 'KB2';
|
||||
let initialhostname = 'http://api.arrahn';
|
||||
let initialhostname = 'http://localhost:8000';
|
||||
|
||||
const store = new Vuex.Store({
|
||||
state: {
|
||||
$kodcaw: 'KB2',
|
||||
$hostname: 'http://api.arrahn'
|
||||
$hostname: 'http://localhost:8000'
|
||||
},
|
||||
plugins: [createPersistedState()],
|
||||
mutations: {
|
||||
@@ -189,6 +189,7 @@ Vue.component('searchpelanggan-component', require('./components/Searchpelanggan
|
||||
Vue.component('laporanakaun-component', require('./Akaun/Laporan.vue').default)
|
||||
Vue.component('online-component', require('./Online/Online.vue').default)
|
||||
Vue.component('noticelelong-component', require('./pages/NotisLelong.vue').default)
|
||||
Vue.component('kelulusan-component', require('./Kelulusan/TableKelulusan.vue').default)
|
||||
|
||||
Vue.component('details-pelanggan', require('./pages/Detailspelanggan.vue').default)
|
||||
Vue.component('blacklist-pelanggan', require('./pages/Blacklist.vue').default)
|
||||
@@ -206,7 +207,7 @@ Vue.component('senaraibajet-component', require('./Bajet/Homebajet.vue').default
|
||||
Vue.component('clock-component', require('./components/util/Clock.vue').default)
|
||||
|
||||
Vue.component('logout-component', require('./Logout.vue').default)
|
||||
|
||||
Vue.component('notify-component', require('./components/util/Notify.vue').default)
|
||||
|
||||
Vue.component('apexchart', VueApexCharts)
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
case 'JLI':
|
||||
case 'ARP':
|
||||
case '020303':{
|
||||
this.sethostname('http://api.arrahn')
|
||||
this.sethostname('http://localhost:8000')
|
||||
break;
|
||||
}
|
||||
case '010621':
|
||||
@@ -114,7 +114,7 @@
|
||||
this.sethostname('http://api3.arrahn')
|
||||
break;
|
||||
}
|
||||
default: this.sethostname('http://api.arrahn')
|
||||
default: this.sethostname('http://localhost:8000')
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<template>
|
||||
<div tabindex="0"
|
||||
class="z-40 overflow-auto left-0 top-0 bottom-0 right-0 w-full h-full fixed">
|
||||
<div class="z-50 relative p-3 mx-auto my-0 max-w-full"
|
||||
style="width: 500px;">
|
||||
<div class="bg-white rounded shadow-lg border flex flex-col overflow-hidden px-10 py-10">
|
||||
<div class="text-center">
|
||||
<span
|
||||
class="material-icons p-4 text-red-500 font-bold border-red-500 text-4xl">
|
||||
<i class="fas fa-warning"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="text-center py-6 text-2xl text-gray-700">Are you sure ?</div>
|
||||
<div class="text-center font-light text-gray-700 mb-8">
|
||||
Do you really want to delete these records? This process cannot be undone.
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<button
|
||||
class="bg-gray-300 text-gray-900 rounded hover:bg-gray-200 px-6 py-2 focus:outline-none mx-1">Cancel</button>
|
||||
<button
|
||||
class="bg-red-500 text-gray-200 rounded hover:bg-red-400 px-6 py-2 focus:outline-none mx-1">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="z-40 overflow-auto left-0 top-0 bottom-0 right-0 w-full h-full fixed bg-black opacity-50"></div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,80 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
<transition name="modal-fade">
|
||||
<div v-if="showModal" class=" overflow-x-hidden overflow-y-auto fixed inset-0 z-50 outline-none focus:outline-none justify-center items-center flex">
|
||||
<div class="relative w-1/3 my-6 mx-auto max-w-6xl">
|
||||
<!--content-->
|
||||
<div class="border-0 rounded-lg shadow-lg relative flex flex-col w-full bg-white outline-none focus:outline-none">
|
||||
<!--header-->
|
||||
<!--body-->
|
||||
<div class="relative p-6 flex-auto">
|
||||
|
||||
<h3 class="text-center text-3xl font-semibold mb-4">
|
||||
Komen
|
||||
</h3>
|
||||
|
||||
<input id="frminput" autofocus type="text" ref="btnDropdownRef" class="mr-2 bg-white appearance-none border-2 border-gray-400 rounded w-full py-2 px-4 text-gray-700 leading-tight focus:outline-none focus:bg-white focus:border-blue-500 border-black" />
|
||||
|
||||
</div>
|
||||
<!--footer-->
|
||||
<div class="flex items-center justify-end p-6 border-t border-solid border-blueGray-200 rounded-b">
|
||||
<button class="bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 border border-gray-700 rounded mr-1" @click="toggleModal" type="button">
|
||||
Batal
|
||||
</button>
|
||||
<button class="bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 border border-green-700 rounded" @click="toggleModal" type="button" >
|
||||
Lulus
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</transition>
|
||||
<transition
|
||||
enter-active-class="transition-all transform duration-200 ease-out"
|
||||
>
|
||||
</transition>
|
||||
|
||||
<div v-if="showModal" class="opacity-25 fixed inset-0 z-40 bg-black"></div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { createPopper } from "@popperjs/core";
|
||||
|
||||
export default {
|
||||
|
||||
props: {
|
||||
placement: {
|
||||
type: String,
|
||||
default: "bottom-start"
|
||||
}
|
||||
},
|
||||
name: "komen-modal",
|
||||
data() {
|
||||
return {
|
||||
showModal: false,
|
||||
kodcaw: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
toggleModal: function(){
|
||||
this.showModal = !this.showModal;
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
.modal-fade-enter,
|
||||
.modal-fade-leave-to {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.modal-fade-enter-active,
|
||||
.modal-fade-leave-active {
|
||||
transition: opacity .5s ease;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,229 @@
|
||||
<template>
|
||||
<div class="container">
|
||||
<div id="notification" ref="notification" class="notification cursor-pointer" v-on:click="toggleDropdown()"></div>
|
||||
<div ref="popoverDropdownRef" v-bind:class="{'hidden': !dropdownShow, 'block': dropdownShow}" class="origin-top-right w-96 right-0 mt-2 w-56 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none" role="menu" aria-orientation="vertical" aria-labelledby="menu-button" tabindex="-1">
|
||||
<div class="py-1 px-2" role="none">
|
||||
<div class="text-gray-700 block px-2 py-5 text-sm hover:bg-yellow-500 cursor-pointer">
|
||||
<div class="justify-between flex">
|
||||
<div class="w-4/6">
|
||||
<p class="font-bold -mt-4">Ar-Rahn Kota Bharu 2</p>
|
||||
<p class="font-bold text-sm text-red-500">[Auto Tawarruq] Pembiayaan Melebihi Margin 75%</p>
|
||||
<p class="-mb-4 text-sm">4 hours ago</p>
|
||||
</div>
|
||||
<div class="w-2/6">
|
||||
<p class="font-bold -mt-4">KB2000201-0232</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="text-gray-700 block px-2 py-5 text-sm hover:bg-yellow-500 cursor-pointer">
|
||||
<div class="justify-between flex">
|
||||
<div class="w-4/6">
|
||||
<p class="font-bold -mt-4">Ar-Rahn Kota Bharu 2</p>
|
||||
<p class="font-bold text-sm text-red-500">[Auto Tawarruq] Pembiayaan Melebihi Margin 75%</p>
|
||||
<p class="-mb-4 text-sm">4 hours ago</p>
|
||||
</div>
|
||||
<div class="w-2/6">
|
||||
<p class="font-bold -mt-4">KB2000201-0232</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<!-- <a class="text-gray-700 block px-4 py-2 text-sm hover:bg-yellow-500 cursor-pointer" role="menuitem" tabindex="-1" id="menu-item-0">a<br><b>a</b></a> -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- <button @click="Clicked">Increment Notifications</button> -->
|
||||
</div>
|
||||
</template>
|
||||
<style scoped>
|
||||
/* Page Styles */
|
||||
|
||||
.container {
|
||||
/* position: absolute; */
|
||||
/* top: 50%; */
|
||||
/* left: 50%; */
|
||||
/* margin-right: 50%; */
|
||||
/* transform: translate(-50%, -50%); */
|
||||
/* text-align: center; */
|
||||
}
|
||||
|
||||
button {
|
||||
display: block;
|
||||
padding: 1em 2em;
|
||||
outline: none;
|
||||
font-weight: 600;
|
||||
border: none;
|
||||
color: #fff;
|
||||
background-color: #3498db;
|
||||
border: 1px solid #1f74ac;
|
||||
border-radius: 0.3em;
|
||||
margin-top: 4em;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: #2487c9;
|
||||
}
|
||||
/* Notifications */
|
||||
.notification {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
padding: 0.6em;
|
||||
background: #3498db;
|
||||
border-radius: 0.2em;
|
||||
font-size: 1.3em;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.notification::before,
|
||||
.notification::after {
|
||||
color: #fff;
|
||||
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.notification::before {
|
||||
display: block;
|
||||
content: "\f0f3";
|
||||
font-family: "FontAwesome";
|
||||
transform-origin: top center;
|
||||
}
|
||||
|
||||
.notification::after {
|
||||
font-family: Arial;
|
||||
font-size: 0.7em;
|
||||
font-weight: 700;
|
||||
position: absolute;
|
||||
top: -15px;
|
||||
right: -15px;
|
||||
padding: 5px 8px;
|
||||
line-height: 100%;
|
||||
border: 2px #fff solid;
|
||||
border-radius: 60px;
|
||||
background: #3498db;
|
||||
opacity: 0;
|
||||
content: attr(data-count);
|
||||
opacity: 0;
|
||||
transform: scale(0.5);
|
||||
transition: transform, opacity;
|
||||
transition-duration: 0.3s;
|
||||
transition-timing-function: ease-out;
|
||||
}
|
||||
|
||||
.notification.notify::before {
|
||||
animation: ring 1.5s ease;
|
||||
}
|
||||
|
||||
.notification.show-count::after {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
@keyframes ring {
|
||||
0% {
|
||||
transform: rotate(35deg);
|
||||
}
|
||||
12.5% {
|
||||
transform: rotate(-30deg);
|
||||
}
|
||||
25% {
|
||||
transform: rotate(25deg);
|
||||
}
|
||||
37.5% {
|
||||
transform: rotate(-20deg);
|
||||
}
|
||||
50% {
|
||||
transform: rotate(15deg);
|
||||
}
|
||||
62.5% {
|
||||
transform: rotate(-10deg);
|
||||
}
|
||||
75% {
|
||||
transform: rotate(5deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
import { createPopper } from "@popperjs/core";
|
||||
|
||||
export default {
|
||||
data(){
|
||||
return {
|
||||
dropdownShow: false,
|
||||
}
|
||||
},
|
||||
|
||||
mounted(){
|
||||
document.addEventListener('click', this.onClick);
|
||||
|
||||
var el = this.$refs.notification;
|
||||
|
||||
if (Number(localStorage.getItem("data-count")) > 0){
|
||||
var count = Number(localStorage.getItem("data-count")) || 0;
|
||||
// console.log(localStorage.getItem("books"))
|
||||
el.setAttribute('data-count', count);
|
||||
el.classList.add('show-count');
|
||||
console.log('test1');
|
||||
}else{
|
||||
el.classList.remove('show-count');
|
||||
console.log('test2');
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
document.removeEventListener('click', this.onClick);
|
||||
},
|
||||
methods:{
|
||||
async toggleDropdown() {
|
||||
this.dropdownShow = true;
|
||||
createPopper(this.$refs.notification, this.$refs.popoverDropdownRef, {
|
||||
placement: "bottom-end",
|
||||
modifiers: [{
|
||||
name: "preventOverflow",
|
||||
}]
|
||||
});
|
||||
},
|
||||
Clicked:function(data){
|
||||
var el = this.$refs.notification;
|
||||
var count = Number(localStorage.getItem("data-count")) || 0;
|
||||
console.log(count)
|
||||
localStorage.setItem('data-count',count + 1);
|
||||
el.setAttribute('data-count', count+1);
|
||||
el.classList.remove('notify');
|
||||
(function(){
|
||||
return el.offsetWidth;
|
||||
})();
|
||||
el.classList.add('notify');
|
||||
// if(count > 0){
|
||||
el.classList.add('show-count');
|
||||
// }
|
||||
},
|
||||
DropdownShow:function(){
|
||||
},
|
||||
onClick: function(){
|
||||
var el = this.$refs.notification;
|
||||
|
||||
let isClickInside = this.$refs.popoverDropdownRef.contains(event.target);
|
||||
let searchInside = this.$refs.notification.contains(event.target);
|
||||
let buttonSearch = document.getElementById('notification');
|
||||
|
||||
if (isClickInside || searchInside || buttonSearch.contains(event.target)) {
|
||||
|
||||
localStorage.setItem('data-count',0);
|
||||
el.setAttribute('data-count', 0);
|
||||
el.classList.remove('show-count');
|
||||
this.dropdownShow = true
|
||||
|
||||
}
|
||||
else{
|
||||
|
||||
this.dropdownShow = false
|
||||
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,18 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="bg-gray-900 opacity-50 hidden fixed inset-0 z-10" id="sidebarBackdrop"></div>
|
||||
<div id="main-content" class="h-full w-full bg-gray-50 relative overflow-y-auto">
|
||||
<main>
|
||||
|
||||
<div class="pt-6 px-4">
|
||||
|
||||
<breadcrumb :items="[{ 'title' : 'Kelulusan', 'icon' : 'fas fa-thumbs-up' }]"></breadcrumb>
|
||||
|
||||
<kelulusan-component></kelulusan-component>
|
||||
|
||||
|
||||
</div>
|
||||
</main>
|
||||
@include('layouts.footer')
|
||||
@endsection
|
||||
@@ -128,7 +128,8 @@
|
||||
@auth
|
||||
<clock-component></clock-component>
|
||||
<cawangan-component roles={{ Auth::user()->roles }} route={{ (Route::is('home') || Route::is('akaun.home')) ? 'ada' : 'tiada' }} akaun={{ (Route::is('akaun.home') ? 'yes' : 'no')}}></cawangan-component>
|
||||
@endauth
|
||||
|
||||
@endauth
|
||||
|
||||
<div class="flex items-center">
|
||||
|
||||
@@ -149,6 +150,9 @@
|
||||
</div>
|
||||
@endif
|
||||
@else
|
||||
<div class="mr-4">
|
||||
<notify-component></notify-component>
|
||||
</div>
|
||||
|
||||
<logout-component csrftoken="{{ csrf_token() }}" :route={{ json_encode(route('logout')) }}></logout-component>
|
||||
|
||||
|
||||
@@ -159,6 +159,17 @@
|
||||
</li>
|
||||
</a>
|
||||
|
||||
<a href="{{ route('kelulusan') }}" class="rounded mb-2 mr-2 {{ Route::is('kelulusan') || Route::is('kelulusan.*') ? 'bg-gray-200 rounded text-white-500' : 'hover:bg-yellow-300 ' }}">
|
||||
<li class="flex w-full justify-between text-gray-600 hover:text-gray-500 cursor-pointer items-center ">
|
||||
<div class="flex items-center">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 10h4.764a2 2 0 011.789 2.894l-3.5 7A2 2 0 0115.263 21h-4.017c-.163 0-.326-.02-.485-.06L7 20m7-10V5a2 2 0 00-2-2h-.095c-.5 0-.905.405-.905.905 0 .714-.211 1.412-.608 2.006L7 11v9m7-10h-2M7 20H5a2 2 0 01-2-2v-6a2 2 0 012-2h2.5" />
|
||||
</svg>
|
||||
<span class="text-sm ml-2 text-lg">Kelulusan</span>
|
||||
</div>
|
||||
</li>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="{{ route('akaun.home') }}" class="rounded mb-2 mr-2 {{ Route::is('akaun.home') || Route::is('akaun.home.*') ? 'bg-gray-200 rounded text-white-500' : 'hover:bg-yellow-300 ' }}">
|
||||
<li class="flex w-full justify-between text-gray-600 hover:text-gray-500 cursor-pointer items-center ">
|
||||
|
||||
@@ -59,6 +59,11 @@ Route::get('/bajet/kemaskini',['as'=>'bajet.kemaskini','uses'=>'App\Http\Control
|
||||
//Lelong
|
||||
Route::get('/notislelong',['as'=>'lelong','uses'=>'App\Http\Controllers\LelongController@index'])->middleware(['roleChecker:null,null,operasi']);
|
||||
|
||||
|
||||
//Kelulusan
|
||||
Route::get('/kelulusan',['as'=>'kelulusan','uses'=>'App\Http\Controllers\KelulusanController@index'])->middleware(['roleChecker:null,null,operasi']);
|
||||
|
||||
|
||||
//Akaun
|
||||
Route::get('/akaunhome/cetaklaporanlejeram',['as'=>'cetak.lejeram','uses'=>'App\Http\Controllers\AkaunController@viewlejeram'])->middleware(['roleChecker:admin,akaun,operasi']);
|
||||
Route::get('/akaunhome/cetaklaporanimbangduga',['as'=>'cetak.imbangduga','uses'=>'App\Http\Controllers\AkaunController@cetakimbangduga'])->middleware(['roleChecker:admin,akaun,operasi']);
|
||||
|
||||
Reference in New Issue
Block a user