瀏覽代碼

fix: detail transaction out

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

+ 103
- 0
app/Http/Controllers/OutTransactionController.php 查看文件

@@ -0,0 +1,103 @@
1
+<?php
2
+
3
+namespace App\Http\Controllers;
4
+
5
+use App\Models\OutTransaction;
6
+use App\Services\ParkingFeeService;
7
+use Carbon\Carbon;
8
+use Illuminate\Http\Request;
9
+
10
+class OutTransactionController extends Controller
11
+{
12
+    /**
13
+     * Display a listing of the resource.
14
+     *
15
+     * @return \Illuminate\Http\Response
16
+     */
17
+    public function index()
18
+    {
19
+        //
20
+    }
21
+
22
+    /**
23
+     * Show the form for creating a new resource.
24
+     *
25
+     * @return \Illuminate\Http\Response
26
+     */
27
+    public function create()
28
+    {
29
+        //
30
+    }
31
+
32
+    /**
33
+     * Store a newly created resource in storage.
34
+     *
35
+     * @param  \Illuminate\Http\Request  $request
36
+     * @return \Illuminate\Http\Response
37
+     */
38
+    public function store(Request $request)
39
+    {
40
+        //
41
+    }
42
+
43
+    /**
44
+     * Display the specified resource.
45
+     *
46
+     * @param  int  $id
47
+     * @return \Illuminate\Http\Response
48
+     */
49
+    public function show($id)
50
+    {
51
+        $outTransaction = OutTransaction::find($id);
52
+
53
+        return inertia('outtransaction/Show', [
54
+            'outTransaction' => [[
55
+                'entryCar' => $outTransaction->entryTransaction->created_at,
56
+                'outCar' => $outTransaction->created_at,
57
+                'totalTimeParking' => Carbon::parse(
58
+                    $outTransaction->getRawOriginal('created_at')
59
+                )->diffForHumans(
60
+                    $outTransaction->entryTransaction->getRawOriginal('created_at')
61
+                ),
62
+                'totalPriceParking' => ParkingFeeService::totalPriceParkingString($outTransaction->entry_transaction_id),
63
+                'platNumber' => $outTransaction->plat_number,
64
+                'entryTransactionId' => $outTransaction->entry_transaction_id
65
+            ]],
66
+            'user' => $outTransaction->user->name
67
+        ]);
68
+    }
69
+
70
+    /**
71
+     * Show the form for editing the specified resource.
72
+     *
73
+     * @param  int  $id
74
+     * @return \Illuminate\Http\Response
75
+     */
76
+    public function edit($id)
77
+    {
78
+        //
79
+    }
80
+
81
+    /**
82
+     * Update the specified resource in storage.
83
+     *
84
+     * @param  \Illuminate\Http\Request  $request
85
+     * @param  int  $id
86
+     * @return \Illuminate\Http\Response
87
+     */
88
+    public function update(Request $request, $id)
89
+    {
90
+        //
91
+    }
92
+
93
+    /**
94
+     * Remove the specified resource from storage.
95
+     *
96
+     * @param  int  $id
97
+     * @return \Illuminate\Http\Response
98
+     */
99
+    public function destroy($id)
100
+    {
101
+        //
102
+    }
103
+}

+ 6
- 0
app/Models/OutTransaction.php 查看文件

@@ -3,6 +3,7 @@
3 3
 namespace App\Models;
4 4
 
5 5
 use App\Models\Mutation;
6
+use App\Models\User;
6 7
 use Carbon\Carbon;
7 8
 use Illuminate\Database\Eloquent\Casts\Attribute;
8 9
 use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -43,4 +44,9 @@ class OutTransaction extends Model
43 44
     {
44 45
         return $this->belongsTo(EntryTransaction::class, 'entry_transaction_id', 'transaction_number');
45 46
     }
47
+
48
+    public function user()
49
+    {
50
+        return $this->belongsTo(User::class);
51
+    }
46 52
 }

+ 1708
- 0
public/js/resources_js_pages_outtransaction_Show_vue.js
文件差異過大導致無法顯示
查看文件


