Quellcode durchsuchen

Merge branch 'zengjun'

zhouzhendong vor 4 Jahren
Ursprung
Commit
36b0173d68

+ 17 - 6
app/Filters/WorkOrderFilters.php

@@ -71,7 +71,17 @@ class WorkOrderFilters
         if(isset($this->params['data']))
             $this->id(explode(',',$this->params['data']));
 
+        if (!isset($this->params['owner'])){
+            $this->getOrderQuery()->whereIn('owner_id', app('UserService')->getPermittingOwnerIds(Auth::user())??[]);
+        }
 
+//        $user = Auth::user();
+//        $logistic_ids = App('LogisticService')->getPermittingLogisticIds($user);
+//        $owner_id = app('UserService')->getPermittingOwnerIds($user);
+//
+//        $this->getOrderQuery()->where(function($query)use ($owner_id,$logistic_ids){
+//            $query->whereIn('owner_id',$owner_id)->orWhereIn('logistic_id',$logistic_ids);
+//        });
         $this->afterFilter();
     }
 
@@ -86,17 +96,18 @@ class WorkOrderFilters
 
         $this->afterFilterLogistic($orderQuery,$owner_ids,$logistic_ids);
 
-        $this->afterFilterOwner($orderQuery,$owner_ids,);
+        $this->afterFilterOwner($orderQuery,$owner_ids);
     }
 
     // 可见货主过滤
     private function afterFilterOwner($orderQuery,$owner_ids)
     {
-        if(Gate::allows('订单管理-工单处理-客服编辑') || Gate::allows('订单管理-工单处理-承运商编辑')){
-
-        }else if(Gate::allows('订单管理-工单处理-货主编辑')){
-            $orderQuery->whereIn('owner_id',$owner_ids);
-        }
+        $orderQuery->whereIn('owner_id',$owner_ids);
+//        if(Gate::allows('订单管理-工单处理-客服编辑') || Gate::allows('订单管理-工单处理-承运商编辑')){
+//
+//        }else if(Gate::allows('订单管理-工单处理-货主编辑')){
+//            $orderQuery->whereIn('owner_id',$owner_ids);
+//        }
     }
 
     // 可见承运商过滤

+ 16 - 16
app/Services/WorkOrderService.php

@@ -62,7 +62,7 @@ class WorkOrderService
         return ['success' => true];
     }
 
