瀏覽代碼

fix: master transaction

Muhammad Iqbal Afandi 3 年之前
父節點
當前提交
088c762a2a

+ 12
- 50
app/Http/Controllers/TestTransactionController.php 查看文件

@@ -6,10 +6,9 @@ use App\Http\Controllers\Controller;
6 6
 use App\Http\Requests\TestTransaction\StoreTestTransactionRequest;
7 7
 use App\Models\EntryTransaction;
8 8
 use App\Models\OutTransaction;
9
-use App\Models\ParkingFee;
10 9
 use App\Models\TypeVehicle;
11 10
 use App\Models\Vehicle;
12
-use App\Services\Helper;
11
+use App\Services\ParkingFeeService;
13 12
 use Carbon\Carbon;
14 13
 use Illuminate\Database\QueryException;
15 14
 use Illuminate\Http\Request;
@@ -38,22 +37,12 @@ class TestTransactionController extends Controller
38 37
     {
39 38
         $entryTransactions = EntryTransaction::whereNotIn('transaction_number', OutTransaction::pluck('entry_transaction_id'))
40 39
             ->latest()
41
-            ->paginate(5)
40
+            ->paginate(10)
42 41
             ->withQueryString()
43 42
             ->through(fn($transactionIn) => [
44 43
                 'id' => $transactionIn->id,
45
-                'createdAt' => $transactionIn->created_at,
46
-                'transactionNumber' => $transactionIn->transaction_number,
47
-            ]);
48
-
49
-        $outTransactions = OutTransaction::latest()
50
-            ->paginate(5)
51
-            ->withQueryString()
52
-            ->through(fn($transactionOut) => [
53
-                'id' => $transactionOut->id,
54
-                'createdAt' => $transactionOut->created_at,
55
-                'platNumber' => $transactionOut->plat_number,
56
-                'entryTransactionId' => $transactionOut->entry_transaction_id,
44
+                'entryCar' => $transactionIn->created_at,
45
+                'transactionNumber' => $transactionIn->transaction_number
57 46
             ]);
58 47
 
59 48
         $typeVehicles = function () {
@@ -62,20 +51,19 @@ class TestTransactionController extends Controller
62 51
             if ($vehicle) {
63 52
                 return [[
64 53
                     'value' => $vehicle->typeVehicle->id,
65
-                    'label' => $vehicle->typeVehicle->type,
54
+                    'label' => $vehicle->typeVehicle->type
66 55
                 ]];
67 56
             } else {
68 57
                 return TypeVehicle::get()->transform(fn($typeVehicle) => [
69 58
                     'value' => $typeVehicle->id,
70
-                    'label' => $typeVehicle->type,
59
+                    'label' => $typeVehicle->type
71 60
                 ]);
72 61
             }
73 62
         };
74 63
 
75 64
         return inertia('test-transaction/Create.vue', compact([
76 65
             'entryTransactions',
77
-            'outTransactions',
78
-            'typeVehicles',
66
+            'typeVehicles'
79 67
         ]));
80 68
     }
81 69
 
@@ -106,12 +94,12 @@ class TestTransactionController extends Controller
106 94
                     'plat_number' => $request->plat_number,
107 95
                     'entry_transaction_id' => $request->entry_transaction_id,
108 96
                     'type_vehicle_id' => $vehicle->type_vehicle_id,
109
-                    'user_id' => auth()->user()->id,
97
+                    'user_id' => auth()->user()->id
110 98
                 ]);
111 99
 
112 100
                 return back()->with('success', __('messages.success.store.transaction'));
113 101
             } else {
114
-                /**
102
+                /*
115 103
                  * Pseudo code
116 104
                  *
117 105
                  * waktu_kendaraan_masuk
@@ -132,32 +120,6 @@ class TestTransactionController extends Controller
132 120
                  *
133 121
                  */
134 122
 
135
-                $parkingFee = ParkingFee::get();
136
-
137
-                $parkingTime = Helper::addPrevValue($parkingFee->pluck('time_period')->toArray());
138
-
139
-                $parkingPrice = Helper::addPrevValue($parkingFee->pluck('price')->toArray());
140
-
141
-                $entryTransaction = EntryTransaction::where('transaction_number', $request->entry_transaction_id)->first();
142
-
143
-                $vehicleEntryTime = $entryTransaction->getRawOriginal('created_at');
144
-
145
-                $longParkingPerHour = ceil(Carbon::parse($vehicleEntryTime)->floatDiffInRealHours(now()));
146
-
147
-                $totalParkingPerDay = $longParkingPerHour > 24 ? ceil($longParkingPerHour / 24) : 0;
148
-
149
-                $totalPriceParkingPerDay = $totalParkingPerDay * end($parkingPrice);
150
-
151
-                $totalPriceParkingToday = 0;
152
-
153
-                foreach ($parkingTime as $index => $time) {
154
-                    if ($time >= $longParkingPerHour) {
155
-                        $totalPriceParkingToday = $parkingPrice[$index];
156
-
157
-                        break;
158
-                    }
159
-                }
160
-
161 123
                 DB::beginTransaction();
162 124
 
163 125
                 try {
@@ -165,12 +127,12 @@ class TestTransactionController extends Controller
165 127
                         'plat_number' => $request->plat_number,
166 128
                         'entry_transaction_id' => $request->entry_transaction_id,
167 129
                         'type_vehicle_id' => $request->type_vehicle_id,
168
-                        'user_id' => auth()->user()->id,
130
+                        'user_id' => auth()->user()->id
169 131
                     ]);
170 132
 
171 133
                     $outTransaction->mutation()->create([
172 134
                         'type' => 1,
173
-                        'amount' => $totalParkingPerDay ? $totalPriceParkingPerDay : $totalPriceParkingToday,
135
+                        'amount' => ParkingFeeService::totalPriceParking($request->entry_transaction_id)
174 136
                     ]);
175 137
 
176 138
                     DB::commit();
@@ -184,7 +146,7 @@ class TestTransactionController extends Controller
184 146
             }
