Zhouzhendong 5 роки тому
батько
коміт
54083ab88b

+ 35 - 0
app/Events/BroadcastToStation.php

@@ -0,0 +1,35 @@
+<?php
+
+namespace App\Events;
+
+use Illuminate\Broadcasting\Channel;
+use Illuminate\Broadcasting\PresenceChannel;
+use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
+
+class BroadcastToStation implements ShouldBroadcast
+{
+    public $json;
+    private $id;
+    /**
+     * Create a new event instance.
+     *
+     * @param int $id
+     * @param string $json
+     * @return void
+     */
+    public function __construct(int $id, string $json)
+    {
+        $this->id = $id;
+        $this->json = $json;
+    }
+
+    /**
+     * Get the channels the event should broadcast on.
+     *
+     * @return Channel|array
+     */
+    public function broadcastOn()
+    {
+        return new PresenceChannel('station-'.$this->id);
+    }
+}

+ 2 - 0
app/Http/Controllers/StationController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers;
 
 use App\Station;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
 
 class StationController extends Controller
@@ -19,6 +20,7 @@ class StationController extends Controller
     public function monitorIndex()
     {
         $stations = Station::query()->with('type:name','parent:name')->whereHas('type',function($query){
+            /** @var Builder $query */
             $query->where('name','料箱监视器');
         })->paginate(100);
         return view('station.monitor.index',compact('stations'));

+ 4 - 1
app/Http/Controllers/TestController.php

@@ -7,6 +7,7 @@ use App\Authority;
 use App\Commodity;
 use App\CommodityBarcode;
 use App\Console\Commands\SyncWMSOrderTask;
+use App\Events\BroadcastToStation;
 use App\Events\CancelOrder;
 use App\Imports\OrderTrackingImport;
 use App\InventoryAccount;
@@ -52,6 +53,7 @@ use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Str;
 use Maatwebsite\Excel\Facades\Excel;
+use Milon\Barcode\DNS1D;
 use Ramsey\Collection\Collection;
 use Zttp\Zttp;
 
@@ -91,7 +93,8 @@ class TestController extends Controller
     }
     public static function zzd()
     {
-        dd(phpinfo());
+        $a = 1;
+        $test = $a->loadMissing(["taskCommodities.commodity.barcodes","taskBatches.batch","taskMaterialBoxes.box"]);
     }
 
     public function updateLaborRemark(){

+ 7 - 0
app/Services/OwnerService.php

@@ -237,4 +237,11 @@ Class OwnerService
             return Owner::query()->create(['name'=>$basCustomer['descr_c'],'code'=>$basCustomer['customerid']]);
         });
     }
+
+    public function codeGetOwner($code)
+    {
+        return app(CacheService::class)->getOrExecute("owner_".$code,function ()use($code){
+            return Owner::query()->firstOrCreate(["code"=>$code],["code"=>$code,"name"=>$code]);
+        });
+    }
 }

+ 6 - 2
app/Services/StationService.php

@@ -4,6 +4,7 @@
 namespace App\Services;
 
 
+use App\Events\BroadcastToStation;
 use App\Station;
 use App\StationTask;
 use App\StationTaskCommodity;
