fix skit2

This commit is contained in:
fifi97
2021-12-27 10:58:13 +08:00
parent db16db014c
commit 3e3936bf83
33 changed files with 5889 additions and 2197 deletions
+144 -31
View File
@@ -7,6 +7,9 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Carbon\Carbon;
use PDF;
use Maatwebsite\Excel\Excel;
use App\Models\Lejeram;
@@ -109,11 +112,23 @@ class AkaunController extends Controller
$totalsamakredit += floatval($lejer['kredit']);
}
return view('akaun.laporan_lejer_am',compact('cawangan','tarikh_cetak','cawangan_info', 'api_url','cawangan_detail','tarikh_akhir','tarikh_mula','lejeram','totalsamadebit','totalsamakredit'));
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('akaun.laporan_lejer_am_pdf',compact('cawangan','tarikh_cetak','cawangan_info', 'api_url','cawangan_detail','tarikh_akhir','tarikh_mula','lejeram','totalsamadebit','totalsamakredit'))->setPaper('a4', 'landscape');
return $pdf->download('laporan_lejeram_' . $auth_user['cawangan'] .'_'. $tarikh_cetak . '.pdf');
}else{
return view('akaun.laporan_lejer_am',compact('cawangan','tarikh_cetak','cawangan_info', 'api_url','cawangan_detail','tarikh_akhir','tarikh_mula','lejeram','totalsamadebit','totalsamakredit'));
}
}
}
public function cetakimbangduga(Request $request)
{
// dd($request->all());
$auth_user = Auth::user();
$api_url = config('api.url');
@@ -125,24 +140,16 @@ class AkaunController extends Controller
$tarikh_imbangan= $current->toDateString();
$tarikh_imbangan2= $current->toDateString();
$tarikh_cetak = $current->toDateString();
if($request->datetimepicker1 == null){
$tarikh_cetak = $current->toDateString();
}else
{
$split_date = explode('-',$request->datetimepicker1);
$tarikh_imbangan = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
}
$tarikh_cetak = $current->toDateString();
if($request->datetimepicker2 == null){
$tarikh_cetak = $current->toDateString();
}else
{
$split_date = explode('-',$request->datetimepicker2);
$tarikh_imbangan2 = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
$tarikh_imbangan2 = $request->datetimepicker1;
}
@@ -150,9 +157,6 @@ class AkaunController extends Controller
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
$cawangan_detail=$cawangan[0];
// $hartasemasa = Http::get(config('api.url').'/api/getGlCode/' . $auth_user['cawangan'] . '/acttype/A/')->json();
// $tanggungansemasa = Http::get(config('api.url').'/api/getGlCode/' . $auth_user['cawangan'] . '/acttype/L/')->json();
//Calculation Imbang Duga
$imbangduga = Http::get(config('api.url').'/api/CalculationPendahuluanSerahan/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
$keuntungan = Http::get(config('api.url').'/api/KeuntunganArRahn/' . $auth_user['cawangan'],['tarikh' => $tarikh_imbangan2])->json();
@@ -271,8 +275,18 @@ class AkaunController extends Controller
$totaluntungrugi = 0;
$totaluntungrugi = $totaltanggungansemasa + $untungrugi;
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('akaun.laporan_imbanduga',compact('tarikh_imbangan', 'tarikh_imbangan2','hartasemasa','untungrugifield','tanggungansemasa','totalhartasemasa','totaluntungrugi','totaltanggungansemasa','tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail'))->setPaper('a4', 'potrait');
return $pdf->download('laporan_imbangduga_' . $auth_user['cawangan'] .'_'. $tarikh_imbangan2 . '.pdf');
}else{
return view('akaun.laporan_imbanduga',compact('tarikh_imbangan', 'tarikh_imbangan2','hartasemasa','untungrugifield','tanggungansemasa','totalhartasemasa','totaluntungrugi','totaltanggungansemasa','tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail'));
}
}
return view('akaun.laporan_imbanduga',compact('tarikh_imbangan', 'tarikh_imbangan2','hartasemasa','untungrugifield','tanggungansemasa','totalhartasemasa','totaluntungrugi','totaltanggungansemasa','tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail'));
// return view('akaun.laporan_imbanduga',compact('tarikh_imbangan', 'tarikh_imbangan2','hartasemasa','untungrugifield','tanggungansemasa','totalhartasemasa','totaluntungrugi','totaltanggungansemasa','tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail'));
}
public function cetakLaporanGadai(Request $request){
@@ -286,13 +300,24 @@ class AkaunController extends Controller
$gadai_date = $current->toDateString();
}else{
$split_date = explode('-',$request->datetarikh);
$gadai_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
// $gadai_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
$gadai_date = $request->datetarikh;
}
$gadai = Http::get(config('api.url'). '/api/gadai/laporan/'. $auth_user['cawangan'] .'/'. $gadai_date)->json();
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
$cawangan_detail=$cawangan[0];
return view('akaun.laporan_gadaian', compact('gadai','cawangan_detail','tarikh_cetak','gadai_date','api_url'));
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('akaun.laporan_gadaian', compact('gadai','cawangan_detail','tarikh_cetak','gadai_date','api_url'))->setPaper('a4', 'landscape');
return $pdf->download('laporan_gadaian_' . $auth_user['cawangan'] .'_'. $gadai_date . '.pdf');
}else{
return view('akaun.laporan_gadaian', compact('gadai','cawangan_detail','tarikh_cetak','gadai_date','api_url'));
}
}
}
public function cetakLaporanPenebusan(Request $request){
@@ -306,7 +331,8 @@ class AkaunController extends Controller
$tebus_date = $current->toDateString();
}else{
$split_date = explode('-',$request->datetarikh);
$tebus_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
// $tebus_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
$tebus_date = $request->datetarikh;
}
$tebus = Http::get(config('api.url'). '/api/tebus/laporan/'. $auth_user['cawangan'] .'/'. $tebus_date)->json();
$tebuspengasingan = Http::get(config('api.url'). '/api/tebus/laporanjenistawarruq/'. $auth_user['cawangan'],['tarikh' => $tebus_date])->json();
@@ -315,8 +341,17 @@ class AkaunController extends Controller
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
$cawangan_detail=$cawangan[0];
// dd($gadai);
return view('akaun.laporan_penebusan', compact('tebus','cawangan_detail','tarikh_cetak','tebus_date','tebuspengasingan','ansuran','api_url','upahlama'));
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('akaun.laporan_penebusan', compact('tebus','cawangan_detail','tarikh_cetak','tebus_date','tebuspengasingan','ansuran','api_url','upahlama'))->setPaper('a4', 'landscape');
return $pdf->download('laporan_penebusan_' . $auth_user['cawangan'] .'_'. $tebus_date . '.pdf');
}else{
return view('akaun.laporan_penebusan', compact('tebus','cawangan_detail','tarikh_cetak','tebus_date','tebuspengasingan','ansuran','api_url','upahlama'));
}
}
}
public function cetakLaporanAnsuran(Request $request){
@@ -330,13 +365,67 @@ class AkaunController extends Controller
$tebus_date = $current->toDateString();
}else{
$split_date = explode('-',$request->datetimepicker1);
$tebus_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
// $tebus_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
$tebus_date = $request->datetimepicker1;
}
$tebus = Http::get(config('api.url'). '/api/ansuran/laporan/'. $auth_user['cawangan'],['tarikh' => $tebus_date])->json();
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
$cawangan_detail=$cawangan[0];
// dd($gadai);
return view('akaun.laporan_ansuran', compact('tebus','cawangan_detail','tarikh_cetak','tebus_date','api_url'));
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('akaun.laporan_ansuran', compact('tebus','cawangan_detail','tarikh_cetak','tebus_date','api_url'))->setPaper('a4', 'potrait');
return $pdf->download('laporan_ansuran_' . $auth_user['cawangan'] .'_'. $tebus_date . '.pdf');
}else{
return view('akaun.laporan_ansuran', compact('tebus','cawangan_detail','tarikh_cetak','tebus_date','api_url'));
}
}
}
public function cetaklaporan_Upah(Request $request)
{
$api_url = config('api.url');
$auth_user = Auth::user();
$current = Carbon::now();
$current = new Carbon();
$tarikh_cetak = $current->toDateString();
if($request->datemula == null){
$mula_date = '2017-01-01';
}else{
$split_date = explode('-', $request->datemula);
// $mula_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
$mula_date = $request->datemula;
}
if($request->datehingga == null){
$hingga_date = $current->toDateString();
}else{
$split_date = explode('-', $request->datehingga);
// $hingga_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
$hingga_date = $request->datehingga;
}
$advansur = Http::get(config('api.url'). '/api/AnsuranByRangeTarikh/' . $auth_user['cawangan'],['mula' => $mula_date,'akhir' => $hingga_date])->json();
$cawangan = Http::get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
$cawangan_detail=$cawangan[0];
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('akaun.laporan_upah', compact('advansur','cawangan_detail','tarikh_cetak','mula_date','hingga_date','api_url'))->setPaper('a4', 'potrait');
return $pdf->download('laporan_upah_' . $auth_user['cawangan'] .'_'. $mula_date . '.pdf');
}else{
return view('akaun.laporan_upah', compact('advansur','cawangan_detail','tarikh_cetak','mula_date','hingga_date','api_url'));
}
}
}
public function cetakLaporanPetiBesi(Request $request){
@@ -379,14 +468,16 @@ class AkaunController extends Controller
$mula_date = '2017-01-01';
}else{
$split_date = explode('-', $request->datemula);
$mula_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
// $mula_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
$mula_date = $request->datemula;
}
if($request->datehingga == null){
$hingga_date = $current->toDateString();
}else{
$split_date = explode('-', $request->datehingga);
$hingga_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
// $hingga_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
$hingga_date = $request->datehingga;
}
$pendser = Http::get(config('api.url'). '/api/SenaraiPendSer/range/' . $auth_user['cawangan'],['mula' => $mula_date,'hingga' => $hingga_date,'jenis' => $request->radpendser])->json();
@@ -394,7 +485,18 @@ class AkaunController extends Controller
$cawangan = Http::get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
$cawangan_detail=$cawangan[0];
return view('akaun.laporan_pendahuluanserahan', compact('pendser','cawangan_detail','tarikh_cetak','mula_date','hingga_date','api_url'));
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('akaun.laporan_pendahuluanserahan', compact('pendser','cawangan_detail','tarikh_cetak','mula_date','hingga_date','api_url'))->setPaper('a4', 'potrait');
return $pdf->download('laporan_HQ_' . $auth_user['cawangan'] .'_'. $mula_date . '_' . $request->radpendser . '.pdf');
}else{
return view('akaun.laporan_pendahuluanserahan', compact('pendser','cawangan_detail','tarikh_cetak','mula_date','hingga_date','api_url'));
}
}
}
public function cetaklaporan_tuntutbaki(Request $request){
@@ -409,7 +511,8 @@ class AkaunController extends Controller
$gadai_date = $current->toDateString();
}else{
$split_date = explode('-',$request->datetimepicker1);
$gadai_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
// $gadai_date = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0];
$gadai_date = $request->datetimepicker1;
}
$tuntutbaki = Http::get(config('api.url'). '/api/TuntutBakiTarikh/'. $auth_user['cawangan'] ,['tarikh' => $gadai_date])->json();
@@ -417,6 +520,16 @@ class AkaunController extends Controller
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
$cawangan_detail=$cawangan[0];
return view('akaun.laporan_tuntutbaki', compact('tuntutbaki','cawangan_detail','tarikh_cetak','gadai_date','api_url'));
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('akaun.laporan_tuntutbaki', compact('tuntutbaki','cawangan_detail','tarikh_cetak','gadai_date','api_url'))->setPaper('a4', 'potrait');
return $pdf->download('laporan_tuntutbaki_' . $auth_user['cawangan'] .'_'. $gadai_date . '.pdf');
}else{
return view('akaun.laporan_tuntutbaki', compact('tuntutbaki','cawangan_detail','tarikh_cetak','gadai_date','api_url'));
}
}
}
}
@@ -35,4 +35,17 @@ class PelangganController extends Controller
return view('pelanggan.detailspelanggan',compact('api_url','cawangan_info','auth_user','customer_info'));
}
public function DetailsBlacklist()
{
$api_url = config('api.url');
$auth_user = Auth::user();
$cawangan_info = Http::get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json();
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json();
$cawangan_detail=$cawangan[0];
return view('pelanggan.blacklist',compact('api_url','cawangan_info','auth_user'));
}
}
+2
View File
@@ -6,12 +6,14 @@
"license": "MIT",
"require": {
"php": "^7.3|^8.0",
"barryvdh/laravel-dompdf": "^0.9.0",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1",
"laravel/framework": "^8.65",
"laravel/sanctum": "^2.11",
"laravel/tinker": "^2.5",
"laravel/ui": "^3.3",
"maatwebsite/excel": "^3.1",
"tightenco/ziggy": "^1.4"
},
"require-dev": {
Generated
+747 -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": "a4cb9fb7347683123d0da4b9a7a190d5",
"content-hash": "8f062442a1e4f47fe0973ab4e461adaa",
"packages": [
{
"name": "asm89/stack-cors",
@@ -62,6 +62,72 @@
},
"time": "2021-03-11T06:42:03+00:00"
},
{
"name": "barryvdh/laravel-dompdf",
"version": "v0.9.0",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-dompdf.git",
"reference": "5b99e1f94157d74e450f4c97e8444fcaffa2144b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/5b99e1f94157d74e450f4c97e8444fcaffa2144b",
"reference": "5b99e1f94157d74e450f4c97e8444fcaffa2144b",
"shasum": ""
},
"require": {
"dompdf/dompdf": "^1",
"illuminate/support": "^5.5|^6|^7|^8",
"php": "^7.1 || ^8.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.9-dev"
},
"laravel": {
"providers": [
"Barryvdh\\DomPDF\\ServiceProvider"
],
"aliases": {
"PDF": "Barryvdh\\DomPDF\\Facade"
}
}
},
"autoload": {
"psr-4": {
"Barryvdh\\DomPDF\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"description": "A DOMPDF Wrapper for Laravel",
"keywords": [
"dompdf",
"laravel",
"pdf"
],
"support": {
"issues": "https://github.com/barryvdh/laravel-dompdf/issues",
"source": "https://github.com/barryvdh/laravel-dompdf/tree/v0.9.0"
},
"funding": [
{
"url": "https://github.com/barryvdh",
"type": "github"
}
],
"time": "2020-12-27T12:05:53+00:00"
},
{
"name": "brick/math",
"version": "0.9.3",
@@ -368,6 +434,73 @@
],
"time": "2020-05-25T17:44:05+00:00"
},
{
"name": "dompdf/dompdf",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/dompdf/dompdf.git",
"reference": "de4aad040737a89fae2129cdeb0f79c45513128d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dompdf/dompdf/zipball/de4aad040737a89fae2129cdeb0f79c45513128d",
"reference": "de4aad040737a89fae2129cdeb0f79c45513128d",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-mbstring": "*",
"phenx/php-font-lib": "^0.5.2",
"phenx/php-svg-lib": "^0.3.3",
"php": "^7.1 || ^8.0"
},
"require-dev": {
"mockery/mockery": "^1.3",
"phpunit/phpunit": "^7.5 || ^8 || ^9",
"squizlabs/php_codesniffer": "^3.5"
},
"suggest": {
"ext-gd": "Needed to process images",
"ext-gmagick": "Improves image processing performance",
"ext-imagick": "Improves image processing performance",
"ext-zlib": "Needed for pdf stream compression"
},
"type": "library",
"autoload": {
"psr-4": {
"Dompdf\\": "src/"
},
"classmap": [
"lib/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1"
],
"authors": [
{
"name": "Fabien Ménager",
"email": "fabien.menager@gmail.com"
},
{
"name": "Brian Sweeney",
"email": "eclecticgeek@gmail.com"
},
{
"name": "Gabriel Bull",
"email": "me@gabrielbull.com"
}
],
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
"homepage": "https://github.com/dompdf/dompdf",
"support": {
"issues": "https://github.com/dompdf/dompdf/issues",
"source": "https://github.com/dompdf/dompdf/tree/v1.1.1"
},
"time": "2021-11-24T00:45:04+00:00"
},
{
"name": "dragonmantank/cron-expression",
"version": "v3.1.0",
@@ -497,6 +630,57 @@
],
"time": "2020-12-29T14:50:06+00:00"
},
{
"name": "ezyang/htmlpurifier",
"version": "v4.14.0",
"source": {
"type": "git",
"url": "https://github.com/ezyang/htmlpurifier.git",
"reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75",
"reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75",
"shasum": ""
},
"require": {
"php": ">=5.2"
},
"type": "library",
"autoload": {
"psr-0": {
"HTMLPurifier": "library/"
},
"files": [
"library/HTMLPurifier.composer.php"
],
"exclude-from-classmap": [
"/library/HTMLPurifier/Language/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1-or-later"
],
"authors": [
{
"name": "Edward Z. Yang",
"email": "admin@htmlpurifier.org",
"homepage": "http://ezyang.com"
}
],
"description": "Standards compliant HTML filter written in PHP",
"homepage": "http://htmlpurifier.org/",
"keywords": [
"html"
],
"support": {
"issues": "https://github.com/ezyang/htmlpurifier/issues",
"source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0"
},
"time": "2021-12-25T01:21:49+00:00"
},
{
"name": "fruitcake/laravel-cors",
"version": "v2.0.4",
@@ -1723,6 +1907,262 @@
],
"time": "2021-11-21T11:48:40+00:00"
},
{
"name": "maatwebsite/excel",
"version": "3.1.34",
"source": {
"type": "git",
"url": "https://github.com/SpartnerNL/Laravel-Excel.git",
"reference": "d7446f0e808d83be128835c4b403c9e4a65b20f3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/d7446f0e808d83be128835c4b403c9e4a65b20f3",
"reference": "d7446f0e808d83be128835c4b403c9e4a65b20f3",
"shasum": ""
},
"require": {
"ext-json": "*",
"illuminate/support": "5.8.*|^6.0|^7.0|^8.0",
"php": "^7.0|^8.0",
"phpoffice/phpspreadsheet": "^1.18"
},
"require-dev": {
"orchestra/testbench": "^6.0",
"predis/predis": "^1.1"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Maatwebsite\\Excel\\ExcelServiceProvider"
],
"aliases": {
"Excel": "Maatwebsite\\Excel\\Facades\\Excel"
}
}
},
"autoload": {
"psr-4": {
"Maatwebsite\\Excel\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Patrick Brouwers",
"email": "patrick@spartner.nl"
}
],
"description": "Supercharged Excel exports and imports in Laravel",
"keywords": [
"PHPExcel",
"batch",
"csv",
"excel",
"export",
"import",
"laravel",
"php",
"phpspreadsheet"
],
"support": {
"issues": "https://github.com/SpartnerNL/Laravel-Excel/issues",
"source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.34"
},
"funding": [
{
"url": "https://laravel-excel.com/commercial-support",
"type": "custom"
},
{
"url": "https://github.com/patrickbrouwers",
"type": "github"
}
],
"time": "2021-12-02T16:17:16+00:00"
},
{
"name": "maennchen/zipstream-php",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/maennchen/ZipStream-PHP.git",
"reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/c4c5803cc1f93df3d2448478ef79394a5981cc58",
"reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58",
"shasum": ""
},
"require": {
"myclabs/php-enum": "^1.5",
"php": ">= 7.1",
"psr/http-message": "^1.0",
"symfony/polyfill-mbstring": "^1.0"
},
"require-dev": {
"ext-zip": "*",
"guzzlehttp/guzzle": ">= 6.3",
"mikey179/vfsstream": "^1.6",
"phpunit/phpunit": ">= 7.5"
},
"type": "library",
"autoload": {
"psr-4": {
"ZipStream\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paul Duncan",
"email": "pabs@pablotron.org"
},
{
"name": "Jonatan Männchen",
"email": "jonatan@maennchen.ch"
},
{
"name": "Jesse Donat",
"email": "donatj@gmail.com"
},
{
"name": "András Kolesár",
"email": "kolesar@kolesar.hu"
}
],
"description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.",
"keywords": [
"stream",
"zip"
],
"support": {
"issues": "https://github.com/maennchen/ZipStream-PHP/issues",
"source": "https://github.com/maennchen/ZipStream-PHP/tree/master"
},
"funding": [
{
"url": "https://opencollective.com/zipstream",
"type": "open_collective"
}
],
"time": "2020-05-30T13:11:16+00:00"
},
{
"name": "markbaker/complex",
"version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/MarkBaker/PHPComplex.git",
"reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/ab8bc271e404909db09ff2d5ffa1e538085c0f22",
"reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"phpcompatibility/php-compatibility": "^9.0",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.3",
"squizlabs/php_codesniffer": "^3.4"
},
"type": "library",
"autoload": {
"psr-4": {
"Complex\\": "classes/src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mark Baker",
"email": "mark@lange.demon.co.uk"
}
],
"description": "PHP Class for working with complex numbers",
"homepage": "https://github.com/MarkBaker/PHPComplex",
"keywords": [
"complex",
"mathematics"
],
"support": {
"issues": "https://github.com/MarkBaker/PHPComplex/issues",
"source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.1"
},
"time": "2021-06-29T15:32:53+00:00"
},
{
"name": "markbaker/matrix",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/MarkBaker/PHPMatrix.git",
"reference": "c66aefcafb4f6c269510e9ac46b82619a904c576"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/c66aefcafb4f6c269510e9ac46b82619a904c576",
"reference": "c66aefcafb4f6c269510e9ac46b82619a904c576",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"phpcompatibility/php-compatibility": "^9.0",
"phpdocumentor/phpdocumentor": "2.*",
"phploc/phploc": "^4.0",
"phpmd/phpmd": "2.*",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.3",
"sebastian/phpcpd": "^4.0",
"squizlabs/php_codesniffer": "^3.4"
},
"type": "library",
"autoload": {
"psr-4": {
"Matrix\\": "classes/src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mark Baker",
"email": "mark@demon-angel.eu"
}
],
"description": "PHP Class for working with matrices",
"homepage": "https://github.com/MarkBaker/PHPMatrix",
"keywords": [
"mathematics",
"matrix",
"vector"
],
"support": {
"issues": "https://github.com/MarkBaker/PHPMatrix/issues",
"source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.0"
},
"time": "2021-07-01T19:01:15+00:00"
},
{
"name": "monolog/monolog",
"version": "2.3.5",
@@ -1822,6 +2262,66 @@
],
"time": "2021-10-01T21:08:31+00:00"
},
{
"name": "myclabs/php-enum",
"version": "1.8.3",
"source": {
"type": "git",
"url": "https://github.com/myclabs/php-enum.git",
"reference": "b942d263c641ddb5190929ff840c68f78713e937"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937",
"reference": "b942d263c641ddb5190929ff840c68f78713e937",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": "^7.3 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"squizlabs/php_codesniffer": "1.*",
"vimeo/psalm": "^4.6.2"
},
"type": "library",
"autoload": {
"psr-4": {
"MyCLabs\\Enum\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP Enum contributors",
"homepage": "https://github.com/myclabs/php-enum/graphs/contributors"
}
],
"description": "PHP Enum implementation",
"homepage": "http://github.com/myclabs/php-enum",
"keywords": [
"enum"
],
"support": {
"issues": "https://github.com/myclabs/php-enum/issues",
"source": "https://github.com/myclabs/php-enum/tree/1.8.3"
},
"funding": [
{
"url": "https://github.com/mnapoli",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum",
"type": "tidelift"
}
],
"time": "2021-07-05T08:18:36+00:00"
},
{
"name": "nesbot/carbon",
"version": "2.54.0",
@@ -2185,6 +2685,199 @@
},
"time": "2021-04-09T13:42:10+00:00"
},
{
"name": "phenx/php-font-lib",
"version": "0.5.4",
"source": {
"type": "git",
"url": "https://github.com/dompdf/php-font-lib.git",
"reference": "dd448ad1ce34c63d09baccd05415e361300c35b4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4",
"reference": "dd448ad1ce34c63d09baccd05415e361300c35b4",
"shasum": ""
},
"require": {
"ext-mbstring": "*"
},
"require-dev": {
"symfony/phpunit-bridge": "^3 || ^4 || ^5"
},
"type": "library",
"autoload": {
"psr-4": {
"FontLib\\": "src/FontLib"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-3.0"
],
"authors": [
{
"name": "Fabien Ménager",
"email": "fabien.menager@gmail.com"
}
],
"description": "A library to read, parse, export and make subsets of different types of font files.",
"homepage": "https://github.com/PhenX/php-font-lib",
"support": {
"issues": "https://github.com/dompdf/php-font-lib/issues",
"source": "https://github.com/dompdf/php-font-lib/tree/0.5.4"
},
"time": "2021-12-17T19:44:54+00:00"
},
{
"name": "phenx/php-svg-lib",
"version": "0.3.4",
"source": {
"type": "git",
"url": "https://github.com/PhenX/php-svg-lib.git",
"reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/f627771eb854aa7f45f80add0f23c6c4d67ea0f2",
"reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0",
"sabberworm/php-css-parser": "^8.3"
},
"require-dev": {
"phpunit/phpunit": "^9.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Svg\\": "src/Svg"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-3.0"
],
"authors": [
{
"name": "Fabien Ménager",
"email": "fabien.menager@gmail.com"
}
],
"description": "A library to read, parse and export to PDF SVG files.",
"homepage": "https://github.com/PhenX/php-svg-lib",
"support": {
"issues": "https://github.com/PhenX/php-svg-lib/issues",
"source": "https://github.com/PhenX/php-svg-lib/tree/0.3.4"
},
"time": "2021-10-18T02:13:32+00:00"
},
{
"name": "phpoffice/phpspreadsheet",
"version": "1.20.0",
"source": {
"type": "git",
"url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
"reference": "44436f270bb134b4a94670f3d020a85dfa0a3c02"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/44436f270bb134b4a94670f3d020a85dfa0a3c02",
"reference": "44436f270bb134b4a94670f3d020a85dfa0a3c02",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-dom": "*",
"ext-fileinfo": "*",
"ext-gd": "*",
"ext-iconv": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-simplexml": "*",
"ext-xml": "*",
"ext-xmlreader": "*",
"ext-xmlwriter": "*",
"ext-zip": "*",
"ext-zlib": "*",
"ezyang/htmlpurifier": "^4.13",
"maennchen/zipstream-php": "^2.1",
"markbaker/complex": "^3.0",
"markbaker/matrix": "^3.0",
"php": "^7.3 || ^8.0",
"psr/http-client": "^1.0",
"psr/http-factory": "^1.0",
"psr/simple-cache": "^1.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "dev-master",
"dompdf/dompdf": "^1.0",
"friendsofphp/php-cs-fixer": "^3.2",
"jpgraph/jpgraph": "^4.0",
"mpdf/mpdf": "^8.0",
"phpcompatibility/php-compatibility": "^9.3",
"phpstan/phpstan": "^1.1",
"phpstan/phpstan-phpunit": "^1.0",
"phpunit/phpunit": "^8.5 || ^9.0",
"squizlabs/php_codesniffer": "^3.6",
"tecnickcom/tcpdf": "^6.4"
},
"suggest": {
"dompdf/dompdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)",
"jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
"mpdf/mpdf": "Option for rendering PDF with PDF Writer",
"tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)"
},
"type": "library",
"autoload": {
"psr-4": {
"PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Maarten Balliauw",
"homepage": "https://blog.maartenballiauw.be"
},
{
"name": "Mark Baker",
"homepage": "https://markbakeruk.net"
},
{
"name": "Franck Lefevre",
"homepage": "https://rootslabs.net"
},
{
"name": "Erik Tilt"
},
{
"name": "Adrien Crivelli"
}
],
"description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
"homepage": "https://github.com/PHPOffice/PhpSpreadsheet",
"keywords": [
"OpenXML",
"excel",
"gnumeric",
"ods",
"php",
"spreadsheet",
"xls",
"xlsx"
],
"support": {
"issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
"source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.20.0"
},
"time": "2021-11-23T15:23:42+00:00"
},
{
"name": "phpoption/phpoption",
"version": "1.8.0",
@@ -2909,6 +3602,59 @@
],
"time": "2021-09-25T23:10:38+00:00"
},
{
"name": "sabberworm/php-css-parser",
"version": "8.4.0",
"source": {
"type": "git",
"url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
"reference": "e41d2140031d533348b2192a83f02d8dd8a71d30"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30",
"reference": "e41d2140031d533348b2192a83f02d8dd8a71d30",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"php": ">=5.6.20"
},
"require-dev": {
"codacy/coverage": "^1.4",
"phpunit/phpunit": "^4.8.36"
},
"suggest": {
"ext-mbstring": "for parsing UTF-8 CSS"
},
"type": "library",
"autoload": {
"psr-4": {
"Sabberworm\\CSS\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Raphael Schweikert"
}
],
"description": "Parser for CSS Files written in PHP",
"homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser",
"keywords": [
"css",
"parser",
"stylesheet"
],
"support": {
"issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
"source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0"
},
"time": "2021-12-11T13:40:54+00:00"
},
{
"name": "swiftmailer/swiftmailer",
"version": "v6.3.0",
+2
View File
@@ -166,6 +166,8 @@ return [
* Package Service Providers...
*/
Barryvdh\DomPDF\ServiceProvider::class,
/*
* Application Service Providers...
*/
+244
View File
@@ -0,0 +1,244 @@
<?php
return array(
/*
|--------------------------------------------------------------------------
| Settings
|--------------------------------------------------------------------------
|
| Set some default values. It is possible to add all defines that can be set
| in dompdf_config.inc.php. You can also override the entire config file.
|
*/
'show_warnings' => false, // Throw an Exception on warnings from dompdf
'orientation' => 'portrait',
'defines' => array(
/**
* The location of the DOMPDF font directory
*
* The location of the directory where DOMPDF will store fonts and font metrics
* Note: This directory must exist and be writable by the webserver process.
* *Please note the trailing slash.*
*
* Notes regarding fonts:
* Additional .afm font metrics can be added by executing load_font.php from command line.
*
* Only the original "Base 14 fonts" are present on all pdf viewers. Additional fonts must
* be embedded in the pdf file or the PDF may not display correctly. This can significantly
* increase file size unless font subsetting is enabled. Before embedding a font please
* review your rights under the font license.
*
* Any font specification in the source HTML is translated to the closest font available
* in the font directory.
*
* The pdf standard "Base 14 fonts" are:
* Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique,
* Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique,
* Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic,
* Symbol, ZapfDingbats.
*/
"font_dir" => storage_path('fonts/'), // advised by dompdf (https://github.com/dompdf/dompdf/pull/782)
/**
* The location of the DOMPDF font cache directory
*
* This directory contains the cached font metrics for the fonts used by DOMPDF.
* This directory can be the same as DOMPDF_FONT_DIR
*
* Note: This directory must exist and be writable by the webserver process.
*/
"font_cache" => storage_path('fonts/'),
/**
* The location of a temporary directory.
*
* The directory specified must be writeable by the webserver process.
* The temporary directory is required to download remote images and when
* using the PFDLib back end.
*/
"temp_dir" => sys_get_temp_dir(),
/**
* ==== IMPORTANT ====
*
* dompdf's "chroot": Prevents dompdf from accessing system files or other
* files on the webserver. All local files opened by dompdf must be in a
* subdirectory of this directory. DO NOT set it to '/' since this could
* allow an attacker to use dompdf to read any files on the server. This
* should be an absolute path.
* This is only checked on command line call by dompdf.php, but not by
* direct class use like:
* $dompdf = new DOMPDF(); $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output();
*/
"chroot" => realpath(base_path()),
/**
* Whether to enable font subsetting or not.
*/
"enable_font_subsetting" => false,
/**
* The PDF rendering backend to use
*
* Valid settings are 'PDFLib', 'CPDF' (the bundled R&OS PDF class), 'GD' and
* 'auto'. 'auto' will look for PDFLib and use it if found, or if not it will
* fall back on CPDF. 'GD' renders PDFs to graphic files. {@link
* Canvas_Factory} ultimately determines which rendering class to instantiate
* based on this setting.
*
* Both PDFLib & CPDF rendering backends provide sufficient rendering
* capabilities for dompdf, however additional features (e.g. object,
* image and font support, etc.) differ between backends. Please see
* {@link PDFLib_Adapter} for more information on the PDFLib backend
* and {@link CPDF_Adapter} and lib/class.pdf.php for more information
* on CPDF. Also see the documentation for each backend at the links
* below.
*
* The GD rendering backend is a little different than PDFLib and
* CPDF. Several features of CPDF and PDFLib are not supported or do
* not make any sense when creating image files. For example,
* multiple pages are not supported, nor are PDF 'objects'. Have a
* look at {@link GD_Adapter} for more information. GD support is
* experimental, so use it at your own risk.
*
* @link http://www.pdflib.com
* @link http://www.ros.co.nz/pdf
* @link http://www.php.net/image
*/
"pdf_backend" => "CPDF",
/**
* PDFlib license key
*
* If you are using a licensed, commercial version of PDFlib, specify
* your license key here. If you are using PDFlib-Lite or are evaluating
* the commercial version of PDFlib, comment out this setting.
*
* @link http://www.pdflib.com
*
* If pdflib present in web server and auto or selected explicitely above,
* a real license code must exist!
*/
//"DOMPDF_PDFLIB_LICENSE" => "your license key here",
/**
* html target media view which should be rendered into pdf.
* List of types and parsing rules for future extensions:
* http://www.w3.org/TR/REC-html40/types.html
* screen, tty, tv, projection, handheld, print, braille, aural, all
* Note: aural is deprecated in CSS 2.1 because it is replaced by speech in CSS 3.
* Note, even though the generated pdf file is intended for print output,
* the desired content might be different (e.g. screen or projection view of html file).
* Therefore allow specification of content here.
*/
"default_media_type" => "screen",
/**
* The default paper size.
*
* North America standard is "letter"; other countries generally "a4"
*
* @see CPDF_Adapter::PAPER_SIZES for valid sizes ('letter', 'legal', 'A4', etc.)
*/
"default_paper_size" => "a4",
/**
* The default font family
*
* Used if no suitable fonts can be found. This must exist in the font folder.
* @var string
*/
"default_font" => "serif",
/**
* Image DPI setting
*
* This setting determines the default DPI setting for images and fonts. The
* DPI may be overridden for inline images by explictly setting the
* image's width & height style attributes (i.e. if the image's native
* width is 600 pixels and you specify the image's width as 72 points,
* the image will have a DPI of 600 in the rendered PDF. The DPI of
* background images can not be overridden and is controlled entirely
* via this parameter.
*
* For the purposes of DOMPDF, pixels per inch (PPI) = dots per inch (DPI).
* If a size in html is given as px (or without unit as image size),
* this tells the corresponding size in pt.
* This adjusts the relative sizes to be similar to the rendering of the
* html page in a reference browser.
*
* In pdf, always 1 pt = 1/72 inch
*
* Rendering resolution of various browsers in px per inch:
* Windows Firefox and Internet Explorer:
* SystemControl->Display properties->FontResolution: Default:96, largefonts:120, custom:?
* Linux Firefox:
* about:config *resolution: Default:96
* (xorg screen dimension in mm and Desktop font dpi settings are ignored)
*
* Take care about extra font/image zoom factor of browser.
*
* In images, <img> size in pixel attribute, img css style, are overriding
* the real image dimension in px for rendering.
*
* @var int
*/
"dpi" => 96,
/**
* Enable inline PHP
*
* If this setting is set to true then DOMPDF will automatically evaluate
* inline PHP contained within <script type="text/php"> ... </script> tags.
*
* Enabling this for documents you do not trust (e.g. arbitrary remote html
* pages) is a security risk. Set this option to false if you wish to process
* untrusted documents.
*
* @var bool
*/
"enable_php" => false,
/**
* Enable inline Javascript
*
* If this setting is set to true then DOMPDF will automatically insert
* JavaScript code contained within <script type="text/javascript"> ... </script> tags.
*
* @var bool
*/
"enable_javascript" => true,
/**
* Enable remote file access
*
* If this setting is set to true, DOMPDF will access remote sites for
* images and CSS files as required.
* This is required for part of test case www/test/image_variants.html through www/examples.php
*
* Attention!
* This can be a security risk, in particular in combination with DOMPDF_ENABLE_PHP and
* allowing remote access to dompdf.php or on allowing remote html code to be passed to
* $dompdf = new DOMPDF(, $dompdf->load_html(...,
* This allows anonymous users to download legally doubtful internet content which on
* tracing back appears to being downloaded by your server, or allows malicious php code
* in remote html pages to be executed by your server with your account privileges.
*
* @var bool
*/
"enable_remote" => true,
/**
* A ratio applied to the fonts height to be more like browsers' line height
*/
"font_height_ratio" => 1.1,
/**
* Use the more-than-experimental HTML5 Lib parser
*/
"enable_html5_parser" => false,
),
);
+328
View File
@@ -0,0 +1,328 @@
<?php
use Maatwebsite\Excel\Excel;
return [
'exports' => [
/*
|--------------------------------------------------------------------------
| Chunk size
|--------------------------------------------------------------------------
|
| When using FromQuery, the query is automatically chunked.
| Here you can specify how big the chunk should be.
|
*/
'chunk_size' => 1000,
/*
|--------------------------------------------------------------------------
| Pre-calculate formulas during export
|--------------------------------------------------------------------------
*/
'pre_calculate_formulas' => false,
/*
|--------------------------------------------------------------------------
| Enable strict null comparison
|--------------------------------------------------------------------------
|
| When enabling strict null comparison empty cells ('') will
| be added to the sheet.
*/
'strict_null_comparison' => false,
/*
|--------------------------------------------------------------------------
| CSV Settings
|--------------------------------------------------------------------------
|
| Configure e.g. delimiter, enclosure and line ending for CSV exports.
|
*/
'csv' => [
'delimiter' => ',',
'enclosure' => '"',
'line_ending' => PHP_EOL,
'use_bom' => false,
'include_separator_line' => false,
'excel_compatibility' => false,
],
/*
|--------------------------------------------------------------------------
| Worksheet properties
|--------------------------------------------------------------------------
|
| Configure e.g. default title, creator, subject,...
|
*/
'properties' => [
'creator' => '',
'lastModifiedBy' => '',
'title' => '',
'description' => '',
'subject' => '',
'keywords' => '',
'category' => '',
'manager' => '',
'company' => '',
],
],
'imports' => [
/*
|--------------------------------------------------------------------------
| Read Only
|--------------------------------------------------------------------------
|
| When dealing with imports, you might only be interested in the
| data that the sheet exists. By default we ignore all styles,
| however if you want to do some logic based on style data
| you can enable it by setting read_only to false.
|
*/
'read_only' => true,
/*
|--------------------------------------------------------------------------
| Ignore Empty
|--------------------------------------------------------------------------
|
| When dealing with imports, you might be interested in ignoring
| rows that have null values or empty strings. By default rows
| containing empty strings or empty values are not ignored but can be
| ignored by enabling the setting ignore_empty to true.
|
*/
'ignore_empty' => false,
/*
|--------------------------------------------------------------------------
| Heading Row Formatter
|--------------------------------------------------------------------------
|
| Configure the heading row formatter.
| Available options: none|slug|custom
|
*/
'heading_row' => [
'formatter' => 'slug',
],
/*
|--------------------------------------------------------------------------
| CSV Settings
|--------------------------------------------------------------------------
|
| Configure e.g. delimiter, enclosure and line ending for CSV imports.
|
*/
'csv' => [
'delimiter' => ',',
'enclosure' => '"',
'escape_character' => '\\',
'contiguous' => false,
'input_encoding' => 'UTF-8',
],
/*
|--------------------------------------------------------------------------
| Worksheet properties
|--------------------------------------------------------------------------
|
| Configure e.g. default title, creator, subject,...
|
*/
'properties' => [
'creator' => '',
'lastModifiedBy' => '',
'title' => '',
'description' => '',
'subject' => '',
'keywords' => '',
'category' => '',
'manager' => '',
'company' => '',
],
],
/*
|--------------------------------------------------------------------------
| Extension detector
|--------------------------------------------------------------------------
|
| Configure here which writer/reader type should be used when the package
| needs to guess the correct type based on the extension alone.
|
*/
'extension_detector' => [
'xlsx' => Excel::XLSX,
'xlsm' => Excel::XLSX,
'xltx' => Excel::XLSX,
'xltm' => Excel::XLSX,
'xls' => Excel::XLS,
'xlt' => Excel::XLS,
'ods' => Excel::ODS,
'ots' => Excel::ODS,
'slk' => Excel::SLK,
'xml' => Excel::XML,
'gnumeric' => Excel::GNUMERIC,
'htm' => Excel::HTML,
'html' => Excel::HTML,
'csv' => Excel::CSV,
'tsv' => Excel::TSV,
/*
|--------------------------------------------------------------------------
| PDF Extension
|--------------------------------------------------------------------------
|
| Configure here which Pdf driver should be used by default.
| Available options: Excel::MPDF | Excel::TCPDF | Excel::DOMPDF
|
*/
'pdf' => Excel::DOMPDF,
],
/*
|--------------------------------------------------------------------------
| Value Binder
|--------------------------------------------------------------------------
|
| PhpSpreadsheet offers a way to hook into the process of a value being
| written to a cell. In there some assumptions are made on how the
| value should be formatted. If you want to change those defaults,
| you can implement your own default value binder.
|
| Possible value binders:
|
| [x] Maatwebsite\Excel\DefaultValueBinder::class
| [x] PhpOffice\PhpSpreadsheet\Cell\StringValueBinder::class
| [x] PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder::class
|
*/
'value_binder' => [
'default' => Maatwebsite\Excel\DefaultValueBinder::class,
],
'cache' => [
/*
|--------------------------------------------------------------------------
| Default cell caching driver
|--------------------------------------------------------------------------
|
| By default PhpSpreadsheet keeps all cell values in memory, however when
| dealing with large files, this might result into memory issues. If you
| want to mitigate that, you can configure a cell caching driver here.
| When using the illuminate driver, it will store each value in a the
| cache store. This can slow down the process, because it needs to
| store each value. You can use the "batch" store if you want to
| only persist to the store when the memory limit is reached.
|
| Drivers: memory|illuminate|batch
|
*/
'driver' => 'memory',
/*
|--------------------------------------------------------------------------
| Batch memory caching
|--------------------------------------------------------------------------
|
| When dealing with the "batch" caching driver, it will only
| persist to the store when the memory limit is reached.
| Here you can tweak the memory limit to your liking.
|
*/
'batch' => [
'memory_limit' => 60000,
],
/*
|--------------------------------------------------------------------------
| Illuminate cache
|--------------------------------------------------------------------------
|
| When using the "illuminate" caching driver, it will automatically use
| your default cache store. However if you prefer to have the cell
| cache on a separate store, you can configure the store name here.
| You can use any store defined in your cache config. When leaving
| at "null" it will use the default store.
|
*/
'illuminate' => [
'store' => null,
],
],
/*
|--------------------------------------------------------------------------
| Transaction Handler
|--------------------------------------------------------------------------
|
| By default the import is wrapped in a transaction. This is useful
| for when an import may fail and you want to retry it. With the
| transactions, the previous import gets rolled-back.
|
| You can disable the transaction handler by setting this to null.
| Or you can choose a custom made transaction handler here.
|
| Supported handlers: null|db
|
*/
'transactions' => [
'handler' => 'db',
],
'temporary_files' => [
/*
|--------------------------------------------------------------------------
| Local Temporary Path
|--------------------------------------------------------------------------
|
| When exporting and importing files, we use a temporary file, before
| storing reading or downloading. Here you can customize that path.
|
*/
'local_path' => storage_path('framework/cache/laravel-excel'),
/*
|--------------------------------------------------------------------------
| Remote Temporary Disk
|--------------------------------------------------------------------------
|
| When dealing with a multi server setup with queues in which you
| cannot rely on having a shared local temporary path, you might
| want to store the temporary file on a shared disk. During the
| queue executing, we'll retrieve the temporary file from that
| location instead. When left to null, it will always use
| the local path. This setting only has effect when using
| in conjunction with queued imports and exports.
|
*/
'remote_disk' => null,
'remote_prefix' => null,
/*
|--------------------------------------------------------------------------
| Force Resync
|--------------------------------------------------------------------------
|
| When dealing with a multi server setup as above, it's possible
| for the clean up that occurs after entire queue has been run to only
| cleanup the server that the last AfterImportJob runs on. The rest of the server
| would still have the local temporary file stored on it. In this case your
| local storage limits can be exceeded and future imports won't be processed.
| To mitigate this you can set this config value to be true, so that after every
| queued chunk is processed the local temporary file is deleted on the server that
| processed it.
|
*/
'force_resync_remote' => null,
],
];
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

+3178 -1865
View File
File diff suppressed because it is too large Load Diff
+25 -20
View File
@@ -1,23 +1,20 @@
<template>
<div class="container">
<button class="bg-white hover:bg-gray-200 text-black text-center py-2 px-4 rounded"><router-link
to="/akaunhome">
Kembali
</router-link>
</button>
<div class="h-full">
<div class="flex">
<div class="w-2/5 p-8">
<span class="text-xl font-semibold block">Ansuran</span>
<span class="text-gray-600">Pilihan tarikh untuk melihat setiap Ansuran bagi pilihan bulan</span>
</div>
<div class="w-3/5 p-8">
<form method="get" id="formansuran" :action="Urlredirect()">
<div class="flex w-screen">
<div class="w-1/3 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 Ansuran</span>
</div>
<form method="get" id="formansuran" :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="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="datetimepicker1" 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>
@@ -28,23 +25,31 @@
</form>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data(){
return{
jenisgenerate:'none'
}
},
methods: {
generatepdf: function(){
console.log('generatepdf')
async generatepdf(){
await this.setJenis('pdf');
document.getElementById("formansuran").submit();
},
generateview: function(){
async generateview(){
await this.setJenis('view');
document.getElementById("formansuran").submit();
},
Urlredirect: function() {
return window.route('cetak.imbangduga')
},
return window.route('cetak.ansuran')
},
setJenis: function(value){
return this.jenisgenerate = value;
}
}
}
+25 -19
View File
@@ -1,25 +1,22 @@
<template>
<div class="container">
<button class="bg-white hover:bg-gray-200 text-black text-center py-2 px-4 rounded"><router-link
to="/akaunhome">
Kembali
</router-link>
</button>
<div class="h-full">
<div class="flex">
<div class="w-2/5 p-8">
<span class="text-xl font-semibold block">Gadaian</span>
<span class="text-gray-600">Pilihan tarikh untuk melihat setiap imbangduga bagi pilihan bulan</span>
<div class="flex w-screen">
<div class="w-1/3 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 Gadaian</span>
</div>
<div class="w-3/5 p-8">
<form method="get" id="formgadaian" :action="Urlredirect()">
<form method="get" id="formgadaian" :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="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="datetimepicker1" class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2" type="date" />
<input id="tarikhmula" name="datetarikh" 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>
@@ -28,23 +25,32 @@
</form>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data(){
return{
jenisgenerate:'none'
}
},
methods: {
generatepdf: function(){
console.log('generatepdf')
async generatepdf(){
await this.setJenis('pdf');
document.getElementById("formgadaian").submit();
},
generateview: function(){
async generateview(){
await this.setJenis('view');
document.getElementById("formgadaian").submit();
},
Urlredirect: function() {
return window.route('cetak.imbangduga')
},
return window.route('cetak.gadaian')
},
setJenis: function(value){
return this.jenisgenerate = value;
}
}
}
+28 -22
View File
@@ -1,56 +1,62 @@
<template>
<div class="mx-auto content-center flex justify-center items-center">
<div class="bg-white shadow px-6 py-4 border border-solid rounded-lg w-1/6 mr-3 hover:bg-yellow-300 hover:transition-all cursor-pointer">
<router-link to="/akaunhome/imbangduga">
<img src="/img/balance-sheet.png" alt="Windster Logo">
<h2 class="mx-auto text-center font-bold text-2xl mt-4 uppercase">Imbang Duga</h2>
</router-link>
</div>
<div class="grid grid-rows-1">
<div class="grid grid-cols-2 gap-1 mx-auto">
<div class="bg-white 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/imbangduga">
<img src="/img/balance-sheet.png" class="h-20 w-20 mx-auto" alt="Windster Logo">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Imbang Duga</h2>
</router-link>
</div>
<div class="bg-white shadow px-6 py-4 border border-solid rounded-lg w-1/6 hover:bg-yellow-300 hover:transition-all cursor-pointer">
<router-link to="/akaunhome/lejeram">
<img src="/img/ledger.png" alt="Windster Logo">
<h2 class="mx-auto text-center font-bold text-2xl mt-4 uppercase">Lejer Am</h2>
</router-link>
</div>
<div class="bg-white 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/lejeram">
<img src="/img/ledger.png" class="h-20 w-20 mx-auto" alt="Windster Logo">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Lejer Am</h2>
</router-link>
</div>
</div>
<br>
<div class="ml-3">
<div class="bg-white shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<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/gadaian">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Gadaian</h2>
</router-link>
</div>
<div class="bg-white shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<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/penebusan">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Penebusan</h2>
</router-link>
</div>
<div class="bg-white shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<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/Pendahuluanserahan">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Pendahuluan & Serahan</h2>
</router-link>
</div>
<div class="bg-white shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<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/Tuntutbaki">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Tuntut Baki</h2>
</router-link>
</div>
</div>
<div class="ml-3">
<div class="bg-white shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<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/ansuran">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Ansuran</h2>
</router-link>
</div>
<div class="bg-white shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<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/upah">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Upah</h2>
</router-link>
</div>
</div>
</div>
</div>
</template>
+24 -18
View File
@@ -1,23 +1,21 @@
<template>
<div class="container">
<button class="bg-white hover:bg-gray-200 text-black text-center py-2 px-4 rounded"><router-link
to="/akaunhome">
Kembali
</router-link>
</button>
<div class="h-full">
<div class="flex">
<div class="w-2/5 p-8">
<span class="text-xl font-semibold block">Imbang Duga</span>
<span class="text-gray-600">Pilihan tarikh untuk melihat setiap imbangduga bagi pilihan bulan</span>
</div>
<div class="w-3/5 p-8">
<div class="flex w-screen">
<div class="w-1/3 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 Imbang Duga</span>
</div>
<form method="get" id="formimbangduga" :action="Urlredirect()">
<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="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="datetimepicker1" 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>
@@ -28,23 +26,31 @@
</form>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data(){
return{
jenisgenerate:'none'
}
},
methods: {
generatepdf: function(){
console.log('generatepdf')
async generatepdf(){
await this.setJenis('pdf');
document.getElementById("formimbangduga").submit();
},
generateview: function(){
async generateview(){
await this.setJenis('view');
document.getElementById("formimbangduga").submit();
},
Urlredirect: function() {
return window.route('cetak.imbangduga')
},
},
setJenis: function(value){
return this.jenisgenerate = value;
}
}
}
+27 -22
View File
@@ -1,27 +1,26 @@
<template>
<div class="container">
<button class="bg-white hover:bg-gray-200 text-black text-center py-2 px-4 rounded"><router-link
to="/akaunhome">
Kembali
</router-link>
</button>
<div class="h-full">
<div class="flex">
<div class="w-2/6 p-8">
<span class="text-xl font-semibold block">Lejer Am</span>
<span class="text-gray-600">Pilihan tarikh untuk melihat setiap lejeram bagi pilihan hari</span>
</div>
<div class="w-4/6 p-8">
<div class="flex w-screen">
<div class="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 Lejer Am</span>
</div>
<form method="get" id="formlejeram" target="_blank" :action="Urlredirect()">
<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">
<div class="flex place-content-center mb-2">
<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="datemula" class="border border-2 border-l-0 rounded-r px-4 py-2 mr-2" type="date" />
<span style="background-color: #F9FAFB" class="text-gray-600 border border-2 rounded-l px-4 py-2 whitespace-no-wrap">Hingga</span>
<input id="tarikhakhir" name="datehingga" class="border border-2 border-l-0 rounded-r px-4 py-2 mr-2" type="date" />
</div>
<div class="flex justify-end mt-10">
<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>
@@ -30,25 +29,31 @@
</form>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
// data: function(){
// return ''
// },
data(){
return{
jenisgenerate:'none'
}
},
methods: {
generatepdf: function(){
console.log('generatepdf')
async generatepdf(){
await this.setJenis('pdf');
document.getElementById("formlejeram").submit();
},
generateview: function(){
async generateview(){
await this.setJenis('view');
document.getElementById("formlejeram").submit();
},
Urlredirect: function() {
return window.route('cetak.lejeram')
},
},
setJenis: function(value){
return this.jenisgenerate = value;
}
}
}
+61 -23
View File
@@ -1,50 +1,88 @@
<template>
<div class="container">
<button class="bg-white hover:bg-gray-200 text-black text-center py-2 px-4 rounded"><router-link
to="/akaunhome">
Kembali
</router-link>
</button>
<div class="h-full">
<div class="flex">
<div class="w-2/5 p-8">
<span class="text-xl font-semibold block">Pendahuluan Dan Serahan</span>
<span class="text-gray-600">Pilihan tarikh untuk melihat setiap imbangduga bagi pilihan bulan</span>
<div class="flex w-screen">
<div class="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 Pendahuluan & Serahan</span>
</div>
<div class="w-3/5 p-8">
<form method="get" id="formpendser" :action="Urlredirect()">
<form method="get" id="formpendser" :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">
<!-- <label for="username" class="font-semibold text-gray-700 block pb-1">Tarikh</label> -->
<div class="flex place-content-center mb-2">
<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="datetimepicker1" class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2" type="date" />
<input id="tarikhmula" name="datemula" class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2" type="date" />
<span style="background-color: #F9FAFB" class="text-gray-600 border border-2 rounded-l px-4 py-2 whitespace-no-wrap">Hingga</span>
<input id="tarikhmula" name="datehingga" class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2" type="date" />
</div>
</div>
<div class="flex justify-center mb-4">
<div class="mx-2 radio">
<input type="radio" id="pendahuluan" name="radpendser" value="pendahuluan" class="hidden focus:bg-gray-500" v-model="selected">
<label for="pendahuluan" 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">Pendahuluan</label>
</div>
<div class="mx-2 radio cursor-pointer">
<input type="radio" id="serahan" name="radpendser" value="serahan" class="hidden focus:bg-gray-500" v-model="selected">
<label for="serahan" 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">Serahan</label>
</div>
<div class="mx-2 radio cursor-pointer">
<input type="radio" id="online" name="radpendser" value="online" class="hidden focus:bg-gray-500" v-model="selected">
<label for="online" 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">Serahan Online</label>
</div>
</div>
<div class="flex justify-end mt-10">
<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>
</div>
</template>
<style>
.radio input:checked + label{
border-color:#F6D860;
background-color:#FFF1BD;
outline:none;
}
</style>
<script>
export default {
data(){
return{
jenisgenerate:'none',
selected:''
}
},
methods: {
generatepdf: function(){
console.log('generatepdf')
async generatepdf(){
await this.setJenis('pdf');
document.getElementById("formpendser").submit();
},
generateview: function(){
async generateview(){
await this.setJenis('view');
document.getElementById("formpendser").submit();
},
Urlredirect: function() {
return window.route('cetak.imbangduga')
},
return window.route('cetak.pendser')
},
setJenis: function(value){
return this.jenisgenerate = value;
}
}
}
+28 -21
View File
@@ -1,25 +1,24 @@
<template>
<div class="container">
<button class="bg-white hover:bg-gray-200 text-black text-center py-2 px-4 rounded"><router-link
to="/akaunhome">
Kembali
</router-link>
</button>
<div class="h-full">
<div class="flex">
<div class="w-2/5 p-8">
<span class="text-xl font-semibold block">Penebusan</span>
<span class="text-gray-600">Pilihan tarikh untuk melihat setiap imbangduga bagi pilihan bulan</span>
</div>
<div class="w-3/5 p-8">
<form method="get" id="formpenebusan" :action="Urlredirect()">
<div class="flex w-screen">
<div class="w-1/3 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 Penebusan</span>
</div>
<form method="get" id="formpenebusan" :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="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="datetimepicker1" class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2" type="date" />
<input id="tarikhmula" name="datetarikh" 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>
@@ -29,22 +28,30 @@
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data(){
return{
jenisgenerate:'none'
}
},
methods: {
generatepdf: function(){
console.log('generatepdf')
async generatepdf(){
await this.setJenis('pdf');
document.getElementById("formpenebusan").submit();
},
generateview: function(){
async generateview(){
await this.setJenis('view');
document.getElementById("formpenebusan").submit();
},
Urlredirect: function() {
return window.route('cetak.imbangduga')
},
return window.route('cetak.penebusan')
},
setJenis: function(value){
return this.jenisgenerate = value;
}
}
}
+26 -20
View File
@@ -1,23 +1,21 @@
<template>
<div class="container">
<button class="bg-white hover:bg-gray-200 text-black text-center py-2 px-4 rounded"><router-link
to="/akaunhome">
Kembali
</router-link>
</button>
<div class="h-full">
<div class="flex">
<div class="w-2/5 p-8">
<span class="text-xl font-semibold block">Tuntut Baki</span>
<span class="text-gray-600">Pilihan tarikh untuk melihat setiap imbangduga bagi pilihan bulan</span>
</div>
<div class="w-3/5 p-8">
<form method="get" id="formtuntutbaki" :action="Urlredirect()">
<div class="flex w-screen">
<div class="w-1/3 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 Tuntut Baki</span>
</div>
<form method="get" id="formtuntutbaki" :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="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="datetimepicker1" 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>
@@ -28,23 +26,31 @@
</form>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data(){
return{
jenisgenerate:'none'
}
},
methods: {
generatepdf: function(){
console.log('generatepdf')
async generatepdf(){
await this.setJenis('pdf');
document.getElementById("formtuntutbaki").submit();
},
generateview: function(){
async generateview(){
await this.setJenis('view');
document.getElementById("formtuntutbaki").submit();
},
Urlredirect: function() {
return window.route('cetak.imbangduga')
},
return window.route('cetak.tuntutbaki')
},
setJenis: function(value){
return this.jenisgenerate = value;
}
}
}
+34 -24
View File
@@ -1,50 +1,60 @@
<template>
<div class="container">
<button class="bg-white hover:bg-gray-200 text-black text-center py-2 px-4 rounded"><router-link
to="/akaunhome">
Kembali
</router-link>
</button>
<div class="h-full">
<div class="flex">
<div class="w-2/5 p-8">
<span class="text-xl font-semibold block">Upah</span>
<span class="text-gray-600">Pilihan tarikh untuk melihat setiap imbangduga bagi pilihan bulan</span>
</div>
<div class="w-3/5 p-8">
<form method="get" id="formupah" :action="Urlredirect()">
<div class="flex w-screen">
<div class="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 Upah</span>
</div>
<form method="get" id="formupah" :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">
<div class="flex justify-center mb-4">
<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="datetimepicker1" class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2" type="date" />
<input id="tarikhmula" name="datemula" class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2" type="date" />
<span style="background-color: #F9FAFB" class="text-gray-600 border border-2 rounded-l px-4 py-2 whitespace-no-wrap">Hingga</span>
<input id="tarikhhingga" name="datehingga" class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2" type="date" />
</div>
</div>
<div class="flex justify-end mt-10">
<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>
</div>
</template>
<script>
export default {
data(){
return{
jenisgenerate:'none'
}
},
methods: {
generatepdf: function(){
console.log('generatepdf')
async generatepdf(){
await this.setJenis('pdf');
document.getElementById("formupah").submit();
},
generateview: function(){
async generateview(){
await this.setJenis('view');
document.getElementById("formupah").submit();
},
Urlredirect: function() {
return window.route('cetak.imbangduga')
},
return window.route('cetak.upah')
},
setJenis: function(value){
return this.jenisgenerate = value;
}
}
}
+119 -26
View File
@@ -10,108 +10,111 @@
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
Januari
</label>
<input v-model="nilaijanuari" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilaijanuari.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilaijanuari.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilaijanuari.required">Field is required</div>
</div>
<div class="w-full px-3 mb-4">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
Februari
</label>
<input v-model="nilaifebruari" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilaifebruari.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilaifebruari.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilaifebruari.required"> Field is required</div>
</div>
<div class="w-full px-3 mb-4">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
Mac
</label>
<input v-model="nilaimarch" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilaimarch.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilaimarch.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilaimarch.required"> Field is required</div>
</div>
<div class="w-full px-3 mb-4">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
April
</label>
<input v-model="nilaiapril" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilaiapril.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilaiapril.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilaiapril.required">Field is required</div>
</div>
<div class="w-full px-3 mb-4">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
Mei
</label>
<input v-model="nilaimei" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilaimei.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilaimei.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilaimei.required">Field is required</div>
</div>
<div class="w-full px-3 mb-4">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
Jun
</label>
<input v-model="nilaijun" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilaijun.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilaijun.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilaijun.required">Field is required</div>
</div>
<div class="w-full px-3 mb-4">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
Julai
</label>
<input v-model="nilaijulai" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilaijulai.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilaijulai.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilaijulai.required">Field is required</div>
</div>
<div class="w-full px-3 mb-4">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
Ogos
</label>
<input v-model="nilaiogos" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilaiogos.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilaiogos.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilaiogos.required">Field is required</div>
</div>
<div class="w-full px-3 mb-4">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
September
</label>
<input v-model="nilaiseptember" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilaiseptember.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilaiseptember.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilaiseptember.required">Field is required</div>
</div>
<div class="w-full px-3 mb-4">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
Oktober
</label>
<input v-model="nilaioktober" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilaioktober.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilaioktober.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilaioktober.required">Field is required</div>
</div>
<div class="w-full px-3 mb-4">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
November
</label>
<input v-model="nilainovember" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilainovember.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilainovember.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilainovember.required">Field is required</div>
</div>
<div class="w-full px-3 mb-4">
<label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2">
Disember
</label>
<input v-model="nilaidisember" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic">Field is required</div>
<input v-model.trim="$v.nilaidisember.$model" :class="{ 'border border-red-500 focus:border-red-500': $v.nilaidisember.$error }" class="appearance-none block w-full bg-white-200 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500">
<div class="text-red-500 text-xs italic" v-if="!$v.nilaidisember.required">Field is required</div>
</div>
</div>
<div class="flex justify-end">
<button class="bg-blue-500 text-white active:bg-lightBlue-600 font-bold uppercase text-sm px-6 py-3 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150" type="button">
Kemaskini
<span v-if="submitStatus === 'PENDING'"><i class="animate-spin fas fa-spinner mr-2"></i>Loading..</span>
<span v-else @click="submit">Kemaskini</span>
</button>
</div>
</div>
</template>
<script>
import { required, minLength, between } from 'vuelidate/lib/validators'
export default {
data(){
@@ -127,7 +130,8 @@ export default {
nilaiseptember:0,
nilaioktober:0,
nilainovember:0,
nilaidisember:0
nilaidisember:0,
submitStatus:''
}
},
created(){
@@ -156,6 +160,95 @@ export default {
})
},
submit() {
console.log('submit!')
this.$v.$touch()
if (this.$v.$invalid) {
this.$toast.error('Sila isi butiran yang disediakan dengan betul!')
} else {
// do your submit logic here
this.submitStatus = 'PENDING'
let result = this.PostData()
let pro1 = Promise.resolve(result)
let self = this
pro1.then(function(response) {
if(response.data == 1)
{
setTimeout(() => {
self.submitStatus = 'OK'
self.$toast.success('Berjaya dikemaskini!')
self.$router.go(-1)
}, 500)
}else{
self.$toast.error('Error occured')
}
}, function(e) {
console.error(e); // TypeError: Throwing
});
}
},
async PostData(){
let response = await this.axios.put('http://localhost:8000/admin/kemaskiniBajet',
{
bajetid: this.$route.params.id,
bajetjanuari: this.nilaijanuari,
bajetfebruari: this.nilaifebruari,
bajetmarch: this.nilaimarch,
bajetapril: this.nilaiapril,
bajetmei: this.nilaimei,
bajetjun: this.nilaijun,
bajetjulai: this.nilaijulai,
bajetogos: this.nilaiogos,
bajetseptember: this.nilaiseptember,
bajetoktober: this.nilaioktober,
bajetnovember: this.nilainovember,
bajetdisember: this.nilaidisember
});
return response
}
},
validations: {
nilaijanuari: {
required
},
nilaifebruari: {
required
},
nilaimarch: {
required
},
nilaiapril: {
required
},
nilaimei: {
required
},
nilaijun: {
required
},
nilaijulai: {
required
},
nilaiogos: {
required
},
nilaiseptember: {
required
},
nilaioktober: {
required
},
nilainovember: {
required
},
nilaidisember: {
required
}
}
}
+5 -1
View File
@@ -51,7 +51,7 @@ Vue.use(datetime)
Alpine.start()
Vue.use(require('vue-pusher'), {
api_key: 'd95a6bc6ba2885c5f267',
api_key: '26b0ec2f297f94b7aa9b',
options: {
cluster: 'ap1',
encrypted: true,
@@ -78,9 +78,13 @@ Vue.component('online-component', require('./Online/Online.vue').default)
Vue.component('details-pelanggan', require('./pages/Detailspelanggan.vue').default)
Vue.component('blacklist-pelanggan', require('./pages/Blacklist.vue').default)
Vue.component('harian-component', require('./components/Analisa/Harian.vue').default)
Vue.component('senaraibajet-component', require('./Bajet/Homebajet.vue').default)
Vue.component('clock-component', require('./components/util/Clock.vue').default)
@@ -0,0 +1,200 @@
<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">
<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" style="width: 75%"> 75%</div>
</div>
<div class="w-1/4 grid grid-rows-2">
<span class="text-sm ml-2 font-bold -mt-0.5">RM 3,066,460.00</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/4">
<span class="text-sm leading-none font-bold text-gray-700"><i class="fas fa-calendar-day"></i> RM {{ gadaianharian }}</span>
<span class="text-sm leading-none font-bold text-yellow-900"><i class="fas fa-chart-pie"></i> RM {{ bajetgadaian }} </span>
</div>
<div class="ml-4 text-center w-1/3">
<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">Disember </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">
<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">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18 12H6" />
</svg>
</h3>
<h3 v-else 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>
</div>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8 ">
<div class="flex items-center">
<div class="flex-shrink-0">
<span class="text-2xl sm:text-3xl leading-none font-bold text-gray-900">RM {{ penebusanharian }} / RM {{ bajetpenebusan }}</span>
<h3 class="text-base font-normal text-gray-500">Penebusan Hari Ini</h3>
</div>
<div v-if="percentpenebusan > 0" class="ml-5 w-0 flex items-center justify-end flex-1 text-green-500 text-base font-bold">
{{ 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>
</div>
<div v-if="percentpenebusan == 0" class="ml-5 w-0 flex items-center justify-end flex-1 text-yellow-500 text-base font-bold">
{{ 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>
</div>
<div v-else class="ml-5 w-0 flex items-center justify-end flex-1 text-red-500 text-base font-bold">
{{ 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>
</div>
</div>
</div>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8 ">
<div class="flex items-center">
<div class="flex-shrink-0">
<span class="text-2xl sm:text-3xl leading-none font-bold text-gray-900">RM {{ keuntunganharian }} / RM {{ bajetkeuntungan }}</span>
<h3 class="text-base font-normal text-gray-500">Keuntungan Hari Ini</h3>
</div>
<div v-if="percentkeuntungan > 0" class="ml-5 w-0 flex items-center justify-end flex-1 text-green-500 text-base font-bold">
{{ 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>
</div>
<div v-if="percentkeuntungan == 0" class="ml-5 w-0 flex items-center justify-end flex-1 text-yellow-500 text-base font-bold">
{{ 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>
</div>
<div v-else class="ml-5 w-0 flex items-center justify-end flex-1 text-red-500 text-base font-bold">
{{ 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>
</div>
</div>
</div>
</div>
</template>
<script>
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
});
export default {
props:{
kodcaw: String
},
data() {
return {
keuntunganharian:0,
bajetkeuntungan:0,
percentkeuntungan:0,
penebusanharian:0,
bajetpenebusan:0,
percentpenebusan:0,
gadaianharian:0,
bajetgadai:0,
percentgadaian:0
};
},
created() {
this.getDataPembiayaan()
this.getDataPenebusan()
this.getDataKeuntungan()
},
methods: {
getDataPembiayaan() {
this.axios.get('http://localhost:8000/admin/pembiayaanToday', {
params: {
kodcaw: this.$props.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
}).catch(error => {
console.log(error)
})
},
getDataPenebusan(){
this.axios.get('http://localhost:8000/admin/penebusanToday', {
params: {
kodcaw: this.$props.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
}).catch(error => {
console.log(error)
})
},
getDataKeuntungan(){
this.axios.get('http://localhost:8000/admin/keuntunganToday', {
params: {
kodcaw: this.$props.kodcaw
}
}).then(response => {
this.keuntunganharian = formatter.format(response.data[0].upahToday)
this.bajetkeuntungan = formatter.format(response.data[0].bajetharian.toFixed(2))
this.percentkeuntungan = response.data[0].percentDiff
}).catch(error => {
console.log(error)
})
}
},
mounted () {
var channel = this.$pusher.subscribe('gadai-notify');
channel.bind('trigger-gadai', ({ response }) => {
// console.log(`${response}`);
this.getDataPembiayaan()
});
var channel = this.$pusher.subscribe('tebus-notify');
channel.bind('trigger-tebus', ({ response }) => {
// console.log(`${response}`);
this.getDataPenebusan()
});
var channel = this.$pusher.subscribe('keuntungan-notify');
channel.bind('trigger-keuntungan', ({ response }) => {
// console.log(`${response}`);
this.getDataKeuntungan()
});
}
}
</script>
+151 -81
View File
@@ -1,86 +1,142 @@
<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 ">
<h3 class="text-2xl font-bold text-gray-500 flex items-center mx-auto">Pembiayaan</h3>
<div class="flex items-center">
<div class="grid grid-rows-3">
<span class="text-2xl sm:text-xl leading-none font-bold text-gray-900">BULAN : RM {{ gadaianharian }}</span>
<span class="text-2xl sm:text-xl leading-none font-bold text-gray-900">HARI INI : RM {{ gadaianharian }}</span>
<span class="text-2xl sm:text-xl leading-none font-bold text-gray-900">BAJET : RM {{ bajetgadaian }}</span>
<span class="text-2xl sm:text-xl leading-none font-bold text-gray-900">VARIANS : RM {{ bajetgadaian }}</span>
<div class="bg-white shadow rounded-lg p-4 sm:p-6 xl:p-8">
</div>
<div v-if="percentgadaian > 0" class="ml-5 w-0 flex items-center justify-end flex-1 text-green-500 text-base font-bold">
{{ 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>
</div>
<div v-if="percentgadaian == 0" class="ml-5 w-0 flex items-center justify-end flex-1 text-yellow-500 text-base font-bold">
{{ 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">
<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="w-1/4 grid grid-rows-2">
<span class="text-sm ml-2 font-bold -mt-0.5">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/4">
<span class="text-sm leading-none font-bold text-gray-700"><i class="fas fa-calendar-day"></i> RM {{ gadaianharian }}</span>
<span class="text-sm leading-none font-bold text-yellow-900"><i class="fas fa-chart-pie"></i> RM {{ bajetgadaian }} </span>
</div>
<div class="ml-4 text-center w-1/3">
<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">
<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">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18 12H6" />
</svg>
</div>
<div v-else class="ml-5 w-0 flex items-center justify-end flex-1 text-red-500 text-base font-bold">
{{ 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-else 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>
</div>
</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 ">
<div class="flex items-center">
<div class="flex-shrink-0">
<span class="text-2xl sm:text-3xl leading-none font-bold text-gray-900">RM {{ penebusanharian }} / RM {{ bajetpenebusan }}</span>
<h3 class="text-base font-normal text-gray-500">Penebusan Hari Ini</h3>
</div>
<div v-if="percentpenebusan > 0" class="ml-5 w-0 flex items-center justify-end flex-1 text-green-500 text-base font-bold">
{{ 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>
</div>
<div v-if="percentpenebusan == 0" class="ml-5 w-0 flex items-center justify-end flex-1 text-yellow-500 text-base font-bold">
{{ 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">
<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="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/4">
<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>
<div class="ml-4 text-center w-1/3">
<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">
<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">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18 12H6" />
</svg>
</div>
<div v-else class="ml-5 w-0 flex items-center justify-end flex-1 text-red-500 text-base font-bold">
{{ 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-else 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>
</div>
</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 ">
<div class="flex items-center">
<div class="flex-shrink-0">
<span class="text-2xl sm:text-3xl leading-none font-bold text-gray-900">RM {{ keuntunganharian }} / RM {{ bajetkeuntungan }}</span>
<h3 class="text-base font-normal text-gray-500">Keuntungan Hari Ini</h3>
</div>
<div v-if="percentkeuntungan > 0" class="ml-5 w-0 flex items-center justify-end flex-1 text-green-500 text-base font-bold">
{{ 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>
</div>
<div v-if="percentkeuntungan == 0" class="ml-5 w-0 flex items-center justify-end flex-1 text-yellow-500 text-base font-bold">
{{ 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">
<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="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>
<div class="flex pt-2 -mt-2">
<div class="grid grid-rows-2 ml-1 mt-2 w-1/4">
<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>
<div class="ml-4 text-center w-1/3">
<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>
</div>
<div v-else class="ml-5 w-0 flex items-center justify-end flex-1 text-red-500 text-base font-bold">
{{ percentkeuntungan.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-else 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>
</div>
</div>
</svg>
</h3>
<span class="text-xs leading-none font-bold text-gray-900 ml-4">Varians.</span>
</div>
</div>
</div>
</div>
</template>
@@ -100,12 +156,19 @@ export default {
keuntunganharian:0,
bajetkeuntungan:0,
percentkeuntungan:0,
keuntunganremaining:0,
percentcumkeuntungan:0,
penebusanharian:0,
bajetpenebusan:0,
percentpenebusan:0,
tebusremaining:0,
percentcumtebus:0,
gadaianharian:0,
bajetgadai:0,
percentgadaian:0
gadaianremaining:0,
bajetgadaian:0,
percentgadaian:0,
percentcumgadai:0,
bulan:'',
};
},
created() {
@@ -120,9 +183,12 @@ export default {
kodcaw: this.$props.kodcaw
}
}).then(response => {
this.gadaianharian = formatter.format(response.data[0].gadaiToday)
this.bajetgadaian = formatter.format(response.data[0].bajetharian)
this.percentgadaian = response.data[0].percentDiff
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)
}).catch(error => {
console.log(error)
})
@@ -133,9 +199,11 @@ export default {
kodcaw: this.$props.kodcaw
}
}).then(response => {
this.penebusanharian = formatter.format(response.data[0].tebusToday)
this.bajetpenebusan = formatter.format(response.data[0].bajetharian)
this.percentpenebusan = response.data[0].percentDiff
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)
}).catch(error => {
console.log(error)
})
@@ -146,9 +214,11 @@ export default {
kodcaw: this.$props.kodcaw
}
}).then(response => {
this.keuntunganharian = formatter.format(response.data[0].upahToday)
this.bajetkeuntungan = formatter.format(response.data[0].bajetharian)
this.percentkeuntungan = response.data[0].percentDiff
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)
}).catch(error => {
console.log(error)
})
@@ -112,6 +112,13 @@ export default {
console.log(`${response}`);
this.getDatakeuntungan()
});
var channel2 = this.$pusher.subscribe('tebus-notify');
channel2.bind('trigger-tebus', ({ response }) => {
console.log(`${response}`);
this.getDatakeuntungan()
});
}
}
+2 -3
View File
@@ -135,14 +135,13 @@ export default{
// window.location.href = route('admin.detailspelanggan', options.cust);
// return route('admin.detailspelanggan', options.cust)
return window.route('pelanggan.detailspelanggan', options.cust)
return window.route('pelanggan.detailspelanggan', options.cust)
},
ClickUrl: function(e){
window.location.href = e.target.getAttribute('href');
}
}
}
+42
View File
@@ -0,0 +1,42 @@
<template>
<p class="font-bold text-base text-center">{{ time }} {{ date }} </p>
</template>
<script>
var week = ['AHAD', 'ISNIN', 'SELASA', 'RABU', 'KHAMIS', 'JUMAAT', 'SABTU'];
export default {
data(){
return{
time:'',
date:''
}
},
created(){
setInterval(this.updateTime, 1000);
},
methods: {
updateTime: function() {
var cd = new Date();
var ampm = cd.getHours() >= 12 ? 'PM' : 'AM';
let hours = cd.getHours();
let minutes = cd.getMinutes();
hours = hours % 12;
hours = hours ? hours : 12;
minutes = minutes < 10 ? '0'+ minutes : minutes;
this.time = this.zeroPadding(hours, 2) + ':' + this.zeroPadding(minutes, 2) + ampm;
this.date = this.zeroPadding(cd.getDate(), 2) + '-' + this.zeroPadding(cd.getMonth()+1, 2) + '-' + this.zeroPadding(cd.getFullYear(), 4) + ' ' + week[cd.getDay()];
},
zeroPadding: function(num, digit) {
var zero = '';
for(var i = 0; i < digit; i++) {
zero += '0';
}
return (zero + num).slice(-digit);
}
}
}
</script>
+8
View File
@@ -0,0 +1,8 @@
<template>
</template>
<script>
export default {
}
</script>
@@ -0,0 +1,375 @@
<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;
}
#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;
}
#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;
}
#details {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 50%;
}
#details td, #details th {
padding: 8px;
font-size:11px;
}
.signature{ float: left; }
.signature{
margin: 20px 30px;
border-top: 1px solid #000;
border-top-style: dotted;
border-spacing: 200px;
width: 200px;
text-align: center;
}
#details tr:nth-child(even){background-color: #ffffff;}
#details tr:hover {background-color: #ffffff;}
#details th {
padding-top: 12px;
font-style:bold;
padding-bottom: 12px;
text-align: left;
padding:4px;
color:black;
}
#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;
}
#title {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 50%;
}
#title td, #title th {
padding:4px;
font-size:12px;
border: 0px solid #fff;
}
#title tr:nth-child(even){background-color: #ffffff;}
#title tr:hover {background-color: #ddd;}
#title th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding:4px;
color:black;
}
#details {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width:80%;
}
#details td, #details th {
padding:4px;
font-size:12px;
border: 0px solid #ddd;
}
#details tr:nth-child(even){background-color: #ffffff;}
#details tr:hover {background-color: #ddd;}
#details th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding:4px;
color:black;
}
#title {
font-family: Arial, Helvetica, sans-serif;
width:95%;
}
#title td, #title th {
padding:4px;
font-size:12px;
}
#title tr:nth-child(even){background-color: #ffffff;}
#title tr:hover {background-color: #ddd;}
#title th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding:4px;
color:black;
}
.tarikhcetak{
margin-bottom:20px;
padding:2px;
font-family: Arial, Helvetica, sans-serif;
color:black;
font-size:12px;
text-align:left;
}
#tarikh_cetak {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width:50%;
}
#tarikh_cetak td, #tarikh_cetak th {
padding:4px;
font-size:12px;
}
#tarikh_cetak tr:nth-child(even){background-color: #ffffff;}
#tarikh_cetak tr:hover {background-color: #ddd;}
#tarikh_cetak th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
padding:4px;
color:black;
}
#glejer {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width:100%;
}
#glejer td {
padding:4px;
font-size:12px;
/* border: 1px solid #ddd; */
border-right:1px solid #000000;
border-left:1px solid #000000;
padding: 6px;
}
#glejer tr:nth-child(even){background-color: #ffffff;}
#glejer tr:hover {background-color: #ddd;}
#glejer th {
/* padding-top: 12px;
padding-bottom: 12px; */
background-color:#ecf0f1;
text-align: center;
padding:12px;
color:black;
font-size:12px;
border: 1px solid #000000;
margin:20px;
}
#glejer td:nth-child(1) {
text-align:center;
}
#glejer td:nth-child(3) {
text-align:right;
}
#glejer td:nth-child(4) {
text-align:right;
}
#glejer td:nth-child(5),#glejer td:nth-child(5) {
text-align:right;
}
</style>
<table id="title">
<td> <b><u>LEJER AM - {{ $cawangan_detail['namacaw'] }}</u></b></td>
</table>
<br>
<div class="tarikhcetak">
<span style="font-weight: bold;">[ TARIKH DARI : </span>
<span>@php
// $myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_mula);
// $tarikhmula = $myDateTime->format('d-m-Y');
echo($tarikh_mula)
@endphp</span>
<span style="font-weight: bold;"> ..... </span>
<span style="font-weight: bold;">HINGGA : </span><span>@php
// $myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_akhir);
// $tarikhakhir = $myDateTime->format('d-m-Y');
echo($tarikh_akhir)
@endphp<span style="font-weight:bold"> ]</span></span>
<span style="margin-left:50px;font-weight: bold;">TARIKH CETAK : </span><span>@php
// $myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak);
// $tarikh_cetak = $myDateTime->format('d-m-Y');
echo($tarikh_cetak)
@endphp</span>
</div>
<table id="glejer">
<tr>
<th>KOD GL</th>
<th colspan="2">KETERANGAN</th>
<th>DEBIT</th>
<th>KREDIT</th>
<th>JUMLAH</th>
</tr>
@foreach($lejeram as $index => $lejer)
<tr>
<td>{{ $lejer['glcode'] }}</td>
<td colspan="2">{{ $lejer['descpt'] }}</td>
<td>{{ number_format($lejer['debit'],2) }}</td>
<td>{{ number_format($lejer['kredit'],2) }}</td>
<td>@php $Totalsama = $lejer['debit'] - $lejer['kredit']; echo number_format($Totalsama,2); @endphp</td>
</tr>
@endforeach
<tr>
<th style="text-align:left;font-weight:700;"colspan="3">Jumlah: </th>
<th style="text-align:right;font-weight:700;">{{ number_format($totalsamadebit,2) }}</th>
<th style="text-align:right;font-weight:700;">{{ number_format($totalsamakredit,2) }}</th>
<th style="text-align:right;font-weight:700;">@php $Total = $totalsamadebit - $totalsamakredit; echo number_format($Total,2); @endphp</th>
</tr>
</table>
<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>
+8
View File
@@ -119,6 +119,14 @@
</div>
@auth
{{-- <a href="#" class="text-xl font-bold flex items-center lg:ml-2.5">
<img src="{{ asset('img/icon_pkb.png') }}" class="h-6 mr-2" alt="Windster Logo">
<span class="self-center whitespace-nowrap">Ar-Rahn</span>
</a> --}}
<clock-component></clock-component>
{{-- <clock-component></clock-component> --}}
{{-- <div class="mx-auto">
<a class="text-yellow-200 rounded bg-gray-400 px-6 py-3 font-bold mr-4">
CAWANGAN : {{ Auth::user()->cawangan }}
+13
View File
@@ -11,6 +11,8 @@
</div>
<hr>
{{-- <span class="text-sm ml-2 text-lg">Muhammad Hafifie</span> --}}
<p class="font-bold pl-5 pr-5 pt-5 pb-2 mt-5">Menu Utama</p>
<hr>
<div class="sidebara">
@@ -109,6 +111,17 @@
</li>
</a>
<a href="{{ route('blacklist') }}" class="rounded mb-2 mr-2 {{ Route::is('blacklist') || Route::is('blacklist.*') ? '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="M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636m12.728 12.728L5.636 5.636" />
</svg>
<span class="text-sm ml-2 text-lg">Blacklist</span>
</div>
</li>
</a>
@endif
@@ -0,0 +1,19 @@
@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' : 'Pelanggan', 'icon' : 'fas fa-users' },{ 'title' : 'Blacklist', 'icon' : 'fas fa-users' }]"></breadcrumb>
<blacklist-pelanggan></blacklist-pelanggan>
</div>
</main>
@include('layouts.footer')
</div>
@endsection
+5 -1
View File
@@ -32,11 +32,15 @@ Route::get('/akaunhome', [App\Http\Controllers\HomeController::class, 'indexakau
//Tunai
Route::get('alirantunai',['as'=>'alirantunai','uses'=>'App\Http\Controllers\AliranTunaiController@AdminAliranTunai'])->middleware('auth');
//Peti Besi
Route::get('petibesi',['as'=>'petibesi','uses'=>'App\Http\Controllers\PetiBesiController@AdminPetiBesi'])->middleware('auth');
//Pelanggan
Route::get('pelanggan',['as'=>'pelanggan','uses'=>'App\Http\Controllers\PelangganController@AdminPelanggan'])->middleware('auth');
Route::get('/pelanggan/{id}',['as'=>'pelanggan.detailspelanggan','uses'=>'App\Http\Controllers\PelangganController@DetailsPelanggan'])->middleware('auth');
Route::get('/blacklist',['as'=>'blacklist','uses'=>'App\Http\Controllers\PelangganController@DetailsBlacklist'])->middleware('auth');
//Kemaskini Aliran Tunai
Route::get('/periksaalirantunai',['as'=>'periksa.alirantunai','uses'=>'App\Http\Controllers\AliranTunaiController@periksaAliranTunai']);
@@ -59,7 +63,7 @@ Route::get('/akaunhome/cetaklaporanimbangduga',['as'=>'cetak.imbangduga','uses'=
Route::get('/akaunhome/cetakgadaian',['as'=>'cetak.gadaian','uses'=>'App\Http\Controllers\AkaunController@cetakLaporanGadai'])->middleware('auth');
Route::get('/akaunhome/cetakpenebusan',['as'=>'cetak.penebusan','uses'=>'App\Http\Controllers\AkaunController@cetakLaporanPenebusan'])->middleware('auth');
Route::get('/akaunhome/cetakansuran',['as'=>'cetak.ansuran','uses'=>'App\Http\Controllers\AkaunController@cetakLaporanAnsuran'])->middleware('auth');
Route::get('/akaunhome/cetakupah',['as'=>'cetak.upah','uses'=>'App\Http\Controllers\AkaunController@cetakimbangduga'])->middleware('auth');
Route::get('/akaunhome/cetakupah',['as'=>'cetak.upah','uses'=>'App\Http\Controllers\AkaunController@cetaklaporan_Upah'])->middleware('auth');
Route::get('/akaunhome/cetaktuntutbaki',['as'=>'cetak.tuntutbaki','uses'=>'App\Http\Controllers\AkaunController@cetaklaporan_tuntutbaki'])->middleware('auth');
Route::get('/akaunhome/cetakpendahuluanserahan',['as'=>'cetak.pendser','uses'=>'App\Http\Controllers\AkaunController@cetaklaporan_laporan_pendserahan'])->middleware('auth');