185 147
         } else {
186 148
             EntryTransaction::create([
187
-                'transaction_number' => Str::uuid(),
149
+                'transaction_number' => Str::uuid()
188 150
             ]);
189 151
 
190 152
             return back()->with('success', __('messages.success.store.transaction'));

+ 16
- 48
app/Http/Controllers/TransactionController.php 查看文件

@@ -3,12 +3,10 @@
3 3
 namespace App\Http\Controllers;
4 4
 
5 5
 use App\Http\Requests\Transaction\StoreTransactionRequest;
6
-use App\Models\EntryTransaction;
7 6
 use App\Models\OutTransaction;
8
-use App\Models\ParkingFee;
9 7
 use App\Models\TypeVehicle;
10 8
 use App\Models\Vehicle;
11
-use App\Services\Helper;
9
+use App\Services\ParkingFeeService;
12 10
 use Carbon\Carbon;
13 11
 use Illuminate\Database\QueryException;
14 12
 use Illuminate\Http\Request;
@@ -33,24 +31,21 @@ class TransactionController extends Controller
33 31
      */
34 32
     public function create()
35 33
     {
36
-        $entryTransactions = EntryTransaction::whereNotIn('transaction_number', OutTransaction::pluck('entry_transaction_id'))
37
-            ->latest()
38
-            ->get()
39
-            ->take(10)
40
-            ->transform(fn($transactionIn) => [
41
-                'id' => $transactionIn->id,
42
-                'createdAt' => $transactionIn->created_at,
43
-                'transactionNumber' => $transactionIn->transaction_number,
44
-            ]);
45
-
46 34
         $outTransactions = OutTransaction::latest()
47 35
             ->get()
48 36
             ->take(10)
49 37
             ->transform(fn($transactionOut) => [
50 38
                 'id' => $transactionOut->id,
51
-                'createdAt' => $transactionOut->created_at,
39
+                'entryCar' => $transactionOut->entryTransaction->created_at,
40
+                'outCar' => $transactionOut->created_at,
41
+                'totalTimeParking' => Carbon::parse(
42
+                    $transactionOut->getRawOriginal('created_at')
43
+                )->diffForHumans(
44
+                    $transactionOut->entryTransaction->getRawOriginal('created_at')
45
+                ),
46
+                'totalPriceParking' => ParkingFeeService::totalPriceParkingString($transactionOut->entry_transaction_id),
52 47
                 'platNumber' => $transactionOut->plat_number,
53
-                'entryTransactionId' => $transactionOut->entry_transaction_id,
48
+                'entryTransactionId' => $transactionOut->entry_transaction_id
54 49
             ]);
55 50
 
56 51
         $typeVehicles = function () {
@@ -59,20 +54,19 @@ class TransactionController extends Controller
59 54
             if ($vehicle) {
60 55
                 return [[
61 56
                     'value' => $vehicle->typeVehicle->id,
62
-                    'label' => $vehicle->typeVehicle->type,
57
+                    'label' => $vehicle->typeVehicle->type
63 58
                 ]];
64 59
             } else {
65 60
                 return TypeVehicle::get()->transform(fn($typeVehicle) => [
66 61
                     'value' => $typeVehicle->id,
67
-                    'label' => $typeVehicle->type,
62
+                    'label' => $typeVehicle->type
68 63
                 ]);
69 64
             }
70 65
         };
71 66
 
72 67
         return inertia('transaction/Create.vue', compact([
73
-            'entryTransactions',
74 68
             'outTransactions',
75
-            'typeVehicles',
69
+            'typeVehicles'
76 70
         ]));
77 71
     }
78 72
 
@@ -99,37 +93,11 @@ class TransactionController extends Controller
99 93
                 'plat_number' => $request->plat_number,
100 94
                 'entry_transaction_id' => $request->entry_transaction_id,
101 95
                 'type_vehicle_id' => $vehicle->type_vehicle_id,
102
-                'user_id' => auth()->user()->id,
96
+                'user_id' => auth()->user()->id
103 97
             ]);
104 98
 
105 99
             return back()->with('success', __('messages.success.store.transaction'));
106 100
         } else {
107
-            $parkingFee = ParkingFee::get();
108
-
109
-            $parkingTime = Helper::addPrevValue($parkingFee->pluck('time_period')->toArray());
110
-
111
-            $parkingPrice = Helper::addPrevValue($parkingFee->pluck('price')->toArray());
112
-
113
-            $entryTransaction = EntryTransaction::where('transaction_number', $request->entry_transaction_id)->first();
114
-
115
-            $vehicleEntryTime = $entryTransaction->getRawOriginal('created_at');
116
-
117
-            $longParkingPerHour = ceil(Carbon::parse($vehicleEntryTime)->floatDiffInRealHours(now()));
118
-
119
-            $totalParkingPerDay = $longParkingPerHour > 24 ? ceil($longParkingPerHour / 24) : 0;
120
-
121
-            $totalPriceParkingPerDay = $totalParkingPerDay * end($parkingPrice);
122
-
123
-            $totalPriceParkingToday = 0;
124
-
125
-            foreach ($parkingTime as $index => $time) {
126
-                if ($time >= $longParkingPerHour) {
127
-                    $totalPriceParkingToday = $parkingPrice[$index];
128
-
129
-                    break;
130
-                }
131
-            }
132
-
133 101
             DB::beginTransaction();
134 102
 
135 103
             try {
@@ -137,12 +105,12 @@ class TransactionController extends Controller
137 105
                     'plat_number' => $request->plat_number,
138 106
                     'entry_transaction_id' => $request->entry_transaction_id,
139 107
                     'type_vehicle_id' => $request->type_vehicle_id,
140
-                    'user_id' => auth()->user()->id,
108
+                    'user_id' => auth()->user()->id
141 109
                 ]);
142 110
 
143 111
                 $outTransaction->mutation()->create([
144 112
                     'type' => 1,
145
-                    'amount' => $totalParkingPerDay ? $totalPriceParkingPerDay : $totalPriceParkingToday,
113
+                    'amount' => ParkingFeeService::totalPriceParking($request->entry_transaction_id)
146 114
                 ]);
147 115
 
148 116
                 DB::commit();

+ 2
- 2
app/Models/EntryTransaction.php 查看文件

@@ -13,13 +13,13 @@ class EntryTransaction extends Model
13 13
 
14 14
     protected $fillable = [
15 15
         'capture_vehicle',
16
-        'transaction_number',
16
+        'transaction_number'
17 17
     ];
18 18
 
19 19
     protected function createdAt(): Attribute
20 20
     {
21 21
         return Attribute::make(
22
-            get:fn($value) => Carbon::parse($value)->translatedFormat('l d/m/Y')
22
+            get:fn($value) => Carbon::parse($value)->translatedFormat('l d/m/Y H:i:s')
23 23
         );
24 24
     }
25 25
 

+ 7
- 2
app/Models/OutTransaction.php 查看文件

@@ -17,13 +17,13 @@ class OutTransaction extends Model
17 17
         'price',
18 18
         'entry_transaction_id',
19 19
         'type_vehicle_id',
20
-        'user_id',
20
+        'user_id'
21 21
     ];
22 22
 
23 23
     protected function createdAt(): Attribute
24 24
     {
25 25
         return Attribute::make(
26
-            get:fn($value) => Carbon::parse($value)->translatedFormat('l d/m/Y')
26
+            get:fn($value) => Carbon::parse($value)->translatedFormat('l d/m/Y H:i:s')
27 27
         );
28 28
     }