+ 45
- 0
public/js/resources_js_pages_outtransaction_show_vue.js 查看文件

@@ -0,0 +1,45 @@
1
+"use strict";
2
+(self["webpackChunk"] = self["webpackChunk"] || []).push([["resources_js_pages_outtransaction_show_vue"],{
3
+
4
+/***/ "./node_modules/vue-loader/dist/exportHelper.js":
5
+/*!******************************************************!*\
6
+  !*** ./node_modules/vue-loader/dist/exportHelper.js ***!
7
+  \******************************************************/
8
+/***/ ((__unused_webpack_module, exports) => {
9
+
10
+
11
+Object.defineProperty(exports, "__esModule", ({ value: true }));
12
+// runtime helper for setting properties on components
13
+// in a tree-shakable way
14
+exports["default"] = (sfc, props) => {
15
+    const target = sfc.__vccOpts || sfc;
16
+    for (const [key, val] of props) {
17
+        target[key] = val;
18
+    }
19
+    return target;
20
+};
21
+
22
+
23
+/***/ }),
24
+
25
+/***/ "./resources/js/pages/outtransaction/show.vue":
26
+/*!****************************************************!*\
27
+  !*** ./resources/js/pages/outtransaction/show.vue ***!
28
+  \****************************************************/
29
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
30
+
31
+__webpack_require__.r(__webpack_exports__);
32
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
33
+/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
34
+/* harmony export */ });
35
+/* harmony import */ var _media_dijitalcode_3ad9c6e0_4296_4a57_b136_144df49e7bb8_Projects_parkirin_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js");
36
+const script = {}
37
+
38
+;
39
+const __exports__ = /*#__PURE__*/(0,_media_dijitalcode_3ad9c6e0_4296_4a57_b136_144df49e7bb8_Projects_parkirin_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_0__["default"])(script, [['__file',"resources/js/pages/outtransaction/show.vue"]])
40
+
41
+/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__exports__);
42
+
43
+/***/ })
44
+
45
+}]);

+ 36
- 0
public/js/resources_js_pages_outtransaction_tableHeader_js.js 查看文件

@@ -0,0 +1,36 @@
1
+"use strict";
2
+(self["webpackChunk"] = self["webpackChunk"] || []).push([["resources_js_pages_outtransaction_tableHeader_js"],{
3
+
4
+/***/ "./resources/js/pages/outtransaction/tableHeader.js":
5
+/*!**********************************************************!*\
6
+  !*** ./resources/js/pages/outtransaction/tableHeader.js ***!
7
+  \**********************************************************/
8
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
+
10
+__webpack_require__.r(__webpack_exports__);
11
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
+/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
13
+/* harmony export */ });
14
+/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
15
+  field: 'entryCar',
16
+  header: 'Kendaraan Masuk'
17
+}, {
18
+  field: 'outCar',
19
+  header: 'Kendaraan Keluar'
20
+}, {
21
+  field: 'totalTimeParking',
22
+  header: 'Lama Parkir'
23
+}, {
24
+  field: 'totalPriceParking',
25
+  header: 'Biaya Parkir'
26
+}, {
27
+  field: 'platNumber',
28
+  header: 'Plat Kendaraan'
29
+}, {
30
+  field: 'entryTransactionId',
31
+  header: 'Nomor Transaksi'
32
+}]);
33
+
34
+/***/ })
35
+
36
+}]);

+ 17
- 1
public/js/vue.js 查看文件

@@ -58197,6 +58197,22 @@ var map = {
58197 58197
 		"./resources/js/pages/mutation/tableHeader.js",
58198 58198
 		"resources_js_pages_mutation_tableHeader_js"
58199 58199
 	],
