Merge branch 'fasa2lelong' into 'main'

Fasa2lelong

See merge request online-sistem1/admin-portal!13
This commit is contained in:
hafifie rahman
2022-05-30 16:37:42 +00:00
57 changed files with 23780 additions and 7829 deletions
+4 -5
View File
@@ -15,7 +15,7 @@ DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
BROADCAST_DRIVER=pusher
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
@@ -43,10 +43,9 @@ AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
PUSHER_APP_ID=1132718
PUSHER_APP_KEY=26b0ec2f297f94b7aa9b
PUSHER_APP_SECRET=421b61fb5a8ecce477a6
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
+34
View File
@@ -0,0 +1,34 @@
<?php
namespace App\Events;
use Illuminate\Queue\SerializesModels;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class NotifikasiKelulusan implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $norujukan,$kelulusan,$siri,$komen,$teller;
public function __construct($norujukan,$kelulusan,$siri,$komen,$teller)
{
$this->norujukan = $norujukan;
$this->kelulusan = $kelulusan;
$this->siri = $siri;
$this->komen = $komen;
$this->teller = $teller;
}
public function broadcastOn()
{
return ['notice-kelulusan'];
}
public function broadcastAs()
{
return 'my-kelulusan';
}
}
+49
View File
@@ -747,4 +747,53 @@ class AkaunController extends Controller
return view('akaun.laporan_ringkasanterkumpul', compact('laporan_ringkasan','cawangan_detail','tarikh_cetak','mula_date','hingga_date','api_url'));
}
public function cetakLaporanStokAuditBackdate(Request $request){
$api_url = $request->hostname;
$auth_user = Auth::user();
$current = Carbon::now();
$current = new Carbon();
$tarikh_cetak = $current->toDateString();
$split_date = explode('-',$request->datestokauditbackdate);
$bulan = $split_date[1];
$tahun = $split_date[0];
if($bulan == 1){
$namabulan = 'Januari';
}elseif($bulan == 2){
$namabulan = 'Februari';
}elseif($bulan == 3){
$namabulan = 'Mac';
}elseif($bulan == 4){
$namabulan = 'April';
}elseif($bulan == 5){
$namabulan = 'Mei';
}elseif($bulan == 6){
$namabulan = 'Jun';
}elseif($bulan == 7){
$namabulan = 'Julai';
}elseif($bulan == 8){
$namabulan = 'Ogos';
}elseif($bulan == 9){
$namabulan = 'September';
}elseif($bulan == 10){
$namabulan = 'Oktober';
}elseif($bulan == 11){
$namabulan = 'November';
}elseif($bulan == 12){
$namabulan = 'Disember';
}
$tebus_date = $namabulan . ' ' . $tahun;
$cawangan=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
$cawangan_detail=$cawangan[0];
$stokaudit = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/stokaudit/backdate',['kodcaw' => $auth_user['cawangan'],'tahun'=>$tahun,'bulan'=>$bulan])->json();
return view('akaun.laporan_stokauditbackdate', compact('stokaudit','cawangan_detail','tarikh_cetak','tebus_date','api_url'));
}
}
@@ -66,7 +66,7 @@ class LoginController extends Controller
if($auth_user['roles'] === 'operasi' || $auth_user['roles'] === 'admin'){
return redirect()->route('home');
}else if($auth_user['roles'] === 'akaun'){
}else if($auth_user['roles'] === 'akaun'){
return redirect()->route('akaun.home');
}
else{
+43 -5
View File
@@ -6,8 +6,11 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;
use Carbon\Carbon;
use App\Events\NotifikasiKelulusan;
class KelulusanController extends Controller
{
public function index()
@@ -34,13 +37,12 @@ class KelulusanController extends Controller
public function updatekelulusan(Request $request)
{
$auth_user = Auth::user();
// $auth_user = Auth::user();
$api_url = config('api.url');
$norujukan = $request->norujukan;
if($request->pembatalan == null)
{
$updatelulus = Http::put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan,[
@@ -48,6 +50,7 @@ class KelulusanController extends Controller
'siri' => $request->siri
])->json();
$updatelulus = Http::put(config('api.url') . '/api/UpdateKelulusan/' . $request->kodcaw . '/' . $norujukan,[
'sahkan' => 1,
'namaoperasi' => $request->namaoperasi,
@@ -78,9 +81,44 @@ class KelulusanController extends Controller
}
}
return response()->json($updatelulus,200);
}
public function updatePB(Request $request)
{
$imageName = time().'.'.$request->image->extension();
$data = base64_encode($request->image->get());
// $data = base64_encode(file_get_contents($request->file('image')));
// $request->image->move(public_path('storage\kelulusanpb'), $imageName);
$updatelulus = Http::accept('application/'.$request->image->extension())->post(config('api.url') . '/admin/permohonan/updatepb',[
'amaun_lulus' => $request->amaun_lulus,
'kelulusan' => $request->kelulusan,
// 'kelulusanpbimage' => $imageName,
'komen' => '',
'dataimage' => $data,
'imagename' => $imageName,
'imagetype' => $request->image->extension(),
'mohonid' => $request->mohonid
])->json();
if($updatelulus)
{
return response(1);
}
}
public function download(Request $request)
{
$download = Http::get(config('api.url').'/admin/permohonan/viewfiles',[
'files_id' => $request->files_id
])->json();
return response(base64_decode($download['data']), 200, [
'Content-type' => 'application/' . $download['type'],
'Content-Disposition' => 'inline; filename='.$download['filename']
]);
}
}
@@ -0,0 +1,198 @@
<?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 Illuminate\Support\Facades\Hash;
use Carbon\Carbon;
use App\Models\Cawangan;
use DateTime;
class PermohonanController extends Controller
{
public function index()
{
$api_url = config('api.url');
$auth_user = Auth::user();
return view('permohonan.index',compact('api_url','auth_user'));
}
public function MintaKelulusan(Request $request)
{
$auth_user = Auth::user();
if(Hash::check($request->passsemula, Auth::user()->password))
return 1;
else
return 0;
}
public function CetakanPB(Request $request)
{
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'. $request->cawangan)->json();
$cawangan_detail=$cawangan[0];
$current = Carbon::now();
$tarikh_cetak = $current->toDateString();
$myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak);
$tarikhcetakan = $myDateTime->format('d-m-Y');
$permohonan=Http::get(config('api.url').'/admin/permohonan/get/'. $request->cawangan .'/'. $request->mohonid)->json();
return view('permohonan.cetakanpb', compact('cawangan_detail','permohonan','tarikhcetakan'));
}
public function CetakanPenuh(Request $request)
{
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'. $request->cawangan)->json();
$cawangan_detail=$cawangan[0];
$current = Carbon::now();
$tarikh_cetak = $current->toDateString();
$permohonan=Http::get(config('api.url').'/admin/permohonan/get/'. $request->cawangan .'/'. $request->mohonid)->json();
$myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak);
$tarikhcetakan = $myDateTime->format('d-m-Y');
$caw = Cawangan::where('kodcaw',$request->cawangan)->get()->toArray();
$jeniscawangan = $caw[0]['syarikat'];
$ahli = '';
$fullname = '';
switch($jeniscawangan){
case 'PKB' : $fullname = 'PERMODALAN KELANTAN BERHAD';
break;
case 'SYIRKAH' : $fullname = 'JOINT VENTURE PKB AND KRKB';
break;
case 'KPKB' : $fullname = 'JOINT VENTURE PKB AND KPKB';
break;
case 'BMMB' : $fullname = 'JOINT VENTURE MVSB AND PKB';
$ahli = 'Ahli JMC';
break;
}
$ringgittext = '';
if($permohonan['jumlah_diluluskan'] !== null)
{
$decones = array(
'01' => "Satu",
'02' => "Dua",
'03' => "Tiga",
'04' => "Empat",
'05' => "Lima",
'06' => "Enam",
'07' => "Tujuh",
'08' => "Lapan",
'09' => "Sembilan",
10 => "Sepuluh",
11 => "Sebelas",
12 => "Dua Belas",
13 => "Tiga Belas",
14 => "Empat Belas",
15 => "Lima Belas",
16 => "Enam Belas",
17 => "Tujuh Belas",
18 => "Lapan Belas",
19 => "Sembilan Belas"
);
$ones = array(
0 => " ",
1 => "Satu",
2 => "Dua",
3 => "Tiga",
4 => "Empat",
5 => "Lima",
6 => "Enam",
7 => "Tujuh",
8 => "Lapan",
9 => "Sembilan",
10 => "Sepuluh",
11 => "Sebelas",
12 => "Dua Belas",
13 => "Tiga Belas",
14 => "Empat Belas",
15 => "Lima Belas",
16 => "Enam Belas",
17 => "Tujuh Belas",
18 => "Lapan Belas",
19 => "Sembilan Belas"
);
$tens = array(
0 => "",
2 => "Dua Puluh",
3 => "Tiga Puluh",
4 => "Empat Puluh",
5 => "Lima Puluh",
6 => "Enam Puluh",
7 => "Tujuh Puluh",
8 => "Lapan Puluh",
9 => "Sembilan Puluh"
);
$hundreds = array(
"Ratus",
"Ribu",
"Juta",
"bilion",
"trilion"
); //limit t quadrillion
$num = number_format($permohonan['jumlah_diluluskan'],2,".",",");
// dd($num);
$num_arr = explode(".",$num);
$wholenum = $num_arr[0];
$decnum = $num_arr[1];
$whole_arr = array_reverse(explode(",",$wholenum));
krsort($whole_arr);
$ringgittext = "";
foreach($whole_arr as $key => $i){
if($i > 0 && $i < 20){
$ringgittext .= $ones[$i];
}
elseif($i < 100){
$ringgittext .= $tens[substr($i,0,1)];
$ringgittext .= " ".$ones[substr($i,1,1)];
}
else{
$ringgittext .= $ones[substr($i,0,1)]." ".$hundreds[0];
$ringgittext .= " ".$tens[substr($i,1,1)];
$ringgittext .= " ".$ones[substr($i,2,1)];
}
if($key > 0){
$ringgittext .= " ".$hundreds[$key]." ";
}
}
$text = preg_replace('/\s+/', ' ', $ringgittext);
$trimmed_str = rtrim($text);
$ringgittext = $trimmed_str." Ringgit";
if($decnum > 0){
$ringgittext .= " dan ";
if($decnum < 20){
$ringgittext .= $decones[$decnum];
}
elseif($decnum < 100){
$ringgittext .= $tens[substr($decnum,0,1)];
$ringgittext .= " ".$ones[substr($decnum,1,1)];
}
$ringgittext = $ringgittext." sen";
}
}
return view('permohonan.cetakanfull', compact('ringgittext','jeniscawangan','fullname','cawangan_detail','permohonan','tarikhcetakan'));
}
}
+4 -1
View File
@@ -11,7 +11,10 @@ class Cawangan extends Model
protected $fillable = [
'caw_id',
'details_caw',
'kodcaw'
'kodcaw',
'syarikat',
'min',
'max'
];
protected $primaryKey = 'caw_id';
+1
View File
@@ -14,6 +14,7 @@
"laravel/tinker": "^2.5",
"laravel/ui": "^3.3",
"maatwebsite/excel": "^3.1",
"pusher/pusher-php-server": "^7.0",
"rap2hpoutre/laravel-log-viewer": "^2.0",
"tightenco/ziggy": "^1.4"
},
Generated
+198 -1
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "6068f570311d494c60bf2d35abbae6b7",
"content-hash": "f2ed09714fff2849e484f480ad74451e",
"packages": [
{
"name": "asm89/stack-cors",
@@ -2685,6 +2685,142 @@
},
"time": "2021-04-09T13:42:10+00:00"
},
{
"name": "paragonie/random_compat",
"version": "v9.99.100",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
"shasum": ""
},
"require": {
"php": ">= 7"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*",
"vimeo/psalm": "^1"
},
"suggest": {
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
},
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com"
}
],
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"polyfill",
"pseudorandom",
"random"
],
"support": {
"email": "info@paragonie.com",
"issues": "https://github.com/paragonie/random_compat/issues",
"source": "https://github.com/paragonie/random_compat"
},
"time": "2020-10-15T08:29:30+00:00"
},
{
"name": "paragonie/sodium_compat",
"version": "v1.17.1",
"source": {
"type": "git",
"url": "https://github.com/paragonie/sodium_compat.git",
"reference": "ac994053faac18d386328c91c7900f930acadf1e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/ac994053faac18d386328c91c7900f930acadf1e",
"reference": "ac994053faac18d386328c91c7900f930acadf1e",
"shasum": ""
},
"require": {
"paragonie/random_compat": ">=1",
"php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8"
},
"require-dev": {
"phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9"
},
"suggest": {
"ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.",
"ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security."
},
"type": "library",
"autoload": {
"files": [
"autoload.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"ISC"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com"
},
{
"name": "Frank Denis",
"email": "jedisct1@pureftpd.org"
}
],
"description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists",
"keywords": [
"Authentication",
"BLAKE2b",
"ChaCha20",
"ChaCha20-Poly1305",
"Chapoly",
"Curve25519",
"Ed25519",
"EdDSA",
"Edwards-curve Digital Signature Algorithm",
"Elliptic Curve Diffie-Hellman",
"Poly1305",
"Pure-PHP cryptography",
"RFC 7748",
"RFC 8032",
"Salpoly",
"Salsa20",
"X25519",
"XChaCha20-Poly1305",
"XSalsa20-Poly1305",
"Xchacha20",
"Xsalsa20",
"aead",
"cryptography",
"ecdh",
"elliptic curve",
"elliptic curve cryptography",
"encryption",
"libsodium",
"php",
"public-key cryptography",
"secret-key cryptography",
"side-channel resistant"
],
"support": {
"issues": "https://github.com/paragonie/sodium_compat/issues",
"source": "https://github.com/paragonie/sodium_compat/tree/v1.17.1"
},
"time": "2022-03-23T19:32:04+00:00"
},
{
"name": "phenx/php-font-lib",
"version": "0.5.4",
@@ -3381,6 +3517,67 @@
},
"time": "2021-11-23T15:02:17+00:00"
},
{
"name": "pusher/pusher-php-server",
"version": "7.0.2",
"source": {
"type": "git",
"url": "https://github.com/pusher/pusher-http-php.git",
"reference": "af3eeaefc0c7959f5b3852f0a4dd5547245d33df"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/af3eeaefc0c7959f5b3852f0a4dd5547245d33df",
"reference": "af3eeaefc0c7959f5b3852f0a4dd5547245d33df",
"shasum": ""
},
"require": {
"ext-curl": "*",
"ext-json": "*",
"guzzlehttp/guzzle": "^7.2",
"paragonie/sodium_compat": "^1.6",
"php": "^7.3|^8.0",
"psr/log": "^1.0|^2.0|^3.0"
},
"require-dev": {
"overtrue/phplint": "^2.3",
"phpunit/phpunit": "^8.5|^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.0-dev"
}
},
"autoload": {
"psr-4": {
"Pusher\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Library for interacting with the Pusher REST API",
"keywords": [
"events",
"messaging",
"php-pusher-server",
"publish",
"push",
"pusher",
"real time",
"real-time",
"realtime",
"rest",
"trigger"
],
"support": {
"issues": "https://github.com/pusher/pusher-http-php/issues",
"source": "https://github.com/pusher/pusher-http-php/tree/7.0.2"
},
"time": "2021-12-07T13:09:00+00:00"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
+3 -2
View File
@@ -36,8 +36,9 @@ return [
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
'cluster' => 'ap1',
'useTLS' => false,
'scheme' => 'http'
],
],
+1 -1
View File
@@ -38,7 +38,7 @@ return [
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'url' => env('APP_URL').'/public',
'visibility' => 'public',
],
+1586 -1371
View File
File diff suppressed because it is too large Load Diff
+12 -10
View File
@@ -10,16 +10,16 @@
"production": "mix --production"
},
"devDependencies": {
"autoprefixer": "^10.4.2",
"autoprefixer": "^10.4.4",
"axios": "^0.21.4",
"bootstrap": "^4.6.0",
"jquery": "^3.6",
"laravel-mix": "^6.0.39",
"laravel-mix": "^6.0.43",
"lodash": "^4.17.19",
"popper.js": "^1.16.1",
"postcss": "^8.4.5",
"postcss": "^8.4.12",
"resolve-url-loader": "^3.1.2",
"sass": "^1.47.0",
"sass": "^1.50.0",
"sass-loader": "^11.0.1",
"tailwindcss": "^2.2.19",
"vue": "^2.6.12",
@@ -29,16 +29,18 @@
"vue-template-compiler": "^2.6.12"
},
"dependencies": {
"@headlessui/vue": "^1.4.2",
"@popperjs/core": "^2.11.2",
"@headlessui/vue": "^1.5.0",
"@popperjs/core": "^2.11.5",
"@vue-hero-icons/outline": "^1.7.2",
"@vue-hero-icons/solid": "^1.7.2",
"@vue/composition-api": "^1.4.3",
"alpinejs": "^3.7.1",
"apexcharts": "^3.33.0",
"@vue/composition-api": "^1.4.9",
"alpinejs": "^3.9.6",
"apexcharts": "^3.35.0",
"jw-vue-pagination": "^1.0.3",
"laravel-echo": "^1.11.4",
"pusher-js": "^7.0.6",
"vue-apexcharts": "^1.6.2",
"vue-axios": "^3.4.0",
"vue-axios": "^3.4.1",
"vue-class-component": "^7.2.6",
"vue-content-placeholders": "^0.2.1",
"vue-moment": "^4.1.0",
Binary file not shown.

After

Width:  |  Height:  |  Size: 911 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

+17264 -5282
View File
File diff suppressed because one or more lines are too long
+13 -4
View File
@@ -84,12 +84,21 @@
</div>
</div>
<div class="w-2/3 bg-white ml-2 shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<router-link to="/akaunhome/RingkasanTerkumpul">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Ringkasan Terkumpul</h2>
</router-link>
<div class="ml-3 grid grid-cols-3">
<div class="bg-white ml-2 shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<router-link to="/akaunhome/RingkasanTerkumpul">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Ringkasan Terkumpul</h2>
</router-link>
</div>
<div class="bg-white ml-2 shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<router-link to="/akaunhome/StokAuditBackdate">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Stok Audit Back-date</h2>
</router-link>
</div>
</div>
</div>
+5 -2
View File
@@ -9,7 +9,7 @@
</router-link>
<span class="text-center mx-auto text-white font-bold">Laporan Lejer Am</span>
</div>
<form method="get" ref="formlejeram" :action="Urlredirect()" target="iframe_lejer">
<form method="get" id="iframe_lejer" name="formlejeram" ref="formlejeram" :action="Urlredirect()" target="iframe_lejer">
<div class="rounded bg-white shadow p-6">
<div class="pb-6">
<div class="flex place-content-center mb-2">
@@ -88,10 +88,13 @@ export default {
},
methods: {
async generatepdf(){
await this.setJenis('pdf');
this.showCetak = true;
this.showModal = false;
this.showLoader = true;
await this.setJenis('pdf');
// Vue.swal({
// title: 'Memuatkan...',
// allowEscapeKey : false,
+83
View File
@@ -0,0 +1,83 @@
<template>
<div class="container">
<div class="flex w-full">
<div class="xl:w-2/3 2xl:w-1/2 p-8 mx-auto">
<div class="bg-yellow-600 text-gray-200 text-lg px-6 py-4 rounded-t-lg">
<router-link to="/akaunhome">
<i class="fas fa-backspace text-white"></i>
</router-link>
<span class="text-center mx-auto text-white font-bold">Laporan Stok Audit Backdate</span>
</div>
<form method="get" id="formstokauditbackdate" :action="Urlredirect()" target="_blank">
<div class="rounded bg-white shadow p-6">
<div class="pb-6">
<label for="username" class="font-semibold text-gray-700 block pb-1">Tarikh</label>
<div class="flex">
<input :value="$kodcaw" name="kodcaw" hidden/>
<input :value="$hostname" name="hostname" hidden/>
<input :value="jenisgenerate" type="hidden" name="jenis" />
<span style="background-color: #F9FAFB" class="text-gray-600 border border-2 rounded-l px-4 py-2 whitespace-no-wrap">Mula</span>
<input id="tarikhmula" name="datestokauditbackdate" class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2" type="date" />
<!-- <button @click.prevent="generatepdf" class=" mr-2 border border-yellow-600 text-yellow-600 font-montserrat py-2 px-8 font-medium rounded-xl hover:bg-yellow-600 hover:text-white transition-all duration-300"><i class="fas fa-file-pdf mr-2"></i>PDF</button> -->
<button @click.prevent="generateview" class="border border-yellow-600 text-yellow-600 font-montserrat py-2 px-8 font-medium rounded-xl hover:bg-yellow-600 hover:text-white transition-all duration-300"><i class="fas fa-eye mr-2"></i>View</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</template>
<script>
export default {
data(){
return{
jenisgenerate:'none',
kodcaw: ''
}
},
methods: {
// async generatepdf(){
// await this.setJenis('pdf');
// Vue.swal({
// title: 'Memuatkan...',
// allowEscapeKey : false,
// allowOutsideClick: false,
// showCancelButton: false,
// showConfirmButton: false,
// timer: 8000,
// });
// document.getElementById("formringkasanharian").submit();
// },
async generateview(){
await this.setJenis('view');
Vue.swal({
title: 'Memuatkan...',
allowEscapeKey : false,
allowOutsideClick: false,
showCancelButton: false,
showConfirmButton: false,
timer: 8000,
});
document.getElementById("formstokauditbackdate").submit();
},
Urlredirect: function() {
return window.route('cetak.stokauditbackdate')
},
setJenis: function(value){
return this.jenisgenerate = value;
}
}
}
</script>
+171 -47
View File
@@ -1,45 +1,44 @@
<template>
<div >
<modal ref="modal"></modal>
<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-if="this.showloader === true" class="bg-white md:items-center md:justify-between shadow rounded-lg p-4 md:p-6 xl:p-8 my-6">
<template v-if="showkelulusan.data.length > 0">
<template v-if="Object.keys(showkelulusan.data).length > 0">
<div v-for="(kelulusan,index) in showkelulusan.data" :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">{{ kelulusan.kelulusanall[0].norujukan }}</p>
<p class="font-bold text-md w-1/3 text-red-500 justify-center flex text-center">{{ kelulusan.kelulusanall[0].status }}</p>
<p class="font-bold text-xl w-1/3">{{ kelulusan.norujukan }}</p>
<p class="font-bold text-md w-1/3 text-red-500 justify-center flex text-center">{{ kelulusan.status }}</p>
<p class="font-bold text-xl w-1/3 text-gray-500 flex justify-end">Ar-Rahn {{ kelulusan.cawangan }}</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">{{ kelulusan.kelulusanall[0].khazanah }}</span></p>
<p class="w-1/4 text-sm text-gray-700">Pembiayaan: RM{{ changeFormat(kelulusan.kelulusanall[0].jumpinj) }}</p>
<p class="w-1/4 text-sm text-gray-700">Nilai Marhun: RM{{ changeFormat(kelulusan.kelulusanall[0].nilaimarhun) }}</p>
<p class="font-bold text-green-500 w-1/2">PC/PPC: <span class="text-black font-normal text-md capitalize">{{ kelulusan.khazanah }}</span></p>
<p class="w-1/4 text-sm text-gray-700">Pembiayaan: RM{{ changeFormat(kelulusan.jumpinj) }}</p>
<p class="w-1/4 text-sm text-gray-700">Nilai Marhun: RM{{ changeFormat(kelulusan.nilaimarhun) }}</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">{{ kelulusan.kelulusanall[0].teller }}</span></p>
<p class="w-1/4 text-sm text-gray-700">Margin: {{ kelulusan.kelulusanall[0].margin }}%</p>
<p class="w-1/4 text-sm text-gray-700">Berat: {{ kelulusan.kelulusanall[0].berat }} gm</p>
<p class="font-bold text-green-500 w-1/2">Teller: <span class="text-black font-normal text-md capitalize">{{ kelulusan.teller }}</span></p>
<p class="w-1/4 text-sm text-gray-700">Margin: {{ kelulusan.margin }}%</p>
<p class="w-1/4 text-sm text-gray-700">Berat: {{ kelulusan.berat }} gm</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">{{ kelulusan.kelulusanall[0].komen }}</span></p>
<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">{{ kelulusan.komen }}</span></p>
</div>
<!-- <p class="font-bold text-xl">KB2210232-00032</p> -->
<!-- <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 -->
{{ kelulusan.kelulusanall[0].tarikh | moment("calendar") }}
{{ kelulusan.tarikh | moment("calendar") }}
<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>
<button class="bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-1 px-6 border border-yellow-500 rounded mr-1" @click.prevent="ApproveFunc(kelulusan.norujukan,kelulusan.cawangankod,kelulusan.teller,kelulusan.siri)"><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-500 rounded mr-1" @click.prevent="DisapproveFunc(kelulusan.norujukan,kelulusan.cawangankod,kelulusan.teller,kelulusan.siri)"><i class="fas fa-thumbs-down mr-1 text-md"></i> Tidak Lulus</button>
</div>
</div>
</div>
</div>
<pagination :data="paginate" @clickEvent_="getKelulusanList"></pagination>
</template>
<template v-else>
<div class="flex place-content-center w-full">
@@ -51,61 +50,186 @@
</div>
</template>
</div>
<pagination :data="paginate" @clickEvent_="getKelulusanList"></pagination>
</div>
</div>
</template>
<script>
import modal from '../components/util/KomenModal.vue'
import pagination from '../components/pagination.vue'
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
minimumFractionDigits: 2
});
export default {
components: {
pagination,
modal,
// deletemodal
},
data(){
return{
currentPage: 1,
showkelulusan:[],
paginate:{}
components: {
pagination,
modal,
// deletemodal
},
data() {
return {
currentPage: 1,
showkelulusan: {},
paginate: {},
showloader: false
}
},
created() {
this.getKelulusanList(this.currentPage)
},
methods:{
changeFormat: function(data){
this.getKelulusanList(this.currentPage)
},
methods: {
changeFormat: function (data) {
return formatter.format(data)
},
getKelulusanList(pageNumber){
this.axios.get(this.$hostname + '/admin/ListOperasi/Paginate',{
getKelulusanList(pageNumber) {
this.showloader = false
this.axios.get(this.$hostname + '/admin/ListOperasi/Paginate', {
params: {
page: pageNumber
}
page: pageNumber
}
}).then(response => {
console.log(response.data)
this.showkelulusan = response.data
this.paginate = response.data
this.currentPage = pageNumber
this.showloader = true
});
},
ApproveFunc:function(){
this.$refs.modal.showModal = true;
ApproveFunc: async function (noruj, kcaw, tel, sir) {
let boolkatalaluan = 0;
console.log(noruj, kcaw, tel, sir)
const {
value: katalaluan
} = await this.$swal({
title: 'Masukkan Katalaluan Semula',
input: 'password',
inputPlaceholder: 'Katalaluan',
confirmButtonText: 'Hantar',
showCancelButton: true,
cancelButtonText: 'Batal',
allowOutsideClick: false
})
await this.axios.get('/mintasemulakelulusan', {
params: {
passsemula: katalaluan
}
}).then(response => {
if (response.data === 0) {
boolkatalaluan = 0;
} else {
boolkatalaluan = 1;
}
});
if (boolkatalaluan == 1) {
await this.$swal({
title: 'Masukkan Komen',
input: 'text',
inputPlaceholder: 'Komen',
confirmButtonText: 'Hantar',
showCancelButton: true,
cancelButtonText: 'Batal',
allowOutsideClick: false
}).then((result) => {
if (result.isConfirmed) {
return this.axios.post('/api/check/kelulusan/operasi', {
norujukan: noruj,
komenkelulusan: result.value,
kodcaw: kcaw,
namaoperasi: this.$attrs['namaoperasi'],
teller: tel,
siri: sir,
}).then((response) =>{
if(response.data == 1)
{
this.getKelulusanList(1)
}
});
} else if (result.isDenied) {
Swal.fire('Changes are not saved', '', 'info')
}
})
}
},
DisapproveFunc:function(){
console.log('taklulus');
DisapproveFunc: async function (noruj, kcaw, tel, sir) {
let boolkatalaluan = 0;
const {
value: katalaluan
} = await this.$swal({
title: 'Masukkan Katalaluan Semula',
input: 'password',
inputPlaceholder: 'Katalaluan',
confirmButtonText: 'Hantar',
showCancelButton: true,
cancelButtonText: 'Batal',
allowOutsideClick: false
})
await this.axios.get('/mintasemulakelulusan', {
params: {
passsemula: katalaluan
}
}).then(response => {
if (response.data === 0) {
boolkatalaluan = 0;
} else {
boolkatalaluan = 1;
}
});
if (boolkatalaluan == 1) {
await this.$swal({
title: 'Masukkan Komen',
input: 'text',
inputPlaceholder: 'Komen',
confirmButtonText: 'Hantar',
showCancelButton: true,
cancelButtonText: 'Batal',
allowOutsideClick: false
}).then((result) => {
if (result.isConfirmed) {
return this.axios.post('/api/check/kelulusan/operasi', {
norujukan: noruj,
komenkelulusan: result.value,
kodcaw: kcaw,
namaoperasi: this.$attrs['namaoperasi'],
teller: tel,
siri: sir,
pembatalan: "batal"
}).then((response) =>{
if(response.data == 1)
{
this.getKelulusanList(1)
}
});
} else if (result.isDenied) {
Swal.fire('Changes are not saved', '', 'info')
}
})
}
},
RedirectHome:function(){
RedirectHome: function () {
return window.location.href = '/';
}
}
}
</script>
</script>
+1 -1
View File
@@ -127,7 +127,7 @@
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
<span v-if="cust.status === 'PAID'" class="inlint-block mr-1 last:mr-0 py-1 px-2 rounded bg-green-200 text-xs font-semibold text-green-600 uppercase">
<span v-if="cust.status === 'PAID'" class="inlint-block mr-1 last:mr-0 py-1 px-2 rounded bg-yellow-200 text-xs font-semibold text-green-600 uppercase">
{{ cust.status }}
</span>
<span v-if="cust.status === 'NOT PAID'" class="inlint-block mr-1 last:mr-0 py-1 px-2 rounded bg-yellow-200 text-xs font-semibold text-yellow-600 uppercase">
+331
View File
@@ -0,0 +1,331 @@
<template>
<div class="mx-auto">
<pbmodal ref="modal" @clickEvent_="getSenaraiMohon"></pbmodal>
<bankmodal ref="bankmodal" @clickEvent_="getSenaraiMohon"></bankmodal>
<router-link to="/permohonan">
<i class="fas fa-backspace text-yellow-500"></i>
</router-link>
<div class="mx-auto flex justify-between mb-4">
<h1 class="font-bold flex flex-row justify-end">Rekod Permohonan</h1>
</div>
<table class="min-w-full leading-normal">
<thead class="text-center">
<tr>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Cawangan
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
PetiBesi (RM)
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
No Permohonan
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Tarikh Mohon
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Jumlah Mohon (RM)
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Jumlah Lulus (RM)
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Semak
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Jenis Permohonan
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Status
</th>
</tr>
</thead>
<tbody>
<tr v-if="showpermohonan.data.length === 0">
<td colspan="9" class=" px-5 py-5 border-b border-gray-200 bg-white text-sm">
<p class="text-gray-900 whitespace-no-wrap text-center mx-auto">
Tiada Rekod Diperolehi
</p>
</td>
</tr>
<tr v-for="(mohon,i) in showpermohonan.data" :key="i">
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="namacawangan(mohon.kodcaw)">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="formatterfunction(mohon.baki_petibesi)">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="mohon.nopermohonan">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="mohon.tarikh_permohonan">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="formatterfunction(mohon.amaun_mohon)">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="formatterfunction(mohon.jumlah_diluluskan)">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<router-link :to="{ name: 'permohonanstatus', params: { mohonid: mohon.nopermohonan }}">
<div class="border border-green-600 text-green-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-green-600 hover:text-white transition-all duration-300">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />
<path stroke-linecap="round" stroke-linejoin="round" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" />
</svg>
</div>
</router-link>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p :class="mohon.jenismohon == 'permohonanwang' ? 'bg-yellow-500' : 'bg-gray-500'" class="text-white whitespace-no-wrap p-2 rounded" v-text="checkjenismohon(mohon.jenismohon)">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<span v-if="mohon.tagterima === 1 || (mohon.jenismohon == 'bayaranbalik' && mohon.tagoperasi === 1 && mohon.tagcit === 1 && mohon.tagakaun === 1)" class="p-2 bg-green-500 rounded text-white">Berjaya</span>
<span v-else class="p-2 bg-red-500 rounded text-white">Batal</span>
</td>
</tr>
</tbody>
</table>
<pagination :data="paginate" @clickEvent_="getSenaraiMohon"></pagination>
</div>
</template>
<script>
import pagination from '../components/pagination.vue'
import pbmodal from '../components/util/PBmodal.vue'
import bankmodal from '../components/util/Bankmodal.vue'
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
});
export default {
components: {
pagination,
pbmodal,
bankmodal
},
data() {
return {
showpermohonan: {},
currentPage: 1,
paginate: {},
cawangan: {},
username: this.$username,
userroles: this.$userroles
}
},
created() {
this.getSenaraiMohon(this.currentPage)
this.axios.get('/api/check/cawangan').then(response => {
this.cawangan = response.data;
});
},
methods: {
getSenaraiMohon(pageNumber) {
this.axios.get(this.$hostname + '/admin/permohonan/rekod/admin', {
params: {
page: pageNumber
}
}).then(response => {
this.showpermohonan = response.data
this.paginate = response.data
this.currentPage = pageNumber
});
},
namacawangan(cawangannama) {
let namcaw = '';
if (this.cawangan.length > 0) {
this.cawangan.some(function (value, key) {
if (cawangannama === value.kodcaw) {
namcaw = value.details_caw
}
});
}
return namcaw;
},
formatterfunction(value) {
return formatter.format(value)
},
checkjenismohon(value) {
if (value === 'permohonanwang') {
return 'Permohonan Wang'
} else {
return 'Bayaran Balik'
}
},
DownloadBukti: function (image) {
axios.get("/api/check/muatturun?image=" + image, {
responseType: 'blob'
})
.then(response => {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', image);
document.body.appendChild(link);
link.click();
})
.catch(e => {
console.log(e);
});
}
}
}
</script>
+709
View File
@@ -0,0 +1,709 @@
<template>
<div class="mx-auto">
<pbmodal ref="modal" @clickEvent_="getSenaraiMohon"></pbmodal>
<bankmodal ref="bankmodal" @clickEvent_="getSenaraiMohon"></bankmodal>
<div class="mx-auto flex justify-between mb-4">
<h1 class="font-bold flex flex-row justify-end">Permohonan Yang Masih Aktif</h1>
<router-link to="/permohonan/rekod">
<button class="p-2 text-white bg-blue-500 rounded">Rekod Permohonan</button>
</router-link>
</div>
<table v-if="loader == true" class="min-w-full leading-normal">
<thead class="text-center">
<tr>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Cawangan
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
PetiBesi (RM)
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
No Permohonan
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Tarikh Mohon
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Jumlah Mohon (RM)
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Semak
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Jenis Permohonan
</th>
<th class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Tindakan
</th>
</tr>
</thead>
<tbody>
<tr v-if="showpermohonan.data.length === 0">
<td colspan="9" class=" px-5 py-5 border-b border-gray-200 bg-white text-sm">
<p class="text-gray-900 whitespace-no-wrap text-center mx-auto">
Tiada Rekod Diperolehi
</p>
</td>
</tr>
<tr v-for="(mohon,i) in showpermohonan.data" :key="i">
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="namacawangan(mohon.kodcaw)">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="formatterfunction(mohon.baki_petibesi)">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="mohon.nopermohonan">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="mohon.tarikh_permohonan">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="formatterfunction(mohon.amaun_mohon)">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<router-link :to="{ name: 'permohonanstatus', params: { mohonid: mohon.nopermohonan }}">
<div class="border border-green-600 text-green-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-green-600 hover:text-white transition-all duration-300">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />
<path stroke-linecap="round" stroke-linejoin="round" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" />
</svg>
</div>
</router-link>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p :class="mohon.jenismohon == 'permohonanwang' ? 'bg-yellow-500' : 'bg-gray-500'" class="text-white whitespace-no-wrap p-2 rounded" v-text="checkjenismohon(mohon.jenismohon)">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div v-if="userroles == 'operasi'" class="flex items-center">
<div v-if="mohon.tagoperasi === 0 && mohon.tagcit === 1 && mohon.jenismohon === 'bayaranbalik'" class="ml-3">
<button @click="funcsetuju(mohon.nopermohonan)" class="border border-blue-600 text-blue-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-blue-600 hover:text-white transition-all duration-300">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" 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>
</button>
<button @click="funcbatal(mohon.nopermohonan)" class="border border-red-600 text-red-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-red-600 hover:text-white transition-all duration-300">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M10 14H5.236a2 2 0 01-1.789-2.894l3.5-7A2 2 0 018.736 3h4.018a2 2 0 01.485.06l3.76.94m-7 10v5a2 2 0 002 2h.096c.5 0 .905-.405.905-.904 0-.715.211-1.413.608-2.008L17 13V4m-7 10h2m5-10h2a2 2 0 012 2v6a2 2 0 01-2 2h-2.5" />
</svg>
</button>
</div>
<div v-if="mohon.tagoperasi === 0 && mohon.tagcit === 0 && mohon.jenismohon === 'bayaranbalik'" class="ml-3">
<p class="text-white whitespace-no-wrap p-2 rounded bg-blue-500">
Dalam Proses
</p>
</div>
<div v-else-if="mohon.tagoperasi == 0 && mohon.jenismohon === 'permohonanwang'" class="ml-3">
<button @click="funcsetuju(mohon.nopermohonan)" class="border border-blue-600 text-blue-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-blue-600 hover:text-white transition-all duration-300">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" 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>
</button>
<button @click="funcbatal(mohon.nopermohonan)" class="border border-red-600 text-red-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-red-600 hover:text-white transition-all duration-300">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M10 14H5.236a2 2 0 01-1.789-2.894l3.5-7A2 2 0 018.736 3h4.018a2 2 0 01.485.06l3.76.94m-7 10v5a2 2 0 002 2h.096c.5 0 .905-.405.905-.904 0-.715.211-1.413.608-2.008L17 13V4m-7 10h2m5-10h2a2 2 0 012 2v6a2 2 0 01-2 2h-2.5" />
</svg>
</button>
</div>
<div v-else-if="mohon.tagoperasi == 1" class="ml-3">
<p class="text-white whitespace-no-wrap p-2 rounded bg-green-500">
Telah Lulus
</p>
</div>
</div>
<div v-if="userroles == 'akaun' && mohon.jenismohon =='permohonanwang'" class="flex items-center">
<div v-if="mohon.tagoperasi === 0">
<p class="text-white whitespace-no-wrap p-2 rounded bg-blue-500">
DALAM PROCESS
</p>
</div>
<div v-else-if="(mohon.tagoperasi === 1 && mohon.tagakaun === 0)" class="ml-3">
<button @click="funcsetuju(mohon.nopermohonan)" class="border border-blue-600 text-blue-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-blue-600 hover:text-white transition-all duration-300">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" 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>
</button>
<button @click="funcbatal(mohon.nopermohonan)" class="border border-red-600 text-red-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-red-600 hover:text-white transition-all duration-300">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M10 14H5.236a2 2 0 01-1.789-2.894l3.5-7A2 2 0 018.736 3h4.018a2 2 0 01.485.06l3.76.94m-7 10v5a2 2 0 002 2h.096c.5 0 .905-.405.905-.904 0-.715.211-1.413.608-2.008L17 13V4m-7 10h2m5-10h2a2 2 0 012 2v6a2 2 0 01-2 2h-2.5" />
</svg>
</button>
</div>
<div v-else-if="(mohon.tagakaun === 1 || mohon.tagakaun === 2) && mohon.tagprint === 0" class="ml-3">
<button @click="CetakanPB(mohon.kodcaw,mohon.nopermohonan)" class="border border-blue-600 text-blue-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-blue-600 hover:text-white transition-all duration-300">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H5a2 2 0 00-2 2v4a2 2 0 002 2h2m2 4h6a2 2 0 002-2v-4a2 2 0 00-2-2H9a2 2 0 00-2 2v4a2 2 0 002 2zm8-12V5a2 2 0 00-2-2H9a2 2 0 00-2 2v4h10z" />
</svg>
</button>
</div>
<div v-else-if="mohon.tagprint === 1 && mohon.tagakaun === 1 && mohon.tagpb === 0">
<button @click="KelulusanPB(mohon.nopermohonan,formatterfunction(mohon.amaun_mohon))" class="border border-blue-600 text-blue-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-blue-600 hover:text-white transition-all duration-300">
PB
</button>
</div>
<div v-else-if="mohon.tagpb === 1 && mohon.tagdeposit === 0">
<button @click="DepositBank(mohon.nopermohonan)" class="border border-blue-600 text-blue-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-blue-600 hover:text-white transition-all duration-300">
BANK
</button>
</div>
<div v-else>
<p class="text-white whitespace-no-wrap p-2 rounded bg-green-500">
Telah Lulus
</p>
</div>
</div>
<div v-if="userroles == 'akaun' && mohon.jenismohon =='bayaranbalik'" class="flex items-center">
<div v-if="mohon.tagoperasi === 0">
<p class="text-white whitespace-no-wrap p-2 rounded bg-blue-500">
DALAM PROCESS
</p>
</div>
<div v-else-if="(mohon.tagoperasi === 1 && mohon.tagakaun === 0)" class="ml-3">
<button @click="funcsetuju(mohon.nopermohonan)" class="border border-blue-600 text-blue-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-blue-600 hover:text-white transition-all duration-300">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" 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>
</button>
<button @click="funcbatal(mohon.nopermohonan)" class="border border-red-600 text-red-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-red-600 hover:text-white transition-all duration-300">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M10 14H5.236a2 2 0 01-1.789-2.894l3.5-7A2 2 0 018.736 3h4.018a2 2 0 01.485.06l3.76.94m-7 10v5a2 2 0 002 2h.096c.5 0 .905-.405.905-.904 0-.715.211-1.413.608-2.008L17 13V4m-7 10h2m5-10h2a2 2 0 012 2v6a2 2 0 01-2 2h-2.5" />
</svg>
</button>
</div>
<div v-else>
<p class="text-white whitespace-no-wrap p-2 rounded bg-green-500">
Telah Lulus
</p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<pagination :data="paginate" @clickEvent_="getSenaraiMohon"></pagination>
</div>
</template>
<script>
import pagination from '../components/pagination.vue'
import pbmodal from '../components/util/PBmodal.vue'
import bankmodal from '../components/util/Bankmodal.vue'
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
});
export default {
components: {
pagination,
pbmodal,
bankmodal
},
data() {
return {
showpermohonan: {},
currentPage: 1,
paginate: {},
cawangan: {},
username: this.$username,
userroles: this.$userroles,
loader: false
}
},
created() {
this.getSenaraiMohon(this.currentPage)
this.axios.get('/api/check/cawangan').then(response => {
this.cawangan = response.data;
});
},
methods: {
getSenaraiMohon(pageNumber) {
this.axios.get(this.$hostname + '/admin/permohonan/get/admin', {
params: {
page: pageNumber
}
}).then(response => {
this.showpermohonan = response.data
this.paginate = response.data
this.currentPage = pageNumber
this.loader = true;
});
},
namacawangan(cawangannama) {
let namcaw = '';
if (this.cawangan.length > 0) {
this.cawangan.some(function (value, key) {
if (cawangannama === value.kodcaw) {
namcaw = value.details_caw
}
});
}
return namcaw;
},
formatterfunction(value) {
return formatter.format(value)
},
checkjenismohon(value) {
if (value === 'permohonanwang') {
return 'Permohonan Wang'
} else {
return 'Bayaran Balik'
}
},
async funcbatal(mohonid) {
let refer = this;
const {
value: katalaluan
} = await this.$swal({
title: 'Masukkan Katalaluan Semula',
input: 'password',
inputPlaceholder: 'Katalaluan',
confirmButtonText: 'Hantar',
showCancelButton: true,
cancelButtonText: 'Batal',
allowOutsideClick: false
})
if (katalaluan !== undefined)
await this.axios.get('/mintasemulakelulusan', {
params: {
passsemula: katalaluan
}
}).then(response => {
let refer2 = this;
if (response.data === 1) {
this.$swal({
title: 'Masukkan Komen',
input: 'text',
inputPlaceholder: 'Katalaluan',
confirmButtonText: 'Hantar',
showCancelButton: false,
cancelButtonText: 'Batal',
allowOutsideClick: false
}).then((result) => {
if (refer2.userroles === "operasi") {
refer2.axios.put(refer2.$hostname + '/admin/permohonan/updateoperasi', {
kelulusan: "Batal",
mohonid: mohonid,
namaoperasi: refer2.username,
komen: result.value
}).then(response => {
if (response.data === 1) {
refer2.$swal({
icon: 'success',
title: 'Berjaya',
text: 'Berjaya mengemaskini maklumat pelanggan',
allowOutsideClick: false
}).then(function () {
refer.getSenaraiMohon(refer.currentPage);
});
} else {
refer2.$swal({
icon: 'warning',
title: 'Tidak Berjaya',
text: 'Data pelanggan tidak berjaya dikemaskini',
allowOutsideClick: false
}).then(function () {
refer.getSenaraiMohon(refer.currentPage);
});
}
});
} else if (refer2.userroles === "akaun") {
refer2.axios.put(refer2.$hostname + '/admin/permohonan/updateakaun', {
kelulusan: "Batal",
mohonid: mohonid,
namaakaun: refer2.username,
komen: result.value
}).then(response => {
if (response.data === 1) {
refer2.$swal({
icon: 'success',
title: 'Berjaya',
text: 'Berjaya mengemaskini maklumat pelanggan',
allowOutsideClick: false
}).then(function () {
refer.getSenaraiMohon(refer.currentPage);
});
} else {
refer2.$swal({
icon: 'warning',
title: 'Tidak Berjaya',
text: 'Data pelanggan tidak berjaya dikemaskini',
allowOutsideClick: false
}).then(function () {
refer.getSenaraiMohon(refer.currentPage);
});
}
});
} else {
}
});
} else {
this.$swal({
icon: 'warning',
title: 'Tidak Berjaya',
text: 'Kata Laluan Yang Dimasukkan Salah!!',
allowOutsideClick: false
}).then(function () {
refer.getSenaraiMohon(refer.currentPage);
});
}
});
},
async funcsetuju(mohonid) {
let refer = this;
const {
value: katalaluan
} = await this.$swal({
title: 'Masukkan Katalaluan Semula',
input: 'password',
inputPlaceholder: 'Katalaluan',
confirmButtonText: 'Hantar',
showCancelButton: true,
cancelButtonText: 'Batal',
allowOutsideClick: false
})
if (katalaluan !== undefined)
await this.axios.get('/mintasemulakelulusan', {
params: {
passsemula: katalaluan
}
}).then(response => {
if (response.data === 1) {
if (this.userroles === "operasi") {
this.axios.put(this.$hostname + '/admin/permohonan/updateoperasi', {
kelulusan: 'Lulus',
mohonid: mohonid,
namaoperasi: this.username
}).then(response => {
if (response.data === 1) {
this.$swal({
icon: 'success',
title: 'Berjaya',
text: 'Berjaya mengemaskini maklumat pelanggan',
allowOutsideClick: false
}).then(function () {
refer.getSenaraiMohon(refer.currentPage);
});
} else {
this.$swal({
icon: 'warning',
title: 'Tidak Berjaya',
text: 'Data pelanggan tidak berjaya dikemaskini',
allowOutsideClick: false
}).then(function () {
refer.getSenaraiMohon(refer.currentPage);
});
}
});
} else if (this.userroles === 'akaun') {
this.axios.put(this.$hostname + '/admin/permohonan/updateakaun', {
kelulusan: 'Lulus',
mohonid: mohonid,
namaakaun: this.username
}).then(response => {
if (response.data === 1) {
this.$swal({
icon: 'success',
title: 'Berjaya',
text: 'Berjaya mengemaskini maklumat pelanggan',
allowOutsideClick: false
}).then(function () {
refer.getSenaraiMohon(refer.currentPage);
});
} else {
this.$swal({
icon: 'warning',
title: 'Tidak Berjaya',
text: 'Data pelanggan tidak berjaya dikemaskini',
allowOutsideClick: false
}).then(function () {
refer.getSenaraiMohon(refer.currentPage);
});
}
});
} else {
}
} else {
this.$swal({
icon: 'warning',
title: 'Tidak Berjaya',
text: 'Kata Laluan Yang Dimasukkan Salah!!',
allowOutsideClick: false
}).then(function () {
getSenaraiMohon(this.currentPage);
});
}
});
},
CetakanPB: function (caw, mid) {
let refer = this;
this.axios.put(this.$hostname + '/admin/permohonan/updatecetak', {
mohonid: mid,
namaprint: this.username
}).then(response => {
if (response.data === 1) {
this.$swal({
icon: 'success',
title: 'Berjaya',
text: 'Cetakan Berjaya Dijana!',
allowOutsideClick: false
}).then(function () {
refer.getSenaraiMohon(refer.currentPage);
});
} else {
this.$swal({
icon: 'warning',
title: 'Tidak Berjaya',
text: 'Cetakan Tidak Berjaya!',
allowOutsideClick: false
}).then(function () {
refer.getSenaraiMohon(refer.currentPage);
});
}
});
let route = window.route('permohonan.cetakanpenuh', {
_query: {
cawangan: caw,
mohonid: mid
},
});
window.open(route, '_blank')
},
KelulusanPB: function (mid, mohon) {
this.$refs.modal.mohonid = mid;
this.$refs.modal.amaun_dimohon = mohon;
this.$refs.modal.showModal = true;
},
DepositBank: function (mid) {
this.$refs.bankmodal.mohonid = mid;
this.$refs.bankmodal.showModal = true;
}
}
}
</script>
+486
View File
@@ -0,0 +1,486 @@
<template>
<div class="container px-1 px-md-4 py-5 mx-auto">
<router-link to="/permohonan">
<i class="fas fa-backspace text-yellow-500"></i>
</router-link>
<div v-if="this.loadstatus == true" class="card">
<div class="row flex justify-between px-3 top">
<div class="d-flex">
<h5>NO PERMOHONAN : <span class="text-primary font-weight-bold">{{ this.permohonan.nopermohonan }}</span></h5>
<h5>JUMLAH MOHON : <span class="text-primary font-weight-bold">RM {{ formatterfunction(this.permohonan.amaun_mohon) }}</span></h5>
</div>
<div>
<span class="text-white rounded font-weight-bold bg-green-500 p-3">{{ this.permohonan.jenismohon }}</span>
</div>
</div>
<div v-if="this.permohonan.jenismohon === 'bayaranbalik'" class="flex mt--8">
<div class="w-full">
<ul id="progressbar" class="text-center flex justify-center items-center">
<li :class="this.permohonan.tarikh_permohonan !== null ? 'active' : ''" class="step0 w-1/4"></li>
<li :class="this.permohonan.tagcit === 1 ? 'active' : ''" class="step0 w-1/4"></li>
<li :class="this.permohonan.tagoperasi === 1 ? 'active' : ''" class="step0 w-1/4"></li>
<li :class="this.permohonan.tagakaun === 1 ? 'active' : ''" class="step0 w-1/4"></li>
</ul>
</div>
</div>
<div v-if="this.permohonan.jenismohon === 'bayaranbalik'" class="w-4/6 flex items-center mx-auto">
<div class="row flex flex-col justify-center items-center icon-content w-1/4"> <img class="icon mx-auto" src="/img/proposal.png">
<div class="flex flex-column">
<p class="font-weight-bold text-center">Permohonan <br>Cawangan</p>
</div>
</div>
<div class="flex flex-col justify-center items-center icon-content w-1/4"> <img class="icon mx-auto" src="/img/operasicek.png">
<div class="flex flex-column">
<p class="font-weight-bold text-center">CIT selesai Deposit ke bank</p>
<img v-if="this.permohonan.tagoperasi == 2" class="absolute icon mx-auto top-1/3 mt-10" src="/img/batal.png">
</div>
</div>
<div class="flex flex-col justify-center items-center icon-content w-1/4"> <img class="icon mx-auto" src="/img/operasicek.png">
<div class="flex flex-column">
<p class="font-weight-bold text-center">Pengesahan<br>Operasi</p>
<img v-if="this.permohonan.tagoperasi == 2" class="absolute icon mx-auto top-1/3 mt-10" src="/img/batal.png">
</div>
</div>
<div class="flex flex-col justify-center items-center icon-content w-1/4"> <img class="icon mx-auto" src="/img/operasicek.png">
<div class="d-flex flex-column">
<p class="font-weight-bold text-center">Akaun</p>
<img v-if="this.permohonan.tagakaun == 2" class="absolute icon mx-auto top-1/3 mt-10" src="/img/batal.png">
</div>
</div>
</div>
<div v-if="this.permohonan.jenismohon === 'permohonanwang'" class="flex mt--8">
<div class="w-full">
<ul id="progressbar" class="text-center flex">
<li :class="this.permohonan.tarikh_permohonan !== null ? 'active' : ''" class="step0 w-1/6"></li>
<li :class="this.permohonan.tagoperasi === 1 ? 'active' : ''" class="step0 w-1/6"></li>
<li :class="this.permohonan.tagakaun === 1 ? 'active' : ''" class="step0 w-1/6"></li>
<li :class="this.permohonan.tagpb === 1 ? 'active' : ''" class="step0 w-1/6"></li>
<li :class="this.permohonan.tagdeposit === 1 ? 'active' : ''" class="step0 w-1/6"></li>
<li :class="this.permohonan.tagterima === 1 ? 'active' : ''" class="step0 w-1/6"></li>
</ul>
</div>
</div>
<div v-if="this.permohonan.jenismohon === 'permohonanwang'" class="flex w-full">
<div class="row flex flex-col justify-center items-center icon-content w-1/6"> <img class="icon mx-auto" src="/img/proposal.png">
<div class="flex flex-column">
<p class="font-weight-bold text-center">Permohonan <br>Cawangan</p>
</div>
</div>
<div class="flex flex-col justify-center items-center icon-content w-1/6"> <img class="icon mx-auto" src="/img/operasicek.png">
<div class="flex flex-column">
<p class="font-weight-bold text-center">Pengesahan<br>Operasi</p>
<img v-if="this.permohonan.tagoperasi == 2" class="absolute icon mx-auto top-1/3 mt-10" src="/img/batal.png">
</div>
</div>
<div class="flex flex-col justify-center items-center icon-content w-1/6"> <img class="icon mx-auto" src="/img/operasicek.png">
<div class="d-flex flex-column">
<p class="font-weight-bold text-center">Akaun</p>
<img v-if="this.permohonan.tagakaun == 2" class="absolute icon mx-auto top-1/3 mt-10" src="/img/batal.png">
</div>
</div>
<div class="flex flex-col justify-center items-center icon-content w-1/6"> <img class="icon mx-auto" src="/img/leaderapproval.png">
<div class="d-flex flex-column">
<p class="font-weight-bold text-center">Kelulusan <br>Pengurus Besar</p>
<img v-if="this.permohonan.tagpb == 2" class="absolute icon mx-auto top-1/3 mt-10" src="/img/batal.png">
</div>
</div>
<div class="flex flex-col justify-center items-center icon-content w-1/6"> <img class="icon mx-auto" src="/img/chequetick.png">
<div class="d-flex flex-column">
<p class="font-weight-bold text-center">Akaun <br> Deposit Ke Bank <br>Selesai</p>
<img v-if="this.permohonan.tagdeposit == 2" class="absolute icon mx-auto top-1/3 mt-10" src="/img/batal.png">
</div>
</div>
<div class="flex flex-col justify-center items-center icon-content w-1/6"> <img class="icon mx-auto" src="/img/money.png">
<div class="d-flex flex-column">
<p class="font-weight-bold text-center">Cawangan<br> Terima Wang</p>
</div>
</div>
</div>
</div>
<div v-if="this.loadstatus == true" class="">
<div class="p-4 flex justify-center items-center">
<table class="w-2/3 leading-normal">
<thead class="text-center">
<tr>
<th class="w-1/5 px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Tarikh
</th>
<th class="w-1/5 px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Masa
</th>
<th class="w-3/5 px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Status Permohonan
</th>
</tr>
</thead>
<tbody>
<tr v-for="(status,i) in statusdescription" :key="i">
<td class="text-center px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="status[0].tarikh">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="text-center flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap" v-text="status[0].masa">
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p v-if="status.statusid === 1" class="text-gray-900 whitespace-no-wrap">
{{ status.description }} <br> {{ 'NAMA PEMOHON : ' + status[0].nama_pemohon }}
</p>
<p v-if="status.statusid === 2" class="text-gray-900 whitespace-no-wrap">
{{ status.description }} <br> {{ 'NAMA OPERASI : ' + status[0].nama_operasi }}
</p>
<p v-if="status.statusid === 3" class="text-gray-900 whitespace-no-wrap">
{{ status.description }} <br> {{ 'NAMA AKAUN : ' + status[0].nama_akaun }}
</p>
<p v-if="status.statusid === 4" class="text-gray-900 whitespace-no-wrap">
{{ status.description }} <br> {{ 'JUMLAH DILULUSKAN : RM ' + formatterfunction(status[0].jumlah_diluluskan) }}
<br>
<button class="text-white p-2 bg-blue-500 rounded mr-1 mt-2" @click.prevent="downloadpb(status[0].pbfiles)">Muat Turun</button>
</p>
<div v-if="status.statusid === 5" class="text-gray-900 whitespace-no-wrap">
{{ status.description }}
<br>
<div class="w-full">
<span class="w-1/2">{{ 'JENIS BANK : ' + status[0].jenisbank }}</span>
<span class="w-1/2">{{ 'JENIS CIT : ' + status[0].jeniscit }}</span>
</div>
<br>
<div class="w-full">
<span class="w-1/2">{{ 'NO RESIT :' + status[0].noresit }}</span>
<span class="w-1/2">{{ 'NAMA SYARIKAT :' + status[0].namasyarikat }}</span>
</div>
</div>
<p v-if="status.statusid === 6" class="text-gray-900 whitespace-no-wrap">
{{ status.description }} <br> {{ 'NAMA PENERIMA : ' + status[0].nama_penerima }}
</p>
<p v-if="status.statusid === 7" class="text-gray-900 whitespace-no-wrap">
{{ status.description }} <br> {{ 'KOMEN : ' + status[0].komen }}
</p>
<p v-if="status.statusid === 8" class="text-gray-900 whitespace-no-wrap">
{{ status.description }} <br> {{ 'JENIS BANK : ' + status[0].jenisbank }}
<br>
<button class="text-white p-2 bg-blue-500 rounded mr-1 mt-2" @click.prevent="downloadresit(status[0].resitfiles)">Muat Turun Resit</button>
<button class="text-white p-2 bg-blue-500 rounded mt-2" @click.prevent="downloadinvoice(status[0].invoicefiles)">Muat Turun Invoice</button>
</p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</template>
<style scoped>
.card {
z-index: 0;
background-color: #ECEFF1;
padding-bottom: 20px;
margin-top: 90px;
margin-bottom: 90px;
border-radius: 10px
}
.top {
padding-top: 40px;
padding-left: 13% !important;
padding-right: 13% !important
}
#progressbar {
margin-bottom: 30px;
overflow: hidden;
color: #455A64;
padding-left: 0px;
margin-top: 30px;
}
#progressbar li {
list-style-type: none;
font-size: 13px;
width: 17%;
float: left;
position: relative;
font-weight: 400;
z-index: 1;
}
#progressbar .step0:before {
font-family: FontAwesome;
content: "\f00d";
color: #fff;
}
#progressbar li:before {
width: 40px;
height: 40px;
line-height: 45px;
display: block;
font-size: 20px;
background: #C5CAE9;
border-radius: 50%;
margin: auto;
padding: 0px;
}
#progressbar li:after {
content: '';
width: 100%;
height: 12px;
background: #c5cae9e8;
position: absolute;
left: 0;
top: 16px;
z-index: -1;
}
#progressbar li:last-child:after {
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
position: absolute;
/* left: -50%; */
width: 50%;
}
/* #progressbar li:nth-child(2):after,
#progressbar li:nth-child(3):after,
#progressbar li:nth-child(4):after {
left: -50%
} */
#progressbar li:first-child:after {
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
position: absolute;
left: 50%;
}
#progressbar li:last-child:after {
border-top-right-radius: 10px;
border-bottom-right-radius: 10px
}
#progressbar li:first-child:after {
border-top-left-radius: 10px;
border-bottom-left-radius: 10px
}
#progressbar li.active:before,
#progressbar li.active:after {
background: #e67e22
}
#progressbar li.active:before {
font-family: FontAwesome;
content: "\f00c"
}
.icon {
width: 60px;
height: 60px;
/* margin-right: 15px */
}
.icon-content {
padding-bottom: 20px
}
@media screen and (max-width: 992px) {
.icon-content {
width: 50%
}
}
</style>
<script>
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
});
export default {
data(){
return{
mohonid: this.$route.params.mohonid,
statusdescription:{},
permohonan:{},
cawangan: 'KB2',
loadstatus: false
}
},
created(){
this.GetStatusData(this.mohonid,this.cawangan);
},
methods:{
async GetStatusData(mohonid,cawangan){
await this.axios.get(this.$hostname + '/admin/permohonan/description/' + mohonid).then(response => {
this.statusdescription = response.data;
console.log(this.statusdescription)
});
await this.axios.get(this.$hostname + '/admin/permohonan/get/' + cawangan + '/' + mohonid).then(response => {
this.permohonan = response.data;
});
this.loadstatus = true;
},
formatterfunction(value) {
return formatter.format(value)
},
downloadresit(resitid) {
window.open('/api/check/muatturun?files_id=' + resitid, '_blank');
},
downloadinvoice(invoiceid) {
window.open('/api/check/muatturun?files_id=' + invoiceid, '_blank');
},
downloadpb(pbid) {
window.open('/api/check/muatturun?files_id=' + pbid, '_blank');
}
}
}
</script>
+10
View File
@@ -0,0 +1,10 @@
<template>
<router-view>
</router-view>
</template>
<script>
export default {
}
</script>
+8
View File
@@ -120,6 +120,9 @@ Vue.use(require('vue-pusher'), {
});
Vue.prototype.$api1 = 'http://api.arrahn'
Vue.prototype.$username = document.querySelector("meta[name='user_name']").getAttribute('content');
Vue.prototype.$userroles = document.querySelector("meta[name='user_roles']").getAttribute('content');
let initial = 'KB2';
let initialhostname = 'http://api.arrahn';
@@ -210,6 +213,11 @@ 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('permohonanindex-component', require('./Permohonan/index.vue').default)
Vue.component('permohonan-component', require('./Permohonan/SenaraiMohon.vue').default)
Vue.component('apexchart', VueApexCharts)
+8 -8
View File
@@ -29,13 +29,13 @@ window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
* allows your team to easily build robust real-time web applications.
*/
// import Echo from 'laravel-echo';
import Echo from 'laravel-echo';
// window.Pusher = require('pusher-js');
window.Pusher = require('pusher-js');
// window.Echo = new Echo({
// broadcaster: 'pusher',
// key: process.env.MIX_PUSHER_APP_KEY,
// cluster: process.env.MIX_PUSHER_APP_CLUSTER,
// forceTLS: true
// });
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
forceTLS: true
});
+203 -211
View File
@@ -1,205 +1,191 @@
<template>
<div class="mb-4 w-full grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4">
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datareadypemb === false">
<content-placeholders>
<content-placeholders-heading :img="true" />
<content-placeholders-text :lines="3" />
</content-placeholders>
<div class="mb-4 w-full grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4">
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datareadypemb === false">
<content-placeholders>
<content-placeholders-heading :img="true" />
<content-placeholders-text :lines="3" />
</content-placeholders>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datareadypemb === true">
<div class="mb-3 mx-auto justify-center flex">
<h3 class="text-3xl font-bold text-gray-500">Pembiayaan</h3>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datareadypemb === true">
<div class="mb-3 mx-auto justify-center flex">
<h3 class="text-3xl font-bold text-gray-500">Pembiayaan</h3>
<div class="flex flex-nowrap justify-between">
<div class="xl:w-3/4 2xl:w-3/4 lg:w-2/3 h-4 bg-gray-200 rounded-full">
<div class="bg-yellow-600 text-xs font-medium text-yellow-100 text-center p-0.5 leading-none rounded-l-full rounded-r-full" v-bind:style="{ width: (percentcumgadai > 100) ? '100%' : percentcumgadai + '%' }"> {{ this.percentcumgadai }}%</div>
</div>
<div class="flex flex-nowrap">
<div class="w-3/4 h-4 bg-gray-200 rounded-full">
<div class="bg-yellow-600 text-xs font-medium text-yellow-100 text-center p-0.5 leading-none rounded-l-full rounded-r-full" v-bind:style="{ width: (percentcumgadai > 100) ? 100 : percentcumgadai + '%' }"> {{ this.percentcumgadai }}%</div>
</div>
<div class="xl:w-2/5 2xl:w-1/4 grid grid-rows-2">
<span class="text-sm ml-2 font-bold -mt-0.5 xs:invisible">RM {{ gadaianremaining }}</span>
<!-- <span class="text-xs leading-none font-bold text-gray-900 mx-auto flex place-self-center -mt-3 ml-12">remaining.. </span> -->
</div>
<div class="xl:w-2/5 2xl:w-1/4 lg:w-1/3 grid grid-rows-2">
<span class="text-sm ml-2 font-bold -mt-0.5 xs:invisible">RM {{ gadaianremaining }}</span>
<!-- <span class="text-xs leading-none font-bold text-gray-900 mx-auto flex place-self-center -mt-3 ml-12">remaining.. </span> -->
</div>
</div>
<div class="flex pt-2 -mt-2">
<div class="grid grid-rows-2 ml-1 mt-2 w-1/2">
<div class="flex">
<div class="flex pt-2 -mt-2 justify-between">
<div class="grid grid-rows-2 ml-1 mt-2 lg:w-1/2">
<div class="flex">
<span class="text-sm leading-none font-bold text-gray-700x xl:w-2/5 2xl:w-1/4 uppercase"> Harian</span>
<span class="text-sm leading-none font-bold text-gray-700 mr-2">:</span>
<span class="text-sm leading-none font-bold text-gray-700">RM {{ gadaianharian }}</span>
</div>
<div class="flex">
</div>
<div class="flex">
<span class="text-sm leading-none font-bold text-yellow-700 xl:w-2/5 2xl:w-1/4 uppercase"> Bajet</span>
<span class="text-sm leading-none font-bold text-gray-700 mr-2">:</span>
<span class="text-sm leading-none font-bold text-yellow-900"> RM {{ bajetgadaian }} </span>
</div>
</div>
<div class="ml-4 text-center w-1/6">
<!-- <h3 class="text-3xl font-bold -mt-1 text-gray-500">Pembiayaan</h3> -->
<!-- <span class="text-base leading-none font-bold text-gray-900 text-center">{{ this.bulan }} </span> -->
</div>
<div class="grid grid-rows-2 ml-2 mt-2 w-2/6 flex place-content-end">
<h3 v-if="percentgadaian > 0" class="text-base font-bold -mt-1 text-green-500 flex items-center mx-auto">{{ percentgadaian.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
</div>
<div class="grid grid-rows-2 ml-2 mt-2 lg:w-1/3 flex place-content-end">
<h3 v-if="percentgadaian > 0" class="text-base font-bold -mt-1 text-green-500 flex items-center mx-auto">{{ percentgadaian.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M5.293 7.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L6.707 7.707a1 1 0 01-1.414 0z" clip-rule="evenodd"></path>
</svg>
</h3>
<h3 v-if="percentgadaian == 0" class="text-base font-bold -mt-1 text-yellow-500 flex items-center mx-auto">{{ percentgadaian.toFixed(2) }}%
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
</svg>
</h3>
<h3 v-if="percentgadaian == 0" class="text-base font-bold -mt-1 text-yellow-500 flex items-center mx-auto">{{ percentgadaian.toFixed(2) }}%
<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="M18 12H6" />
</svg>
</h3>
<h3 v-if="percentgadaian < 0" class="text-base font-bold -mt-1 text-red-500 flex items-center mx-auto">{{ percentgadaian.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
</svg>
</h3>
<h3 v-if="percentgadaian < 0" class="text-base font-bold -mt-1 text-red-500 flex items-center mx-auto">{{ percentgadaian.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M14.707 12.293a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 14.586V3a1 1 0 012 0v11.586l2.293-2.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
</h3>
<span class="text-xs leading-none font-bold text-gray-900 ml-4">Varians.</span>
</div>
</svg>
</h3>
<span class="text-xs leading-none font-bold text-gray-900 ml-4">Varians.</span>
</div>
</div>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datareadypeny === false">
<content-placeholders>
<content-placeholders-heading :img="true" />
<content-placeholders-text :lines="3" />
</content-placeholders>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8 " v-if="datareadypeny === true">
<div class="mb-3 mx-auto justify-center flex">
<h3 class="text-3xl font-bold text-gray-500">Penebusan</h3>
</div>
<div class="flex flex-nowrap justify-between">
<div class="xl:w-3/4 2xl:w-3/4 lg:w-2/3 h-4 bg-gray-200 rounded-full">
<div class="bg-yellow-600 text-xs font-medium text-yellow-100 text-center p-0.5 leading-none rounded-l-full rounded-r-full" v-bind:style="{ width: (percentcumtebus > 100) ? '100%' : percentcumtebus + '%' }"> {{ percentcumtebus }}%</div>
</div>
<div class="xl:w-2/5 2xl:w-1/4 grid grid-rows-2">
<span class="text-sm ml-2 font-bold -mt-0.5">RM {{ tebusremaining }}</span>
<!-- <span class="text-xs leading-none font-bold text-gray-900 mx-auto flex place-self-center -mt-3 ml-12">remaining.. </span> -->
</div>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datareadypeny === false">
<content-placeholders>
<content-placeholders-heading :img="true" />
<content-placeholders-text :lines="3" />
</content-placeholders>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8 " v-if="datareadypeny === true">
<div class="mb-3 mx-auto justify-center flex">
<h3 class="text-3xl font-bold text-gray-500">Penebusan</h3>
</div>
<div class="flex flex-nowrap">
<div class="w-3/4 h-4 bg-gray-200 rounded-full">
<div class="bg-yellow-600 text-xs font-medium text-yellow-100 text-center p-0.5 leading-none rounded-l-full rounded-r-full" v-bind:style="{ width: (percentcumtebus > 100) ? 100 : percentcumtebus + '%' }"> {{ percentcumtebus }}%</div>
</div>
<div class="xl:w-2/5 2xl:w-1/4 grid grid-rows-2">
<span class="text-sm ml-2 font-bold -mt-0.5">RM {{ tebusremaining }}</span>
<!-- <span class="text-xs leading-none font-bold text-gray-900 mx-auto flex place-self-center -mt-3 ml-12">remaining.. </span> -->
</div>
</div>
<div class="flex pt-2 -mt-2">
<div class="grid grid-rows-2 ml-1 mt-2 w-1/2">
<!-- <span class="text-sm leading-none font-bold text-gray-700"><i class="fas fa-calendar-day"></i> RM {{ penebusanharian }}</span>
<div class="flex pt-2 -mt-2 justify-between">
<div class="grid grid-rows-2 ml-1 mt-2 lg:w-1/2">
<!-- <span class="text-sm leading-none font-bold text-gray-700"><i class="fas fa-calendar-day"></i> RM {{ penebusanharian }}</span>
<span class="text-sm leading-none font-bold text-yellow-900"><i class="fas fa-chart-pie"></i> RM {{ bajetpenebusan }} </span> -->
<div class="flex">
<div class="flex">
<span class="text-sm leading-none font-bold text-gray-700 xl:w-2/5 2xl:w-1/4 uppercase"> Harian</span>
<span class="text-sm leading-none font-bold text-gray-700 mr-2">:</span>
<span class="text-sm leading-none font-bold text-gray-700">RM {{ penebusanharian }}</span>
</div>
<div class="flex">
</div>
<div class="flex">
<span class="text-sm leading-none font-bold text-yellow-700 xl:w-2/5 2xl:w-1/4 uppercase"> Bajet</span>
<span class="text-sm leading-none font-bold text-gray-700 mr-2">:</span>
<span class="text-sm leading-none font-bold text-yellow-900"> RM {{ bajetpenebusan }} </span>
</div>
</div>
<div class="ml-4 text-center w-1/6">
<!-- <h3 class="text-3xl font-bold -mt-1 text-gray-500">Penebusan</h3>
<span class="text-base leading-none font-bold text-gray-900 text-center">{{ this.bulan }} </span> -->
</div>
<div class="grid grid-rows-2 ml-2 mt-2 w-2/6 flex place-content-end">
<h3 v-if="percentpenebusan > 0" class="text-base font-bold -mt-1 text-green-500 flex items-center mx-auto">{{ percentpenebusan.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
</div>
<div class="grid grid-rows-2 ml-2 mt-2 lg:1/3 flex place-content-end">
<h3 v-if="percentpenebusan > 0" class="text-base font-bold -mt-1 text-green-500 flex items-center mx-auto">{{ percentpenebusan.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M5.293 7.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L6.707 7.707a1 1 0 01-1.414 0z" clip-rule="evenodd"></path>
</svg>
</h3>
<h3 v-if="percentpenebusan == 0" class="text-base font-bold -mt-1 text-yellow-500 flex items-center mx-auto">{{ percentpenebusan.toFixed(2) }}%
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
</svg>
</h3>
<h3 v-if="percentpenebusan == 0" class="text-base font-bold -mt-1 text-yellow-500 flex items-center mx-auto">{{ percentpenebusan.toFixed(2) }}%
<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="M18 12H6" />
</svg>
</h3>
<h3 v-if="percentpenebusan < 0" class="text-base font-bold -mt-1 text-red-500 flex items-center mx-auto">{{ percentpenebusan.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
</svg>
</h3>
<h3 v-if="percentpenebusan < 0" class="text-base font-bold -mt-1 text-red-500 flex items-center mx-auto">{{ percentpenebusan.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M14.707 12.293a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 14.586V3a1 1 0 012 0v11.586l2.293-2.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
</h3>
<span class="text-xs leading-none font-bold text-gray-900 ml-4">Varians.</span>
</div>
</svg>
</h3>
<span class="text-xs leading-none font-bold text-gray-900 ml-4">Varians.</span>
</div>
</div>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datareadykeun === false">
<content-placeholders>
<content-placeholders-heading :img="true" />
<content-placeholders-text :lines="3" />
</content-placeholders>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8" v-if="datareadykeun === false">
<content-placeholders>
<content-placeholders-heading :img="true" />
<content-placeholders-text :lines="3" />
</content-placeholders>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8 " v-if="datareadykeun === true">
<div class="mb-3 mx-auto justify-center flex">
<h3 class="text-3xl font-bold text-gray-500">Keuntungan</h3>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8 " v-if="datareadykeun === true">
<div class="mb-3 mx-auto justify-center flex">
<h3 class="text-3xl font-bold text-gray-500">Keuntungan</h3>
<div class="flex flex-nowrap">
<div class="xl:w-3/4 2xl:w-3/4 lg:w-2/3 h-4 bg-gray-200 rounded-full">
<div class="bg-yellow-600 text-xs font-medium text-yellow-100 text-center p-0.5 leading-none rounded-l-full rounded-r-full" v-bind:style="{ width: (percentcumkeuntungan > 100) ? '100%' : percentcumkeuntungan + '%' }"> {{percentcumkeuntungan}}%</div>
</div>
<div class="flex flex-nowrap">
<div class="w-3/4 h-4 bg-gray-200 rounded-full">
<div class="bg-yellow-600 text-xs font-medium text-yellow-100 text-center p-0.5 leading-none rounded-l-full rounded-r-full" v-bind:style="{ width: (percentcumkeuntungan > 100) ? 100 : percentcumkeuntungan + '%' }"> {{percentcumkeuntungan}}%</div>
</div>
<div class="xl:w-2/5 2xl:w-1/4 grid grid-rows-2">
<span class="text-sm ml-2 font-bold -mt-0.5">RM {{ keuntunganremaining }}</span>
<!-- <span class="text-xs leading-none font-bold text-gray-900 mx-auto flex place-self-center -mt-3 ml-12">remaining.. </span> -->
</div>
<div class="xl:w-2/5 2xl:w-1/4 grid grid-rows-2">
<span class="text-sm ml-2 font-bold -mt-0.5">RM {{ keuntunganremaining }}</span>
<!-- <span class="text-xs leading-none font-bold text-gray-900 mx-auto flex place-self-center -mt-3 ml-12">remaining.. </span> -->
</div>
<div class="flex pt-2 -mt-2">
<div class="grid grid-rows-2 ml-1 mt-2 w-1/2">
<!-- <span class="text-sm leading-none font-bold text-gray-700"><i class="fas fa-calendar-day"></i> RM {{ keuntunganharian }}</span>
</div>
<div class="flex pt-2 -mt-2 justify-between">
<div class="grid grid-rows-2 ml-1 mt-2 lg:w-1/2">
<!-- <span class="text-sm leading-none font-bold text-gray-700"><i class="fas fa-calendar-day"></i> RM {{ keuntunganharian }}</span>
<span class="text-sm leading-none font-bold text-yellow-900"><i class="fas fa-chart-pie"></i> RM {{ bajetkeuntungan }} </span> -->
<div class="flex">
<div class="flex">
<span class="text-sm leading-none font-bold text-gray-700 xl:w-2/5 2xl:w-1/4 uppercase"> Harian</span>
<span class="text-sm leading-none font-bold text-gray-700 mr-2">:</span>
<span class="text-sm leading-none font-bold text-gray-700">RM {{ keuntunganharian }}</span>
</div>
<div class="flex">
</div>
<div class="flex">
<span class="text-sm leading-none font-bold text-yellow-700 xl:w-2/5 2xl:w-1/4 uppercase"> Bajet</span>
<span class="text-sm leading-none font-bold text-gray-700 mr-2">:</span>
<span class="text-sm leading-none font-bold text-yellow-900"> RM {{ bajetkeuntungan }} </span>
</div>
</div>
<div class="ml-4 text-center w-1/6">
<!-- <h3 class="text-3xl font-bold -mt-1 text-gray-500">Keuntungan</h3>
<span class="text-base leading-none font-bold text-gray-900 text-center">{{ this.bulan }} </span> -->
</div>
<div class="grid grid-rows-2 ml-2 mt-2 w-2/6 flex place-content-end">
<h3 v-if="percentkeuntungan > 0" class="text-base font-bold -mt-1 text-green-500 flex items-center mx-auto">{{ percentkeuntungan.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M5.293 7.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L6.707 7.707a1 1 0 01-1.414 0z" clip-rule="evenodd"></path>
</svg>
</h3>
<h3 v-if="percentkeuntungan == 0" class="text-base font-bold -mt-1 text-yellow-500 flex items-center mx-auto">{{ percentkeuntungan.toFixed(2) }}%
<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="M18 12H6" />
</svg>
</h3>
<h3 v-if="percentkeuntungan < 0" class="text-base font-bold -mt-1 text-red-500 flex items-center mx-auto">{{ percentkeuntungan.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M14.707 12.293a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 14.586V3a1 1 0 012 0v11.586l2.293-2.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
</h3>
<span class="text-xs leading-none font-bold text-gray-900 ml-4">Varians.</span>
</div>
</div>
<div class="grid grid-rows-2 ml-2 mt-2 lg:w-1/3 flex place-content-end">
<h3 v-if="percentkeuntungan > 0" class="text-base font-bold -mt-1 text-green-500 flex items-center mx-auto">{{ percentkeuntungan.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M5.293 7.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L6.707 7.707a1 1 0 01-1.414 0z" clip-rule="evenodd"></path>
</svg>
</h3>
<h3 v-if="percentkeuntungan == 0" class="text-base font-bold -mt-1 text-yellow-500 flex items-center mx-auto">{{ percentkeuntungan.toFixed(2) }}%
<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="M18 12H6" />
</svg>
</h3>
<h3 v-if="percentkeuntungan < 0" class="text-base font-bold -mt-1 text-red-500 flex items-center mx-auto">{{ percentkeuntungan.toFixed(2) }}%
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M14.707 12.293a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 14.586V3a1 1 0 012 0v11.586l2.293-2.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
</h3>
<span class="text-xs leading-none font-bold text-gray-900 ml-4">Varians.</span>
</div>
</div>
</div>
</div>
</template>
<script>
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
minimumFractionDigits: 2
});
export default {
@@ -207,29 +193,29 @@ export default {
// props:{
// kodcaw: String
// },
data() {
return {
keuntunganharian:0,
bajetkeuntungan:0,
percentkeuntungan:0,
keuntunganremaining:0,
percentcumkeuntungan:0,
penebusanharian:0,
bajetpenebusan:0,
percentpenebusan:0,
tebusremaining:0,
percentcumtebus:0,
gadaianharian:0,
gadaianremaining:0,
bajetgadaian:0,
percentgadaian:0,
percentcumgadai:0,
bulan:'',
datareadypemb: false,
datareadypeny: false,
datareadykeun: false,
};
},
data() {
return {
keuntunganharian: 0,
bajetkeuntungan: 0,
percentkeuntungan: 0,
keuntunganremaining: 0,
percentcumkeuntungan: 0,
penebusanharian: 0,
bajetpenebusan: 0,
percentpenebusan: 0,
tebusremaining: 0,
percentcumtebus: 0,
gadaianharian: 0,
gadaianremaining: 0,
bajetgadaian: 0,
percentgadaian: 0,
percentcumgadai: 0,
bulan: '',
datareadypemb: false,
datareadypeny: false,
datareadykeun: false,
};
},
created() {
this.getDataPembiayaan()
this.getDataPenebusan()
@@ -238,90 +224,96 @@ export default {
methods: {
getDataPembiayaan() {
this.axios.get(this.$hostname + '/admin/pembiayaanToday', {
params: {
kodcaw: this.$kodcaw
}
params: {
kodcaw: this.$kodcaw
}
}).then(response => {
this.gadaianharian = formatter.format(response.data[0].gadaiToday),
this.bajetgadaian = formatter.format(response.data[0].bajetharian.toFixed(2)),
this.percentgadaian = response.data[0].percentDiff,
this.bulan = response.data[0].bulan,
this.gadaianremaining = formatter.format(response.data[0].remaining.toFixed(2)),
this.percentcumgadai = (100 - response.data[0].percentcum)
this.bajetgadaian = formatter.format(response.data[0].bajetharian.toFixed(2)),
this.percentgadaian = response.data[0].percentDiff,
this.bulan = response.data[0].bulan,
this.gadaianremaining = formatter.format(response.data[0].remaining.toFixed(2)),
this.percentcumgadai = (100 - response.data[0].percentcum)
if(this.datareadypemb == false)
if (this.datareadypemb == false)
this.datareadypemb = true;
}).catch(error => {
console.log(error)
})
},
getDataPenebusan(){
this.axios.get(this.$hostname + '/admin/penebusanToday', {
params: {
kodcaw: this.$kodcaw
}
getDataPenebusan() {
this.axios.get(this.$hostname + '/admin/penebusanToday', {
params: {
kodcaw: this.$kodcaw
}
}).then(response => {
this.penebusanharian = formatter.format(response.data[0].tebusToday),
this.bajetpenebusan = formatter.format(response.data[0].bajetharian.toFixed(2)),
this.percentpenebusan = response.data[0].percentDiff,
this.tebusremaining = formatter.format(response.data[0].remaining.toFixed(2)),
this.percentcumtebus = (100 - response.data[0].percentcum)
this.bajetpenebusan = formatter.format(response.data[0].bajetharian.toFixed(2)),
this.percentpenebusan = response.data[0].percentDiff,
this.tebusremaining = formatter.format(response.data[0].remaining.toFixed(2)),
this.percentcumtebus = (100 - response.data[0].percentcum)
if(this.datareadypeny == false)
if (this.datareadypeny == false)
this.datareadypeny = true;
}).catch(error => {
console.log(error)
})
},
getDataKeuntungan(){
this.axios.get(this.$api1 + '/admin/keuntunganToday', {
params: {
kodcaw: this.$kodcaw
}
getDataKeuntungan() {
this.axios.get(this.$api1 + '/admin/keuntunganToday', {
params: {
kodcaw: this.$kodcaw
}
}).then(response => {
console.log(this.$api1)
this.keuntunganharian = formatter.format(response.data[0].upahToday),
this.bajetkeuntungan = formatter.format(response.data[0].bajetharian.toFixed(2)),
this.percentkeuntungan = response.data[0].percentDiff,
this.keuntunganremaining = formatter.format(response.data[0].remaining.toFixed(2)),
this.percentcumkeuntungan = (100 - response.data[0].percentcum)
this.bajetkeuntungan = formatter.format(response.data[0].bajetharian.toFixed(2)),
this.percentkeuntungan = response.data[0].percentDiff,
this.keuntunganremaining = formatter.format(response.data[0].remaining.toFixed(2)),
this.percentcumkeuntungan = (100 - response.data[0].percentcum)
if(this.datareadykeun == false)
if (this.datareadykeun == false)
this.datareadykeun = true;
}).catch(error => {
console.log(error)
})
}
},
mounted () {
mounted() {
var channel = this.$pusher.subscribe('gadai-notify');
channel.bind('trigger-gadai', ({ cawangan }) => {
channel.bind('trigger-gadai', ({
cawangan
}) => {
console.log(`${cawangan}`);
if(this.$kodcaw === cawangan)
this.getDataPembiayaan()
if (this.$kodcaw === cawangan)
this.getDataPembiayaan()
});
var channel = this.$pusher.subscribe('tebus-notify');
channel.bind('trigger-tebus', ({ cawangan }) => {
channel.bind('trigger-tebus', ({
cawangan
}) => {
console.log(`${cawangan}`);
if(this.$kodcaw === cawangan)
this.getDataPenebusan()
if (this.$kodcaw === cawangan)
this.getDataPenebusan()
});
var channel = this.$pusher.subscribe('keuntungan-notify');
channel.bind('trigger-keuntungan', ({ cawangan }) => {
channel.bind('trigger-keuntungan', ({
cawangan
}) => {
console.log(`${cawangan}`);
if(this.$kodcaw === cawangan)
this.getDataKeuntungan()
if (this.$kodcaw === cawangan)
this.getDataKeuntungan()
});
}
}
</script>
</script>
+165
View File
@@ -0,0 +1,165 @@
<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-->
<div class="flex items-start bg-gray-200 justify-between p-5 border-b border-solid border-blueGray-200 rounded-t">
<h3 class="text-xl font-semibold">
Deposit Akaun Bank
</h3>
<button class="p-1 ml-auto border-0 text-black float-right text-3xl leading-none font-semibold outline-none focus:outline-none" v-on:click="toggleModal()">
<span class=" text-black h-6 w-6 text-2xl block outline-none focus:outline-none">
X
</span>
</button>
</div>
<!--body-->
<div class="p-6">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2 mt-3">
Jenis Bank
</label>
<select v-model.trim="$v.selectedbank.$model" class="w-full p-2 rounded-md border bg-white border-gray-400 focus:outline-none rounded-md focus:ring-1 ring-cyan-500 uppercase">
<option v-for="(bank,i) in jenisbank" :key="i" :value="bank.abbreviation">{{ bank.name }}</option>
</select>
<!-- <input v-model="selectedbank" type="text" 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" /> -->
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2 mt-3">
No Resit
</label>
<input v-model.trim="$v.noresit.$model" type="text" 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 class="text-red-500 text-xs italic" v-if="!$v.noresit.required">Field is required</div>
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2 mt-3">
Jenis Cash-In-Transit(CIT)
</label>
<select v-model.trim="$v.selectedjeniscit.$model" class="w-full p-2 rounded-md border bg-white border-gray-400 focus:outline-none rounded-md focus:ring-1 ring-cyan-500 uppercase">
<option value="CIT">Cash Diambil oleh CIT</option>
<option value="TT">tellygraphic transfer oleh PC</option>
</select>
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2 mt-3">
Nama Syarikat Cash-In-Transit(CIT)
</label>
<input v-model.trim="$v.namacit.$model" type="text" 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 class="text-red-500 text-xs italic" v-if="!$v.noresit.required">Field is required</div>
</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="FuncHantar()" type="button">
Hantar
</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";
import {
required,
minLength,
between
} from 'vuelidate/lib/validators'
export default {
props: {
placement: {
type: String,
default: "bottom-start"
}
},
name: "bank-modal",
data() {
return {
showModal: false,
mohonid: 0,
selectedbank: 'Sila Pilih Bank',
selectedjeniscit: 'Sila Pilih Jenis Transfer',
noresit: 0,
namacit: '',
jenisbank: {}
}
},
created() {
this.senaraiBank();
},
methods: {
toggleModal: function () {
this.showModal = false;
},
senaraiBank: function () {
this.axios.get(this.$hostname + '/api/bank').then(response => {
this.jenisbank = response.data;
});
},
FuncHantar: function () {
// console.log(this.selectedbank,this.noresit)
axios.put(this.$hostname + '/admin/permohonan/updatebank', {
kelulusan: 'Lulus',
jenisbank: this.selectedbank,
noresit: this.noresit,
namacit: this.namacit,
jeniscit: this.selectedjeniscit,
mohonid: this.mohonid
}).then(response => {
if (response.data === 1) {
this.showModal = false;
this.$toast.success("Berjaya Meluluskan Permohonan Daripada Pengurus Besar!")
this.$emit('clickEvent_', this.pageNumber)
} else {
this.showModal = false;
this.$toast.error("Tidak Berjaya!")
}
});
}
},
validations: {
selectedbank: {
required
},
noresit: {
required
},
namacit: {
required
},
selectedjeniscit: {
required
}
}
}
</script>
<style>
.modal-fade-enter,
.modal-fade-leave-to {
opacity: 0;
}
.modal-fade-enter-active,
.modal-fade-leave-active {
transition: opacity .5s ease;
}
</style>
@@ -66,7 +66,7 @@
<button class="bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 border border-gray-700 rounded mr-1" v-on: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="kemaskinifunc" type="button" >
<button class="bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 border border-green-700 rounded" @click="kemaskinifunc" type="button" >
Daftar
</button>
</div>
+1 -1
View File
@@ -22,7 +22,7 @@
<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" >
<button class="bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 border border-green-700 rounded" @click="toggleModal" type="button" >
Lulus
</button>
</div>
+4 -4
View File
@@ -74,9 +74,9 @@
</div>
<div class="flex flex-wrap -mx-3 mb-3">
<div class="bg-green-300 text-white h-26 flex-auto rounded-2xl ml-2 w-1/3">
<div class="bg-yellow-300 text-white h-26 flex-auto rounded-2xl ml-2 w-1/3">
<div class="flex flex-row">
<div class="bg-green-500 px-4 py-6 rounded-l-2xl">
<div class="bg-yellow-500 px-4 py-6 rounded-l-2xl">
<h2 class="font-bold text-lg">PE</h2>
</div>
@@ -99,9 +99,9 @@
</div>
<div class="flex flex-wrap -mx-3 mb-3">
<div class="bg-green-300 text-white h-26 flex-auto rounded-2xl ml-2 w-1/3">
<div class="bg-yellow-300 text-white h-26 flex-auto rounded-2xl ml-2 w-1/3">
<div class="flex flex-row">
<div class="bg-green-500 px-4 py-6 rounded-l-2xl">
<div class="bg-yellow-500 px-4 py-6 rounded-l-2xl">
<h2 class="font-bold text-lg">TS</h2>
</div>
<div class="my-auto mx-auto">
@@ -26,7 +26,7 @@
<!-- <input readonly class="appearance-none block w-full bg-gray-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:border-gray-500" v-model="referencestatus" type="text" placeholder="Paid"> -->
<div class="flex items-center flex-shrink-0 text-sm px-2">
<div class="px-2 py-1 rounded-l-md bg-gray-200 text-gray-600 cursor-pointer">TRANSACTION</div>
<div class="px-2 py-1 rounded-r-md bg-green-400 text-white cursor-pointer">{{ this.referencestatus }}</div>
<div class="px-2 py-1 rounded-r-md bg-yellow-400 text-white cursor-pointer">{{ this.referencestatus }}</div>
</div>
</div>
+9 -5
View File
@@ -1,18 +1,19 @@
<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 v-if="this.showloader === true" 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">
<template v-if="showkelulusan.data.length > 0">
<!-- <template v-if="showkelulusan.data.length > 0"> -->
<div v-for="(kelulusan,index) in showkelulusan.data" :key="index" 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 {{ kelulusan.cawangan }}</p>
<p class="font-bold text-sm text-red-500">{{ kelulusan.kelulusanall[0].status }}</p>
<p class="font-bold text-sm text-red-500">{{ kelulusan.status }}</p>
<!-- <p class="-mb-4 text-sm">4 hours ago</p> -->
</div>
<div class="w-3/6">
<p class="font-bold -mt-4 justify-end flex">{{ kelulusan.kelulusanall[0].norujukan }}</p>
<p class="font-bold -mt-4 justify-end flex">{{ kelulusan.norujukan }}</p>
</div>
</div>
</div>
@@ -20,7 +21,8 @@
</template>
<!-- <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> -->
<template v-else>
<!-- <template v-else> -->
<template v-else>
<div class="flex place-content-center w-full">
<div class="grid mx-auto mb-4">
<img src="/img/notify.jpg" class="h-20 w-20 mx-auto" alt="Windster Logo">
@@ -147,7 +149,8 @@ export default {
dropdownShow: false,
currentPage: 1,
showkelulusan:[],
paginate:{}
paginate:{},
showloader:false
}
},
created() {
@@ -242,6 +245,7 @@ export default {
this.showkelulusan = response.data
this.paginate = response.data
this.currentPage = pageNumber
this.showloader = true
});
},
}
+227
View File
@@ -0,0 +1,227 @@
<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-->
<div class="flex items-start bg-gray-200 justify-between p-5 border-b border-solid border-blueGray-200 rounded-t">
<h3 class="text-xl font-semibold">
Kelulusan Pengurus Besar
</h3>
<button class="p-1 ml-auto border-0 text-black float-right text-3xl leading-none font-semibold outline-none focus:outline-none" v-on:click="toggleModal()">
<span class=" text-black h-6 w-6 text-2xl block outline-none focus:outline-none">
X
</span>
</button>
</div>
<!--body-->
<div class="p-6">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
Keputusan
</label>
<div class="flex-col items-center flex-shrink-0 text-sm px-2">
<div class="flex items-center justify-center mt-4 mb-4">
<div class="mx-2 radio">
<input type="radio" id="Lulus" name="radkeputusan" value="Lulus" class="hidden focus:bg-gray-500" v-model.trim="$v.selected.$model">
<label for="Lulus" class="cursor-pointer text-gray-500 focus:bg-gray-500 hover:bg-gray-200 focus:bg-purple-500 focus:bg-purple-500 focus:outline-none border px-10 py-4 border-solid border-gray-500 rounded">Lulus</label>
</div>
<div class="mx-2 radio cursor-pointer">
<input type="radio" id="Batal" name="radkeputusan" value="Batal" class="hidden focus:bg-gray-500" v-model.trim="$v.selected.$model">
<label for="Batal" class="cursor-pointer text-gray-500 focus:bg-gray-500 hover:bg-gray-200 focus:bg-purple-500 focus:outline-none border px-10 py-4 border-solid border-gray-500 rounded">Tak Lulus</label>
</div>
</div>
<div class="text-red-500 text-xs italic flex justify-center" v-if="!$v.selected.required">Pilih keputusan!</div>
</div>
<div class="w-full flex">
<div class="w-1/2">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2 mt-3">
Amaun Diminta
</label>
<input v-model.trim="$v.amaun_dimohon.$model" readonly type="text" class="mr-2 bg-gray-200 appearance-none border-2 border-gray-400 rounded w-full py-2 px-4 text-gray-700 leading-tight border-black" />
</div>
<div class="w-1/2 ml-2">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2 mt-3">
Amaun Lulus
</label>
<input v-model.trim="$v.amaunlulus.$model" type="text" 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 class="text-red-500 text-xs italic" v-if="!$v.amaunlulus.required">Perlu ada dalam kotak</div>
<div class="text-red-500 text-xs italic" v-if="!$v.amaunlulus.between">Mestilah dalam lingkungan {{$v.amaunlulus.$params.between.min}} dan {{$v.amaunlulus.$params.between.max}}</div>
</div>
</div>
<div class="flex justify-center mt-4">
<div class="mb-3 w-96">
<!-- <label for="formFileLg" class="form-label inline-block mb-2 text-gray-700">Large file input example</label> -->
<input name="image" accept="image/*" @change="onUpload" class="form-control block w-full px-2 py-1.5 text-xl font-normal text-gray-700 bg-white bg-clip-padding border border-solid border-gray-300 rounded transition ease-in-out m-0 focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none" type="file">
<!-- <div class="mx-auto flex justif">
<img v-if="item.imageUrl" class="h-24 w-24 mx-auto justify-center" :src="item.imageUrl" />
</div> -->
<div class="text-red-500 text-xs italic" v-if="!$v.imageFile.required">File perlu ada!</div>
</div>
</div>
</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="FuncHantar()" type="button">
Hantar
</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 {
required,
minLength,
between
} from 'vuelidate/lib/validators';
import {
createPopper
} from "@popperjs/core";
const file_size_validation = (value, vm) => {
if (!value) {
return true;
}
let file = value;
return (file.size < 2097152);
}
export default {
props: {
placement: {
type: String,
default: "bottom-start"
}
},
name: "pb-modal",
data() {
return {
showModal: false,
mohonid: 0,
selected: '',
amaunlulus: 0,
amaun_dimohon: 0,
submitStatus: '',
imageFile: '',
item: {
image: null,
imageUrl: null
}
}
},
methods: {
testfunc: function (){
return 10000;
},
onUpload: function (e) {
const file = e.target.files[0]
this.item.image = file
this.imageFile = file
this.item.imageUrl = URL.createObjectURL(file)
},
toggleModal: function () {
this.showModal = false;
},
FuncHantar: function () {
this.$v.$touch()
if (this.$v.$invalid) {
this.submitStatus = 'ERROR'
this.$toast.error('Sila isi butiran yang disediakan dengan betul!')
} else {
this.submitStatus = 'PENDING'
setTimeout(() => {
let formData = new FormData();
formData.append('image', this.item.image);
formData.append('kelulusan', this.selected);
formData.append('mohonid', this.mohonid);
formData.append('amaun_lulus', this.amaunlulus);
// console.log(formData)
let config = {
header: {
'Content-Type': 'multipart/form-data'
}
}
// return;
// axios.put(this.$hostname + '/admin/permohonan/updatepb', {
axios.post('api/check/kelulusan/pb', formData, config).then(response => {
if (response.data === 1) {
this.showModal = false;
this.$toast.success("Berjaya Meluluskan Permohonan Daripada Pengurus Besar!")
this.$emit('clickEvent_', this.pageNumber)
} else {
this.showModal = false;
this.$toast.error("Tidak Berjaya!")
}
});
}, 500)
}
console.log(this.submitStatus)
}
},
validations: {
amaunlulus: {
required,
// between: between(30, 30000)
between (value) {
let amaun = parseInt(this.amaun_dimohon.replace(/,/g, ''), 10)
return between(0, amaun)(value)
}
},
imageFile: {
required,
// file_size_validation
},
amaun_dimohon: {
required,
},
selected: {
required
}
}
}
</script>
<style>
.modal-fade-enter,
.modal-fade-leave-to {
opacity: 0;
}
.modal-fade-enter-active,
.modal-fade-leave-active {
transition: opacity .5s ease;
}
</style>
@@ -70,9 +70,9 @@
</div>
<div class="flex flex-wrap -mx-3 mb-3">
<div class="bg-green-300 text-white h-26 flex-auto rounded-2xl ml-2 w-1/3">
<div class="bg-yellow-300 text-white h-26 flex-auto rounded-2xl ml-2 w-1/3">
<div class="flex flex-row">
<div class="bg-green-500 px-4 py-6 rounded-l-2xl">
<div class="bg-yellow-500 px-4 py-6 rounded-l-2xl">
<h2 class="font-bold text-lg">STL</h2>
@@ -96,9 +96,9 @@
</div>
<div class="flex flex-wrap -mx-3 mb-3">
<div class="bg-green-300 text-white h-26 flex-auto rounded-2xl ml-2 w-1/3">
<div class="bg-yellow-300 text-white h-26 flex-auto rounded-2xl ml-2 w-1/3">
<div class="flex flex-row">
<div class="bg-green-500 px-4 py-6 rounded-l-2xl">
<div class="bg-yellow-500 px-4 py-6 rounded-l-2xl">
<h2 class="font-bold text-lg">PHQ</h2>
</div>
<div class="my-auto mx-auto">
@@ -120,9 +120,9 @@
</div>
<div class="flex flex-wrap -mx-3 mb-3">
<div class="bg-green-300 text-white h-26 flex-auto rounded-2xl ml-2">
<div class="bg-yellow-300 text-white h-26 flex-auto rounded-2xl ml-2">
<div class="flex flex-row">
<div class="bg-green-500 px-4 py-6 rounded-l-2xl">
<div class="bg-yellow-500 px-4 py-6 rounded-l-2xl">
<h2 class="font-bold text-lg">BAK</h2>
</div>
<div class="my-auto mx-auto">
+1 -1
View File
@@ -6,7 +6,7 @@
<div class="flex justify-between mb-2">
<div>
<button @click.prevent="showModal" class="border border-green-600 text-green-600 font-montserrat py-2 px-3 font-medium rounded-xl hover:bg-green-600 hover:text-white transition-all duration-300"><i class="fas fa-plus mr-2"></i>Tambah</button>
<button @click.prevent="showModal" class="border border-green-600 text-green-600 font-montserrat py-2 px-3 font-medium rounded-xl hover:bg-yellow-600 hover:text-white transition-all duration-300"><i class="fas fa-plus mr-2"></i>Tambah</button>
</div>
<div>
<input v-model="search" class="border border-2 rounded px-4 py-2 w-80r mr-2 " type="text" />
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -326,7 +326,7 @@
<span class="mr-2 text-xs font-medium">18%</span>
<div class="relative w-full">
<div class="w-full bg-gray-200 rounded-sm h-2">
<div class="bg-teal-400 h-2 rounded-sm" style="width: 18%"></div>
<div class="bg-yellow-400 h-2 rounded-sm" style="width: 18%"></div>
</div>
</div>
</div>
+11 -1
View File
@@ -16,6 +16,7 @@ import StokAudit from './Akaun/StokAudit'
import Perbelanjaan from './Akaun/Perbelanjaan'
import RingkasanHarian from './Akaun/RingkasanHarian'
import RingkasanTerkumpul from './Akaun/RingkasanTerkumpul'
import StokAuditBackdate from './Akaun/StokAuditBackdate'
@@ -24,6 +25,10 @@ import OnlineHome from './Online/SearchSAG'
import SenaraiBajet from './Bajet/Senaraibajet'
import BajetKemaskini from './Bajet/KemaskiniBajet'
import SenaraiMohon from './Permohonan/SenaraiMohon'
import StatusMohon from './Permohonan/StatusMohon'
import RekodMohon from './Permohonan/RekodMohon'
@@ -49,10 +54,15 @@ export default new VueRouter({
{ path: '/akaunhome/Perbelanjaan', component: Perbelanjaan },
{ path: '/akaunhome/RingkasanHarian', component: RingkasanHarian },
{ path: '/akaunhome/RingkasanTerkumpul', component: RingkasanTerkumpul },
{ path: '/akaunhome/StokAuditBackdate', component: StokAuditBackdate },
{ path: '/bajet/kemaskini', component: SenaraiBajet },
{ name: 'bajetkemaskini',path: '/bajet/kemaskini/:id', component: BajetKemaskini }
{ name: 'bajetkemaskini',path: '/bajet/kemaskini/:id', component: BajetKemaskini },
{ path: '/permohonan', component: SenaraiMohon },
{ name: 'permohonanstatus',path: '/permohonan/status/:mohonid', component: StatusMohon },
{ path: '/permohonan/rekod', component: RekodMohon },
],
mode: 'history'
@@ -0,0 +1,259 @@
<style>
#header {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
}
#header td, #customers th {
padding:4px;
font-size:10px;
}
#header tr:nth-child(even){background-color: #ffffff;}
#header tr:hover {background-color: #ddd;}
#header th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding:4px;
color:black;
}
</style>
<style>
#scan {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
}
#scan td, #scan th {
padding: 8px;
font-size:11px;
}
#scan tr:nth-child(even){background-color: #ffffff;}
#scan tr:hover {background-color: #ddd;}
#scan th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding:4px;
color:black;
}
</style>
<style>
#scan {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
}
#scan td, #scan th {
border-collapse: collapse;
padding: 8px;
font-size:11px;
}
#scan tr:nth-child(even){background-color: #ffffff;}
#scan tr:hover {background-color: #ddd;}
#scan th {
border-collapse: collapse;
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding:4px;
color:black;
}
</style>
<style>
#details {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
}
#details td, #details th {
padding: 8px;
font-size:11px;
}
#details tr:nth-child(even){background-color: #ffffff;}
#details tr:hover {background-color: #ddd;}
#details th {
padding-top: 12px;
font-style:bold;
padding-bottom: 12px;
text-align: left;
padding:4px;
color:black;
}
</style>
<style>
#sign {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
}
#sign td, #sign th {
padding: 8px;
font-size:11px;
text-align: center;
}
#sign tr:nth-child(even){background-color: #ffffff;}
#sign tr:hover {background-color: #ddd;}
#sign th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding:4px;
color:black;
}
</style>
<table id="header">
<tr>
<th rowspan="4" style="width:50px"><br><img src="{{ asset('img/ARRAHN1.png') }}" style="width:70px"></img></th>
<th colspan="1">KOPERASI PERMODALAN KELANTAN BERHAD</th>
</tr>
<tr>
<td>{{ $cawangan_detail['namacaw'] }}</td>
<td></td>
</tr>
<tr>
<td>{{ $cawangan_detail['alamat1'] }}</td>
<td></td>
</tr>
<tr>
<td>{{ $cawangan_detail['alamat2'].' No Tel : '. $cawangan_detail['notel'].' No Faks : '. $cawangan_detail['nofaks'] }}</td>
<td></td>
</tr>
</table>
<br>
<table id="scan">
<tr>
<th colspan ="5"><b>Laporan Stok Audit</b></th>
<th> </th>
<th> </th>
<th><b> Tarikh Cetak:</b>
@php
$myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak);
$formattedweddingdate = $myDateTime->format('d-m-Y');
echo($formattedweddingdate)
@endphp
</th>
<th></th>
</tr>
<tr>
<td style="width:10px"> <b>TARIKH</b></td>
<td>{{ $tebus_date }}</td>
<td style="width:50px">
</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<br>
<table id="details">
<thead>
<th>Bil</th>
<th>Norujukan</th>
<th>JBG</th>
<th>No. KP</th>
<th>Berat</th>
<th>Nilai Marhun (RM)</th>
<th>Pembiayaan Asal (RM)</th>
<th>Baki Pembiayaan (RM)</th>
<th>Kadar Upah</th>
<th>Tempoh Belum Bayar</th>
<th>Keuntungan Belum Bayar (RM)</th>
<th>Lanjutan</th>
</thead>
@php $counter = 1;$totalpinjaman = 0; @endphp
@foreach($stokaudit['rekod'] as $index=>$item)
<tr>
<td>{{ $counter }}</td>
<td>{{$item['norujukan']}}</td>
<td>{{ $item['tempoh'] }}</td>
<td>{{$item['nokp']}}</td>
<td>{{ number_format($item['berat'],2) }}</td>
<td>{{ number_format($item['nilaimarhun'],2) }}</td>
<td>{{ number_format($item['pinjaman'],2) }}</td>
<td>{{ number_format($item['bakipjm'],2) }}</td>
<td>{{ number_format($item['kadarupah'],2) }}</td>
<td>{{ number_format($item['tempohblmbyar'],2) }}</td>
<td>{{ number_format($item['upahblmbyar'],2) }}</td>
<td>{{$item['lanjutan']}}</td>
</tr>
@php $counter++; @endphp
@endforeach
<tfoot>
<th colspan='4'>Jumlah</th>
<th>{{ number_format($stokaudit['totalberat'],2) }}</th>
<th>{{ number_format($stokaudit['totalnilaimarhun'],2) }}</th>
<th>{{ number_format($stokaudit['totalpinjaman'],2) }}</th>
<th>{{ number_format($stokaudit['totalbakipjm'],2) }}</th>
<th></th>
<th></th>
<th>{{ number_format($stokaudit['totaltunggakan'],2) }}</th>
<th></th>
</tfoot>
</table>
<br>
<br>
<table id="sign">
<tr>
<td></td>
<td colspan="2"> .................................................................. </td>
<td> </td>
<td colspan="2">.................................................................. </td>
<td> </td>
</tr>
<tr>
<td></td>
<td colspan="2"><B> DI SEMAK</B> </td>
<td> </td>
<td colspan="2"><B>DI SAHKAN </B></td>
<td> </td>
</tr>
</table>
@@ -0,0 +1,59 @@
@extends('layouts.app')
@section('content')
<div>
<div class="p-20 items-center justify-center">
{{-- <div class="content text-3xl text-center md:text-left">
<h1 class="text-5xl text-blue-500 font-bold">Facebook</h1>
<img src="{{ asset('img/logo_arrahn_baru.png') }}" width="400">
<p>Pajak Gadai Islam.</p>
</div> --}}
<div class="container mx-auto flex flex-col items-center">
<form class="shadow-lg w-1/3 p-4 flex flex-col bg-white rounded-lg" method="POST" action="{{ route('login') }}">
<img class="mx-auto" src="{{ asset('img/logo_arrahn_baru.png') }}" width="200">
@csrf
@if (Session::has('error'))
{{-- <div class="alert alert-success" role="alert">
<p></p>
</div> --}}
<div role="alert" class="mb-2">
<div class="bg-red-500 text-white font-bold rounded-t px-4 py-2">
Danger
</div>
<div class="border border-t-0 border-red-400 rounded-b bg-red-100 px-4 py-3 text-red-700">
<p>{{ Session::get('error') }}</p>
</div>
</div>
@endif
<label class="block text-gray-700 text-sm font-bold mb-2">Emel</label>
<div class="mb-4">
<input type="text" name="email" placeholder="Email" class="@error('email') border-red-500 @enderror mb-3 py-3 px-4 w-full border border-gray-400 focus:outline-none rounded-md focus:ring-1 ring-cyan-500" />
@error('email')
<p class="text-red-500 text-xs italic">{{ $message }}</p>
@enderror
</div>
<label class="block text-gray-700 text-sm font-bold mb-2">Password</label>
<div class="mb-4">
<input type="password" name="password" placeholder="Password" class="@error('password') border-red-500 @enderror mb-3 py-3 px-4 w-full border border-gray-400 focus:outline-none rounded-md focus:ring-1 ring-cyan-500" />
@error('password')
<p class="text-red-500 text-xs italic">{{ $message }}</p>
@enderror
</div>
<button class="w-full bg-blue-500 text-white p-3 rounded-lg font-semibold text-lg">Login</button>
<a class="text-blue-400 text-center my-2">Forgot Pasword?</a>
</form>
<p class="text-center text-sm my-4">
Permodalan Kelantan Berhad
</p>
</div>
</div>
</div>
@endsection
+179 -51
View File
@@ -1,59 +1,187 @@
@extends('layouts.app')
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}" style="width:100%;height:100%;">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
@section('content')
<div>
<div class="p-20 items-center justify-center">
{{-- <div class="content text-3xl text-center md:text-left">
<h1 class="text-5xl text-blue-500 font-bold">Facebook</h1>
<img src="{{ asset('img/logo_arrahn_baru.png') }}" width="400">
<p>Pajak Gadai Islam.</p>
</div> --}}
<title>Ar-Rahn | Admin Page</title>
<div class="container mx-auto flex flex-col items-center">
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
<form class="shadow-lg w-1/3 p-4 flex flex-col bg-white rounded-lg" method="POST" action="{{ route('login') }}">
<img class="mx-auto" src="{{ asset('img/logo_arrahn_baru.png') }}" width="200">
{{-- <!-- Styles -->
<style>
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-t{border-top-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.dark\:text-gray-500{--tw-text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--tw-text-opacity))}}
</style> --}}
@csrf
<style>
body {
font-family: 'Nunito', sans-serif;
background-color:#e1b12c;
}
@if (Session::has('error'))
{{-- <div class="alert alert-success" role="alert">
<p></p>
</div> --}}
<div role="alert" class="mb-2">
<div class="bg-red-500 text-white font-bold rounded-t px-4 py-2">
Danger
</div>
<div class="border border-t-0 border-red-400 rounded-b bg-red-100 px-4 py-3 text-red-700">
<p>{{ Session::get('error') }}</p>
</div>
</div>
@endif
.waves{
/* background-color:#ecf0f1; */
width:100%;
height: 100%;
}
<label class="block text-gray-700 text-sm font-bold mb-2">Emel</label>
<div class="mb-4">
<input type="text" name="email" placeholder="Email" class="@error('email') border-red-500 @enderror mb-3 py-3 px-4 w-full border border-gray-400 focus:outline-none rounded-md focus:ring-1 ring-cyan-500" />
@error('email')
<p class="text-red-500 text-xs italic">{{ $message }}</p>
@enderror
.waves .logo{
z-index:1;
position:absolute;
top:25%;
left:5%;
/* margin-top:-75%; */
}
.loginform{
position:absolute;
top:30%;
right:20%;
}
@media screen and (max-width: 1440px) {
.loginform{
position:absolute;
top:30%;
right:20%;
}
}
@media screen and (max-width: 1024px) {
.loginform{
position:absolute;
top:30%;
right:10%;
}
}
.login-page {
width: 360px;
padding: 8% 0 0;
margin: auto;
}
.form {
position: relative;
z-index: 1;
background: #FFFFFF;
max-width: 360px;
margin: 0 auto 100px;
padding: 45px;
text-align: center;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
.form input {
font-family: "Roboto", sans-serif;
outline: 0;
background: #f2f2f2;
width: 100%;
border: 0;
margin: 0 0 15px;
padding: 15px;
box-sizing: border-box;
font-size: 14px;
}
.form button {
font-family: "Roboto", sans-serif;
text-transform: uppercase;
outline: 0;
background: #4CAF50;
width: 100%;
border: 0;
padding: 15px;
color: #FFFFFF;
font-size: 14px;
-webkit-transition: all 0.3 ease;
transition: all 0.3 ease;
cursor: pointer;
}
.form button:hover,.form button:active,.form button:focus {
background: #43A047;
}
.form .message {
margin: 15px 0 0;
color: #b3b3b3;
font-size: 12px;
}
.form .message a {
color: #4CAF50;
text-decoration: none;
}
.form .register-form {
display: none;
}
.container {
position: relative;
z-index: 1;
max-width: 300px;
margin: 0 auto;
}
.container:before, .container:after {
content: "";
display: block;
clear: both;
}
.container .info {
margin: 50px auto;
text-align: center;
}
.container .info h1 {
margin: 0 0 15px;
padding: 0;
font-size: 36px;
font-weight: 300;
color: #1a1a1a;
}
.container .info span {
color: #4d4d4d;
font-size: 12px;
}
.container .info span a {
color: #000000;
text-decoration: none;
}
.container .info span .fa {
color: #EF3B3A;
}
</style>
</head>
<body class="antialiased" style="width:100%;height:100%;margin:0;">
<div class="waves">
<svg height="100%" width="100%">
<circle cx="0" cy="220" r="55%" fill="white" />
</svg>
<img class="logo" style="z-index:1;" src="{{ asset('img/logo_arrahn_baru.png') }}" height="40%" width="25%"/>
</div>
<label class="block text-gray-700 text-sm font-bold mb-2">Password</label>
<div class="mb-4">
<input type="password" name="password" placeholder="Password" class="@error('password') border-red-500 @enderror mb-3 py-3 px-4 w-full border border-gray-400 focus:outline-none rounded-md focus:ring-1 ring-cyan-500" />
@error('password')
<p class="text-red-500 text-xs italic">{{ $message }}</p>
@enderror
<div class="loginform">
<div class="login-page">
<div class="form">
@if (Session::has('error'))
<div role="alert" style="border: 1px solid red; border-radius:10px; background-color:#d63031;margin-bottom:10%;">
<div class="border border-t-0 border-red-400 rounded-b bg-red-100 px-4 py-3" style="color:white;">
<p>{{ Session::get('error') }}</p>
</div>
</div>
@endif
<form class="login-form" method="POST" action="{{ route('login') }}">
@csrf
<input type="text" placeholder="email" name="email"/>
@error('email')
<p style="color:#d63031;font-size: 11px;font-style: italic;font-weight: bold;margin-top:0;" >{{ $message }}</p>
@enderror
<input type="password" placeholder="password" name="password"/>
@error('password')
<p style="color:#d63031;font-size: 11px;font-style: italic;font-weight: bold;margin-top:0;">{{ $message }}</p>
@enderror
<button>DAFTAR MASUK</button>
</form>
</div>
</div>
</div>
<button class="w-full bg-blue-500 text-white p-3 rounded-lg font-semibold text-lg">Login</button>
<a class="text-blue-400 text-center my-2">Forgot Pasword?</a>
</form>
<p class="text-center text-sm my-4">
Permodalan Kelantan Berhad
</p>
</div>
</div>
</div>
@endsection
</body>
</html>
+1 -1
View File
@@ -11,7 +11,7 @@
@if (Session::has('type'))
<div class="@if(Session::get('type') == 'error') bg-red-100 border-red-500 text-red-900 @else bg-green-100 border-green-500 text-green-900 @endif border-t-4 rounded-b px-4 py-3 shadow-md w-96 mx-auto mb-5" role="alert">
<div class="@if(Session::get('type') == 'error') bg-red-100 border-red-500 text-red-900 @else bg-yellow-100 border-green-500 text-green-900 @endif border-t-4 rounded-b px-4 py-3 shadow-md w-96 mx-auto mb-5" role="alert">
<div class="flex">
<div class="py-1">
@if(Session::get('type') == 'error')
+1 -1
View File
@@ -9,7 +9,7 @@
<breadcrumb :items="[{ 'title' : 'Kelulusan', 'icon' : 'fas fa-thumbs-up' }]"></breadcrumb>
<kelulusan-component></kelulusan-component>
<kelulusan-component namaoperasi="{!! Auth::user()->name !!}"></kelulusan-component>
</div>
+9 -1
View File
@@ -13,6 +13,14 @@
<!-- Routes -->
@routes
{{-- Check Authentication --}}
@if (Auth::check())
<meta name="user_name" content="{{ Auth::user()->name }}" />
<meta name="user_roles" content="{{ Auth::user()->roles }}" />
@endif
<link href="{{ asset('css/all.min.css') }}" rel="stylesheet">
<!-- Scripts -->
@@ -114,7 +122,7 @@
<div class="flex items-center justify-start">
<button id="toggleSidebarMobile" @if(Auth::user()->roles == 'admin' || Auth::user()->roles == 'operasi') onclick="openNav()" @endif aria-expanded="true" aria-controls="sidebar" class=" mr-2 text-gray-600 hover:text-gray-900 cursor-pointer p-2 hover:bg-gray-100 rounded">
<button id="toggleSidebarMobile" onclick="openNav()" aria-expanded="true" aria-controls="sidebar" class=" mr-2 text-gray-600 hover:text-gray-900 cursor-pointer p-2 hover:bg-gray-100 rounded">
<svg id="toggleSidebarMobileHamburger" class="w-6 h-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h6a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z" clip-rule="evenodd"></path>
</svg>
+36
View File
@@ -181,6 +181,42 @@
</div>
</li>
</a>
<a href="{{ route('permohonan.index') }}" class="rounded mb-2 mr-2 {{ Route::is('permohonan') || Route::is('permohonan.*') ? '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" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z" />
</svg>
<span class="text-sm ml-2 text-lg">Permohonan</span>
</div>
</li>
</a>
@elseif(Auth::user()->roles == 'akaun')
<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 ">
<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="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" />
</svg>
<span class="text-sm ml-2 text-lg">Laporan</span>
</div>
</li>
</a>
<a href="{{ route('permohonan.index') }}" class="rounded mb-2 mr-2 {{ Route::is('permohonan') || Route::is('permohonan.*') ? '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" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z" />
</svg>
<span class="text-sm ml-2 text-lg">Permohonan</span>
</div>
</li>
</a>
@endif
@@ -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' : 'Online', 'icon' : 'fas fa-globe-asia' }]"></breadcrumb>
{{-- <online-component></online-component> --}}
</div>
</main>
@include('layouts.footer')
@endsection
@@ -0,0 +1,379 @@
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>Pengeluaran Cetakan Pengurus Besar</title>
<link rel="icon" type="image/x-icon" href="{{ asset('img/icon_pkb.png') }}" />
<link href="{{ asset('css/all.min.css') }}" rel="stylesheet">
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body class="p-2">
<div class="mb-10">
<div class="w-full flex flex-col justify-end items-end text-right">
<div class="ml-2">
<b>{{ $fullname }}</b>
<p class="text-xs">{{ $cawangan_detail['namacaw'] }}</p>
<p class="text-xs">{{ $cawangan_detail['alamat1'] }}</p>
<p class="text-xs">{{ $cawangan_detail['alamat2'] }}</p>
<p class="text-xs">No Tel : {{ $cawangan_detail['notel'] }}</p>
<p class="text-xs">No Faks : {{ $cawangan_detail['nofaks'] }}</p>
</div>
</div>
</div>
<div class="flex mb-6">
<div class="ml-2 w-1/2 flex flex-col justify-end">
<b class="text-xs border border-black pl-1">Kepada</b>
<p class="text-xs">
@php
if($jeniscawangan === 'BMMB')
{
echo 'AHLI ' . $fullname;
}else{
echo 'Pengurus Besar Kumpulan PKB';
}
@endphp
</p>
</div>
<div class="ml-2 w-1/2 flex flex-col">
<b class="text-xs border border-black pl-1 justify-end">No Permohonan</b>
<p class="text-xs w-1/2 border border-gray-400 text-right">{{ $permohonan['nopermohonan'] }}</p>
</div>
</div>
<div class="flex mb-6">
<div class="ml-2 w-1/2 flex flex-col justify-end">
<b class="text-xs border border-black pl-1">Daripada</b>
<p class="text-xs">Pengurus Cawangan {{ $cawangan_detail['namacaw'] }}</p>
<p class="text-xs">Nama : {{ $permohonan['nama_pemohon'] }}</p>
{{-- <p class="text-xs">NO KP : 970403-03-5003</p> --}}
</div>
<div class="ml-2 w-1/2 flex flex-col">
<b class="text-xs border border-black pl-1">Tarikh</b>
<p class="text-xs w-1/2 border border-gray-400 text-right">{{ $tarikhcetakan }}</p>
</div>
</div>
<div class="flex mb-6">
<div class="ml-2 w-1/2 flex flex-col justify-end">
<b class="text-xs border border-black pl-1">PERMOHONAN WANG</b>
@if($permohonan['jenismohon'] === 'permohonanwang')
<div class="flex">
<p class="text-xs w-full">Jumlah dipohon</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">RM {{ number_format($permohonan['amaun_mohon'],2) }}</p>
</div>
<div class="flex">
<p class="text-xs w-full">Tarikh serahan</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">
@php
$myDateTime = DateTime::createFromFormat('Y-m-d', $permohonan['tarikh_permohonan']);
$formattedweddingdate = $myDateTime->format('d-m-Y');
echo($formattedweddingdate)
@endphp
</p>
</div>
<div class="flex">
<p class="text-xs w-full">Baki Peti Besi</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">
RM {{ number_format($permohonan['baki_petibesi'],2) }}
</p>
</div>
@else
<div class="flex">
<p class="text-xs w-full">Jumlah dipohon</p>
<p class="text-xs w-2/3 border border-gray-400 text-right"></p>
</div>
<div class="flex">
<p class="text-xs w-full">Tarikh serahan</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">
</p>
</div>
<div class="flex">
<p class="text-xs w-full">Baki Peti Besi</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">
</p>
</div>
@endif
</div>
<div class="ml-2 w-1/2 flex flex-col">
<b class="text-xs border border-black pl-1 justify-end">BAYARAN BALIK</b>
@if($permohonan['jenismohon'] === 'permohonanwang')
<div class="flex">
<p class="text-xs w-full">Bayar balik pinjaman</p>
<p class="text-xs w-2/3 border border-gray-400"></p>
</div>
<div class="flex">
<p class="text-xs w-full">Tarikh bank-in ke PKB</p>
<p class="text-xs w-2/3 border border-gray-400"></p>
</div>
<div class="flex">
<p class="text-xs w-full">Baki Peti Besi</p>
<p class="text-xs w-2/3 border border-gray-400"></p>
</div>
@else
<div class="flex">
<p class="text-xs w-full">Bayar balik pinjaman</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">{{ number_format($permohonan['amaun_mohon'],2) }}</p>
</div>
<div class="flex">
<p class="text-xs w-full">Tarikh bank-in ke PKB</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">
@php
$myDateTime = DateTime::createFromFormat('Y-m-d', $permohonan['tarikh_permohonan']);
$formattedweddingdate = $myDateTime->format('d-m-Y');
echo($formattedweddingdate)
@endphp
</p>
</div>
<div class="flex">
<p class="text-xs w-full">Baki Peti Besi</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">{{ number_format($permohonan['baki_petibesi'],2) }}</p>
</div>
@endif
</div>
</div>
<div class="flex mb-6">
<div class="ml-2 w-1/2 flex flex-col justify-end">
<b class="text-xs border border-black pl-1">Disediakan oleh</b>
<p class="h-14"></p>
<div class="flex">
<div class="w-2/3"></div>
<div class="text-right border-t border-gray-300 w-1/3"></div>
</div>
<div class="flex">
<div class="w-2/3"></div>
<p class="text-xs w-1/3 text-center">Pengurus Cawangan</p>
</div>
<div class="flex">
<p class="text-xs text-center w-2/3">Tarikh</p>
<p class="text-xs w-1/3 border border-gray-400 text-right">
@php
$myDateTime = DateTime::createFromFormat('Y-m-d', $permohonan['tarikh_permohonan']);
$formattedweddingdate = $myDateTime->format('d-m-Y');
echo($formattedweddingdate)
@endphp
</p>
</div>
</div>
<div class="ml-2 w-1/2 flex flex-col">
<b class="text-xs border border-black pl-1">Disahkan oleh</b>
<p class="h-14"></p>
<div class="flex">
<div class="w-2/3"></div>
<div class="text-right border-t border-gray-300 w-1/3"></div>
</div>
<div class="flex">
<div class="w-2/3"></div>
<p class="text-xs w-2/3 text-right">Pengurus Operasi Ar-Rahn</p>
</div>
<div class="flex">
<p class="text-xs text-center w-2/3">Tarikh</p>
<p class="text-xs w-1/3 border border-gray-400 text-right">
@php
$myDateTime = DateTime::createFromFormat('Y-m-d', $permohonan['tarikh_pengesahanoperasi']);
$formattedweddingdate = $myDateTime->format('d-m-Y');
echo($formattedweddingdate)
@endphp
</p>
</div>
</div>
</div>
<div class="w-full text-center border border-black pl-1">
<b class="text-xs">@php if($jeniscawangan === 'PKB')
{
echo 'KELULUSAN ' . $fullname;
}else{
echo 'KELULUSAN AHLI ' . $fullname;
}
@endphp
</b>
</div>
<div class="flex">
<p class="text-xs mt-5 w-2/4">Diluluskan pengeluaran wang kepada Ar-Rahn sebanyak RM</p>
<p class="text-xs mt-5 w-1/3">{{ ($permohonan['jumlah_diluluskan'] !== null) ? number_format($permohonan['jumlah_diluluskan'],2) : '' }} </p>
</div>
<div class="flex">
<p class="text-xs w-2/3">{{ ($ringgittext !== '') ? '(Ringgit Malaysia:' . $ringgittext . ' Sahaja)' : '' }}</p>
</div>
<div class="flex mb-6">
<div class="ml-2 w-1/2 flex flex-col justify-end">
<p class="h-20"></p>
<div class="flex">
<div class="w-2/3"></div>
<div class="text-right border-t border-gray-300 w-1/3"></div>
</div>
<div class="flex">
<div class="w-2/3"></div>
<p class="text-xs w-2/3 text-right">Ketua Kewangan & Akaun</p>
</div>
<div class="flex">
<p class="text-xs text-center w-2/3">Tarikh</p>
<p class="text-xs w-1/3 border border-gray-400 text-right">
@php
$myDateTime = DateTime::createFromFormat('Y-m-d', $permohonan['tarikh_pengesahanakaun']);
$formattedweddingdate = $myDateTime->format('d-m-Y');
echo($formattedweddingdate)
@endphp
</p>
</div>
{{-- <p class="text-xs">NO KP : 970403-03-5003</p> --}}
</div>
<div class="ml-2 w-1/2 flex flex-col">
<p class="h-20"></p>
<div class="flex">
<div class="w-2/3"></div>
<div class="text-right border-t border-gray-300 w-1/3"></div>
</div>
<div class="flex">
<div class="w-2/3"></div>
<p class="text-xs w-2/3 text-right">
@php if($jeniscawangan === 'BMMB')
{
echo 'Ahli JMC';
}else{
echo 'Pengurus Besar';
}
@endphp
</p>
</div>
<div class="flex">
<p class="text-xs text-center w-2/3">Tarikh</p>
<p class="text-xs w-1/3 border border-gray-400 text-right">
@php
if($permohonan['tarikh_diluluskan'] !== null)
{
$myDateTime = DateTime::createFromFormat('Y-m-d', $permohonan['tarikh_diluluskan']);
$formattedweddingdate = $myDateTime->format('d-m-Y');
echo($formattedweddingdate);
}
@endphp
</p>
</div>
</div>
</div>
<div class="flex mb-6">
<div class="ml-2 w-1/2 flex flex-col justify-end">
<b class="text-xs border border-black pl-1 text-center">PENERIMA WANG</b>
<b class="text-xs border border-black pl-1 text-center">Wakil Ar-Rahn</b>
<div class="flex">
<p class="text-xs w-full">Pengesahan penerima wang oleh</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">
{{ ($permohonan['nama_penerima'] !== null) ? $permohonan['nama_penerima'] : '' }}
</p>
</div>
<div class="flex">
<p class="text-xs w-full">Tarikh serahan</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">
@php
if($permohonan['tarikh_terima'] !== null)
{
$myDateTime = DateTime::createFromFormat('Y-m-d', $permohonan['tarikh_terima']);
$formattedweddingdate = $myDateTime->format('d-m-Y');
echo($formattedweddingdate);
}
@endphp
</p>
</div>
<div class="flex">
<p class="text-xs w-full">Baki Peti Besi</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">
@php
$jumlah = 0;
if($permohonan['jumlah_diluluskan'] !== null)
{
$jumlah = floatval($permohonan['baki_petibesi']) + floatval($permohonan['jumlah_diluluskan']);
echo 'RM ' . number_format($jumlah,2);
}
@endphp
</p>
</div>
{{-- <p class="text-xs">NO KP : 970403-03-5003</p> --}}
</div>
<div class="ml-2 w-1/2 flex flex-col">
<b class="text-xs border border-black pl-1 text-center">Bahagian Kewangan & Akaun PKB</b>
<div class="flex">
<p class="text-xs w-full">Bank</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">{{ $permohonan['jenisbank'] }}</p>
</div>
<div class="flex">
<p class="text-xs w-full">No. Resit</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">{{ $permohonan['noresit'] }}</p>
</div>
<div class="flex">
<p class="text-xs w-full">Tarikh kemasukan</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">
@php
if($permohonan['tarikh_terima'] !== null)
{
$myDateTime = DateTime::createFromFormat('Y-m-d', $permohonan['tarikh_terima']);
$formattedweddingdate = $myDateTime->format('d-m-Y');
echo($formattedweddingdate);
}
@endphp
</p>
</div>
<div class="flex">
<p class="text-xs w-full">Pengesahan oleh</p>
<p class="text-xs w-2/3 border border-gray-400 text-right">
{{ $permohonan['nama_akaun'] }}
</p>
</div>
</div>
</div>
<script>
window.print();
// window.onfocus=function(){ window.close();}
</script>
</body>
</html>
@@ -0,0 +1,158 @@
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>Pengeluaran Cetakan Pengurus Besar</title>
<link rel="icon" type="image/x-icon" href="{{ asset('img/icon_pkb.png') }}" />
<link href="{{ asset('css/all.min.css') }}" rel="stylesheet">
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body class="p-2">
<div class="mb-10">
<div class="flex w-full">
<div class="w-1/12 mt-4">
<img src="{{ asset('img/ARRAHN1.png') }}" style="width:70px"/>
</div>
<div class="ml-2 w-8/12 flex flex-col justify-end">
<b>PERMODALAN KELANTAN BERHAD</b>
<p class="text-xs">{{ $cawangan_detail['namacaw'] }}</p>
<p class="text-xs">{{ $cawangan_detail['alamat1'] }}</p>
<p class="text-xs">{{ $cawangan_detail['alamat2'] }}</p>
</div>
<div class="w-3/12 flex flex-col justify-end">
<p class="text-xs">No Tel : {{ $cawangan_detail['notel'] }}</p>
<p class="text-xs">No Faks : {{ $cawangan_detail['nofaks'] }}</p>
</div>
</div>
</div>
<div class="flex mb-6">
<div class="ml-2 w-9/12 flex flex-col justify-end">
<b class="text-sm">Kepada:</b>
<p class="text-xs">Pengurus Besar Kumpulan PKB</p>
</div>
<div class="ml-2 w-3/12 flex flex-col">
<b class="text-sm">No Permohonan:</b>
<p class="text-xs">{{ $permohonan['nopermohonan'] }}</p>
</div>
</div>
<div class="flex mb-6">
<div class="ml-2 w-9/12 flex flex-col justify-end">
<b class="text-sm">Daripada:</b>
<p class="text-xs">Pengurus Cawangan {{ $cawangan_detail['namacaw'] }}</p>
<p class="text-xs">Nama : {{ $permohonan['nama_pemohon'] }}</p>
{{-- <p class="text-xs">NO KP : 970403-03-5003</p> --}}
</div>
<div class="ml-2 w-3/12 flex flex-col">
<b class="text-sm">Tarikh:</b>
<p class="text-xs">{{ $tarikhcetakan }}</p>
</div>
</div>
@if($permohonan['jenismohon'] === 'permohonanwang')
<h4 class="ml-2 text-lg font-bold underline">PERMOHONAN WANG</h4>
@else
<h4 class="ml-2 text-lg font-bold underline">BAYARAN BALIK</h4>
@endif
<div class="flex justify-content-center justify-center items-center mt-6">
<table class="border-2 text-sm border-black p-2 w-full">
<tr>
@if($permohonan['jenismohon'] === 'permohonanwang')
<td class="border-2 border-black p-2">Jumlah Dipohon</td>
@else
<td class="border-2 border-black p-2">Bayaran Balik</td>
@endif
<td class="border-2 border-black p-2 text-right">RM {{ number_format($permohonan['amaun_mohon'],2) }}</td>
</tr>
<tr>
<td class="border-2 border-black p-2">Tarikh Mohon</td>
<td class="border-2 border-black p-2 text-right">
@php
$myDateTime = DateTime::createFromFormat('Y-m-d', $permohonan['tarikh_permohonan']);
$formattedweddingdate = $myDateTime->format('d-m-Y');
echo($formattedweddingdate)
@endphp
</td>
</tr>
<tr>
<td class="border-2 border-black p-2">Baki Peti Besi</td>
<td class="border-2 border-black p-2 text-right">RM {{ number_format($permohonan['baki_petibesi'],2) }}</td>
</tr>
</table>
</div>
<div class="block mt-36 ">
{{-- <div class="p-2 w-full h-100"></div> --}}
</div>
<div class="flex mb-6 mt-12 mx-auto justify-content-center items-center">
<div class="ml-2 w-6/12 flex flex-col justify-end">
<b class="text-sm">Disediakan oleh:</b>
<p class="h-8"></p>
<p>.........................................................</p>
<p class="text-xs font-bold ">Pengurus Cawangan {{ $cawangan_detail['namacaw'] }}</p>
<p class="text-xs">Nama : {{ $permohonan['nama_pemohon'] }}</p>
<p class="text-xs">Tarikh : {{ $tarikhcetakan }}</p>
</div>
<div class="ml-2 w-6/12 flex flex-col justify-end">
<b class="text-sm">Disahkan oleh:</b>
<p class="h-8"></p>
<p>.........................................................</p>
<p class="text-xs font-bold">Operasi Permodalan Kelantan Berhad</p>
<p class="text-xs">Nama : {{ $permohonan['nama_operasi'] }}</p>
<p class="text-xs">Tarikh : {{ $tarikhcetakan }}</p>
</div>
</div>
<div class="flex mb-6 mt-12">
<div class="ml-2 w-6/12 flex flex-col justify-end">
<b class="text-sm">Disahkan oleh:</b>
<p class="h-8"></p>
<p>.........................................................</p>
<p class="text-xs font-bold ">Akaun Permodalan Kelantan Berhad</p>
<p class="text-xs">Nama : {{ $permohonan['nama_akaun'] }}</p>
<p class="text-xs">Tarikh : {{ $tarikhcetakan }}</p>
</div>
<div class="ml-2 w-6/12 flex flex-col justify-end">
<b class="text-sm">Diluluskan oleh:</b>
<p class="h-8"></p>
<p>.........................................................</p>
<p class="text-xs font-bold">Pengurus Besar</p>
<p class="text-xs">Nama : Pengurus Besar</p>
<p class="text-xs">Tarikh : {{ $tarikhcetakan }}</p>
</div>
</div>
<script>
window.print();
// window.onfocus=function(){ window.close();}
</script>
</body>
</html>
@@ -0,0 +1,20 @@
@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' : 'Permohonan Wang', 'icon' : 'fas fa-globe-asia' }]"></breadcrumb>
<permohonanindex-component></permohonanindex-component>
</div>
</main>
@include('layouts.footer')
@endsection
+4
View File
@@ -26,5 +26,9 @@ Route::group(['prefix' => 'check'], function () {
Route::get('/cawangan', 'App\Http\Controllers\CawanganController@list');
Route::post('/kelulusan/operasi', 'App\Http\Controllers\KelulusanController@updatekelulusan');
Route::post('/kelulusan/pb', 'App\Http\Controllers\KelulusanController@updatePB');
Route::get('/muatturun', 'App\Http\Controllers\KelulusanController@download');
});
+18 -1
View File
@@ -1,6 +1,7 @@
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Http;
/*
|--------------------------------------------------------------------------
@@ -14,7 +15,8 @@ use Illuminate\Support\Facades\Route;
*/
Route::get('/iframe', function () {
echo 'for iframe';
});
// Auth::routes();
@@ -27,6 +29,10 @@ Route::post('logout', ['as' => 'logout', 'uses' => 'App\Http\Controllers\Auth\Lo
Route::get('login', 'App\Http\Controllers\Auth\LoginController@login')->name('login');
Route::post('login', 'App\Http\Controllers\Auth\LoginController@authenticate');
Route::get('/welcome', function () {
return view('welcome');
});
Route::get('/', [App\Http\Controllers\HomeController::class,'index'])->name('index');
Route::get('/home', [App\Http\Controllers\HomeController::class, 'indexhome'])->name('home')->middleware(['roleChecker:admin,null,operasi']);
Route::get('/akaunhome', [App\Http\Controllers\HomeController::class, 'indexakaun'])->name('akaun.home')->middleware(['roleChecker:admin,akaun,operasi']);
@@ -82,6 +88,7 @@ Route::get('/akaunhome/cetakkawalanstok',['as'=>'cetak.kawalanstok','uses'=>'App
Route::get('/akaunhome/cetaklelong',['as'=>'cetak.lelong','uses'=>'App\Http\Controllers\AkaunController@cetaklaporan_lelong'])->middleware(['roleChecker:admin,akaun,operasi']);
Route::get('/akaunhome/cetakperbelanjaan',['as'=>'cetak.perbelanjaan','uses'=>'App\Http\Controllers\AkaunController@cetaklaporan_perbelanjaan'])->middleware(['roleChecker:admin,akaun,operasi']);
Route::get('/akaunhome/cetakringkasanterkumpul',['as'=>'cetak.ringkasanterkumpul','uses'=>'App\Http\Controllers\AkaunController@cetakLaporanRingkasanTerkumpul'])->middleware(['roleChecker:admin,akaun,operasi']);
Route::get('/akaunhome/cetakstokauditbackdate',['as'=>'cetak.stokauditbackdate','uses'=>'App\Http\Controllers\AkaunController@cetakLaporanStokAuditBackdate'])->middleware(['roleChecker:admin,akaun,operasi']);
//Resit
@@ -94,3 +101,13 @@ Route::get('/resit/tebusseparuh/{id}',['as'=>'resit.tebusseparuh','uses'=>'App\H
Route::get('/resit/belumtebus/{id}',['as'=>'resit.belumtebus','uses'=>'App\Http\Controllers\ResitController@resitbelumtebus']);
Route::get('/resit/tambahpinjam/{id}',['as'=>'resit.tambahpinjam','uses'=>'App\Http\Controllers\ResitController@resittambahpinjam']);
Route::get('/resit/tebusautotawarruq/{id}',['as'=>'resit.autotawarruq','uses'=>'App\Http\Controllers\ResitController@resitautotawarruq']);
//Katalaluan
Route::get('/mintasemulakelulusan','App\Http\Controllers\PermohonanController@MintaKelulusan');
//Permohonan Wang
Route::get('/permohonan',['as'=>'permohonan.index','uses'=>'App\Http\Controllers\PermohonanController@index']);
Route::get('/permohonan/cetakanpb',['as'=>'permohonan.cetakanpb','uses'=>'App\Http\Controllers\PermohonanController@CetakanPB']);
Route::get('/permohonan/cetakanpenuh',['as'=>'permohonan.cetakanpenuh','uses'=>'App\Http\Controllers\PermohonanController@CetakanPenuh']);