@@ -29,11 +30,14 @@ class StationService
     }
 
     function broadcast($station_id, $json_data){
-        //...
-        //event(new BroadcastToStation($station_id,$json_data))
+        broadcast(new BroadcastToStation($station_id,$json_data));
     }
 
     function broadcastBinMonitor($station_id, StationTask $stationTask, int $currentStationTaskCommodity_id){
+        $stationTask->loadMissing(["taskCommodities.commodity.barcodes","taskBatches.batch","taskMaterialBoxes.box"]);
+        $stationTask->currentId = $currentStationTaskCommodity_id;
+        $stationTask->toJson();
+        $this->broadcast($station_id, $stationTask->toJson());
         //...
         //$stationTask->stationTaskBatch
         //$stationTask->stationTaskMaterialBox

+ 17 - 0
app/StationTask.php

@@ -7,4 +7,21 @@ use Illuminate\Database\Eloquent\Model;
 class StationTask extends Model
 {
     protected $fillable = ['station_id', 'station_type_id'];
+
+
+    public function taskCommodities()
+    {   //任务商品列表
+        return $this->belongsToMany(StationTaskCommodity::class,"station_task_children","station_task_id","station_task_table_id")
+            ->where("station_task_table_type","station_task_commodities");
+    }
+    public function taskBatches()
+    {   //任务波次 目前为单个,取值时应取第一个即可
+        return $this->belongsToMany(StationTaskBatch::class,"station_task_children","station_task_id","station_task_table_id")
+            ->where("station_task_table_type","station_task_batches");
+    }
+    public function taskMaterialBoxes()
+    {   //任务料箱 目前为单个,取值时应取第一个即可
+        return $this->belongsToMany(StationTaskMaterialBox::class,"station_task_children","station_task_id","station_task_table_id")
+            ->where("station_task_table_type","station_task_material_boxes");
+    }
 }

+ 5 - 0
app/StationTaskBatch.php

@@ -7,4 +7,9 @@ use Illuminate\Database\Eloquent\Model;
 class StationTaskBatch extends Model
 {
     protected $fillable=['batch_id','station_id','station_mission_batch_type_id','status'];
+
+    public function batch()
+    {   //波次
+        return $this->hasOne(Batch::class,"id","batch_id");
+    }
 }

+ 5 - 0
app/StationTaskCommodity.php

@@ -7,4 +7,9 @@ use Illuminate\Database\Eloquent\Model;
 class StationTaskCommodity extends Model
 {
     protected $fillable= ['station_id','material_box_id','commodity_id','amount','order_id','status','station_id'];
+
+    public function commodity()
+    {   //商品
+        return $this->hasOne(Commodity::class,"id","commodity_id");
+    }
 }

+ 5 - 0
app/StationTaskMaterialBox.php

@@ -7,4 +7,9 @@ use Illuminate\Database\Eloquent\Model;
 class StationTaskMaterialBox extends Model
 {
     protected $fillable=['station_id','material_box_id','status'];
+
+    public function box()
+    {   //料箱
+        return $this->hasOne(MaterialBox::class,"id","material_box_id");
+    }
 }

+ 0 - 7
bootstrap/cache/packages.php

@@ -103,11 +103,4 @@
       0 => 'Te7aHoudini\\LaravelTrix\\LaravelTrixServiceProvider',
     ),
   ),
-  'yajra/laravel-oci8' => 
-  array (
-    'providers' => 
-    array (
-      0 => 'Yajra\\Oci8\\Oci8ServiceProvider',
-    ),
-  ),
 );

+ 10 - 12
bootstrap/cache/services.php

@@ -35,12 +35,11 @@
     31 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
     32 => 'Overtrue\\LaravelPinyin\\ServiceProvider',
     33 => 'Te7aHoudini\\LaravelTrix\\LaravelTrixServiceProvider',