29 29
 
@@ -38,4 +38,9 @@ class OutTransaction extends Model
38 38
     {
39 39
         return $this->hasOne(Mutation::class);
40 40
     }
41
+
42
+    public function entryTransaction()
43
+    {
44
+        return $this->belongsTo(EntryTransaction::class, 'entry_transaction_id', 'transaction_number');
45
+    }
41 46
 }

+ 0
- 21
app/Services/Helper.php 查看文件

@@ -1,21 +0,0 @@
1
-<?php
2
-
3
-namespace App\Services;
4
-
5
-class Helper
6
-{
7
-    public static function addPrevValue(array $h): array
8
-    {
9
-        $i = [];
10
-
11
-        for ($j = 0; $j <= count($h) - 1; $j++) {
12
-            if ($j === 0) {
13
-                array_push($i, $h[$j]);
14
-            } else {
15
-                array_push($i, $i[$j - 1] + $h[$j]);
16
-            }
17
-        }
18
-
19
-        return $i;
20
-    }
21
-}

+ 38
- 0
app/Services/HelperService.php 查看文件

@@ -0,0 +1,38 @@
1
+<?php
2
+
3
+namespace App\Services;
4
+
5
+class HelperService
6
+{
7
+    public static function addPrevValue($array)
8
+    {
9
+        $i = [];
10
+
11
+        for ($j = 0; $j <= count($array) - 1; $j++) {
12
+            if ($j === 0) {
13
+                array_push($i, $array[$j]);
14
+            } else {
15
+                array_push($i, $i[$j - 1] + $array[$j]);
16
+            }
17
+        }
18
+
19
+        return $i;
20
+    }
21
+
22
+    public static function setRupiahFormat($num, $sign = false)
23
+    {
24
+        if ($sign) {
25
+            if ($num < 0) {
26
+                return '-Rp' . number_format(abs($num), 0, ',', '.');
27
+            } else {
28
+                return 'Rp' . number_format($num, 0, ',', '.');
29
+            }
30
+        } else {
31
+            if ($num < 0) {
32
+                return '-' . number_format(abs($num), 0, ',', '.');
33
+            } else {
34
+                return number_format($num, 0, ',', '.');
35
+            }
36
+        }
37
+    }
38
+}

+ 90
- 0
app/Services/ParkingFeeService.php 查看文件

@@ -0,0 +1,90 @@
1
+<?php
2
+
3
+namespace App\Services;
4
+
5
+use App\Models\EntryTransaction;
6
+use App\Models\ParkingFee;
7
+use App\Services\HelperService;
8
+use Carbon\Carbon;
9
+
10
+class ParkingFeeService
11
+{
12
+    private static function parkingFee()
13
+    {
14
+        return ParkingFee::get();
15
+    }
16
+
17
+    private static function parkingPrice()
18
+    {
19
+        return HelperService::addPrevValue(self::parkingFee()
20
+                ->pluck('price')->toArray());
21
+    }
22
+
23
+    private static function parkingTime()
24
+    {
25
+        return HelperService::addPrevValue(self::parkingFee()
26
+                ->pluck('time_period')->toArray());
27
+    }
28
+
29
+    public static function totalTimeParkingPerToday($entryTransactionId)
30
+    {
31
+        $entryTransaction = EntryTransaction::where('transaction_number',
32
+            $entryTransactionId)->first();
33
+
34
+        $vehicleEntryTime = $entryTransaction->getRawOriginal('created_at');
35
+
36
+        return ceil(Carbon::parse($vehicleEntryTime)->floatDiffInRealHours(
37
+            now()
38
+        ));
39
+    }
40
+
41
+    public static function totalTimeParkingPerDay($entryTransactionId)
42
+    {
43
+        return self::totalTimeParkingPerToday($entryTransactionId) > 24
44
+            ? ceil(self::totalTimeParkingPerToday($entryTransactionId) / 24)
45
+            : 0;
46
+    }
47
+
48
+    public static function totalPriceParkingPerDay($entryTransactionId)
49
+    {
50
+        $parkingPrice = self::parkingPrice();
51
+
52
+        return self::totalTimeParkingPerDay($entryTransactionId) *
53
+        end($parkingPrice);
54
+    }
55
+
56
+    public static function totalPriceParkingPerToday($entryTransactionId)
57
+    {
58
+        $totalPriceParkingToday = 0;
59
+
60
+        foreach (self::parkingTime() as $index => $time) {
61
+            if ($time >= self::totalTimeParkingPerToday($entryTransactionId)) {
62
+                $totalPriceParkingToday = self::parkingPrice()[$index];
63
+
64
+                break;
65
+            }
66
+        }
67
+
68
+        return $totalPriceParkingToday;
69
+    }
70
+
71
+    public static function totalTimeParking($entryTransactionId)
72
+    {
73
+        return self::totalTimeParkingPerDay($entryTransactionId)
74
+            ? self::totalTimeParkingPerDay($entryTransactionId) . ' Hari'
75
+            : self::totalTimeParkingPerToday($entryTransactionId) . ' Jam';
76
+
77
+    }
78
+
79
+    public static function totalPriceParking($entryTransactionId)
80
+    {
81
+        return self::totalTimeParkingPerDay($entryTransactionId)
82
+            ? self::totalPriceParkingPerDay($entryTransactionId)
83
+            : self::totalPriceParkingPerToday($entryTransactionId);
84
+    }
85
+
86
+    public static function totalPriceParkingString($entryTransactionId)
87
+    {
88
+        return HelperService::setRupiahFormat(self::totalPriceParking($entryTransactionId), true);
89
+    }
90
+}

+ 73
- 1034
public/js/resources_js_pages_test-transaction_Create_vue.js
文件差異過大導致無法顯示
查看文件


+ 6
- 17
public/js/resources_js_pages_test-transaction_Entry_vue.js 查看文件

@@ -247,26 +247,15 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
247 247
 
248 248
 __webpack_require__.r(__webpack_exports__);
249 249
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
250
-/* harmony export */   "InTable": () => (/* binding */ InTable),
251
-/* harmony export */   "OutTable": () => (/* binding */ OutTable)
250
+/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
252 251
 /* harmony export */ });
253
-var InTable = [{
254
-  field: 'createdAt',
255
-  header: 'In'
252
+/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
253
+  field: 'entryCar',
254
+  header: 'Kendaraan Masuk'
256 255
 }, {
257 256
   field: 'transactionNumber',
258
-  header: 'Parking ID'
259
-}];
260
-var OutTable = [{
261
-  field: 'createdAt',
262
-  header: 'Out'
263
-}, {
264
-  field: 'platNumber',
265
-  header: 'Plat Kendaraan'
266
-}, {
267
-  field: 'entryTransactionId',
268
-  header: 'Parking ID'
269
-}];
257
+  header: 'Nomor Transaksi'
258
+}]);
270 259
 
