浏览代码

fix: master member

父节点
当前提交
db650afc4d

+ 6
- 6
app/Http/Controllers/MemberController.php 查看文件

@@ -6,7 +6,6 @@ use App\Http\Requests\Member\StoreMemberRequest;
6 6
 use App\Http\Requests\Member\UpdateMemberRequest;
7 7
 use App\Models\Member;
8 8
 use App\Models\TypeMember;
9
-use App\Models\TypeVehicle;
10 9
 use Illuminate\Database\QueryException;
11 10
 use Illuminate\Support\Facades\DB;
12 11
 use Inertia\Inertia;
@@ -51,16 +50,17 @@ class MemberController extends Controller
51 50
                 'label' => $typeMember->type,
52 51
                 'value' => $typeMember->id,
53 52
             ]),
54
-            'typeVehicles' => TypeVehicle::get()->transform(fn($typeVehicle) => [
55
-                'label' => $typeVehicle->type,
56
-                'value' => $typeVehicle->id,
57
-            ]),
58 53
             'typeMember' => Inertia::lazy(
59 54
                 fn() => TypeMember::filter(request('id'))->get()->transform(fn($typeMember) => [
60 55
                     'type' => $typeMember->type,
61 56
                     'description' => $typeMember->description,
62 57
                     'price' => $typeMember->price,
63
-                    'max' => $typeMember->max,
58
+                    'max' => $typeMember->maxVehicleDetail(),
59
+                    'maxVehicles' => $typeMember->fresh()->maxVehicles->transform(fn($maxVehicle) => [
60
+                        'value' => $maxVehicle->id,
61
+                        'label' => $maxVehicle->typeVehicle->type,
62
+                        'max' => $maxVehicle->max,
63
+                    ]),
64 64
                 ])->first()
65 65
             ),
66 66
         ]);

+ 1
- 1
app/Models/TypeMember.php 查看文件

@@ -60,7 +60,7 @@ class TypeMember extends Model
60 60
 
61 61
     public function maxVehicleDetail()
62 62
     {
63
-        $maxVehicle = $this->maxVehicles->transform(fn($maxVehicle) => $maxVehicle->typeVehicle->type . ', ' . 'Maksimal Kendaraan ' . $maxVehicle->max)->toArray();
63
+        $maxVehicle = $this->maxVehicles->transform(fn($maxVehicle) => "{$maxVehicle->typeVehicle->type}, maksimal ({$maxVehicle->max})")->toArray();
64 64
 
65 65
         return implode(". ", $maxVehicle);
66 66
     }

+ 35
- 52
public/js/resources_js_pages_member_Create_vue.js 查看文件

@@ -542,41 +542,31 @@ __webpack_require__.r(__webpack_exports__);
542 542
     };
543 543
 
