OSDN Git Service

c48383cb8eae6b1720ddceaf88e8ca331251cf8c
[invent/invent.git] / views / items / check.php
1 <?php
2
3 use yii\helpers\Html;
4 use yii\grid\GridView;
5 use yii\widgets\ActiveForm;
6 use yii\widgets\Pjax;
7
8 //use yii\helpers\Url;
9 use yii\widgets\DetailView;
10 use yii\helpers\ArrayHelper;
11 //use app\models\Status;
12
13 use app\models\Locations;
14 use app\models\Regions;
15 use app\models\LocationsSearch;
16 use app\models\RegionsSearch;
17
18 /* @var $this yii\web\View */
19 /* @var $searchModel app\models\ItemsSearch */
20 /* @var $dataProvider yii\data\ActiveDataProvider */
21
22 $this->title = Yii::t('items', 'Items');
23 $this->params[ 'breadcrumbs' ][] = $this->title;
24
25 // Создание сортированного списка для выбора расположения оборудования
26 $locations = ArrayHelper::map(LocationsSearch::noinvent()->orderBy('name')->all(), 'id', 'name');
27 foreach ($locations as $key => $val) {
28     $locations[ $key ] = $val . ' (' .
29         Regions::findOne(['id' => Locations::findOne(['id' => $key])->region_id])->name .
30         ')';
31 }
32
33 $regions = ArrayHelper::map(RegionsSearch::noinvent()->orderBy('name')->all(), 'id', 'name');
34 ?>
35     <script src="https://github.com/mebjas/html5-qrcode/releases/download/V1.2.3/html5-qrcode.min.js"></script>
36     <script>
37         function docReady(fn) {
38             // see if DOM is already available
39             if (document.readyState === "complete"
40                 || document.readyState === "interactive")
41             {
42                 // call on next available tick
43                 setTimeout(fn, 1);
44             }
45             else
46             {
47                 document.addEventListener("DOMContentLoaded", fn);
48             }
49         }
50
51     </script>
52
53     <script>
54         function getData()
55         {
56             $('#btnsend').click();
57         }
58
59         docReady(function ()
60         {
61             var lastResult;
62             function onScanSuccess(qrCodeMessage)
63             {
64                 var resultContainer = document.getElementById('check-qrcheck');
65                 if (qrCodeMessage !== lastResult)
66                 {
67                     lastResult = qrCodeMessage;
68                     resultContainer.value
69                         = decodeURIComponent(escape(`${qrCodeMessage}`));
70
71                     getData();
72                 }
73             }
74
75             var html5QrcodeScanner = new Html5QrcodeScanner(
76                 "qr-reader", { fps: 10, qrbox: 250 });
77             html5QrcodeScanner.render(onScanSuccess);
78         });
79         
80     </script>
81
82
83     <div class="row">
84         <!-- ?= odaialali\qrcodereader\QrReader::widget([
85     'id' => 'qrInput',
86     'successCallback' => "function(data){ $('#qrInput').val(data) }"
87 ]) ? -->
88         <div class="col-md-4" id="qr-reader"></div>
89     </div>
90
91     <?php Pjax::begin(); ?>
92
93     <div class="row"><br /><br />
94         <div class="col-md-8"><?= $message ?></div>
95     </div>
96
97     <?php $form = ActiveForm::begin([ 'options' => [ 'data-pjax' => true ]]); ?>
98
99     <?= $form->field($model,
100             // Поле ввода QR-кода
101             'qrcheck',
102             [ 'template' => '<div class="row"><div class="col-md-2">{label}</div><div class="col-md-5">{input}</div><div class="col-md-2">' .
103                  Html::submitButton(Yii::t('app', 'Register'),   [ 'id' => 'btnsend', 'class' => 'btn btn-success' ]) .
104                 '</div><div class="col-md-8">{error}</div></div>' ])
105             ->textInput() ?>
106
107     <?= $form->field($model,
108             // Поле выбора региона
109             'region',
110             [ 'template' => '<div class="row"><div class="col-md-2">{label}</div><div class="col-md-5">{input}</div><div class="col-md-2">' .
111                 '</div><div class="col-md-8">{error}</div></div>' ])
112             ->dropDownList($regions, [ 'onchange' => 'getData();', 'class' => 'form-control', 'prompt' => Yii::t('regions', 'Select region') ]) ?>
113
114     <?= $form->field($model,
115             // Поле выбора места размещения
116             'location',
117             [ 'template' => '<div class="row"><div class="col-md-2">{label}</div><div class="col-md-5">{input}</div><div class="col-md-2">' .
118                 '</div><div class="col-md-8">{error}</div></div>' ])
119             ->dropDownList($locations, [ 'onchange' => 'getData();', 'class' => 'form-control', 'prompt' => Yii::t('locations', 'Select location') ]) ?>
120
121
122     <?php $form = ActiveForm::end(); ?>
123
124     <?= GridView::widget([
125         'dataProvider' => $dataProvider, // Источник данных
126         'filterModel' => $searchModel,
127         'columns' => [
128
129             // Инвентарный номер
130             'invent',
131
132             // Серийный номер
133             'serial',
134             // Модель
135             'modelName',
136
137             // Название подразделения
138             [ 'attribute' => 'regionName',
139                 'value' => function($data)
140                     {
141                         return $data->regionName .  ' (' . $data->locationName . ')';
142                     },
143             ],
144
145             // Состояние
146             'statusName',
147
148             /* // Операционная система
149             [ 'attribute' => 'os',
150                 'value' => function ($data)
151                     {
152                         return showUrlUpdate($data->os, $data->id);
153                     },
154                 'format' => 'raw',
155             ], // */
156
157             /* // МАС - адрес
158             [ 'attribute' => 'mac',
159                 'value' => function ($data)
160                     {
161                         return showUrlUpdate($data->mac, $data);
162                     },
163                 'format' => 'raw',
164             ], // */
165
166             /* // Код товара
167             [ 'attribute' => 'product',
168                 'value' => function ($data)
169                     {
170                         return showUrlUpdate($data->product, $data);
171                     },
172                 'format' => 'raw',
173             ], // */
174
175             /* // Номер модели
176             [ 'attribute' => 'modelnumber',
177                 'value' => function ($data)
178                     {
179                         return showUrlUpdate($data->modelnumber, $data);
180                     },
181                 'format' => 'raw',
182             ], // */
183
184             /* // Примечания
185             [ 'attribute' => 'comment',
186                 'value' => function ($data)
187                     {
188                         return showUrlUpdate($data->comment, $data);
189                     },
190                 'format' => 'raw',
191             ], // */
192
193         ],
194     ]); ?>
195
196     <?php Pjax::end(); ?>
197
198 </div>