271 260
 /***/ }),
272 261
 

+ 6
- 17
public/js/resources_js_pages_test-transaction_Out_vue.js 查看文件

@@ -743,26 +743,15 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
743 743
 
744 744
 __webpack_require__.r(__webpack_exports__);
745 745
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
746
-/* harmony export */   "InTable": () => (/* binding */ InTable),
747
-/* harmony export */   "OutTable": () => (/* binding */ OutTable)
746
+/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
748 747
 /* harmony export */ });
749
-var InTable = [{
750
-  field: 'createdAt',
751
-  header: 'In'
748
+/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
749
+  field: 'entryCar',
750
+  header: 'Kendaraan Masuk'
752 751
 }, {
753 752
   field: 'transactionNumber',
754
-  header: 'Parking ID'
755
-}];
756
-var OutTable = [{
757
-  field: 'createdAt',
758
-  header: 'Out'
759
-}, {
760
-  field: 'platNumber',
761
-  header: 'Plat Kendaraan'
762
-}, {
763
-  field: 'entryTransactionId',
764
-  header: 'Parking ID'
765
-}];
753
+  header: 'Nomor Transaksi'
754
+}]);
766 755
 
767 756
 /***/ }),
768 757
 

+ 6
- 17
public/js/resources_js_pages_test-transaction_TableHeader_js.js 查看文件

@@ -9,26 +9,15 @@
9 9
 
10 10
 __webpack_require__.r(__webpack_exports__);
11 11
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
-/* harmony export */   "InTable": () => (/* binding */ InTable),
13
-/* harmony export */   "OutTable": () => (/* binding */ OutTable)
12
+/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
14 13
 /* harmony export */ });
15
-var InTable = [{
16
-  field: 'createdAt',
17
-  header: 'In'
14
+/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
15
+  field: 'entryCar',
16
+  header: 'Kendaraan Masuk'
18 17
 }, {
19 18
   field: 'transactionNumber',
20
-  header: 'Parking ID'
21
-}];
22
-var OutTable = [{
23
-  field: 'createdAt',
24
-  header: 'Out'
25
-}, {
26
-  field: 'platNumber',
27
-  header: 'Plat Kendaraan'
28
-}, {
29
-  field: 'entryTransactionId',
30
-  header: 'Parking ID'
31
-}];
19
+  header: 'Nomor Transaksi'
20
+}]);
32 21
 
33 22
 /***/ })
34 23
 

+ 17402
- 200
public/js/resources_js_pages_transaction_Create_vue.js
文件差異過大導致無法顯示
查看文件


+ 14
- 13
public/js/resources_js_pages_transaction_TableHeader_js.js 查看文件

@@ -9,26 +9,27 @@
9 9
 
10 10
 __webpack_require__.r(__webpack_exports__);
11 11
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
-/* harmony export */   "InTable": () => (/* binding */ InTable),
13
-/* harmony export */   "OutTable": () => (/* binding */ OutTable)
12
+/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
14 13
 /* harmony export */ });
15
-var InTable = [{
16
-  field: 'createdAt',
17
-  header: 'In'
14
+/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
15
+  field: 'entryCar',
16
+  header: 'Kendaraan Masuk'
18 17
 }, {
19
-  field: 'transactionNumber',
20
-  header: 'Parking ID'
21
-}];
22
-var OutTable = [{
23
-  field: 'createdAt',
24
-  header: 'Out'
18
+  field: 'outCar',
19
+  header: 'Kendaraan Keluar'
20
+}, {
21
+  field: 'totalTimeParking',
22
+  header: 'Lama Parkir'
23
+}, {
24
+  field: 'totalPriceParking',
25
+  header: 'Biaya Parkir'
25 26
 }, {
26 27
   field: 'platNumber',
27 28
   header: 'Plat Kendaraan'
28 29
 }, {
29 30
   field: 'entryTransactionId',
30
-  header: 'Parking ID'
31
-}];
31
+  header: 'Nomor Transaksi'
32
+}]);
32 33
 
33 34
 /***/ })
34 35
 

+ 2
- 18
public/js/vue.js 查看文件

@@ -21476,7 +21476,7 @@ __webpack_require__.r(__webpack_exports__);
21476 21476
 
21477 21477
 var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
21478 21478
 // Module
21479
-___CSS_LOADER_EXPORT___.push([module.id, "/*\n  Default style\n*/\n* {\n  box-sizing: border-box;\n}\n\nhtml {\n  height: 100%;\n  font-size: 14px;\n}\n\nbody {\n  font-family: var(--font-family);\n  color: var(--text-color);\n  background-color: var(--surface-ground);\n  margin: 0;\n  padding: 0;\n  min-height: 100%;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.layout-topbar-menu-tooltip.p-tooltip {\n  position: absolute;\n  z-index: 997;\n  display: none;\n  padding: 0.25em 0.5rem;\n  max-width: 12.5rem;\n}\n\n/*\n  Typography\n*/\na {\n  text-decoration: none;\n  color: var(--primary-color);\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  margin: 0.5rem 0 0.5rem 0;\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.2;\n  color: inherit;\n\n  &:first-child {\n    margin-top: 0;\n  }\n}\n\nh1 {\n  font-size: 2.5rem;\n}\n\nh2 {\n  font-size: 2rem;\n}\n\nh3 {\n  font-size: 1.75rem;\n}\n\nh4 {\n  font-size: 1.5rem;\n}\n\nh5 {\n  font-size: 1.25rem;\n}\n\nh6 {\n  font-size: 1rem;\n}\n\nmark {\n  background: #fff8e1;\n  padding: 0.25rem 0.4rem;\n  border-radius: 12px;\n  font-family: monospace;\n}\n\nblockquote {\n  margin: 1rem 0;\n  padding: 0 2rem;\n  border-left: 4px solid #90a4ae;\n}\n\nhr {\n  border-top: solid var(--surface-border);\n  border-width: 1px 0 0 0;\n  margin: 1rem 0;\n}\n\np {\n  margin: 0 0 1rem 0;\n  line-height: 1.5;\n\n  &:last-child {\n    margin-bottom: 0;\n  }\n}\n", ""]);
21479
+___CSS_LOADER_EXPORT___.push([module.id, "/*\n  Default style\n*/\n* {\n  box-sizing: border-box;\n}\n\nhtml {\n  height: 100%;\n  font-size: 14px;\n}\n\nbody {\n  font-family: var(--font-family);\n  color: var(--text-color);\n  background-color: var(--surface-ground);\n  margin: 0;\n  padding: 0;\n  min-height: 100%;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.layout-topbar-menu-tooltip.p-tooltip {\n  position: absolute;\n  z-index: 997;\n  display: none;\n  padding: 0.25em 0.5rem;\n  max-width: 12.5rem;\n}\n\n/*\n  Typography\n*/\na {\n  text-decoration: none;\n  color: var(--primary-color);\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  margin: 0.5rem 0 0.5rem 0;\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.2;\n  color: inherit;\n\n  &:first-child {\n    margin-top: 0;\n  }\n}\n\nh1 {\n  font-size: 2.5rem;\n}\n\nh2 {\n  font-size: 2rem;\n}\n\nh3 {\n  font-size: 1.75rem;\n}\n\nh4 {\n  font-size: 1.5rem;\n}\n\nh5 {\n  font-size: 1.25rem;\n}\n\nh6 {\n  font-size: 1rem;\n}\n\nmark {\n  background: #fff8e1;\n  padding: 0.25rem 0.4rem;\n  border-radius: 12px;\n  font-family: monospace;\n}\n\nblockquote {\n  margin: 1rem 0;\n  padding: 0 2rem;\n  border-left: 4px solid #90a4ae;\n}\n\nhr {\n  border-top: solid var(--surface-border);\n  border-width: 1px 0 0 0;\n  margin: 1rem 0;\n}\n\np {\n  margin: 0 0 1rem 0;\n  line-height: 1.5;\n\n  &:last-child {\n    margin-bottom: 0;\n  }\n}\n\n.p-message {\n  margin-top: 0px;\n}\n", ""]);
21480 21480
 // Exports