544 544
     var addPlatNumber = function addPlatNumber() {
545
-      form.clearErrors('plat_number', 'type_vehicle_id');
546
-
547
-      if (!form.plat_number) {
548
-        form.setError('plat_number', 'Plat kendaraan tidak boleh kosong');
549
-        return;
550
-      }
551
-
552
-      if (!form.type_vehicle_id) {
553
-        form.setError('type_vehicle_id', 'Tidak boleh kosong');
554
-        return;
555
-      }
556
-
557
-      var listPlatNumberExist = listPlatNumber.filter(function (val) {
558
-        return val.platNumber === form.plat_number.toUpperCase();
559
-      });
560
-
561
-      if (listPlatNumberExist.length) {
562
-        form.setError('plat_number', 'Nomor plat kendaraan tidak boleh sama');
563
-        return;
564
-      }
565
-
566
-      if (listPlatNumber.length + 1 > props.typeMember.max) {
567
-        form.setError('plat_number', 'Melibihi batas maksimal kendaraan');
568
-        return;
569
-      }
570
-
571
-      var typeVehicleFilter = props.typeVehicles.filter(function (val) {
572
-        return val.value === form.type_vehicle_id;
573
-      })[0];
574
-      listPlatNumber.push({
575
-        platNumber: form.plat_number.toUpperCase(),
576
-        typeVehicle: typeVehicleFilter.label,
577
-        typeVehicleId: typeVehicleFilter.value
578
-      });
579
-      form.reset('plat_number', 'type_vehicle_id');
545
+      console.log(props.typeMember.maxVehicles); //   form.clearErrors('plat_number', 'type_vehicle_id')
546
+      //   if (!form.plat_number) {
547
+      //     form.setError('plat_number', 'Plat kendaraan tidak boleh kosong')
548
+      //     return
549
+      //   }
550
+      //   if (!form.type_vehicle_id) {
551
+      //     form.setError('type_vehicle_id', 'Tidak boleh kosong')
552
+      //     return
553
+      //   }
554
+      //   const listPlatNumberExist = listPlatNumber.filter((val) => val.platNumber === form.plat_number.toUpperCase())
555
+      //   if (listPlatNumberExist.length) {
556
+      //     form.setError('plat_number', 'Nomor plat kendaraan tidak boleh sama')
557
+      //     return
558
+      //   }
559
+      //   if (listPlatNumber.length + 1 > props.typeMember.max) {
560
+      //     form.setError('plat_number', 'Melibihi batas maksimal kendaraan')
561
+      //     return
562
+      //   }
563
+      //   const typeVehicleFilter = props.typeVehicles.filter((val) => val.value === form.type_vehicle_id)[0]
564
+      //   listPlatNumber.push({
565
+      //     platNumber: form.plat_number.toUpperCase(),
566
+      //     typeVehicle: typeVehicleFilter.label,
567
+      //     typeVehicleId: typeVehicleFilter.value,
568
+      //   })
569
+      //   form.reset('plat_number', 'type_vehicle_id')
580 570
     };
581 571
 
582 572
     var form = (0,_inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__.useForm)({
@@ -1342,6 +1332,7 @@ var _hoisted_13 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElement
1342 1332
 );
1343 1333
 
1344 1334
 var _hoisted_14 = {
1335
+  key: 0,
1345 1336
   "class": "grid"
1346 1337
 };
1347 1338
 var _hoisted_15 = {
@@ -1357,22 +1348,14 @@ var _hoisted_18 = {
1357 1348
   "class": "col-12 md:col-6"
1358 1349
 };
1359 1350
 var _hoisted_19 = {
1360
-  "class": "col-12 flex flex-column md:flex-row md:align-items-center justify-content-end mb-3 md:mb-0"
1351
+  "class": "col-12 mb-3 md:mb-0"
1361 1352
 };
1362 1353
 var _hoisted_20 = {
1354
+  "class": "flex flex-column md:flex-row md:align-items-center justify-content-end"
1355
+};
1356
+var _hoisted_21 = {
1363 1357
   "class": "col-12"
1364 1358
 };
1365
-
1366
-var _hoisted_21 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h1", {
1367
-  "class": "text-base"
1368
-}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("i", {
1369
-  "class": "pi pi-car"
1370
-}), /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(), /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", {
1371
-  "class": "ml-2"
1372
-}, "Daftar Plat Kendaraan")], -1
1373
-/* HOISTED */
1374
-);
1375
-
1376 1359
 var _hoisted_22 = {
1377 1360
   style: {
1378 1361
     "color": "#b71c1c"
@@ -1462,7 +1445,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1462 1445
         })
1463 1446
       } : undefined]), 1024
1464 1447
       /* DYNAMIC_SLOTS */
