فهرست منبع

设备下发协议优化

whj 4 سال پیش
والد
کامیت
a03373a14b

+ 6 - 4
app/Admin/Actions/Device/getRule.php

xqd xqd
@@ -3,6 +3,7 @@
 namespace App\Admin\Actions\Device;
 
 use App\Model\DeviceBox;
+use App\Model\DeviceInfo;
 use App\Server\DeviceServer;
 use Encore\Admin\Actions\RowAction;
 use Illuminate\Database\Eloquent\Model;
@@ -19,14 +20,15 @@ class getRule extends RowAction
         $id = $this->row->id;
         $device_name = $this->row->device_name;
         $box_info = DeviceBox::where(['device_id'=>$id])->get();
+        $box_arr = DeviceInfo::getTypeNumber();
+        $box_num = $box_arr[$this->row->device_type];
         if(!empty($box_info)){
-            foreach ($box_info as $box){
-                $box_name = $box->name;
-                $rule = ['get'=>$box_name];
+            for ($i=1; $i<=$box_num ; $i++){
+                $rule = ['get'=>'box'.$i];
                 if(!empty($rule)){
                     Log::info(json_encode($rule).PHP_EOL);
                     $res = (new DeviceServer())->sendMsg($device_name,json_encode($rule));
-                    sleep(12);
+                    sleep(20);
                 }
             }
             return $this->response()->success('上报属性成功')->refresh();

+ 26 - 44
app/Admin/Actions/Device/sendRule.php

xqd
@@ -20,54 +20,36 @@ class sendRule extends RowAction
     {
         $id = $this->row->id;
         $device_name = $this->row->device_name;
-        $box_info = LockInfo::where(['device_id'=>$id])->get();
-        if(!empty($box_info)){
-            $device_name = DeviceInfo::where(['id'=>$id])->value('device_name');
-            if(empty($device_name)) return true;
-            $lock_info = LockInfo::where(['device_id'=>$id,'status'=>1])->orderBy('box_type','asc')->get()->GroupBy('box_type');
-            foreach ($lock_info as $lock){
-                foreach ($lock as $protol){
-                    $send_rule["box".$protol->box_type][] = [
-                        'open'=>$protol->open_time,
-                        'close'=>$protol->close_time,
-                        'start'=>$protol['start_time'],
-                        'type'=>$protol['type'],
-                        'value'=>$protol['value']
-                    ];
+        if(empty($device_name)) return true;
+        $lock_info = LockInfo::where(['device_id'=>$id,'status'=>1])->orderBy('box_type','asc')->get()->GroupBy('box_type');
+        foreach ($lock_info as $lock){
+            if(empty($lock)) continue;
+            $send_rule = [];
+            foreach ($lock as $protol){
+                $data = [
+                    'open'=>$protol->open_time,
+                    'close'=>$protol->close_time,
+                    'start'=>$protol->start_time,
+                    'type'=>$protol['type'],
+                ];
+                if(empty($protol->value[0])) {
+                    $data['value']= '';
+                } else {
+                    $data['value']= $protol->value;
                 }
+                $send_rule["box".$protol->box_type][] = $data;
+            }
+            if(!empty($send_rule)) {
                 $send_rule['query'] = 3600;
-                $res = (new DeviceServer())->sendMsg(868626044260472 ,json_encode($send_rule));
-                sleep('20');
+                $res = (new DeviceServer())->sendMsg($device_name,json_encode($send_rule));
+                sleep('22');
+//                    if($res['Success'] != true){
+//                        return $this->response()->error($device_name.'下发失败');
+//                        continue;
+//                    }
                 Log::info('执行规则'.json_encode($send_rule).PHP_EOL);
             }
-
-
-            foreach ($box_info as $box){
-                $box_name = $box->name;
-                $lock_info = LockInfo::where(['box_id'=>$box->id,'status'=>1])->get();
-                $rule = [];
-                foreach ($lock_info as $val){
-                    $rule[$box_name][] =  [
-                        'open'=>$val->open_time,
-                        'close'=>$val->close_time,
-                        'start'=>$val->start_time,
-                        'type'=>$val->type,
-                        'value'=>$val->value,
-                    ];
-                }
-
-                if(!empty($rule)){
-                    $rule['query'] = 1800;
-                    Log::info(json_encode($rule).PHP_EOL);
-                    $res = (new DeviceServer())->sendMsg($device_name,json_encode($rule));
-                    if($res['Success'] != true){
-                        return $this->response()->error($box_name.'下发失败');
-                        continue;
-                    }
-                    sleep(22);
-                }
-            }
-            return $this->response()->success('下发成功')->refresh();
         }
+        return $this->response()->success('下发成功')->refresh();
     }
 }

+ 0 - 6
app/Admin/Controllers/DeviceController.php

xqd
@@ -49,19 +49,13 @@ class DeviceController extends AdminController
         $grid = new Grid(new DeviceInfo());
         $status = DeviceInfo::getStatus();
         $grid->disableCreateButton(false);
-//        $exporter = Exporter::get($grid);
-//        $exporter->setFileName('设备导出.xlsx');
         $grid->disableCreateButton();
         $grid->tools(function (Grid\Tools $tools) {
             $tools->append(new Reflash());
         });
         Admin::js('/js/qrcode.min.js');
-//        $grid->column('link','二维码')->qrcode()->default('http://www.baidu.com');
         $grid->expend('二维码','ooo')->modal(Qrcode::class);
         $grid->model()->orderBy('status','asc');
-//        $grid->header(function (){
-//            return "<script src='/js/loadMiniApp.js?24'></script><style>.dropdown-menu{}</style>";
-//        });
         $grid->column('id', __('ID'))->sortable();
         $grid->column('device_name', __('设备名称'))->editable();
         $grid->column('device_type', __('类型'))->display(function ($w){

+ 2 - 1
app/Admin/Controllers/Qrcode.php

xqd
@@ -15,9 +15,10 @@ class Qrcode implements  Renderable
         }
         $url = env('APP_URL').'/test_op?id='.$device->device_name;
         $html = <<<Script
-        <div id="qrcode"></div>
+        <div class="qrcode"></div>
         <script type="text/javascript">
         new QRCode(document.getElementById("qrcode"), '$url');
+          qrcode.makeCode('$url');
         </script>
 Script;
         return $html;

+ 40 - 4
app/Console/Commands/SendDeviceRule.php

xqd xqd xqd
@@ -15,7 +15,7 @@ class SendDeviceRule extends Command
      *
      * @var string
      */
-    protected $signature = 'SDR:{id} {type}';
+    protected $signature = 'SDR  {type : 发送命令类型 } {id : 设备编号}';
 
     /**
      * The console command description.
@@ -44,21 +44,25 @@ class SendDeviceRule extends Command
         $arguments = $this->arguments();
         Log::info('执行了自动下发协议');
         $id = $arguments['id'];
+        $type = $arguments['type'];
+        Log::info('typeis '.$arguments['type']);
         if($arguments['type'] == 1){
             $this->sendDevice($id);
-        } else {
+        } else if($type == 2){
             $this->sendBox($id);
+        } else if ($type == 3){
+            $this->cronSend($id);
         }
         dd('ok');
     }
 
-    public function sendDevice($id){
+    public function cronSend($id){
         //找出需要重新下发的设备
         $device_info = LockInfo::where(['status'=>1,'send_status'=>1])->distinct('device_id')->pluck('device_id');
         foreach ( $device_info as $device_id){
             //找出要重新下发的锁位
             $lock_info = LockInfo::where(['device_id'=>$device_id,'status'=>1,'send_status'=>1])->distinct('box_type')->pluck('box_type');
-            $device_name = DeviceInfo::where(['id'=>$id])->value('device_name');
+            $device_name = DeviceInfo::where(['device_name'=>$id])->value('device_name');
             //没有设备名称跳出
             if(empty($device_name)) continue;
             foreach ($lock_info as $box_type){
@@ -90,4 +94,36 @@ class SendDeviceRule extends Command
         dd($lock_info->toArray());
 
     }
+
+    public function sendDevice($id)
+    {
+        if(empty($id)) return ;
+        $lock_info = LockInfo::where(['device_id'=>$id,'status'=>1])->orderBy('box_type','asc')->get()->GroupBy('box_type');
+        $device_name = DeviceInfo::where('id',$id)->value('device_name');
+        if(empty($device_name)) return;
+        foreach ($lock_info as $lock){
+            if(empty($lock)) continue;
+            $send_rule = [];
+            foreach ($lock as $protol){
+                $data = [
+                    'open'=>$protol->open_time,
+                    'close'=>$protol->close_time,
+                    'start'=>$protol->start_time,
+                    'type'=>$protol['type'],
+                ];
+                if(empty($protol->value[0])) {
+                    $data['value']= '';
+                } else {
+                    $data['value']= $protol->value;
+                }
+                $send_rule["box".$protol->box_type][] = $data;
+            }
+            if(!empty($send_rule)) {
+                $send_rule['query'] = 3600;
+                (new DeviceServer())->sendMsg($device_name,json_encode($send_rule));
+                sleep('22');
+                Log::info('执行规则'.json_encode($send_rule).PHP_EOL);
+            }
+        }
+    }
 }

+ 2 - 2
app/Console/Kernel.php

xqd
@@ -13,8 +13,8 @@ class Kernel extends ConsoleKernel
      * @var array
      */
     protected $commands = [
-        \App\Console\Commands\Crawle::class,
-        \App\Console\Commands\SendDeviceRule::class,
+        Commands\Crawle::class,
+        Commands\SendDeviceRule::class,
     ];
 
     /**

+ 46 - 14
app/Http/Controllers/IndexController.php

xqd xqd xqd xqd xqd xqd
@@ -7,6 +7,7 @@ use App\Model\LockInfo;
 use App\Model\SystemConfig;
 use App\Server\DeviceServer;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Artisan;
 use Illuminate\Support\Facades\Blade;
 use Illuminate\Support\Facades\Cache;
 use QL\QueryList;
@@ -15,7 +16,12 @@ class IndexController extends Controller
 {
     public function testOpreation(Request $request)
     {
+//        Artisan::call('SDR: 1 1');
+//        Artisan::call('SDR', [
+//            'id' => 1, 'type' => 1
+//        ]);
 
+    //echo strtotime('+60 days');dd('ok');
         $id = $request->get('id');
         $device = DeviceInfo::where(['device_name'=>$id])->first();
         if($device->type == 1){
@@ -23,9 +29,26 @@ class IndexController extends Controller
         } else {
             $img = SystemConfig::get('lock_config','box_img_five');
         }
-        $rule = json_decode($device->lock_rule);
-        foreach ($rule as $key=>$box){
-            $device_box[] = $key;
+        $type = $device->type;
+         switch($type) {
+             case  DeviceInfo::BOXFOUR;
+                 $n = 4;
+                 break;
+             case DeviceInfo::BOXFIVE;
+                 $n = 5;
+                 break;
+             case DeviceInfo::BOXFOURRECYCLE;
+                 $n = 5;
+                 break;
+             case DeviceInfo::BOXFIVERECYCLE;
+                 $n = 6;
+                 break;
+             default;
+                 $n = 5;
+                 break;
+         }
+        for ($i = 1; $i<$n;$i++){
+            $device_box[] = $i;
         }
         return view('test_opreation',['img'=>$img,'id'=>$id]);
     }
@@ -76,17 +99,24 @@ class IndexController extends Controller
                 break;
             case 2;
                 $rule = ["cmd"=>"stop_test"];
+                sleep(6);
                 break;
             case 3;
                 $open_time = date('H:i',(time() + $opt));
                 $close_time = date('H:i',(time() + $cpt));
                 $start_time = date('Y-m-d H:i:s',(time() - 60));
-                $lock_rule = json_decode($device->lock_rule);
-                foreach ($lock_rule as $box_name){
+                $type_arr = [1=>4,2=>5,3=>5,4=>6];
+                for ($i = 1; $i<=$type_arr[$type]; $i++){
+                    $rule = ['box'.$i=>[['type'=>1,'start'=>$start_time,'open'=>$open_time,'close'=>$close_time,'value'=>'']],'query'=>3600];
+                    $res = (new DeviceServer())->sendMsg($device->device_name ,json_encode($rule));
                     sleep(22);
-                    $rule = [$box_name=>[['type'=>1,'start'=>$start_time,'open'=>$open_time,'close'=>$close_time,'value'=>'']],'query'=>3600];
-                    $res = (new DeviceServer())->sendMsg($device->device_name ,$rule);
                 }
+//                $lock_rule = json_decode($device->lock_rule);
+//                foreach ($lock_rule as $box_name){
+//                    sleep(22);
+//                    $rule = [$box_name=>[['type'=>1,'start'=>$start_time,'open'=>$open_time,'close'=>$close_time,'value'=>'']],'query'=>3600];
+//                    $res = (new DeviceServer())->sendMsg($device->device_name ,$rule);
+//                }
                 break;
             case 4;
                 $box_name = request('box_name');
@@ -104,7 +134,7 @@ class IndexController extends Controller
         if($type != 3){
             $res = (new DeviceServer())->sendMsg($device->device_name,json_encode($rule));
         }
-        if($res['Success'] == true){
+        if(!empty($res) && $res['Success'] == true){
             return json_encode(['code'=>200,'msg'=>'下发命令成功']);
         } else {
             return json_encode(['code'=>400,'msg'=>'下发命令失败']);
@@ -127,12 +157,14 @@ class IndexController extends Controller
         $data['id'] = $device->id;
         $data['device_name'] = $device->device_name;
         $data['device_type'] = $device->device_type;
-        if($device->device_type == 1){
-            $data['device_image'] = $lock_config['box_img_four'];
-        } else {
-            $data['device_image'] = $lock_config['box_img_five'];
-        }
-        $data['device_image'] = '';
+        $img_field_arr = [
+            1=>'box_img_four',
+            2=>'box_img_five',
+            3=>'box_img_refour',
+            4=>'box_img_refive',
+        ];
+        $data['device_image'] = $lock_config[$img_field_arr[$device->device_type]];
+
         return json_encode(['code'=>200,'msg'=>'ok','data'=>$data]);
     }
 

+ 36 - 20
app/Listeners/DeviceEventListener.php

xqd xqd
@@ -14,6 +14,7 @@ use Illuminate\Contracts\Queue\ShouldQueue;
 use Illuminate\Queue\InteractsWithQueue;
 use App\Events\DeviceEvent;
 use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\Artisan;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Log;
 use Illuminate\Console\Scheduling\Schedule;
@@ -52,32 +53,47 @@ class DeviceEventListener
 
     public function  addBox($device){
         $lock_config = SystemConfig::get('lock_config');
-        $device->device_type == DeviceInfo::BOXFOUR ? $n = 5 : $n = 6;
-        $now = date('Y-m-d H:i:s',time());
+        $type = $device->device_type;
+        switch($type) {
+            case  DeviceInfo::BOXFOUR;
+                $n = 4;
+                break;
+            case DeviceInfo::BOXFIVE;
+                $n = 5;
+                break;
+            case DeviceInfo::BOXFOURRECYCLE;
+                $n = 5;
+                break;
+            case DeviceInfo::BOXFIVERECYCLE;
+                $n = 6;
+                break;
+            default;
+                $n = 4;
+                break;
+        }
 
+        $now = date('Y-m-d H:i:s',time());
 
         $lcount = LockInfo::where(['device_id' =>$device->id])->count();
         Log::info('现有多少个·'.$lcount);
 
-        if($lcount == 0){
-            for($i=1;$i<=$n;$i++){
-                $data = ['device_id'=>$device->id,'type'=>2,'time_type'=>1,'open_time'=>$lock_config['am_open'],'close_time'=>$lock_config['am_close'],'start_time'=>$now,'box_type'=>$i,'value'=>'','status'=>1,'created_at'=>$now,'updated_at'=>$now];
-                LockInfo::insert($data);
-                $data = ['device_id'=>$device->id,'type'=>2,'time_type'=>2,'open_time'=>$lock_config['pm_open'],'close_time'=>$lock_config['pm_close'],'start_time'=>$now,'box_type'=>$i,'value'=>'','status'=>1,'created_at'=>$now,'updated_at'=>$now];
-                LockInfo::insert($data);
-            }
-        } else {
-            if($device->device_type == 1){
-                LockInfo::where(['device_id'=>$device->id,'box_type'=>6])->delete();
-            } else {
-                $data = ['device_id'=>$device->id,'type'=>2,'time_type'=>1,'open_time'=>$lock_config['am_open'],'close_time'=>$lock_config['am_close'],'start_time'=>$now,'box_type'=>6,'value'=>'','status'=>1,'created_at'=>$now,'updated_at'=>$now];
-                LockInfo::insert($data);
-                $data = ['device_id'=>$device->id,'type'=>2,'time_type'=>2,'open_time'=>$lock_config['pm_open'],'close_time'=>$lock_config['pm_close'],'start_time'=>$now,'box_type'=>6,'value'=>'','status'=>1,'created_at'=>$now,'updated_at'=>$now];
-                LockInfo::insert($data);
-            }
+        if($lcount != 0){
+            LockInfo::where(['device_id'=>$device->id])->delete();
         }
-        $schedule = new Schedule();
-        $schedule->command(SendDeviceRule::class, [$device->id, 1])->everyMinute();
+        for($i=1;$i<=$n;$i++){
+            $data = ['device_id'=>$device->id,'type'=>2,'time_type'=>1,'open_time'=>$lock_config['am_open'],'close_time'=>$lock_config['am_close'],'start_time'=>$now,'box_type'=>$i,'value'=>'','status'=>1,'created_at'=>$now,'updated_at'=>$now];
+            LockInfo::insert($data);
+            $data = ['device_id'=>$device->id,'type'=>2,'time_type'=>2,'open_time'=>$lock_config['pm_open'],'close_time'=>$lock_config['pm_close'],'start_time'=>$now,'box_type'=>$i,'value'=>'','status'=>1,'created_at'=>$now,'updated_at'=>$now];
+            LockInfo::insert($data);
+        }
+        Log::info('----执行开始---');
+//          Artisan::call('SDR 1 '.$device->id);
+//        Artisan::call('email:send 1 --queue=default');
+//        $schedule = new Schedule();
+//        $schedule->command(SendDeviceRule::class, [1,$device->id]);
+
+        Log::info('----执行结束---');
+
         return true;
     }
 }

+ 18 - 4
app/Model/DeviceInfo.php

xqd xqd
@@ -13,7 +13,7 @@ class DeviceInfo extends Model
     //public $dispatcher;
 
     const ONLINE = 0, OFFLINE = 1, DISABLE = 2, UNACTIVE = 3;  //在营 离线 禁用 未激活  运行状态 (status)
-    const BOXFOUR = 1, BOXFIVE = 2; //四箱 五箱
+    const BOXFOUR = 1, BOXFIVE = 2, BOXFOURRECYCLE = 3, BOXFIVERECYCLE = 4;//四箱 五箱
     const OK = 0, ERROR = 1; // 正常 故障 设备状态 (runningStatus)
     const LOCK = 1, UNLOCK = 0;
     protected $table = "device_info";
@@ -37,18 +37,32 @@ class DeviceInfo extends Model
         self::OK=>'正常',
         self::ERROR=>'故障',
     ];
-    protected static function getBrakdown(){
-        return self::$_status;
-    }
 
     private static $_types =[
         self::BOXFOUR=>'四箱',
         self::BOXFIVE=>'五箱',
+        self::BOXFOURRECYCLE=>'四箱可回收',
+        self::BOXFIVERECYCLE=>'五箱可回收',
     ];
+
+    private static $_type_boxNumber =[
+        self::BOXFOUR=>4,
+        self::BOXFIVE=>5,
+        self::BOXFOURRECYCLE=>5,
+        self::BOXFIVERECYCLE=>6,
+    ];
+
+    protected static function getBrakdown(){
+        return self::$_status;
+    }
     protected static function getTypes(){
         return self::$_types;
     }
 
+    protected static function getTypeNumber(){
+        return self::$_type_boxNumber;
+    }
+
     /*
      *是否关锁
      */

+ 103 - 43
resources/views/test_opreation.blade.php

xqd xqd xqd xqd xqd
@@ -39,52 +39,68 @@
             background-color: white;
             color: black;
         }
+
+        input{
+            /*width: 2.3rem;*/
+            background-color: #fff;
+            outline: none;
+            border: 0.01rem solid #efefef;
+            padding: 0.22rem;
+        }
     </style>
 </head>
 
 <body>
+
 <div id="main" style="margin-bottom: 2rem;">
-    <nav class="bianhao">
-        设备编号:@{{arrdata.device_name}}
-    </nav>
-    <article>
-        <div class="bianhao" style="padding-top: 0;">
-            设备型号:@{{xiangti}}
-        </div>
-        <div class="bianhao" style="padding-top: 0;">
-            示意图:
-        </div>
-        <div style="text-align: center;">
-            <img src="{{$img}}" alt="" style="width: 7rem;height: 4rem;">
-        </div>
-        <div class="bianhao" style="padding-top: 0;">
-            全部箱体
-        </div>
-        <div class="bianhao" style="padding-top: 0; border-bottom: 0.01rem solid #efefef;">
-            <button @click="startbtn()" :class="classbtn" :disabled="startbtndib">@{{mssage}}</button>
-            <div style="font-size: .3rem;padding-top: .1rem;padding-bottom: .1rem;">点击【开始测试】,全部箱体立即锁死,每15秒锁位状态改变一次
+    <div v-if="findBox" style="margin-top: 1rem; text-align: center">
+        <h1 style="font-size: 0.7rem;text-align: center">绿色地球定时定点设备调试</h1>
+        <input type="text"  v-model="value" placeholder="请输入设备编号" >
+        <button  @click="btnfun()" >搜索</button>
+    </div>
+    <div v-else>
+        <nav class="bianhao">
+            设备编号:@{{arrdata.device_name}}
+        </nav>
+        <article>
+            <div class="bianhao" style="padding-top: 0;">
+                设备型号:@{{xiangti}}
+            </div>
+            <div class="bianhao" style="padding-top: 0;">
+                示意图:
+            </div>
+            <div style="text-align: center;">
+                <img v-bind:src="{{@devceImg}}"  alt="" style="width: 7rem;height: 4rem;">
+            </div>
+            <div class="bianhao" style="padding-top: 0;">
+                全部箱体
             </div>
-        </div>
-        <div class="bianhao" style="padding-top: 0; margin-top: .4rem; border-bottom: 0.01rem solid #efefef;">
-            <button v-preventclick @click="dingshi()" class="" :disabled="dingshibtn">@{{time}}s定时</button>
-            <div style="font-size: .3rem;padding-top: .1rem;padding-bottom: .1rem;">
-                点击【定时测试】,3min后,锁位开启,4min后锁位关闭,设备配置后,无法点击调试</div>
-        </div>
-        <div v-for="(item,index) in boxarr" :key="index">
-            <div class="bianhao"
-                 style="font-size: 0.4rem;display: flex; align-items: center; justify-content: space-between;">
-                <div>@{{item.name}}</div>
-                <button @click="suowei(item,index)" :data-index="index" :data-id="item.id" :data-name="item.name"
-                        v-preventclick class="suoweiList" :disabled="allbtn">@{{item.time}}s定时</button>
+            <div class="bianhao" style="padding-top: 0; border-bottom: 0.01rem solid #efefef;">
+                <button @click="startbtn()" :class="classbtn" :disabled="startbtndib">@{{mssage}}</button>
+                <div style="font-size: .3rem;padding-top: .1rem;padding-bottom: .1rem;">点击【开始测试】,全部箱体立即锁死,每15秒锁位状态改变一次
+                </div>
             </div>
-        </div>
-    </article>
+            <div class="bianhao" style="padding-top: 0; margin-top: .4rem; border-bottom: 0.01rem solid #efefef;">
+                <button v-preventclick @click="dingshi()" class="" :disabled="dingshibtn">定时测试</button>
+                <div style="font-size: .3rem;padding-top: .1rem;padding-bottom: .1rem;">
+                    点击【定时测试】,5-6秒之内锁位关闭,约4分钟左右锁位开启,1分钟后锁位关闭,测试按钮可再次点击。<br>注:设备配置后,无法点击调试</div>
+            </div>
+            <div v-for="(item,index) in boxarr" :key="index">
+                <div class="bianhao"
+                     style="font-size: 0.4rem;display: flex; align-items: center; justify-content: space-between;">
+                    <div>@{{item.name}}</div>
+                    <button @click="suowei(item,index)" :data-index="index" :data-id="item.id" :data-name="item.name"
+                            v-preventclick class="suoweiList" :disabled="allbtn">定时测试</button>
+                </div>
+            </div>
+        </article>
+    </div>
 </div>
 <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.min.js"></script>
 <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.20.0/axios.min.js"></script>
 <script src="./js/auto-size.js"></script>
+<script src="./js/jquery-1.11.0.min.js"></script>
 <script>
-    var id = {{$id}}
     Vue.directive('preventclick', {
         inserted: function (button, bind) {
             button.addEventListener('click', () => {
@@ -103,25 +119,41 @@
             isstart: false,
             mssage: "开始测试",
             classbtn: "",
+            findBox: true,
+            isShow:false,
             time: 180,
             allbtn: false,
             startbtndib: false,
             dingshibtn: false,
+            devceImg:'',
+            id:'',
             arrdata: {},
             boxarr: [],
+            boxnamearr:["四箱","五箱","四箱可回收","五箱可回收"],
             type: 1,
             dingshitype: 3,
             alltype: 4,
             startdata: "",
-            xiangti: ""
+            xiangti: "",
+            value:""
         },
         mounted() {
-            this.getData()
+            // this.getData("866222053211317")
+            // console.log("111111")
         },
+
         methods: {
+            btnfun(){
+                console.log(this.value)
+                if(this.value){
+                    this.getData(this.value)
+                } else {
+                    alert('请输入设备编号')
+                }
+            },
             startbtn(e) {
                 //开始测试
-                axios.get("http://172.31.31.199/send_protocol?id="+id+"&type=" + this.type).then(res => {
+                axios.get("http://172.31.31.199/send_protocol?id="+this.value+"&type=" + this.type).then(res => {
                     if (res.data.code == 603) {
                         alert(res.data.msg)
                     } else {
@@ -153,7 +185,7 @@
                         this.allbtn = false
                     }
                 }, 1000)
-                axios.get("http://172.31.31.199/send_protocol?id="+id+"&type=" + this.dingshitype).then(res => {
+                axios.get("http://172.31.31.199/send_protocol?id="+this.value+"&type=" + this.dingshitype).then(res => {
                     if (res.data.code == 603) {
                         alert(res.data.msg)
                     }
@@ -169,7 +201,7 @@
                         }, 20000);
                     }
                 });
-                axios.get("http://172.31.31.199/send_protocol?id="+id+"&type=" + this.alltype + "&box_name=" + e.id).then(res => {
+                axios.get("http://172.31.31.199/send_protocol?id="+this.value+"&type=" + this.alltype + "&box_name=" + e.id).then(res => {
                     if (res.data.code == 603) {
                         alert(res.data.msg)
                     } else {
@@ -177,13 +209,41 @@
                     }
                 })
             },
-            getData: function () {
-                axios.get("http://172.31.31.199/get_boxname?id="+id).then(res => {
+            getData: function (id) {
+                axios.get("http://172.31.31.199/get_boxname?id="+this.value).then(res => {
                     console.log(res)
                     if (res.data.code == 200) {
-                        let num = res.data.data.device_type == "1" ? 5 : 6
+                        let type = res.data.data.device_type
+                        switch (parseInt(type)){
+                            case 1:
+                                num = 4;
+                                break;
+                            case 2:
+                                num = 5;
+                                break;
+                            case 3:
+                                num = 5;
+                                break;
+                            case 4:
+                                num = 6;
+                                break;
+                            default:
+                                console.log('defige',type)
+                                num = 4;
+                        }
                         this.arrdata = res.data.data
-                        this.xiangti = this.arrdata.device_type == "1" ? '四箱' : '五箱'
+                        if(this.arrdata.length == 0){
+                            alert('异常设备请重新输入');
+                            return ;
+                        }
+                        this.findBox = false;
+                        this.devceImg = res.data.data.device_image
+                        // this.xiangti = this.arrdata.device_type == "1" ? '四箱' : '五箱'
+
+                        this.xiangti = this.boxnamearr[res.data.data.device_type-1];
+                        if((res.data.data.device_type-1) < 0){
+                            this.xiangti = '四箱';
+                        }
                         for (let i = 0; i < num; i++) {
                             let obj = {
                                 time: 180,