21481 21481
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
21482 21482
 
@@ -58213,22 +58213,6 @@ var map = {
58213 58213
 		"./resources/js/pages/test-transaction/Create.vue",
58214 58214
 		"resources_js_pages_test-transaction_Create_vue"
58215 58215
 	],
58216
-	"./test-transaction/Entry": [
58217
-		"./resources/js/pages/test-transaction/Entry.vue",
58218
-		"resources_js_pages_test-transaction_Entry_vue"
58219
-	],
58220
-	"./test-transaction/Entry.vue": [
58221
-		"./resources/js/pages/test-transaction/Entry.vue",
58222
-		"resources_js_pages_test-transaction_Entry_vue"
58223
-	],
58224
-	"./test-transaction/Out": [
58225
-		"./resources/js/pages/test-transaction/Out.vue",
58226
-		"resources_js_pages_test-transaction_Out_vue"
58227
-	],
58228
-	"./test-transaction/Out.vue": [
58229
-		"./resources/js/pages/test-transaction/Out.vue",
58230
-		"resources_js_pages_test-transaction_Out_vue"
58231
-	],
58232 58216
 	"./test-transaction/TableHeader": [
58233 58217
 		"./resources/js/pages/test-transaction/TableHeader.js",
58234 58218
 		"resources_js_pages_test-transaction_TableHeader_js"
@@ -58514,7 +58498,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
58514 58498
 /******/ 		// This function allow to reference async chunks
58515 58499
 /******/ 		__webpack_require__.u = (chunkId) => {
58516 58500
 /******/ 			// return url for filenames based on template
58517
-/******/ 			return "js/" + chunkId + ".js?id=" + {"node_modules_chart_js_auto_auto_esm_js":"10c6b388645ceb22","resources_js_pages_auth_ForgotPassword_vue":"85a497d97d470da0","resources_js_pages_auth_Login_vue":"2cfdf492d60f9521","resources_js_pages_auth_ResetPassword_vue":"9bc29d6465cc0c53","resources_js_pages_auth_VerifyEmail_vue":"f88499b46d5f110c","resources_js_pages_expense_Create_vue":"dd6a278391b58d69","resources_js_pages_expense_Index_vue":"d493dbc863eb491e","resources_js_pages_expense_Show_vue":"1757456faf4c3181","resources_js_pages_expense_tableHeader_js":"5b2c3a80fb697fff","resources_js_pages_home_Index_vue":"bc20b7148bfb6da0","resources_js_pages_member_Create_vue":"46e5d529878a5a3c","resources_js_pages_member_Edit_vue":"1853671dabd902a7","resources_js_pages_member_Index_vue":"bafaa294b3e6bf60","resources_js_pages_member_tableHeader_js":"61877f698532418e","resources_js_pages_member_useVehicle_js":"8edc972eb134efdf","resources_js_pages_mutation_Report_vue":"f6383687408a3025","resources_js_pages_mutation_tableHeader_js":"2c25ede9c3d1ff83","resources_js_pages_parkingfee_Create_vue":"a63c4b9f335fb0bf","resources_js_pages_test-transaction_Create_vue":"74dce466e27dba59","resources_js_pages_test-transaction_Entry_vue":"a950457a89c8b7c8","resources_js_pages_test-transaction_Out_vue":"4051ca6620a7adad","resources_js_pages_test-transaction_TableHeader_js":"61b09c7914d5ddac","resources_js_pages_topup_Create_vue":"55f0a1d108219169","resources_js_pages_topup_Index_vue":"04db86d01aba75e6","resources_js_pages_topup_Show_vue":"92555b7c31076f4b","resources_js_pages_topup_tableHeader_js":"187746378ee18327","resources_js_pages_transaction_Create_vue":"afa86117f9ab8dc7","resources_js_pages_transaction_TableHeader_js":"6e5b985a7a8dc257","resources_js_pages_typemember_Create_vue":"3f3c554a28b716b3","resources_js_pages_typemember_Edit_vue":"51915bbcb5376a36","resources_js_pages_typemember_Index_vue":"6c256e816bd7c375","resources_js_pages_typemember_tableHeader_js":"02f8a6c57093a7fe","resources_js_pages_typemember_useVehicle_js":"9bcdb75c62376835","resources_js_pages_typevehicle_Create_vue":"7d5c9e455cd166ff","resources_js_pages_typevehicle_Edit_vue":"1ab23f2ba50fc7fa","resources_js_pages_typevehicle_Index_vue":"77925b0dddb8b112","resources_js_pages_typevehicle_tableHeader_js":"9616b18c4a750c3f","resources_js_pages_user_Create_vue":"3ee29346cc8b4c3a","resources_js_pages_user_Edit_vue":"3366451aa8c56dcc","resources_js_pages_user_Index_vue":"b2d89eac3119ef58","resources_js_pages_user_Show_vue":"cacd644a884cd355","resources_js_pages_user_tableHeader_js":"78beeea0dcacb81b"}[chunkId] + "";
58501
+/******/ 			return "js/" + chunkId + ".js?id=" + {"node_modules_chart_js_auto_auto_esm_js":"10c6b388645ceb22","resources_js_pages_auth_ForgotPassword_vue":"85a497d97d470da0","resources_js_pages_auth_Login_vue":"2cfdf492d60f9521","resources_js_pages_auth_ResetPassword_vue":"9bc29d6465cc0c53","resources_js_pages_auth_VerifyEmail_vue":"f88499b46d5f110c","resources_js_pages_expense_Create_vue":"dd6a278391b58d69","resources_js_pages_expense_Index_vue":"d493dbc863eb491e","resources_js_pages_expense_Show_vue":"1757456faf4c3181","resources_js_pages_expense_tableHeader_js":"5b2c3a80fb697fff","resources_js_pages_home_Index_vue":"bc20b7148bfb6da0","resources_js_pages_member_Create_vue":"46e5d529878a5a3c","resources_js_pages_member_Edit_vue":"1853671dabd902a7","resources_js_pages_member_Index_vue":"bafaa294b3e6bf60","resources_js_pages_member_tableHeader_js":"61877f698532418e","resources_js_pages_member_useVehicle_js":"8edc972eb134efdf","resources_js_pages_mutation_Report_vue":"f6383687408a3025","resources_js_pages_mutation_tableHeader_js":"2c25ede9c3d1ff83","resources_js_pages_parkingfee_Create_vue":"a63c4b9f335fb0bf","resources_js_pages_test-transaction_Create_vue":"26c3d63a20969164","resources_js_pages_test-transaction_TableHeader_js":"41de407b819e132e","resources_js_pages_topup_Create_vue":"55f0a1d108219169","resources_js_pages_topup_Index_vue":"04db86d01aba75e6","resources_js_pages_topup_Show_vue":"92555b7c31076f4b","resources_js_pages_topup_tableHeader_js":"187746378ee18327","resources_js_pages_transaction_Create_vue":"8cec47c9a6097cdc","resources_js_pages_transaction_TableHeader_js":"68379a290810960e","resources_js_pages_typemember_Create_vue":"3f3c554a28b716b3","resources_js_pages_typemember_Edit_vue":"51915bbcb5376a36","resources_js_pages_typemember_Index_vue":"6c256e816bd7c375","resources_js_pages_typemember_tableHeader_js":"02f8a6c57093a7fe","resources_js_pages_typemember_useVehicle_js":"9bcdb75c62376835","resources_js_pages_typevehicle_Create_vue":"7d5c9e455cd166ff","resources_js_pages_typevehicle_Edit_vue":"1ab23f2ba50fc7fa","resources_js_pages_typevehicle_Index_vue":"77925b0dddb8b112","resources_js_pages_typevehicle_tableHeader_js":"9616b18c4a750c3f","resources_js_pages_user_Create_vue":"3ee29346cc8b4c3a","resources_js_pages_user_Edit_vue":"3366451aa8c56dcc","resources_js_pages_user_Index_vue":"b2d89eac3119ef58","resources_js_pages_user_Show_vue":"cacd644a884cd355","resources_js_pages_user_tableHeader_js":"78beeea0dcacb81b"}[chunkId] + "";
58518 58502
 /******/ 		};
58519 58503
 /******/ 	})();