1465
-      )])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_15, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Card, null, {
1448
+      )])]), $props.typeMember ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_15, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Card, null, {
1466 1449
         content: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1467 1450
           return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_16, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_17, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup["AppInputText"], {
1468 1451
             modelValue: $setup.form.plat_number,
@@ -1483,11 +1466,11 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1483 1466
             label: "Jenis Kendaraan",
1484 1467
             placeholder: "jenis kendaraan",
1485 1468
             disabled: !$setup.form.type_member_id,
1486
-            options: $props.typeVehicles,
1469
+            options: $props.typeMember.maxVehicles,
1487 1470
             error: $setup.form.errors.type_vehicle_id
1488 1471
           }, null, 8
1489 1472
           /* PROPS */
1490
-          , ["modelValue", "disabled", "options", "error"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_19, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Button, {
1473
+          , ["modelValue", "disabled", "options", "error"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_19, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_20, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Button, {
1491 1474
             label: "Tambah",
1492 1475
             "class": "p-button-outlined",
1493 1476
             icon: "pi pi-car",
@@ -1495,7 +1478,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1495 1478
             onClick: $setup.addPlatNumber
1496 1479
           }, null, 8
1497 1480
           /* PROPS */
1498
-          , ["disabled"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_20, [_hoisted_21, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_DataTable, {
1481
+          , ["disabled"])])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_21, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_DataTable, {
1499 1482
             "striped-rows": "",
1500 1483
             "row-hover": "",
1501 1484
             "responsive-layout": "scroll",
@@ -1566,7 +1549,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1566 1549
         _: 1
1567 1550
         /* STABLE */
1568 1551
 
1569
-      })])])];
1552
+      })])])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true)];
1570 1553
     }),
1571 1554
     _: 1
1572 1555
     /* STABLE */

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

@@ -58101,7 +58101,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
58101 58101
 /******/ 		// This function allow to reference async chunks