-    34 => 'Yajra\\Oci8\\Oci8ServiceProvider',
-    35 => 'App\\Providers\\AppServiceProvider',
-    36 => 'App\\Providers\\AuthServiceProvider',
-    37 => 'App\\Providers\\BroadcastServiceProvider',
-    38 => 'App\\Providers\\EventServiceProvider',
-    39 => 'App\\Providers\\RouteServiceProvider',
+    34 => 'App\\Providers\\AppServiceProvider',
+    35 => 'App\\Providers\\AuthServiceProvider',
+    36 => 'App\\Providers\\BroadcastServiceProvider',
+    37 => 'App\\Providers\\EventServiceProvider',
+    38 => 'App\\Providers\\RouteServiceProvider',
   ),
   'eager' => 
   array (
@@ -65,12 +64,11 @@
     18 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
     19 => 'Overtrue\\LaravelPinyin\\ServiceProvider',
     20 => 'Te7aHoudini\\LaravelTrix\\LaravelTrixServiceProvider',
-    21 => 'Yajra\\Oci8\\Oci8ServiceProvider',
-    22 => 'App\\Providers\\AppServiceProvider',
-    23 => 'App\\Providers\\AuthServiceProvider',
-    24 => 'App\\Providers\\BroadcastServiceProvider',
-    25 => 'App\\Providers\\EventServiceProvider',
-    26 => 'App\\Providers\\RouteServiceProvider',
+    21 => 'App\\Providers\\AppServiceProvider',
+    22 => 'App\\Providers\\AuthServiceProvider',
+    23 => 'App\\Providers\\BroadcastServiceProvider',
+    24 => 'App\\Providers\\EventServiceProvider',
+    25 => 'App\\Providers\\RouteServiceProvider',
   ),
   'deferred' => 
   array (

+ 2 - 2
composer.json

@@ -29,7 +29,7 @@
         "pusher/pusher-php-server": "^4.1",
         "te7a-houdini/laravel-trix": "^2.0",
         "yajra/laravel-oci8": "7.0",
-      "ext-bcmath": "*"
+        "ext-bcmath": "*"
     },
     "require-dev": {
         "barryvdh/laravel-debugbar": "^3.2",
@@ -81,4 +81,4 @@
             "@php artisan key:generate --ansi"
         ]
     }
-}
+}

+ 3 - 120
composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "a6dca782e84112becc716ee6a373300e",
+    "content-hash": "f1edfad3509bc648e56ed81254e35271",
     "packages": [
         {
             "name": "bacon/bacon-qr-code",
@@ -6351,124 +6351,6 @@
                 "php"
             ],
             "time": "2020-07-22T23:32:04+00:00"
-        },
-        {
-            "name": "yajra/laravel-oci8",
-            "version": "v7.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/yajra/laravel-oci8.git",
-                "reference": "0d0db3c21a15438ee4bd610f6a0c585cb45fd974"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/yajra/laravel-oci8/zipball/0d0db3c21a15438ee4bd610f6a0c585cb45fd974",
-                "reference": "0d0db3c21a15438ee4bd610f6a0c585cb45fd974",
-                "shasum": "",
-                "mirrors": [
-                    {
-                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
-                        "preferred": true
-                    }
-                ]
-            },
-            "require": {
-                "ext-oci8": ">=2.0.0",
-                "ext-pdo": "*",
-                "illuminate/database": "^7",
-                "illuminate/support": "^7",
-                "php": "^7.2.5",
-                "yajra/laravel-pdo-via-oci8": "^2"
-            },
-            "require-dev": {
-                "mockery/mockery": "^1.3.1",
-                "phpunit/phpunit": "^8.4|^9.0",
-                "scrutinizer/ocular": "~1.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "7.x-dev"
-                },
-                "laravel": {
-                    "providers": [
-                        "Yajra\\Oci8\\Oci8ServiceProvider"
-                    ]
-                }
-            },
-            "autoload": {
-                "files": [
-                    "src/helper.php"
-                ],
-                "psr-4": {
-                    "Yajra\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Arjay Angeles",
-                    "email": "aqangeles@gmail.com"
-                }
-            ],
-            "description": "Oracle DB driver for Laravel 4|5|6|7 via OCI8",
-            "keywords": [
-                "laravel",
-                "oci8",
-                "oracle",
-                "pdo_oci"
-            ],
-            "time": "2020-03-04T02:15:19+00:00"
-        },
-        {
-            "name": "yajra/laravel-pdo-via-oci8",
-            "version": "v2.1.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/yajra/pdo-via-oci8.git",
-                "reference": "46af0dbe6b5671b0ff1d77807f900cd0b57b9faf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/yajra/pdo-via-oci8/zipball/46af0dbe6b5671b0ff1d77807f900cd0b57b9faf",
-                "reference": "46af0dbe6b5671b0ff1d77807f900cd0b57b9faf",
-                "shasum": "",
-                "mirrors": [
-                    {
-                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
-                        "preferred": true
-                    }
-                ]
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Yajra\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Arjay Angeles",
-                    "email": "aqangeles@gmail.com"
-                }
-            ],
-            "description": "PDO userspace driver proxying calls to PHP OCI8 driver",
-            "time": "2020-10-20T01:44:31+00:00"
         }
     ],
     "packages-dev": [
@@ -8636,5 +8518,6 @@
         "ext-pdo": "*",
         "ext-bcmath": "*"
     },