58520 58504
 /******/ 	

+ 4
- 0
resources/js/assets/styles/sass/global.scss 查看文件

@@ -105,3 +105,7 @@ p {
105 105
     margin-bottom: 0;
106 106
   }
107 107
 }
108
+
109
+.p-message {
110
+  margin-top: 0px;
111
+}

+ 52
- 15
resources/js/pages/test-transaction/Create.vue 查看文件

@@ -1,30 +1,67 @@
1 1
 <script setup>
2
-import Entry from './Entry.vue'
3
-import Out from './Out.vue'
2
+import { useForm } from '@inertiajs/inertia-vue3'
3
+import TableHeader from './TableHeader'
4
+import AppPagination from '@/components/AppPagination.vue'
4 5
 import DashboardLayout from '@/layouts/DashboardLayout.vue'
6
+import { onMounted } from 'vue'
5 7
 
6 8
 defineProps({
7 9
   entryTransactions: Object,
8
-  entryTransactionCount: Number,
9
-  outTransactions: Object,
10
-  outTransactionCount: Number,
11 10
   typeVehicles: Object,
12 11
 })
12
+
13
+const form = useForm({})
14
+
15
+const submit = () => {
16
+  form.post(route('test-transactions.store'))
17
+}
13 18
 </script>
14 19
 <template>
15 20
   <DashboardLayout>
16 21
     <div class="grid">
17 22
       <div class="col-12 md:col-6">
18
-        <Entry :data="entryTransactions" :data-count="entryTransactionCount" />
19
-      </div>
20
-      <div class="col-12 md:col-6">
21
-        <Out
22
-          :data="outTransactions"
23
-          :data-count="outTransactionCount"
24
-          :type-vehicles="typeVehicles"
25
-          :entry-transaction-data="entryTransactions"
26
-          :entry-transaction-count="entryTransactionCount"
27
-        />
23
+        <Card>
24
+          <template #title> <h1>Entry</h1> </template>
25
+          <template #content>
26
+            <DataTable
27
+              responsiveLayout="scroll"
28
+              columnResizeMode="expand"
29
+              :value="entryTransactions.data"
30
+              :rowHover="true"
31
+              :stripedRows="true"
32
+            >
33
+              <template #header>
34
+                <span style="color: var(--primary-color)">
35
+                  Maksimal ditampilkan :
36
+                </span>
37
+                {{ entryTransactions.per_page }}
38
+                <br />
39
+                <span style="color: var(--primary-color)">Ditampilkan :</span>
40
+                {{ Object.keys(entryTransactions.data).length }}
41
+              </template>
42
+
43
+              <Column
44
+                v-for="value in TableHeader"
45
+                :field="value.field"
46
+                :header="value.header"
47
+                :key="value.field"
48
+              />
49
+            </DataTable>
50
+
51
+            <AppPagination :links="entryTransactions.links" />
52
+          </template>
53
+          <template #footer>
54
+            <div class="flex flex-column md:flex-row justify-content-end">
55
+              <Button
56
+                label="Car Entry"
57
+                icon="pi pi-check"
58
+                class="p-button-outlined"
59
+                :disabled="form.processing"
60
+                @click="submit"
61
+              />
62
+            </div>
63
+          </template>
64
+        </Card>
28 65
       </div>
29 66
     </div>
30 67
   </DashboardLayout>

+ 0
- 52
resources/js/pages/test-transaction/Entry.vue 查看文件