58102 58102
 /******/ 		__webpack_require__.u = (chunkId) => {
58103 58103
 /******/ 			// return url for filenames based on template
58104
-/******/ 			return "js/" + chunkId + ".js?id=" + {"node_modules_chart_js_auto_auto_esm_js":"10c6b388645ceb22","resources_js_pages_auth_ForgotPassword_vue":"5b9f0529bda25a9b","resources_js_pages_auth_Login_vue":"61b9c9ae1ae9da32","resources_js_pages_auth_ResetPassword_vue":"b091193a1e114ce8","resources_js_pages_auth_VerifyEmail_vue":"a7b9a99e5a331088","resources_js_pages_expense_Create_vue":"1772093ec9ad8e1f","resources_js_pages_expense_Index_vue":"51f7facd5c3c3ea6","resources_js_pages_expense_Show_vue":"6200e318fe2f7fed","resources_js_pages_expense_TableHeader_js":"eed3f0613f167cfd","resources_js_pages_home_Index_vue":"6cd0224828ac8129","resources_js_pages_member_Create_vue":"3ca394fe875a5c72","resources_js_pages_member_Edit_vue":"7b222567b848883e","resources_js_pages_member_Index_vue":"71a31a774bb1b571","resources_js_pages_member_TableHeader_js":"51dbf053f7ddd45c","resources_js_pages_topup_Create_vue":"24940afcdac09553","resources_js_pages_topup_Edit_vue":"258c3b0746574dc0","resources_js_pages_topup_Index_vue":"70bcf9869c3024d0","resources_js_pages_topup_Show_vue":"cb35ad21e9ce163f","resources_js_pages_topup_TableHeader_js":"c0dc89df0e3b8b7d","resources_js_pages_typemember_Create_vue":"e9028dd632c51636","resources_js_pages_typemember_Edit_vue":"c51c01c7afe7241d","resources_js_pages_typemember_Index_vue":"3c3878e1d6568226","resources_js_pages_typemember_TableHeader_js":"ac1d31a59f8d464e","resources_js_pages_typevehicle_Create_vue":"0f937d93865a1ea2","resources_js_pages_typevehicle_Edit_vue":"edba97a3715ba957","resources_js_pages_typevehicle_Index_vue":"53c702d33feb6196","resources_js_pages_typevehicle_TableHeader_js":"a40378918fbe74e1","resources_js_pages_user_Create_vue":"361bf2589467f820","resources_js_pages_user_Edit_vue":"fdb844cf830ec11c","resources_js_pages_user_Index_vue":"16d93eb7e5210300","resources_js_pages_user_Show_vue":"138fd92d6ae36518","resources_js_pages_user_TableHeader_js":"0d87fd422fe40491"}[chunkId] + "";
58104
+/******/ 			return "js/" + chunkId + ".js?id=" + {"node_modules_chart_js_auto_auto_esm_js":"10c6b388645ceb22","resources_js_pages_auth_ForgotPassword_vue":"5b9f0529bda25a9b","resources_js_pages_auth_Login_vue":"61b9c9ae1ae9da32","resources_js_pages_auth_ResetPassword_vue":"b091193a1e114ce8","resources_js_pages_auth_VerifyEmail_vue":"a7b9a99e5a331088","resources_js_pages_expense_Create_vue":"1772093ec9ad8e1f","resources_js_pages_expense_Index_vue":"51f7facd5c3c3ea6","resources_js_pages_expense_Show_vue":"6200e318fe2f7fed","resources_js_pages_expense_TableHeader_js":"eed3f0613f167cfd","resources_js_pages_home_Index_vue":"6cd0224828ac8129","resources_js_pages_member_Create_vue":"14b9578191b85d48","resources_js_pages_member_Edit_vue":"7b222567b848883e","resources_js_pages_member_Index_vue":"71a31a774bb1b571","resources_js_pages_member_TableHeader_js":"51dbf053f7ddd45c","resources_js_pages_topup_Create_vue":"24940afcdac09553","resources_js_pages_topup_Edit_vue":"258c3b0746574dc0","resources_js_pages_topup_Index_vue":"70bcf9869c3024d0","resources_js_pages_topup_Show_vue":"cb35ad21e9ce163f","resources_js_pages_topup_TableHeader_js":"c0dc89df0e3b8b7d","resources_js_pages_typemember_Create_vue":"e9028dd632c51636","resources_js_pages_typemember_Edit_vue":"c51c01c7afe7241d","resources_js_pages_typemember_Index_vue":"3c3878e1d6568226","resources_js_pages_typemember_TableHeader_js":"ac1d31a59f8d464e","resources_js_pages_typevehicle_Create_vue":"0f937d93865a1ea2","resources_js_pages_typevehicle_Edit_vue":"edba97a3715ba957","resources_js_pages_typevehicle_Index_vue":"53c702d33feb6196","resources_js_pages_typevehicle_TableHeader_js":"a40378918fbe74e1","resources_js_pages_user_Create_vue":"361bf2589467f820","resources_js_pages_user_Edit_vue":"fdb844cf830ec11c","resources_js_pages_user_Index_vue":"16d93eb7e5210300","resources_js_pages_user_Show_vue":"138fd92d6ae36518","resources_js_pages_user_TableHeader_js":"0d87fd422fe40491"}[chunkId] + "";
58105 58105
 /******/ 		};
58106 58106
 /******/ 	})();
58107 58107
 /******/ 	

+ 39
- 47
resources/js/pages/member/Create.vue 查看文件

@@ -33,41 +33,33 @@ const listPlatNumberOnDelete = (index) => {
33 33
 }
34 34
 
