DeviceController.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Actions\Device\Box;
  4. use App\Admin\Actions\Device\getRule;
  5. use App\Admin\Actions\Device\Lock;
  6. use App\Admin\Actions\Device\Reflash;
  7. use App\Admin\Actions\Device\sendRule;
  8. use App\Admin\Actions\Device\testRule;
  9. use App\Admin\Actions\Users\InRecords;
  10. use App\Admin\Actions\Users\PutRecords;
  11. use App\Admin\Actions\Users\WithDraw;
  12. use App\Admin\Controllers\Sta;
  13. use App\Model\DeviceInfo;
  14. use App\Model\DeviceType;
  15. use App\Model\UserInfo;
  16. use Encore\Admin\Facades\Admin;
  17. use Encore\Admin\Controllers\AdminController;
  18. use Encore\Admin\Form;
  19. use Encore\Admin\Grid;
  20. use Encore\Admin\Show;
  21. use Encore\Admin\Widgets\Echarts\Echarts;
  22. use function foo\func;
  23. use Zhusaidong\GridExporter\Exporter;
  24. /**
  25. * @author pxwei
  26. * Class DeviceController
  27. * @package App\Admin\Controllers\Device
  28. */
  29. class DeviceController extends AdminController
  30. {
  31. /**
  32. * Title for current resource.
  33. *
  34. * @var string
  35. */
  36. protected $title = '设备管理';
  37. /**
  38. * Make a grid builder.
  39. *
  40. * @return Grid
  41. */
  42. protected function grid()
  43. {
  44. $device = new DeviceInfo();
  45. $grid = new Grid(new DeviceInfo());
  46. $status = DeviceInfo::getStatus();
  47. $grid->disableCreateButton(false);
  48. $grid->disableCreateButton();
  49. $grid->tools(function (Grid\Tools $tools) {
  50. $tools->append(new Reflash());
  51. });
  52. Admin::js('/js/qrcode.min.js');
  53. $grid->expend('二维码','ooo')->modal(Qrcode::class);
  54. $grid->model()->orderBy('status','asc');
  55. $grid->column('id', __('ID'))->sortable();
  56. $grid->column('device_name', __('设备名称'))->editable();
  57. $grid->column('device_type', __('类型'))->display(function ($w){
  58. if(empty($w)) return '无';
  59. return DeviceInfo::getTypes()[$w];
  60. });
  61. $grid->column('query', __('刷新时间'));
  62. $grid->column('status', __('设备状态'))->using($status)->sortable();;
  63. $grid->column('runningStatus', __('运行状态'))->display(function ($s){
  64. $arr = [['name'=>'正常','color'=>'success'],['name'=>'故障','color'=>'danger'],['name'=>'故障','color'=>'danger'],['name'=>'故障','color'=>'danger'],['name'=>'故障','color'=>'danger'],['name'=>'正常','color'=>'success']];
  65. return "<span class='label label-{$arr[$s]['color']}'>{$arr[$s]['name']}</span>";
  66. });
  67. $grid->column('updated_at', __('更新时间'))->sortable();
  68. $grid->actions(function ($actions){
  69. $actions->disableDelete(false);
  70. $actions->add(new Lock());
  71. $actions->add(new getRule());
  72. if($actions->row->status == 0 && $actions->row->device_type){
  73. $actions->add(new sendRule());
  74. $actions->add(new testRule());
  75. }
  76. });
  77. $grid->filter(function (Grid\Filter $filter){
  78. $filter->column(1/2, function ($filter) {
  79. $filter->like('device_name','设备名称');
  80. $filter->equal('status','状态')->select(DeviceInfo::getStatus());
  81. });
  82. });
  83. return $grid;
  84. }
  85. /**
  86. * Make a show builder.
  87. *
  88. * @param mixed $id
  89. * @return Show
  90. */
  91. protected function detail($id)
  92. {
  93. $show = new Show(DeviceInfo::findOrFail($id));
  94. $isLock = DeviceInfo::getLock();
  95. $status = DeviceInfo::getStatus();
  96. $breakDown = DeviceInfo::getBrakdown();
  97. $show->field('id', __('ID'));
  98. $show->field('device_name', __('阿里云设备编号'));
  99. $show->field('device_comment', __('微信中名称'));
  100. $show->field('device_type', __('型号'));
  101. $show->field('iot_id', __('iot_id'));
  102. $show->field('product_key', __('product_key'));
  103. $show->field('device_secret', __('设备密匙'));
  104. $show->field('imei', __('imei'));
  105. $show->field('status', __('运行状态'))->using($status);
  106. $show->field('runningStatus', __('设备状态'))->using($breakDown);
  107. $show->field('lock_switch', __('是否锁定'))->using($isLock);
  108. $show->field('device_position', __('详细位置'));
  109. $show->field('device_weight', __('累计重量/kg'))->as(function ($w){
  110. return round($w/1000,3);
  111. });
  112. $show->field('device_qrcode', __('二维码'))->image();
  113. $show->field('device_tem', __('温度'));
  114. $show->field('device_light_start', __('灯牌开始点亮时间'));
  115. $show->field('device_light_end', __('灯牌结束点亮时间'));
  116. $show->field('serial_number', __('海康卫视序列号'));
  117. $show->field('device_memo', __('设备备注'));
  118. $show->field('created_at', __('创建时间'));
  119. $show->field('updated_at', __('更新时间'));
  120. return $show;
  121. }
  122. /**
  123. * Make a form builder.
  124. *
  125. * @return Form
  126. */
  127. protected function form()
  128. {
  129. $form = new Form(new DeviceInfo());
  130. if(Admin::user()->isAdministrator()){
  131. $form->text('id', __('ID'));
  132. } else {
  133. $form->display('id', __('ID'));
  134. }
  135. $form->select('device_type', __('设备类型'))->options(DeviceInfo::getTypes())->rules('required');
  136. $form->display('device_name', __('(阿里云)设备编号'))->rules('required');
  137. $form->display('iot_id', __('(阿里云)iot_id'))->rules('required');
  138. $form->display('product_key', __('(阿里云)product_key'))->help('阿里产品密匙')->rules('required');
  139. $form->display('device_secret', __('(阿里云)设备密匙'))->rules('required');
  140. $form->display('phone', __('物联网电话卡'))->rules('required');
  141. $form->display('imei', __('(阿里云)设备唯一码'))->rules('required');
  142. $form->hidden('device_tem', __('设备温度'))->default(28)->rules('required');
  143. $form->text('query', '刷新时间')->help('单位秒')->rules('required');
  144. // $form->select('status', __('状态'))->options(['在营','离线','禁用','未激活']);
  145. //$form->hidden('runningStatus', __('运行状态'))->options(['满溢','修复','清空','未知']);
  146. // $form->latlong('device_latitude', 'device_longitude', '经纬度')->default(['lat' => 90, 'lng' => 90]);
  147. $form->textarea('remark', '设备备注');
  148. $form->display('created_at', __('创建时间'));
  149. $form->display('updated_at', __('更新时间'));
  150. return $form;
  151. }
  152. }