device-select-form.blade.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. ?>
  3. <style type="text/css">
  4. </style>
  5. <div class="layui-form-item {{ $errors->has('device_id') ? 'has-error' : '' }}">
  6. <label class="layui-form-label" style="padding: 0px;">设备类型</label>
  7. <div class="layui-input-block">
  8. <select name="device_id" lay-filter="device_id">
  9. @foreach($options as $option)
  10. <option value="{{$option->value}}" {{$option->value == $device_id ? 'selected' : ''}}>{{$option->text}}</option>
  11. @endforeach
  12. </select>
  13. @if($errors->has('device_id'))
  14. <span class="help-block">{{ $errors->first('device_id') }}</span>
  15. @endif
  16. </div>
  17. @if($errors->has('device_id'))
  18. <span class="help-block">{{ $errors->first('device_id') }}</span>
  19. @endif
  20. </div>
  21. <div class="layui-form-item {{ $errors->has('device_name_id') ? 'has-error' : '' }}">
  22. <label class="layui-form-label" style="padding: 0px;">设备名称</label>
  23. <div class="layui-input-block">
  24. <select name="device_name_id" lay-filter="device_name_id">
  25. </select>
  26. @if($errors->has('device_name_id'))
  27. <span class="help-block">{{ $errors->first('device_name_id') }}</span>
  28. @endif
  29. </div>
  30. </div>
  31. @if(!isset($hide_spec))
  32. <div class="layui-form-item {{ $errors->has('spec_id') ? 'has-error' : '' }}">
  33. <label class="layui-form-label" style="padding: 0px;">规格型号</label>
  34. <div class="layui-input-block">
  35. <select name="spec_id" lay-filter="spec_id">
  36. </select>
  37. @if($errors->has('spec_id'))
  38. <span class="help-block">{{ $errors->first('spec_id') }}</span>
  39. @endif
  40. </div>
  41. </div>
  42. @endif
  43. <script>
  44. $(function() {
  45. layui.use(['form'], function() {
  46. let form = layui.form;
  47. let data = JSON.parse('{!! $options !!}');
  48. let device_names = [];
  49. let specs = [];
  50. let device_id = '{{ $device_id }}';
  51. let device_name_id = '{{ $device_name_id }}';
  52. let spec_id = '{{ $spec_id }}';
  53. let hide_spec = '{{ isset($hide_spec) ? "yes" : "no" }}';
  54. // console.log(hide_spec)
  55. form.on('select(device_id)', function(data) {
  56. device_id = data.value;
  57. device_name_id = '';
  58. spec_id = '';
  59. updateDeviceName()
  60. });
  61. form.on('select(device_name_id)', function(data) {
  62. device_name_id = data.value;
  63. spec_id = '';
  64. updateSpec()
  65. });
  66. updateDeviceName();
  67. function updateDeviceName() {
  68. let device_index = getIndex(data, device_id);
  69. device_names = data[device_index].names;
  70. let options = '';
  71. for(let i = 0; i < device_names.length; ++i) {
  72. options += '<option value=' + device_names[i].value + (parseInt(device_names[i].value) === parseInt(device_name_id) ? ' selected' : '') + '>' + device_names[i].text + '</option>'
  73. }
  74. $("select[name='device_name_id']").html(options);
  75. form.render('select');
  76. if(hide_spec === 'no') updateSpec()
  77. }
  78. function updateSpec() {
  79. let name_index = getIndex(device_names, device_name_id);
  80. specs = device_names[name_index].specs;
  81. let options = '';
  82. for(let i = 0; i < specs.length; ++i) {
  83. options += '<option value=' + specs[i].value + (parseInt(specs[i].value) === parseInt(spec_id) ? ' selected' : '') + '>' + specs[i].text + '</option>'
  84. }
  85. $("select[name='spec_id']").html(options);
  86. form.render('select');
  87. }
  88. function getIndex(list, id) {
  89. id = parseInt(id);
  90. for(var i = 0; i < list.length; ++i) {
  91. if(list[i].value === id) return i;
  92. }
  93. return 0;
  94. }
  95. })
  96. })
  97. </script>