-    "platform-dev": []
+    "platform-dev": [],
+    "plugin-api-version": "2.0.0"
 }

+ 0 - 2
config/app.php

@@ -174,7 +174,6 @@ return [
          App\Providers\BroadcastServiceProvider::class,
         App\Providers\EventServiceProvider::class,
         App\Providers\RouteServiceProvider::class,
-
     ],
 
     /*
@@ -225,7 +224,6 @@ return [
         'URL' => Illuminate\Support\Facades\URL::class,
         'Validator' => Illuminate\Support\Facades\Validator::class,
         'View' => Illuminate\Support\Facades\View::class,
-
     ],
 
 ];

+ 3 - 0
laravel-echo-server.lock

@@ -0,0 +1,3 @@
+{
+	"process": 9872
+}

+ 5 - 0
package-lock.json

@@ -5533,6 +5533,11 @@
                 }
             }
         },
+        "jsbarcode": {
+            "version": "3.11.3",
+            "resolved": "https://registry.npm.taobao.org/jsbarcode/download/jsbarcode-3.11.3.tgz",
+            "integrity": "sha1-HI+5tcfURS5XGTCAGwDhIJSnBR4="
+        },
         "jsbn": {
             "version": "0.1.1",
             "resolved": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz",

+ 1 - 0
package.json

@@ -30,6 +30,7 @@
     "element-ui": "^2.14.1",
     "jquery.cookie": "^1.4.1",
     "js-cookie": "^2.2.1",
+    "jsbarcode": "^3.11.3",
     "laravel-echo": "^1.8.0",
     "laravel-echo-server": "^1.6.2",
     "moment": "^2.28.0",

+ 15 - 0
resources/js/utilities/barcode.js

@@ -0,0 +1,15 @@
+
+import JsBarcode from 'jsbarcode'
+
+window.setBarcode = function setBarcode(val, dom='barcode', width=2, height=40, isShowValue=false){
+    if (!val)return;
+    JsBarcode(dom, val, {
+        format: 'CODE39',
+        lineColor: '#000',
+        background: '#EBEEF5',
+        width: width,
+        height: height,
+        displayValue: isShowValue
+    });
+};
+

+ 25 - 0
resources/views/station/monitor/_svg.blade.php

@@ -0,0 +1,25 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="blue-cube"
+     viewBox="68 30 180 220" {{--style="transform: rotate3d(40,-20,-20,48deg)"--}}>
+    <defs>
+        <g id="cube" style="fill-opacity: .9;stroke-miterlimit: 0;">
+            <rect width="21" height="24" fill="#fff" stroke="#0079ad"
+                  transform="skewY(30)" />
+            <rect width="21" height="24" fill="#fff" stroke="#0079ad"
+                  transform="skewY(-30) translate(21 24.3)" />
+            <rect width="21" height="21" fill="#fff" stroke="#0079ad"
+                  transform="scale(1.41,.81) rotate(45) translate(0 -21)" />
+        </g>
+    </defs>
+    <defs>
+        <g id="exceptionCube" style="fill-opacity: .9;stroke-miterlimit: 0;">
+            <rect width="21" height="24" :fill="color" stroke="#0079ad"
+                  transform="skewY(30)" />
+            <rect width="21" height="24" :fill="color" stroke="#0079ad"
+                  transform="skewY(-30) translate(21 24.3)" />
+            <rect width="21" height="21" :fill="color" stroke="#0079ad"
+                  transform="scale(1.41,.81) rotate(45) translate(0 -21)" />
+        </g>
+    </defs>
+    <use v-for="box in boxes" xlink:href="#cube" :x="box.x" :y="box.y" />
+
+</svg>

+ 100 - 66
resources/views/station/monitor/show.blade.php

@@ -11,7 +11,7 @@
                     </li>
         @endcomponent
     </div>
-    <div class="container-fluid body">
+    <div class="container-fluid body" id="container">
         <div class="card">
             <div class="card-body">
                 <div class="row border" style="opacity: 0.75">
@@ -22,72 +22,44 @@
                     <div class="col-4">
                         <div class="row">
                             <div class="col py-3 h4">
-                                波次号:nnnnnnnnnnn
+                                波次号:<b>@{{ task.taskBatch.batch.code }}</b>
                             </div>
                             <div class="col py-3 h4">
 
                             </div>
                         </div>
                         <div class="row">
-                            <div class="col py-3 h4">
-                            </div>
-                            <div class="col py-3 h4 text-muted">
-                                {条码}
+                            <div class="py-3 text-muted">
+                                <img id="barcode" alt="">
                             </div>
                         </div>
                         <div class="row">
                             <div class="col py-3 h4">
-                                料箱号:nnnnnnnnnnn
+                                料箱号:<b>@{{ task.taskMaterialBox.materialBox.code }}</b>
                             </div>
                         </div>
-                        <div class="row pt-5">
-                            <div class="col"><img src="{{asset('images/demoBin.png')}}" alt="" class="img"></div>
+                        <div class="row pt-2">
+                            <div class="col">
+                                @include("station.monitor._svg")
+                                {{--<img src="{{asset('images/demoBin.png')}}" alt="" class="img">--}}
+                            </div>
                         </div>
                     </div>
                     <div class="col text-center">
                         <div class="row">
-                            <div class="col py-3 h4">
-                                <table class="table border">
-                                    <tr>
-                                        <td class="border p-0"><span style="opacity:0.25">6</span></td>
-                                        <td class="bg-info border p-0"><span style="opacity:0.25">7</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">8</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">9</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">10</span></td>
-                                    </tr>
-                                    <tr>
-                                        <td class="border p-0"><span style="opacity:0.25">1</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">2</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">3</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">4</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">5</span></td>
-                                    </tr>
-                                </table>
-                            </div>
-                            <div class="col py-3 h4">
+                            <div class="col py-3 h4" v-for="wall in walls">
                                 <table class="table border">
-                                    <tr>
-                                        <td class="border p-0"><span style="opacity:0.25">6</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">7</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">8</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">9</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">10</span></td>
-                                    </tr>
-                                    <tr>
-                                        <td class="border p-0"><span style="opacity:0.25">1</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">2</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">3</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">4</span></td>
-                                        <td class="border p-0"><span style="opacity:0.25">5</span></td>
+                                    <tr v-for="row in wall">
+                                        <td class="border p-0" v-for="column in row" :id="'bin-'+column"><span style="opacity:0.25">@{{ column }}</span></td>
                                     </tr>
                                 </table>
                             </div>
                         </div>
-                        <div class="row">
-                            <div class="col py-1">数量</div>
-                            <div class="col py-1">0/0</div>
-                            <div class="col py-1 text-muted">异常</div>
-                            <div class="col py-1"></div>
+                        <div class="row mb-1">
+                            <div class="col-1 text-left font-weight-bold">数量:</div>
+                            <div class="col-2 text-left">@{{ sum }}/@{{ currentSum }}</div>
+                            <div class="col-1 offset-2 text-muted" v-if="error">异常:</div>
+                            <div class="col-6" v-if="error">@{{ error }}</div>
                         </div>
                         <div class="row">
                             <div class="col py-1">
@@ -98,23 +70,11 @@
                                         <th class="py-2">数量</th>
                                         <th class="py-2">条码</th>
                                     </tr>
-                                    <tr class="text-muted">
-                                        <td></td>
-                                        <td></td>
-                                        <td>0/0</td>
-                                        <td></td>
-                                    </tr>
-                                    <tr class="text-muted">
-                                        <td></td>
-                                        <td></td>
-                                        <td>0/0</td>
-                                        <td></td>
-                                    </tr>
-                                    <tr class="text-muted">
-                                        <td></td>
-                                        <td></td>
-                                        <td>0/0</td>
-                                        <td></td>
+                                    <tr class="text-muted" v-for="(taskCommodity,i) in task.taskCommodities">
+                                        <td>@{{ i+1 }}</td>
+                                        <td>@{{ taskCommodity.commodityName }}</td>
+                                        <td>@{{ taskCommodity.amount }}</td>
+                                        <td><small v-for="barcode in taskCommodity.barcodes">@{{ barcode.code }}</small><br></td>
                                     </tr>
                                 </table>
                             </div>
@@ -127,18 +87,92 @@
 @endsection
 
 @section('lastScript')
+    <script type="text/javascript" src="{{mix('js/utilities/barcode.js')}}"></script>
     <script>
         new Vue({
-            el:"#app",
+            el:"#container",
+            data:{
+                broadcastName : "{{config('database.redis.options.prefix').'presence-station-'.$station->id}}",
+                channelName : ".App\\Events\\BroadcastToStation",
+                task : {
+                    materialBoxNumber : "",
+                    currentCommodityIndex : "",
+                    taskCommodities:[],
+                    taskBatch:{
+                        batch:{
+                            code:"",
+                        },
+                    },
+                    taskMaterialBox:{
+                        materialBox:{
+                            code:""
+                        },
+                    },
+                    wall:{},
+                    box:{},
+                },
+                boxes:[],
+                walls:[],
+                color:"red",
+                sum : 0,
+                currentSum : 0,
+                error:"",
+            },
             mounted() {
-                $('.navbar,.nav1,.nav2').hide()
+                $('.navbar,.nav1,.nav2').hide();
                 $('.nav3').on('mouseenter', function () {
                     $('.navbar,.nav1,.nav2').show();
                 });
                 $('.body').on('mouseenter', function () {
                     $('.navbar,.nav1,.nav2').hide();
                 });
-            }
+                //this._broadcast();
+                this._renderingWall(2,2,6);
+                this._renderingBox(2,4);
+                setBarcode("W201209000056","#barcode",2,50,false);
+            },
+            methods:{
+                _broadcast(){
+                    initEcho();
+                    window.Echo.channel(this.broadcastName).listen(this.channelName,(msg)=> {
+
+                    });
+                },
+                _changeTask(){
+
+                },
+                _replaceTask(){
+
+                },
+                //渲染墙格口
+                _renderingWall(amount, row, column){
+                    for (let i=0;i<amount;i++){
+                        this.walls.push(this._createWall(row, column, i*(row*column)));
+                    }
+                },
+                //生成墙格口
+                _createWall(row, column, increment){
+                    let wall = [];
+                    for (let i=1;i<=row;i++){
+                        let columns = [];
+                        for (let j=((i-1)*column)+1;j<=i*column;j++){
+                            columns.push(j+increment);
+                        }
+                        wall.unshift(columns);
+                    }
+                    return wall;
+                },
+                //渲染料箱格口
+                _renderingBox(row, column, x=79, y=72, width=21, height=12){
+                    let boxes = [];
+                    for (let i=0;i<column;i++){
+                        for (let j=row-1;j>=0;j--){
+                            boxes.push({x:((i+j)*width)+x,y:(y+(i*height))-(j*height)});
+                        }
+                    }
+                    this.boxes = boxes;
+                },
+            },
         });
     </script>
 @endsection

+ 1 - 0
webpack.mix.js

@@ -23,6 +23,7 @@ mix.copy('resources/sass/trix.css','public/css/initLaborReportsCountingRecords')
 mix.copy('resources/js/queryForm/queryForm.js','public/js/queryForm/queryForm.js');
 mix.copy('resources/js/queryForm/export.js','public/js/queryForm/export.js');
 mix.js('resources/js/queryForm/header.js','public/js/queryForm/header.js');
+mix.js('resources/js/utilities/barcode.js','public/js/utilities/barcode.js');
 
 mix.copy('resources/sound/','public/sound');
 mix.js('resources/js/elementUi.js','public/js/element-ui.js')