35 35
 const addPlatNumber = () => {
36
-  form.clearErrors('plat_number', 'type_vehicle_id')
37
-
38
-  if (!form.plat_number) {
39
-    form.setError('plat_number', 'Plat kendaraan tidak boleh kosong')
40
-
41
-    return
42
-  }
43
-
44
-  if (!form.type_vehicle_id) {
45
-    form.setError('type_vehicle_id', 'Tidak boleh kosong')
46
-
47
-    return
48
-  }
49
-
50
-  const listPlatNumberExist = listPlatNumber.filter((val) => val.platNumber === form.plat_number.toUpperCase())
51
-  if (listPlatNumberExist.length) {
52
-    form.setError('plat_number', 'Nomor plat kendaraan tidak boleh sama')
53
-
54
-    return
55
-  }
56
-
57
-  if (listPlatNumber.length + 1 > props.typeMember.max) {
58
-    form.setError('plat_number', 'Melibihi batas maksimal kendaraan')
59
-
60
-    return
61
-  }
62
-
63
-  const typeVehicleFilter = props.typeVehicles.filter((val) => val.value === form.type_vehicle_id)[0]
64
-  listPlatNumber.push({
65
-    platNumber: form.plat_number.toUpperCase(),
66
-    typeVehicle: typeVehicleFilter.label,
67
-    typeVehicleId: typeVehicleFilter.value,
68
-  })
69
-
70
-  form.reset('plat_number', 'type_vehicle_id')
36
+  console.log(props.typeMember.maxVehicles)
37
+
38
+  //   form.clearErrors('plat_number', 'type_vehicle_id')
39
+  //   if (!form.plat_number) {
40
+  //     form.setError('plat_number', 'Plat kendaraan tidak boleh kosong')
41
+  //     return
42
+  //   }
43
+  //   if (!form.type_vehicle_id) {
44
+  //     form.setError('type_vehicle_id', 'Tidak boleh kosong')
45
+  //     return
46
+  //   }
47
+  //   const listPlatNumberExist = listPlatNumber.filter((val) => val.platNumber === form.plat_number.toUpperCase())
48
+  //   if (listPlatNumberExist.length) {
49
+  //     form.setError('plat_number', 'Nomor plat kendaraan tidak boleh sama')
50
+  //     return
51
+  //   }
52
+  //   if (listPlatNumber.length + 1 > props.typeMember.max) {
53
+  //     form.setError('plat_number', 'Melibihi batas maksimal kendaraan')
54
+  //     return
55
+  //   }
56
+  //   const typeVehicleFilter = props.typeVehicles.filter((val) => val.value === form.type_vehicle_id)[0]
57
+  //   listPlatNumber.push({
58
+  //     platNumber: form.plat_number.toUpperCase(),
59
+  //     typeVehicle: typeVehicleFilter.label,
60
+  //     typeVehicleId: typeVehicleFilter.value,
61
+  //   })
62
+  //   form.reset('plat_number', 'type_vehicle_id')
71 63
 }
72 64
 
73 65
 const form = useForm({
@@ -163,7 +155,7 @@ const submit = () => {
163 155
       </div>
164 156
     </div>
165 157
 
166
-    <div class="grid">
158
+    <div v-if="typeMember" class="grid">
167 159
       <div class="col-12 md:col-8">
168 160
         <Card>
169 161
           <template #content>
@@ -183,22 +175,22 @@ const submit = () => {
183 175
                   label="Jenis Kendaraan"
184 176
                   placeholder="jenis kendaraan"
185 177
                   :disabled="!form.type_member_id"
186
-                  :options="typeVehicles"
178
+                  :options="typeMember.maxVehicles"
187 179
                   :error="form.errors.type_vehicle_id"
188 180
                 />
189 181
               </div>
190
-              <div class="col-12 flex flex-column md:flex-row md:align-items-center justify-content-end mb-3 md:mb-0">
191
-                <Button
192
-                  label="Tambah"
193
-                  class="p-button-outlined"
194
-                  icon="pi pi-car"
195
-                  :disabled="!form.type_member_id"
196
-                  @click="addPlatNumber"
197
-                />
182
+              <div class="col-12 mb-3 md:mb-0">
183
+                <div class="flex flex-column md:flex-row md:align-items-center justify-content-end">
184
+                  <Button
185
+                    label="Tambah"
186
+                    class="p-button-outlined"
187
+                    icon="pi pi-car"
188
+                    :disabled="!form.type_member_id"
189
+                    @click="addPlatNumber"
190
+                  />
191
+                </div>
198 192
               </div>
199 193
               <div class="col-12">
200
-                <h1 class="text-base"><i class="pi pi-car"></i> <span class="ml-2">Daftar Plat Kendaraan</span></h1>
201
-
202 194
                 <DataTable
203 195
                   striped-rows
204 196
                   row-hover