-    public function createAndNotification($order, $orderIssueType, $remake): WorkOrder
+    public function createAndNotification($order, $orderIssueType, $remark): WorkOrder
     {
         $user = Auth::user();
         /** @var WorkOrder $workOrder */
@@ -70,7 +70,7 @@ class WorkOrderService
             'order_id' => $order->id,
             'creator_id' => $user["id"],
             'owner_id' => $order->owner_id,
-            'remark' => $remake,
+            'remark' => $remark,
             'outer_table_name' => 'orders',
             'order_issue_type_id' => $orderIssueType->id,
             'uniquely_tag' => $order->code,
@@ -88,8 +88,8 @@ class WorkOrderService
     {
         $orderIssueType = OrderIssueType::query()->firstOrCreate(['name' => '拦截']);
         $order = Order::query()->where('code', $param['order_no'])->first();
-        $remake = '拦截订单';
-        return $this->createAndNotification($order, $orderIssueType, $remake);
+        $remark = $param['remark'] ?? '';
+        return $this->createAndNotification($order, $orderIssueType, $remark);
     }
 
     /**
@@ -99,8 +99,8 @@ class WorkOrderService
     {
         $orderIssueType = OrderIssueType::query()->firstOrCreate(['name' => '错漏发']);
         $order = Order::query()->where('code', $param['order_no'])->first();
-        $remake = $param['remark'] ?? '';
-        return $this->createAndNotification($order, $orderIssueType, $remake);
+        $remark = $param['remark'] ?? '';
+        return $this->createAndNotification($order, $orderIssueType, $remark);
     }
 
     /**
@@ -110,11 +110,11 @@ class WorkOrderService
     {
         $orderIssueType = OrderIssueType::query()->firstOrCreate(['name' => '破损']);
         $order = Order::query()->where('code', $param['order_no'])->first();
-        $remake = $param['remark'] ?? '';
+        $remark = $param['remark'] ?? '';
 
         $workOrderImageService = app('WorkOrderImageService');
 
-        $workOrder = $this->createAndNotification($order, $orderIssueType, $remake);
+        $workOrder = $this->createAndNotification($order, $orderIssueType, $remark);
 
         $workOrderImageService->createWorkOrderPackageImages($workOrder, $param['packageImages']);
 
@@ -138,8 +138,8 @@ class WorkOrderService
     {
         $orderIssueType = OrderIssueType::query()->firstOrCreate(['name' => '快递异常']);
         $order = Order::query()->where('code', $param['order_no'])->first();
-        $remake = $param['remark'] ?? '';
-        return $this->createAndNotification($order, $orderIssueType, $remake);
+        $remark = $param['remark'] ?? '';
+        return $this->createAndNotification($order, $orderIssueType, $remark);
     }
 
     /***
@@ -149,9 +149,9 @@ class WorkOrderService
     {
         $orderIssueType = OrderIssueType::query()->firstOrCreate(['name' => '信息更改']);
         $order = Order::query()->where('code', $param['order_no'])->first();
-        $remake = $param['remark'] ?? '';
+        $remark = $param['remark'] ?? '';
 
-        $workOrder = $this->createAndNotification($order, $orderIssueType, $remake);
+        $workOrder = $this->createAndNotification($order, $orderIssueType, $remark);
 //        $workOrder->update(['work_order_status' => ]); // 标记信息已填写
 
         return $workOrder;
@@ -164,8 +164,8 @@ class WorkOrderService
     {
         $orderIssueType = OrderIssueType::query()->firstOrCreate(['name' => '其他']);
         $order = Order::query()->where('code', $param['order_no'])->first();
-        $remake = $param['remark'] ?? '';
-        return $this->createAndNotification($order, $orderIssueType, $remake);
+        $remark = $param['remark'] ?? '';
+        return $this->createAndNotification($order, $orderIssueType, $remark);
     }
 
     /**
@@ -175,8 +175,8 @@ class WorkOrderService
     {
         $orderIssueType = OrderIssueType::query()->firstOrCreate(['name' => '快递丢件']);
         $order = Order::query()->where('code', $param['order_no'])->first();
-        $remake = $param['remark'] ?? '';
-        $workOrder = $this->createAndNotification($order, $orderIssueType, $remake);
+        $remark = $param['remark'] ?? '';
+        $workOrder = $this->createAndNotification($order, $orderIssueType, $remark);
         $workOrder->update(['work_order_status' => 1]); // 标记信息未填写
         return $workOrder;
     }

+ 51 - 48
resources/views/order/index/_work_order_modal.blade.php

@@ -21,7 +21,8 @@
                     </div>
                 </div>
                 {{--其他--}}
-                <div class="form-group row" v-if="['其他',null,'快递异常','错漏发','破损','快递丢件'].includes(workOrder.orderIssueType)">
+                <div class="form-group row"
+                     v-if="['其他',null,'快递异常','错漏发','破损','快递丢件','拦截'].includes(workOrder.orderIssueType)">
                     <hr>
                     <label for="remake_info" class="col-sm-2 col-form-label text-right">问题描述</label>
                     <div class="col-sm-10">
@@ -60,21 +61,21 @@
                 </div>
 
                 <hr v-if="'破损' === workOrder.orderIssueType">
-                <div class="form-group " v-if="'破损' === workOrder.orderIssueType">
-                    <div class="pl-1 custom-file col-10 offset-2">
-                        <input type="file" id="package-images" name="package-images" multiple class="custom-file-input"
-                               accept="image/*" @change="pushImagesAndShow($event,workOrder.packageImages)">
-                        <label class="custom-file-label" for="package-images">点击添加外包装破损图片</label>
-                    </div>
-                    <div class="border-dark mt-1 col-10 offset-2">
-                        <div v-for="(image,i) in  workOrder.packageImages"
-                             class="d-inline-block col-4 position-relative card">
-                            <div class="card-body">
-                                <img :src="image.src" class="card-img-top" :alt="image.file.name">
-                                <div class="float-right position-relative">
-                                    <button type="button" class="btn btn-sm btn-outline-danger"
-                                            @click="spliceImage(i,workOrder.packageImages)">取消
-                                    </button>
+                <div class="form-group row" v-if="'破损' === workOrder.orderIssueType">
+                    <label for="package-image" class="col-sm-2 col-form-label text-right text-primary">外包装图片</label>
+                    <div class="col-sm-10">
+                        <div class="h-auto border border-secondary" id="package-image" style="min-height: 75px"
+                             contenteditable="true"
+                             @paste="pasteImage($event,workOrder.packageImages)">
+                            <div v-for="(image,i) in  workOrder.packageImages"
+                                 class="d-inline-block col-4 position-relative card">
+                                <div class="card-body">
+                                    <img :src="image.src" class="card-img-top" :alt="image.file.name">
+                                    <div class="float-right position-relative">
+                                        <button type="button" class="btn btn-sm btn-outline-danger"
+                                                @click="spliceImage(i,workOrder.packageImages)">取消
+                                        </button>
+                                    </div>
                                 </div>
                             </div>
                         </div>
@@ -82,44 +83,44 @@
                 </div>
 
                 <hr v-if="'破损' === workOrder.orderIssueType">
-                <div class="form-group " v-if="'破损' === workOrder.orderIssueType">
-                    <div class="pl-1 custom-file col-10 offset-2">
-                        <input type="file" id="commodity-images" name="package-images" multiple
-                               class="custom-file-input" accept="image/*"
-                               @change="pushImagesAndShow($event,workOrder.commodityImages)">
-                        <label class="custom-file-label" for="commodity-images">点击添加内物破损图片</label>
-                    </div>
-                    <div class="border-dark mt-1 col-10 offset-2">
-                        <div v-for="(image,i) in  workOrder.commodityImages"
-                             class="d-inline-block col-4 position-relative card">
-                            <div class="card-body">
-                                <img :src="image.src" class="card-img-top" :alt="image.file.name">
-                                <div class="float-right position-relative">
-                                    <button type="button" class="btn btn-sm btn-outline-danger"
-                                            @click="spliceImage(i,workOrder.commodityImages)">取消
-                                    </button>
+                <div class="form-group row" v-if="'破损' === workOrder.orderIssueType">
+                    <label for="commodity-image" class="col-sm-2 col-form-label text-right text-primary">内物破损图片</label>
+                    <div class="col-sm-10">
+                        <div class="h-auto border border-secondary" id="commodity-image" style="min-height: 75px"
+                             contenteditable="true"
+                             @paste="pasteImage($event,workOrder.commodityImages)">
+                            <div v-for="(image,i) in  workOrder.commodityImages"
+                                 class="d-inline-block col-4 position-relative card">
+                                <div class="card-body">
+                                    <img :src="image.src" class="card-img-top" :alt="image.file.name">
+                                    <div class="float-right position-relative">
+                                        <button type="button" class="btn btn-sm btn-outline-danger"
+                                                @click="spliceImage(i,workOrder.commodityImages)">取消
+                                        </button>
+                                    </div>
                                 </div>
                             </div>
                         </div>
                     </div>
                 </div>
 
+
                 <hr v-if="'破损' === workOrder.orderIssueType">
-                <div class="form-group " v-if="'破损' === workOrder.orderIssueType">
-                    <div class="pl-1 custom-file col-10 offset-2">
-                        <input type="file" id="deal-images" name="package-images" multiple class="custom-file-input"
-                               accept="image/*" @change="pushImagesAndShow($event,workOrder.dealImages)">
-                        <label class="custom-file-label" for="deal-images">点击添加外交易截图</label>
-                    </div>
-                    <div class="border-dark mt-1 col-10 offset-2">
-                        <div v-for="(image,i) in  workOrder.dealImages"
-                             class="d-inline-block col-4 position-relative card">
-                            <div class="card-body">
-                                <img :src="image.src" class="card-img-top" :alt="image.file.name">
-                                <div class="float-right position-relative">
-                                    <button type="button" class="btn btn-sm btn-outline-danger"
-                                            @click="spliceImage(i,workOrder.dealImages)">取消
-                                    </button>
+                <div class="form-group row" v-if="'破损' === workOrder.orderIssueType">
+                    <label for="deal-image" class="col-sm-2 col-form-label text-right text-primary">交易截图</label>
+                    <div class="col-sm-10">
+                        <div class="border border-secondary h-auto" id="deal-image" style="min-height: 75px"
+                             contenteditable="true"
+                             @paste="pasteImage($event,workOrder.dealImages)">
+                            <div v-for="(image,i) in workOrder.dealImages"
+                                 class="d-inline-block col-4 position-relative card">
+                                <div class="card-body">
+                                    <img :src="image.src" class="card-img-top" :alt="image.file.name">
+                                    <div class="float-right position-relative">
+                                        <button type="button" class="btn btn-sm btn-outline-danger"
+                                                @click="spliceImage(i,workOrder.dealImages)">取消
+                                        </button>
+                                    </div>
                                 </div>
                             </div>
                         </div>
@@ -145,7 +146,9 @@
                                     <input type="number" class="form-control form-control-sm" v-model="item.amount">
                                 </td>
                                 <td>
-                                    <button type="button" class="btn btn-sm btn-outline-danger" @click="workOrder.commodities.splice(i,1)">删除</button>
+                                    <button type="button" class="btn btn-sm btn-outline-danger"
+                                            @click="workOrder.commodities.splice(i,1)">删除
+                                    </button>
                                 </td>
                             </tr>
                         </table>

+ 28 - 0
resources/views/order/index/delivering.blade.php

@@ -1553,6 +1553,34 @@
                         });
                     });
                 },
+                pasteImage(event,imageArray){
+                    for (let i = 0; i < event.clipboardData.items.length; i++) {
+                        let item = event.clipboardData.items[i];
+                        if (item.kind === 'string') continue;
+                        if (item.type.indexOf('image') === -1) continue;
+                        if (item.kind === 'file'){
+                            let blob = item.getAsFile();
+                            let src = null;
+                            this.blobToBase64(blob).then(res => {
+                                src  = res;
+                                imageArray.push({src:src,file:blob});
+                            });
+                        }
+                    }
+                    event.preventDefault();
+                },
+                blobToBase64(blob) {
+                    return new Promise((resolve, reject) => {
+                        const fileReader = new FileReader();
+                        fileReader.onload = (e) => {
+                            resolve(e.target.result);
+                        };
+                        fileReader.readAsDataURL(blob);
+                        fileReader.onerror = () => {
+                            reject(new Error('blobToBase64 error'));
+                        };
+                    });
+                },
             },
         });
     </script>

+ 47 - 32
resources/views/order/workOrder/_fill_loss_work_order.blade.php

@@ -1,8 +1,9 @@
-<div class="modal fade " id="fill-loss-work-order-modal" tabindex="-1" role="dialog" aria-labelledby="checkModalLabel" aria-hidden="true">
+<div class="modal fade " id="fill-loss-work-order-modal" tabindex="-1" role="dialog" aria-labelledby="checkModalLabel"
+     aria-hidden="true">
     <div class="modal-dialog modal-xl modal-dialog-centered">
         <div class="modal-content">
             <div class="modal-header">
-                <h5 class="modal-title" id="checkModalLabel" >信息填写</h5>
+                <h5 class="modal-title" id="checkModalLabel">信息填写</h5>
                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                     <span aria-hidden="true">&times;</span>
                 </button>
@@ -15,63 +16,77 @@
                     </div>
                 </div>
                 {{--破损商品价格--}}
-                <div class="form-group row" >
+                <div class="form-group row">
                     <label for="work-order-price" class="col-sm-2 col-form-label text-right text-primary">丢件价值</label>
                     <div class="col-sm-10">
-                        <input type="number" id="work-order-price" class="form-control" v-model="workOrder.price" placeholder="破损商品价格">
+                        <input type="number" id="work-order-price" class="form-control" v-model="workOrder.price"
+                               placeholder="破损商品价格">
                     </div>
                 </div>
                 {{--快递单号--}}
-                <div class="form-group row" >
+                <div class="form-group row">
                     <label for="work-order-logistic-number" class="col-sm-2 col-form-label text-right">丢件快递单号</label>
                     <div class="col-sm-10">
-                        <input type="text" id="work-order-logistic-number" class="form-control" v-model="workOrder['logistic_number']" placeholder="快递单号">
+                        <input type="text" id="work-order-logistic-number" class="form-control"
+                               v-model="workOrder['logistic_number']" placeholder="快递单号">
                     </div>
                 </div>
                 {{--补发快递--}}
                 <div class="form-group row" v-show="workOrder.dealImages.length === 0">
-                    <label for="work-order-reissue-logistic-number" class="col-sm-2 col-form-label text-right">补发快递单号</label>
+                    <label for="work-order-reissue-logistic-number"
+                           class="col-sm-2 col-form-label text-right">补发快递单号</label>
                     <div class="col-sm-10">
-                        <input type="text" id="work-order-reissue-logistic-number" class="form-control" v-model="workOrder['reissue_logistic_number']" placeholder="快递单号">
+                        <input type="text" id="work-order-reissue-logistic-number" class="form-control"
+                               v-model="workOrder['reissue_logistic_number']" placeholder="快递单号">
                     </div>
                 </div>
                 {{--信息更改--}}
-                <div class="form-group row" >
+                <div class="form-group row">
                     <hr>
                     <label for="order_issue_type" class="col-sm-2 col-form-label text-right">收方信息</label>
                     <div class="col-sm-10">
-                        <textarea class="form-control" name="" id="remake_info" cols="30" rows="2" v-model="workOrder.remake"></textarea>
+                        <textarea class="form-control" name="" id="remake_info" cols="30" rows="2"
+                                  v-model="workOrder.remake"></textarea>
                     </div>
                 </div>
 
-                <div class="form-group" >
-                    <div class="offset-2 pl-1 custom-file col-10">
-                        <input type="file" id="deal-images" name="deal-images" multiple class="custom-file-input" accept="image/*" @change="pushImagesAndShow($event,workOrder.dealImages)">
-                        <label class="custom-file-label" for="deal-images">点击添加交易截图</label>
-                    </div>
-                    <div class="offset-2 mt-1 col-10">
-                        <div v-for="(image,i) in  workOrder.dealImages" class="d-inline-block col-4 position-relative card">
-                            <div class="card-body">
-                                <img :src="image.src" class="card-img-top" :alt="image.file.name">
-                                <div class="float-right position-relative">
-                                    <button type="button" class="btn btn-sm btn-outline-danger" @click="spliceImage(i,workOrder.dealImages)">取消</button>
+                <hr v-if="'破损' === workOrder.orderIssueType">
+                <div class="form-group row" >
+                    <label for="deal-image" class="col-sm-2 col-form-label text-right text-primary">交易截图</label>
+                    <div class="col-sm-10">
+                        <div class="border border-secondary h-auto" id="deal-image" style="min-height: 75px"
+                             contenteditable="true"
+                             @paste="pasteImage($event,workOrder.dealImages)">
+                            <div v-for="(image,i) in workOrder.dealImages"
+                                 class="d-inline-block col-4 position-relative card">
+                                <div class="card-body">
+                                    <img :src="image.src" class="card-img-top" :alt="image.file.name">
+                                    <div class="float-right position-relative">
+                                        <button type="button" class="btn btn-sm btn-outline-danger"
+                                                @click="spliceImage(i,workOrder.dealImages)">取消
+                                        </button>
+                                    </div>
                                 </div>
                             </div>
                         </div>
                     </div>
                 </div>
                 <hr>
-                <div class="form-group" v-show="!workOrder['reissue_logistic_number']">
-                    <div class="pl-1 custom-file col-10 offset-2">
-                        <input type="file" id="refund-images" name="refund-images" multiple class="custom-file-input" accept="image/*" @change="pushImagesAndShow($event,workOrder.refundImages)">
-                        <label class="custom-file-label" for="refund-images">添加退款成功截图</label>
-                    </div>
-                    <div class="offset-2 mt-1 col-10">
-                        <div v-for="(image,i) in  workOrder.refundImages" class="d-inline-block col-4 position-relative card">
-                            <div class="card-body">
-                                <img :src="image.src" class="card-img-top" :alt="image.file.name">
-                                <div class="float-right position-relative">
-                                    <button type="button" class="btn btn-sm btn-outline-danger" @click="spliceImage(i,workOrder.refundImages)">取消</button>
+                <div class="form-group row"v-show="!workOrder['reissue_logistic_number']">
+                    <label for="refund-image" class="col-sm-2 col-form-label text-right text-primary">退款成功截图</label>
+                    <div class="col-sm-10">
+                        <div class="border border-secondary h-auto" id="refund-image" style="min-height: 75px"
+                             contenteditable="true"
+                             @paste="pasteImage($event,workOrder.refundImages)">
+                            <div v-for="(image,i) in workOrder.refundImages"
+                                 class="d-inline-block col-4 position-relative card">
+                                <div class="card-body">
+                                    <img :src="image.src" class="card-img-top" :alt="image.file.name">
+                                    <div class="float-right position-relative">
+                                        <button type="button" class="btn btn-sm btn-outline-danger"
+                                                @click="spliceImage(i,workOrder.refundImages)">取消
+                                        </button>
+                                    </div>
                                 </div>
                             </div>
                         </div>

+ 39 - 7
resources/views/order/workOrder/index.blade.php

@@ -662,7 +662,7 @@
 
                     order_packages.forEach(item=>{
                         let logistic_number = item.logistic_number;
-                        if (logistic_code.includes('SF') || logistic_code.includes('ZTO')) {
+                        if (logistic_code.includes('SF')) {
                             message += `${logistic_number}\n`;
                         } else {
                             if (item) message += `${logistic_name}  ${logistic_number}  ${order_adder}\n`;
@@ -685,8 +685,6 @@
                         let logistic_number = node.logistic_number;
                         if (logistic_code.includes('SF')) { // 顺丰订单
                             message += `${logistic_number}   ——改信息:${remark},运费到付或月结\n`;
-                        } else if (logistic_code.includes('ZTO')) {
-                            message += `${logistic_number} ——改信息${remark}`;
                         } else {
                             message += `${logistic_number}  ${adder}  ——改地址 ${remark}\n`;
                         }
@@ -697,6 +695,7 @@
                     let message = '';
                     if (!item.order.packages) return message;
                     let {order,remark} = item.order;
+                    console.log(order);
                     let {consignee_name,consignee_phone,province,city,district,address} = order;
                     let adder = `${consignee_name}  ${consignee_phone}  ${province}  ${city}  ${district}  ${address}`;
                     order.packages.forEach(p => {
@@ -837,13 +836,16 @@
                     return arr.length > 0;
                 },
                 showFillModel(item, index) {
-                    this.workOrder.id = item.id;
-                    this.workOrder.index = index;
+                    this.clearWorkOrder(item, index);
+                    $("#fill-loss-work-order-modal").modal('show');
+                },
+                clearWorkOrder(item = null ,index =null){
+                    this.workOrder.id = item ? item.id : null;
+                    this.workOrder.index = index ? index : null;
                     this.workOrder.reissue_logistic_number = null; // 补发单号
                     this.workOrder.logistic_number = null; // 补发单号
                     this.workOrder.dealImages = []; // 交易图
                     this.workOrder.refundImages = []; // 退款图
-                    $("#fill-loss-work-order-modal").modal('show');
                 },
                 updateLossWorkOrder() {
                     let formData = new FormData();
@@ -875,6 +877,8 @@
                             this.sortOrder(res.data.data);
                             this.$set(this.workOrders, this.workOrder.index, res.data.data);
                             window.tempTip.showSuccess('工单信息填充成功');
+                            this.clearWorkOrder();
+                            $("#fill-loss-work-order-modal").modal('hide');
                         } else {
                             window.tempTip.show(res.data.message);
                         }
@@ -1011,7 +1015,35 @@
                     }).catch(err => {
                         window.tempTip.show('修饰异常:' + err);
                     });
-                }
+                },
+                pasteImage(event,imageArray){
+                    for (let i = 0; i < event.clipboardData.items.length; i++) {
+                        let item = event.clipboardData.items[i];
+                        if (item.kind === 'string') continue;
+                        if (item.type.indexOf('image') === -1) continue;
+                        if (item.kind === 'file'){
+                            let blob = item.getAsFile();
+                            let src = null;
+                            this.blobToBase64(blob).then(res => {
+                                src  = res;
+                                imageArray.push({src:src,file:blob});
+                            });
+                        }
+                    }
+                    event.preventDefault();
+                },
+                blobToBase64(blob) {
+                    return new Promise((resolve, reject) => {
+                        const fileReader = new FileReader();
+                        fileReader.onload = (e) => {
+                            resolve(e.target.result);
+                        };
+                        fileReader.readAsDataURL(blob);
+                        fileReader.onerror = () => {
+                            reject(new Error('blobToBase64 error'));
+                        };
+                    });
+                },
             },
         });
     </script>