@@ -1,52 +0,0 @@
1
-<script setup>
2
-import { useForm } from '@inertiajs/inertia-vue3'
3
-import AppPagination from '@/components/AppPagination.vue'
4
-
5
-import { InTable } from './TableHeader'
6
-
7
-defineProps({
8
-  data: Object,
9
-})
10
-
11
-const form = useForm({})
12
-
13
-const submit = () => {
14
-  form.post(route('test-transactions.store'))
15
-}
16
-</script>
17
-<template>
18
-  <Card>
19
-    <template #title> <h1>Entry</h1> </template>
20
-    <template #content>
21
-      <DataTable
22
-        responsiveLayout="scroll"
23
-        columnResizeMode="expand"
24
-        :value="data.data"
25
-        :rowHover="true"
26
-        :stripedRows="true"
27
-      >
28
-        <template #header>
29
-          <span style="color: var(--primary-color)">Maksimal ditampilkan :</span> 5
30
-          <br />
31
-          <span style="color: var(--primary-color)">Ditampilkan :</span>
32
-          {{ Object.keys(data.data).length }}
33
-        </template>
34
-
35
-        <Column v-for="inTable in InTable" :field="inTable.field" :header="inTable.header" :key="inTable.field" />
36
-      </DataTable>
37
-
38
-      <AppPagination :links="data.links" />
39
-    </template>
40
-    <template #footer>
41
-      <div class="flex flex-column md:flex-row justify-content-end">
42
-        <Button
43
-          label="Car Entry"
44
-          icon="pi pi-check"
45
-          class="p-button-outlined"
46
-          :disabled="form.processing"
47
-          @click="submit"
48
-        />
49
-      </div>
50
-    </template>
51
-  </Card>
52
-</template>

+ 0
- 160
resources/js/pages/test-transaction/Out.vue 查看文件

@@ -1,160 +0,0 @@
1
-<script setup>
2
-import { reactive, watch, onMounted } from 'vue'
3
-import { Inertia } from '@inertiajs/inertia'
4
-import { useForm } from '@inertiajs/inertia-vue3'
5
-import AppInputText from '@/components/AppInputText.vue'
6
-import AppDropdown from '@/components/AppDropdown.vue'
7
-import AppPagination from '@/components/AppPagination.vue'
8
-
9
-import { InTable, OutTable } from './TableHeader'
10
-
11
-const props = defineProps({
12
-  data: Object,
13
-  typeVehicles: Object,
14
-  entryTransactionData: Object,
15
-  entryTransactionCount: Number,
16
-})
17
-
18
-watch(
19
-  () => props.entryTransactionData,
20
-  () => {
21
-    setLocalEntryTransaction()
22
-
23
-    form.reset()
24
-  }
25
-)
26
-
27
-onMounted(() => {
28
-  setLocalEntryTransaction()
29
-})
30
-
31
-const localEntryTransactions = reactive([])
32
-
33
-const setLocalEntryTransaction = () => {
34
-  localEntryTransactions.splice(0)
35
-  localEntryTransactions.push(...props.entryTransactionData.data)
36
-}
37
-
38
-const copy = (data) => {
39
-  form.entry_transaction_id = data.transactionNumber
40
-
41
-  const filterLocalEntryTransactions = props.entryTransactionData.data.filter(
42
-    (val) => val.transactionNumber !== data.transactionNumber
43
-  )
44
-
45
-  localEntryTransactions.splice(0)
46
-  localEntryTransactions.push(...filterLocalEntryTransactions)
47
-}
48
-
49
-const form = useForm({
50
-  id: 2,
51
-  plat_number: null,
52
-  entry_transaction_id: null,
53
-  type_vehicle_id: null,
54
-})
55
-
56
-watch(
57
-  () => form.plat_number,
58
-  () => {
59
-    Inertia.reload({ only: ['typeVehicles'], data: { plat_number: form.plat_number } })
60
-  }
61
-)
62
-
63
-const submit = () => {
64
-  form.post(route('test-transactions.store'))
65
-}
66
-</script>
67
-<template>
68
-  <Card>
69
-    <template #title> <h1>Out</h1> </template>
70
-    <template #content>
71
-      <DataTable
72
-        responsiveLayout="scroll"
73
-        columnResizeMode="expand"
74
-        :value="localEntryTransactions"
75
-        :rowHover="true"
76
-        :stripedRows="true"
77
-      >
78
-        <template #header>
79
-          <span style="color: var(--primary-color)">Maksimal ditampilkan :</span> 5
80
-          <br />
81
-          <span style="color: var(--primary-color)">Ditampilkan :</span>
82
-          {{ Object.keys(data.data).length }}
83
-        </template>
84
-
85
-        <Column v-for="inTable in InTable" :field="inTable.field" :header="inTable.header" :key="inTable.field" />
86
-
87
-        <Column>
88
-          <template #body="{ data }">
89
-            <Button icon="pi pi-copy" class="p-button-rounded p-button-text" @click="copy(data)" />
90
-          </template>
91
-        </Column>
92
-      </DataTable>
93
-
94
-      <AppPagination :links="entryTransactionData.links" />
95
-
96
-      <Divider type="dashed" />
97
-
98
-      <div class="grid">
99
-        <div class="col-12 md:col-6">
100
-          <AppInputText
101
-            v-model="form.plat_number"
102
-            label="Vehicle Plate"
103
-            placeholder="vehicle plate"
104
-            :error="form.errors.plat_number"
105
-          />
106
-        </div>
107
-        <div class="col-12 md:col-6">
108
-          <AppInputText
109
-            disabled
110
-            v-model="form.entry_transaction_id"
111
-            label="Transaction number"
112
-            placeholder="transaction number"
113
-            :error="form.errors.entry_transaction_id"
114
-          />
115
-        </div>
116
-        <div class="col-12 md:col-6">
117
-          <AppDropdown
118
-            v-model="form.type_vehicle_id"
119
-            label="Type Vehicle"
120
-            placeholder="type vehicle"
121
-            :options="typeVehicles"
122
-            :error="form.errors.type_vehicle_id"
123
-          />
124
-        </div>
125
-      </div>
126
-
127
-      <Divider type="dashed" />
128
-
129
-      <DataTable
130
-        responsiveLayout="scroll"
131
-        columnResizeMode="expand"
132
-        :value="data.data"
133
-        :rowHover="true"
134
-        :stripedRows="true"
135
-      >
136
-        <template #header>
137
-          <span style="color: var(--red-600)">Maksimal ditampilkan :</span> 5
138
-          <br />
139
-          <span style="color: var(--red-600)">Ditampilkan :</span>
140
-          {{ Object.keys(data.data).length }}
141
-        </template>
142
-
143
-        <Column v-for="outTable in OutTable" :field="outTable.field" :header="outTable.header" :key="outTable.field" />
144
-      </DataTable>
145
-
146
-      <AppPagination :links="data.links" />
147
-    </template>
148
-    <template #footer>
149
-      <div class="flex flex-column md:flex-row justify-content-end">
150
-        <Button
151
-          label="Car Out"
152
-          icon="pi pi-check"
153
-          class="p-button-outlined"
154
-          :disabled="form.processing"
155
-          @click="submit"
156
-        />
157
-      </div>
158
-    </template>
159
-  </Card>
160
-</template>