58200
+	"./outtransaction/Show": [
58201
+		"./resources/js/pages/outtransaction/Show.vue",
58202
+		"resources_js_pages_outtransaction_Show_vue"
58203
+	],
58204
+	"./outtransaction/Show.vue": [
58205
+		"./resources/js/pages/outtransaction/Show.vue",
58206
+		"resources_js_pages_outtransaction_Show_vue"
58207
+	],
58208
+	"./outtransaction/tableHeader": [
58209
+		"./resources/js/pages/outtransaction/tableHeader.js",
58210
+		"resources_js_pages_outtransaction_tableHeader_js"
58211
+	],
58212
+	"./outtransaction/tableHeader.js": [
58213
+		"./resources/js/pages/outtransaction/tableHeader.js",
58214
+		"resources_js_pages_outtransaction_tableHeader_js"
58215
+	],
58200 58216
 	"./parkingfee/Create": [
58201 58217
 		"./resources/js/pages/parkingfee/Create.vue",
58202 58218
 		"resources_js_pages_parkingfee_Create_vue"
@@ -58498,7 +58514,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
58498 58514
 /******/ 		// This function allow to reference async chunks
58499 58515
 /******/ 		__webpack_require__.u = (chunkId) => {
58500 58516
 /******/ 			// return url for filenames based on template
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] + "";
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_outtransaction_Show_vue":"08d24b9b33538ef7","resources_js_pages_outtransaction_tableHeader_js":"28e044bd873db9aa","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] + "";
58502 58518
 /******/ 		};
58503 58519
 /******/ 	})();
58504 58520
 /******/ 	

+ 50
- 0
resources/js/pages/outtransaction/Show.vue 查看文件

@@ -0,0 +1,50 @@
1
+<script setup>
2
+import { Head } from '@inertiajs/inertia-vue3'
3
+import TableHeader from './tableHeader'
4
+import DashboardLayout from '@/layouts/DashboardLayout.vue'
5
+
6
+defineProps({
7
+  user: String,
8
+  outTransaction: Object,
9
+})
10
+</script>
11
+
12
+<template>
13
+  <Head title="Detail Top Up" />
14
+
15
+  <DashboardLayout>
16
+    <DataTable
17
+      responsive-layout="scroll"
18
+      column-resize-mode="expand"
19
+      :value="outTransaction"
20
+      :row-hover="true"
21
+      :striped-rows="true"
22
+    >
23
+      <template #header>
24
+        <h1 class="text-2xl font-bold">Detail Transaksi Keluar</h1>
25
+
26
+        <div class="grid px-2">
27
+          <div class="col-auto mr-7">
28
+            <h2>
29
+              <span class="text-base">
30
+                <i class="pi pi-user" />
31
+                Petugas Parkir
32
+              </span>
33
+
34
+              <br />
35
+
36
+              <span class="text-lg">{{ user }}</span>
37
+            </h2>
38
+          </div>
39
+        </div>
40
+      </template>
41
+
42
+      <Column
43
+        v-for="value in TableHeader"
44
+        :field="value.field"
45
+        :header="value.header"
46
+        :key="value.field"
47
+      />
48
+    </DataTable>
49
+  </DashboardLayout>
50
+</template>

+ 8
- 0
resources/js/pages/outtransaction/tableHeader.js 查看文件

@@ -0,0 +1,8 @@
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' },
6
+  { field: 'platNumber', header: 'Plat Kendaraan' },
7
+  { field: 'entryTransactionId', header: 'Nomor Transaksi' },
8
+]

+ 3
- 0
routes/web.php 查看文件

@@ -4,6 +4,7 @@ use App\Http\Controllers\DashboardController;
4 4
 use App\Http\Controllers\ExpenseController;
5 5
 use App\Http\Controllers\MemberController;
6 6
 use App\Http\Controllers\MutationController;
7
+use App\Http\Controllers\OutTransactionController;
7 8
 use App\Http\Controllers\ParkingFeeController;
8 9
 use App\Http\Controllers\TestTransactionController;
9 10
 use App\Http\Controllers\TopUpController;
@@ -50,6 +51,8 @@ Route::middleware(['auth', 'verified'])->group(function () {
50 51
 
51 52
     Route::resource('/transactions', TransactionController::class);
52 53
 
54
+    Route::resource('/out-transactions', OutTransactionController::class);
55
+
53 56
     Route::resource('/test-transactions', TestTransactionController::class);
54 57
 });
55 58