show_bak.blade.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. @extends('layouts.app')
  2. @section('title'){{$station->name}} - 监视器 - 站@endsection
  3. @section('content')
  4. <div id="nav2">
  5. @component('station.menu')
  6. @endcomponent
  7. @component('station.monitor.menu')
  8. <li class="nav-item">
  9. <a class="nav-link" href="{{URL::current()}}" :class="{active:isActive('{{$station->id}}',3)}">显示:{{$station->name}}</a>
  10. </li>
  11. @endcomponent
  12. </div>
  13. <div class="container-fluid body" id="container">
  14. <div class="card">
  15. <div class="card-body">
  16. <div class="row border" style="opacity: 0.75">
  17. <div class="col-4 text-center h3 py-2 font-weight-bold text-info">宝时云仓</div>
  18. <div class="col text-center h3 py-2 text-muted">智能分拣</div>
  19. </div>
  20. <div class="row pt-3">
  21. <div class="col-4">
  22. <div class="row">
  23. <div class="col py-3 h4">
  24. <div>波次号:</div>
  25. <div class=" text-center">
  26. <b>@{{ task.taskBatch.batch.code }}</b>
  27. </div>
  28. </div>
  29. </div>
  30. <div class="row">
  31. <div class="col py-3 text-muted text-center">
  32. <img id="barcode" alt="">
  33. </div>
  34. </div>
  35. <div class="row">
  36. <div class="col py-3 h4">
  37. 料箱号:<b v-if="task.currentCommodityIndex && task.currentCommodityIndex!==-1">@{{task.taskCommodities[task.currentCommodityIndex]['materialBox']['code']}}</b>
  38. </div>
  39. </div>
  40. <div class="row pt-2">
  41. <div class="col">
  42. {{-- @include("station.monitor._svg")--}}
  43. <img src="{{asset('images/demoBin.png')}}" alt="" class="img">
  44. </div>
  45. </div>
  46. </div>
  47. <div class="col text-center">
  48. <div class="row">
  49. <div class="col py-3 h4" v-for="stationTypeBinMonitor in stationTypeBinMonitors">
  50. <table class="table border">
  51. <tr v-for="row in stationTypeBinMonitor">
  52. <td class="border p-0"
  53. v-for="column in row"
  54. :class="
  55. task.currentCommodityIndex
  56. && task.currentCommodityIndex!==-1
  57. && task.taskCommodities[task.currentCommodityIndex]['binNumber'] === column
  58. ? 'bg-info'
  59. : ''
  60. ">
  61. <span style="opacity:0.25">@{{ column }}</span></td>
  62. </tr>
  63. </table>
  64. </div>
  65. </div>
  66. <div class="row mb-1">
  67. <div class="col-1 text-left font-weight-bold">数量:</div>
  68. <div class="col-2 text-left">@{{ task.currentSum }}/@{{ task.sum }}</div>
  69. <div class="col-1 offset-2 text-muted" v-if="error">异常:</div>
  70. <div class="col-6" v-if="error">@{{ error }}</div>
  71. </div>
  72. <div class="row">
  73. <div class="col py-1">
  74. <table class="table table-hover border">
  75. <tr class="text-muted">
  76. <th class="py-2">序号</th>
  77. <th class="py-2">商品</th>
  78. <th class="py-2">数量</th>
  79. <th class="py-2">条码</th>
  80. </tr>
  81. <tr class="text-muted" v-for="(taskCommodity,i) in task.taskCommodities" :class="taskCommodity.bg">
  82. <td>@{{ i+1 }}</td>
  83. <td>@{{ taskCommodity.name }}</td>
  84. <td>@{{ taskCommodity.amount }}</td>
  85. <td><small class="text-dark font-weight-bold" v-for="barcode in taskCommodity.barcodes">@{{ barcode.code }}</small><br></td>
  86. </tr>
  87. </table>
  88. </div>
  89. </div>
  90. </div>
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. @endsection
  96. @section('lastScript')
  97. <script type="text/javascript" src="{{mix('js/utilities/barcode.js')}}"></script>
  98. <script>
  99. $vue=new Vue({
  100. el:"#container",
  101. data:{
  102. {{--broadcastName : "{{config('database.redis.options.prefix').'presence-station-'.$station->id}}",--}}
  103. broadcastName : "{{config('database.redis.options.prefix').'station-'.$station->id}}",
  104. channelName : ".App\\Events\\BroadcastToStation",
  105. task : {
  106. currentCommodityIndex : -1,
  107. taskCommodities:[
  108. /*{amount:"",binNumber:"",name:"",barcodes:[]},*/
  109. ],
  110. taskBatch:{
  111. batch:{
  112. code:"",
  113. },
  114. },
  115. box:{},
  116. sum : 0,
  117. currentSum : 0,
  118. },
  119. boxes:[],
  120. stationTypeBinMonitors:[],
  121. stationTypeBinMonitor:{
  122. row:Number("{{$stationTypeBinMonitor->bin_row_length}}"),
  123. column:Number("{{$stationTypeBinMonitor->bin_column_length}}"),
  124. amount:Number("{{$stationTypeBinMonitor->bin_wall_amount}}"),
  125. },
  126. color:"red",
  127. error:"",
  128. },
  129. mounted() {
  130. $('.navbar,.nav1,.nav2').hide();
  131. $('.nav3').on('mouseenter', function () {
  132. $('.navbar,.nav1,.nav2').show();
  133. });
  134. $('.body').on('mouseenter', function () {
  135. $('.navbar,.nav1,.nav2').hide();
  136. });
  137. this._broadcast();
  138. console.log(this.stationTypeBinMonitor);
  139. this._renderingstationTypeBinMonitor(this.stationTypeBinMonitor.amount,this.stationTypeBinMonitor.row,this.stationTypeBinMonitor.column);
  140. /* this._renderingBox(3,5);*/
  141. },
  142. methods:{
  143. _broadcast(){
  144. initEcho();
  145. window.Echo.channel(this.broadcastName).listen(this.channelName,(msg)=> {
  146. console.log(1231,msg)
  147. let json = JSON.parse(msg.json);
  148. console.log(json)
  149. this._refreshData(json);
  150. });
  151. },
  152. //刷新数据
  153. _refreshData(obj){
  154. let task={};
  155. task.taskCommodities = [];
  156. task.sum = 0;
  157. task.currentSum = 0;
  158. task.currentCommodityIndex = "";
  159. obj.station_task_commodities.forEach((taskCommodity,i)=> {
  160. task.sum += Number(taskCommodity.amount);
  161. if (taskCommodity.status === '完成') task.currentSum += Number(taskCommodity.amount);
  162. if (taskCommodity.status === '处理中') task.currentCommodityIndex = i;
  163. task.taskCommodities.push({
  164. bg:this._setColor(taskCommodity.status),
  165. amount:taskCommodity.amount,
  166. binNumber:taskCommodity.bin_number,
  167. name:taskCommodity.commodity?taskCommodity.commodity.name:'',
  168. barcodes:taskCommodity.commodity?taskCommodity.commodity.barcodes:[],
  169. materialBox:taskCommodity.material_box,
  170. });
  171. });
  172. task.taskBatch=obj.station_task_batches[0];
  173. setBarcode(task.taskBatch.batch.code,"#barcode",1,50,false);
  174. console.log(task)
  175. this.task = task;
  176. },
  177. //渲染墙格口
  178. _renderingstationTypeBinMonitor(amount, row, column){
  179. for (let i=0;i<amount;i++){
  180. this.stationTypeBinMonitors.push(this._createstationTypeBinMonitor(row, column, i*(row*column)));
  181. }
  182. },
  183. _setColor(status){
  184. switch (status) {
  185. case "待处理":return "";
  186. case "挂起" :return "bg-white";
  187. case "处理中" :return "bg-primary";
  188. case "完成" :return "bg-success";
  189. case "异常" :return "bg-danger";
  190. case "取消" :return "bg-dark text-white";
  191. }
  192. return "";
  193. },
  194. //生成墙格口
  195. _createstationTypeBinMonitor(row, column, increment){
  196. let stationTypeBinMonitor = [];
  197. for (let i=1;i<=row;i++){
  198. let columns = [];
  199. for (let j=((i-1)*column)+1;j<=i*column;j++){
  200. columns.push(j+increment);
  201. }
  202. stationTypeBinMonitor.unshift(columns);
  203. }
  204. return stationTypeBinMonitor;
  205. },
  206. //渲染料箱格口
  207. _renderingBox(row, column, x=79, y=72, width=21, height=12){
  208. let boxes = [];
  209. for (let i=0;i<column;i++){
  210. for (let j=row-1;j>=0;j--){
  211. if (boxes.length===5) boxes.push({x:((i+j)*width)+x,y:(y+(i*height))-(j*height),sign:true});
  212. else boxes.push({x:((i+j)*width)+x,y:(y+(i*height))-(j*height),sign:false});
  213. }
  214. }
  215. this.boxes = boxes;
  216. },
  217. },
  218. });
  219. </script>
  220. @endsection