+ 3
- 9
resources/js/pages/test-transaction/TableHeader.js 查看文件

@@ -1,10 +1,4 @@
1
-export const InTable = [
2
-  { field: 'createdAt', header: 'In' },
3
-  { field: 'transactionNumber', header: 'Parking ID' },
4
-]
5
-
6
-export const OutTable = [
7
-  { field: 'createdAt', header: 'Out' },
8
-  { field: 'platNumber', header: 'Plat Kendaraan' },
9
-  { field: 'entryTransactionId', header: 'Parking ID' },
1
+export default [
2
+  { field: 'entryCar', header: 'Kendaraan Masuk' },
3
+  { field: 'transactionNumber', header: 'Nomor Transaksi' },
10 4
 ]

+ 35
- 61
resources/js/pages/transaction/Create.vue 查看文件

@@ -3,13 +3,13 @@ import { watch } from 'vue'
3 3
 import { Inertia } from '@inertiajs/inertia'
4 4
 import { useForm } from '@inertiajs/inertia-vue3'
5 5
 import { useFormErrorReset } from '@/components/useFormErrorReset'
6
+import { throttle } from 'lodash'
6 7
 import AppInputText from '@/components/AppInputText.vue'
7 8
 import AppDropdown from '@/components/AppDropdown.vue'
8 9
 import DashboardLayout from '@/layouts/DashboardLayout.vue'
9
-import { InTable, OutTable } from './TableHeader'
10
+import IndexTable from './TableHeader'
10 11
 
11 12
 defineProps({
12
-  entryTransactions: Object,
13 13
   outTransactions: Object,
14 14
   typeVehicles: Object,
15 15
 })
@@ -25,7 +25,10 @@ useFormErrorReset(form)
25 25
 watch(
26 26
   () => form.plat_number,
27 27
   () => {
28
-    Inertia.reload({ only: ['typeVehicles'], data: { plat_number: form.plat_number } })
28
+    Inertia.reload({
29
+      only: ['typeVehicles'],
30
+      data: { plat_number: form.plat_number },
31
+    })
29 32
   }
30 33
 )
31 34
 
@@ -36,7 +39,7 @@ const submit = () => {
36 39
 <template>
37 40
   <DashboardLayout>
38 41
     <div class="grid">
39
-      <div class="col-12 md:col-6">
42
+      <div class="col-12">
40 43
         <Card>
41 44
           <template #title> Tambah Transaksi Keluar </template>
42 45
           <template #content>
@@ -81,65 +84,36 @@ const submit = () => {
81 84
           </template>
82 85
         </Card>
83 86
       </div>
84
-      <div class="col-12 md:col-6">
85
-        <div class="grid">
86
-          <div class="col-12">
87
-            <Card>
88
-              <template #title> Kendaraan Masuk </template>
89
-              <template #content>
90
-                <DataTable
91
-                  responsiveLayout="scroll"
92
-                  columnResizeMode="expand"
93
-                  :value="entryTransactions"
94
-                  :rowHover="true"
95
-                  :stripedRows="true"
96
-                >
97
-                  <template #header>
98
-                    <span style="color: var(--primary-color)">Maksimal ditampilkan :</span> 10
99
-                    <br />
100
-                    <span style="color: var(--primary-color)">Ditampilkan :</span>
101
-                    {{ Object.keys(entryTransactions).length }}
102
-                  </template>
103
-
104
-                  <Column
105
-                    v-for="inTable in InTable"
106
-                    :field="inTable.field"
107
-                    :header="inTable.header"
108
-                    :key="inTable.field"
109
-                  />
110
-                </DataTable>
87
+      <div class="col-12">
88
+        <Card>
89
+          <template #title> Kendaraan Keluar </template>
90
+          <template #content>
91
+            <DataTable
92
+              responsiveLayout="scroll"
93
+              columnResizeMode="expand"
94
+              :value="outTransactions"
95
+              :rowHover="true"
96
+              :stripedRows="true"
97
+            >
98
+              <template #header>
99
+                <span style="color: var(--red-600)">
100
+                  Maksimal ditampilkan :
101
+                </span>
102
+                10
103
+                <br />
104
+                <span style="color: var(--red-600)">Ditampilkan :</span>
105
+                {{ Object.keys(outTransactions).length }}
111 106
               </template>
112
-            </Card>
113
-          </div>
114
-          <div class="col-12">
115
-            <Card>
116
-              <template #title> Kendaraan Keluar </template>
117
-              <template #content>
118
-                <DataTable
119
-                  responsiveLayout="scroll"
120
-                  columnResizeMode="expand"
121
-                  :value="outTransactions"
122
-                  :rowHover="true"
123
-                  :stripedRows="true"
124
-                >
125
-                  <template #header>
126
-                    <span style="color: var(--red-600)">Maksimal ditampilkan :</span> 10
127
-                    <br />
128
-                    <span style="color: var(--red-600)">Ditampilkan :</span>
129
-                    {{ Object.keys(outTransactions).length }}
130
-                  </template>
131 107
 
132
-                  <Column
133
-                    v-for="outTable in OutTable"
134
-                    :field="outTable.field"
135
-                    :header="outTable.header"
136
-                    :key="outTable.field"
137
-                  />
138
-                </DataTable>
139
-              </template>
140
-            </Card>
141
-          </div>
142
-        </div>
108
+              <Column
109
+                v-for="value in IndexTable"
110
+                :field="value.field"
111
+                :header="value.header"
112
+                :key="value.field"
113
+              />
114
+            </DataTable>
115
+          </template>
116
+        </Card>
143 117
       </div>
144 118
     </div>
145 119
   </DashboardLayout>

+ 6
- 8
resources/js/pages/transaction/TableHeader.js 查看文件

@@ -1,10 +1,8 @@
1
-export const InTable = [
2
-  { field: 'createdAt', header: 'In' },
3
-  { field: 'transactionNumber', header: 'Parking ID' },
4
-]
5
-
6
-export const OutTable = [
7
-  { field: 'createdAt', header: 'Out' },
1
+export default [
2
+  { field: 'entryCar', header: 'Kendaraan Masuk' },
3
+  { field: 'outCar', header: 'Kendaraan Keluar' },
4
+  { field: 'totalTimeParking', header: 'Lama Parkir' },
5
+  { field: 'totalPriceParking', header: 'Biaya Parkir' },
8 6
   { field: 'platNumber', header: 'Plat Kendaraan' },
9
-  { field: 'entryTransactionId', header: 'Parking ID' },
7
+  { field: 'entryTransactionId', header: 'Nomor Transaksi' },
10 8
 ]