camera_add.blade.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  1. <style>
  2. .layui-upload-list {
  3. width: auto;
  4. height: auto;
  5. margin-bottom: 0;
  6. }
  7. .layui-elem-quote {
  8. padding-bottom: 5px;
  9. }
  10. .layui-upload-img {
  11. /*width: 92px;*/
  12. height: 92px;
  13. }
  14. hr {
  15. margin: 15px 0;
  16. }
  17. .uk-alert-danger {
  18. background: #fff1f0;
  19. color: #d85030;
  20. margin-bottom: 15px;
  21. padding: 10px;
  22. border: 1px solid rgba(216, 80, 48, .3);
  23. border-radius: 4px;
  24. text-shadow: 0 1px 0 #fff;
  25. }
  26. .imgItem {
  27. display: inline-block;
  28. position: relative;
  29. margin: 0 10px 10px 0;
  30. }
  31. .imgItem .layui-close {
  32. position: absolute;
  33. top: 0;
  34. right: 0;
  35. height: 16px;
  36. line-height: 16px;
  37. text-align: center;
  38. color: #000;
  39. width: 16px;
  40. border: 1px solid #000;
  41. background-color: #fff;
  42. }
  43. iframe.fr-iframe {
  44. padding: 0 20px;
  45. }
  46. .fr-wrapper.show-placeholder .fr-placeholder {
  47. padding-left: 30px !important;
  48. }
  49. .layui-form-label {
  50. width: {{ $colWidth }}px;
  51. }
  52. .layui-input-block {
  53. margin-left: {{ $colWidth + 30 }}px;
  54. }
  55. .weadmin-body {
  56. overflow: initial;
  57. }
  58. </style>
  59. <script src="/js/admin/xm-select.js"></script>
  60. <script src="/laydate/laydate.js"></script>
  61. <form class="layui-form" id="form-unify" method="post" action="{{ $path ?? '' }}" style="padding:20px;">
  62. @csrf
  63. <h2 class="uk-modal-title">{{ $fromTitle }}</h2>
  64. @if(isset($item[$primaryKey]))
  65. <input type="hidden" name="{{ $primaryKey }}" value="{{ $item[$primaryKey] }}">
  66. @endif
  67. <br>
  68. @foreach($columns as $key => $column)
  69. @switch($column['type'])
  70. @case('tree_select')
  71. <div class="layui-form-item">
  72. <label class="layui-form-label">{{ $column['label'] }}</label>
  73. <div class="layui-input-block">
  74. {{-- {!! json_encode($column) !!} --}}
  75. <select name="{{ $key }}">
  76. @if($column['isShowNull'] == true)
  77. <option value="0" @if(!isset($item)) selected @endif>无</option>
  78. @endif
  79. @if(count($column['options']) > 0)
  80. @include('admin::component.multi_select_option', ['selects' => $column['options'], 'selectPid' => $item[$key] ?? ($column['default'] ?? '')])
  81. @endif
  82. </select>
  83. </div>
  84. </div>
  85. @break
  86. @endswitch
  87. @endforeach
  88. <div class="layui-form-item">
  89. <label class="layui-form-label">摄像头名称</label>
  90. <div class="layui-input-block">
  91. <input class="layui-input" type="text" placeholder="请输入摄像头名称" name="camera_name" value="{{ $item['camera_name'] ?? (old('camera_name') ?? ($column['default'] ?? '')) }}"/>
  92. </div>
  93. </div>
  94. <div class="layui-form-item">
  95. <label class="layui-form-label">摄像头类型</label>
  96. <div class="layui-input-block">
  97. <select name="camera_type">
  98. <option value="0" @if(!isset($item)) selected @endif>无</option>
  99. @if(count($columns['camera_type']['options']) > 0)
  100. @foreach($columns['camera_type']['options'] as $k => $col)
  101. <option value="{{ $k }}"
  102. @if($columns['camera_type']['default'] == $k || (isset($item['camera_type']) && $item['camera_type'] == $k)) selected @endif>
  103. {{ $col }}
  104. </option>
  105. @endforeach
  106. @endif
  107. </select>
  108. </div>
  109. </div>
  110. <div class="layui-form-item">
  111. <label class="layui-form-label">摄像头来源</label>
  112. <div class="layui-input-block">
  113. <select name="camera_source" id="camera_source" lay-filter="camera_source">
  114. <option value="0" @if(!isset($item)) selected @endif>无</option>
  115. @if(count($columns['camera_source']['options']) > 0)
  116. @foreach($columns['camera_source']['options'] as $k => $col)
  117. <option value="{{ $k }}"
  118. @if($columns['camera_source']['default'] == $k || (isset($item['camera_source']) && $item['camera_source'] == $k)) selected @endif>
  119. {{ $col }}
  120. </option>
  121. @endforeach
  122. @endif
  123. </select>
  124. </div>
  125. </div>
  126. <div class="layui-form-item">
  127. <div class="layui-form-label">录像机品牌</div>
  128. <div class="layui-input-block">
  129. @foreach($columns['video_recorder']['options'] as $k => $col)
  130. <label><input type="radio" name="video_recorder" value="{{ $k }}"
  131. @if((isset($item['video_recorder']) && $item['video_recorder'] == $k) ||
  132. old('video_recorder') === $k ||
  133. (isset($columns['video_recorder']['default']) && $columns['video_recorder']['default'] === $k)) checked
  134. @endif title="{{ $col }}"/>
  135. </label>
  136. @endforeach
  137. </div>
  138. </div>
  139. <div class="layui-form-item" id="camera_url">
  140. <label class="layui-form-label">摄像头链接</label>
  141. <div class="layui-input-block">
  142. <input class="layui-input" type="text" placeholder="请输入摄像头链接" name="camera_url" value="{{ $item['camera_url'] ?? (old('camera_url') ?? ($column['default'] ?? '')) }}"/>
  143. </div>
  144. </div>
  145. <div class="layui-form-item" id="user_name">
  146. <label class="layui-form-label">用户名</label>
  147. <div class="layui-input-block">
  148. <input class="layui-input" type="text" placeholder="请输入用户名" name="user_name" value="{{ $item['user_name'] ?? (old('user_name') ?? ($column['default'] ?? '')) }}"/>
  149. </div>
  150. </div>
  151. <div class="layui-form-item" id="password">
  152. <label class="layui-form-label">密码</label>
  153. <div class="layui-input-block">
  154. <input class="layui-input" type="text" placeholder="请输入密码" name="password" value="{{ $item['password'] ?? (old('password') ?? ($column['default'] ?? '')) }}"/>
  155. </div>
  156. </div>
  157. <div class="layui-form-item" id="ip">
  158. <label class="layui-form-label">ip地址</label>
  159. <div class="layui-input-block">
  160. <input class="layui-input" type="text" placeholder="请输入ip地址" name="ip" value="{{ $item['ip'] ?? (old('ip') ?? ($column['default'] ?? '')) }}"/>
  161. </div>
  162. </div>
  163. <div class="layui-form-item" id="port">
  164. <label class="layui-form-label">端口</label>
  165. <div class="layui-input-block">
  166. <input class="layui-input" type="text" placeholder="请输入端口" name="port" value="{{ $item['port'] ?? (old('port') ?? ($column['default'] ?? '')) }}"/>
  167. </div>
  168. </div>
  169. <div class="layui-form-item" id="com_number">
  170. <label class="layui-form-label">通道号</label>
  171. <div class="layui-input-block">
  172. <input class="layui-input" type="text" placeholder="请输入通道号" name="com_number" value="{{ $item['com_number'] ?? (old('com_number') ?? ($column['default'] ?? '')) }}"/>
  173. </div>
  174. </div>
  175. <div class="layui-form-item" id="code_stream">
  176. <label class="layui-form-label">视频码流</label>
  177. <div class="layui-input-block">
  178. <?php /*dd($columns);exit;*/?>
  179. <select name="code_stream">
  180. <option value="0">无</option>
  181. @foreach($columns['code_stream']['options'] as $k=>$v)
  182. @if($k == 1 && count($columns['code_stream']['options']) > 0)
  183. <option value="{{ $k }}" selected>{{ $v }}</option>
  184. @else
  185. <option value="{{ $k }}">{{ $v }}</option>
  186. @endif
  187. @endforeach
  188. </select>
  189. </div>
  190. </div>
  191. <div class="layui-form-item">
  192. <label class="layui-form-label">排序</label>
  193. <div class="layui-input-block">
  194. <input class="layui-input" type="text" placeholder="请输入排序" name="sort" value="{{ $item['sort'] ?? (old('sort') ?? ($columns['sort']['default'] ?? '')) }}"/>
  195. </div>
  196. </div>
  197. @if(isset($columns['surface_id']))
  198. <div class="layui-form-item">
  199. <label class="layui-form-label">所属矿区区域</label>
  200. <div class="layui-input-block">
  201. <?php /*dd($columns);exit;*/?>
  202. <select name="surface_id">
  203. <option value="0">无</option>
  204. @foreach($columns['surface_id']['options'] as $k=>$v)
  205. @if($k == 1 && count($columns['surface_id']['options']) > 0)
  206. <option value="{{ $k }}" selected>{{ $v }}</option>
  207. @else
  208. <option value="{{ $k }}">{{ $v }}</option>
  209. @endif
  210. @endforeach
  211. </select>
  212. </div>
  213. </div>
  214. @endif
  215. @foreach($columns as $key => $column)
  216. @switch($column['type'])
  217. @case('uploadImg')
  218. <label class="layui-form-label">{{ $column['label'] }}</label>
  219. <div class="layui-upload">
  220. <img id="pre" class="layui-upload-img none">
  221. @if (strlen($column['default']) > 0)
  222. <script>
  223. $('#pre').attr('src', '{{ $column['default'] }}');
  224. </script>
  225. @endif
  226. <span style="display: inline-table;">
  227. <button type="button" class="layui-btn" id="selectImgBtn">上传图片</button>
  228. <p id="uploadTips">
  229. <input type="hidden" name="{{ $key }}" value="{{ $column['default'] ?? '' }}"/>
  230. </p>
  231. </span>
  232. </div>
  233. <style>
  234. .layui-upload-img {
  235. /*width: 92px;*/
  236. height: 92px;
  237. margin: 10px 10px 10px 10px;
  238. }
  239. #uploadTips {
  240. line-height: 30px;
  241. }
  242. </style>
  243. <script>
  244. layui.use('upload', function () {
  245. var $ = layui.jquery
  246. , upload = layui.upload;
  247. var uploadInst = upload.render({
  248. elem: '#selectImgBtn'
  249. , url: "{{ $column['uploadURLPath'] }}"
  250. , acceptMime: 'image/jpg, image/png, image/jpeg'
  251. , number: 1
  252. , before: function (obj) {
  253. //预读本地文件示例,不支持ie8
  254. obj.preview(function (index, file, result) {
  255. $('#pre').attr('src', result); //图片链接(base64)
  256. });
  257. }
  258. , done: function (res) {
  259. //如果上传失败
  260. if (res.code > 0) {
  261. return layer.msg('上传失败');
  262. }
  263. //上传成功
  264. $("input[name='{{ $key }}']").val(res.data.image_path);
  265. }
  266. , error: function () {
  267. //演示失败状态,并实现重传
  268. var uploadTips = $('#uploadTips');
  269. uploadTips.html('<span style="color: #FF5722; text-align:center">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
  270. uploadTips.find('.demo-reload').on('click', function () {
  271. uploadInst.upload();
  272. });
  273. }
  274. });
  275. });
  276. </script>
  277. @break
  278. @default
  279. @endswitch
  280. @if($hasHr)
  281. <hr>
  282. @endif
  283. @endforeach
  284. @if(!is_null($footBtns))
  285. <hr>
  286. <div style="text-align: right">
  287. @if(in_array('goback',$footBtns))
  288. @if($isAjax)
  289. <button class="layui-btn layui-btn-primary layui-layer-close" style="position:relative;"
  290. type="button">
  291. 取消
  292. </button>
  293. @else
  294. <button class="layui-btn layui-btn-primary layui-layer-close" style="position:relative;"
  295. type="button"
  296. onclick="javascript:history.go(-1);">返回
  297. </button>
  298. @endif
  299. @endif
  300. @if(in_array('save',$footBtns))
  301. <button class="layui-btn" type="submit" lay-submit lay-filter="formBox">保存</button>
  302. @endif
  303. </div>
  304. @endif
  305. </form>
  306. <script>
  307. //根据摄像头来源显示内容
  308. if(document.getElementById("camera_source").value == 1){//硬盘录像机
  309. document.getElementById("camera_url").style.display = 'none';
  310. document.getElementById("user_name").style.display = 'block';
  311. document.getElementById("password").style.display = 'block';
  312. document.getElementById("ip").style.display = 'block';
  313. document.getElementById("port").style.display = 'block';
  314. document.getElementById("com_number").style.display = 'block';
  315. document.getElementById("code_stream").style.display = 'block';
  316. }
  317. if(document.getElementById("camera_source").value == 2){//视频服务器
  318. document.getElementById("camera_url").style.display = 'none';
  319. document.getElementById("user_name").style.display = 'none';
  320. document.getElementById("password").style.display = 'none';
  321. document.getElementById("ip").style.display = 'none';
  322. document.getElementById("port").style.display = 'none';
  323. document.getElementById("com_number").style.display = 'none';
  324. document.getElementById("code_stream").style.display = 'block';
  325. }
  326. if(document.getElementById("camera_source").value == 3){//内网摄像头
  327. document.getElementById("camera_url").style.display = 'block';
  328. document.getElementById("user_name").style.display = 'none';
  329. document.getElementById("password").style.display = 'none';
  330. document.getElementById("ip").style.display = 'none';
  331. document.getElementById("port").style.display = 'none';
  332. document.getElementById("com_number").style.display = 'none';
  333. document.getElementById("code_stream").style.display = 'none';
  334. }
  335. layui.use(['form', 'laydate', 'table'], function () {
  336. var form = layui.form, table = layui.table;
  337. form.render();
  338. form.on('checkbox', function (data) {
  339. $(data.othis).toggleClass('layui-form-checked');
  340. });
  341. form.on('select(camera_source)', function(data){
  342. var val=data.value;
  343. if(val == 1){
  344. document.getElementById("camera_url").style.display = 'none';
  345. document.getElementById("user_name").style.display = 'block';
  346. document.getElementById("password").style.display = 'block';
  347. document.getElementById("ip").style.display = 'block';
  348. document.getElementById("port").style.display = 'block';
  349. document.getElementById("com_number").style.display = 'block';
  350. document.getElementById("code_stream").style.display = 'block';
  351. }else if(val == 2){
  352. document.getElementById("camera_url").style.display = 'none';
  353. document.getElementById("user_name").style.display = 'none';
  354. document.getElementById("password").style.display = 'none';
  355. document.getElementById("ip").style.display = 'none';
  356. document.getElementById("port").style.display = 'none';
  357. document.getElementById("com_number").style.display = 'none';
  358. document.getElementById("code_stream").style.display = 'block';
  359. }else if(val == 3){
  360. document.getElementById("camera_url").style.display = 'block';
  361. document.getElementById("user_name").style.display = 'none';
  362. document.getElementById("password").style.display = 'none';
  363. document.getElementById("ip").style.display = 'none';
  364. document.getElementById("port").style.display = 'none';
  365. document.getElementById("com_number").style.display = 'none';
  366. document.getElementById("code_stream").style.display = 'none';
  367. }
  368. });
  369. @if($isAjax)
  370. form.on('submit(formBox)', function (data) {
  371. var urlPost = $('#form-unify').attr('action');
  372. var submitBtn = $(data.elem);
  373. submitBtn.addClass('layui-btn-disabled').prop('disabled', true).text('提交中……');
  374. $.ajax({
  375. url: urlPost,
  376. type: 'POST',
  377. dataType: 'json',
  378. data: data.field
  379. })
  380. .done(function (res) {
  381. if (res.code === 0) {
  382. submitBtn.text('完成');
  383. layer.msg('完成!', {anim: 0}, function () {
  384. if (res.data.table === '') {
  385. location.reload();
  386. } else {
  387. layer.closeAll();
  388. if (res.data.table !== undefined) {
  389. table.reload(res.data.table);
  390. }
  391. if (res.url !== undefined) {
  392. location.href = res.url;
  393. }
  394. }
  395. });
  396. } else {
  397. layer.msg(res.message, {anim: 0}, function () {
  398. submitBtn.removeClass('layui-btn-disabled').prop('disabled', false).text('重新保存');
  399. });
  400. }
  401. })
  402. .fail(function (res) {
  403. layer.msg(res.message, {anim: 0}, function () {
  404. submitBtn.removeClass('layui-btn-disabled').prop('disabled', false).text('重新保存');
  405. });
  406. });
  407. return false;
  408. });
  409. @endif
  410. });
  411. $('.layui-form').on('click', '.layui-close', function () {
  412. var self = $(this);
  413. self.closest('.imgItem').remove();
  414. });
  415. $('.layui-form').on('click', '.file-delete', function () {
  416. var self = $(this);
  417. self.closest('tr').remove();
  418. });
  419. $('.date-input').datepicker({
  420. language: 'zh-CN',
  421. format: 'yyyy-mm-dd',
  422. zIndex: 19999999,
  423. autoHide: true
  424. });
  425. $('.dateMonth-input').datepicker({
  426. language: 'zh-CN',
  427. format: 'yyyy-mm',
  428. zIndex: 19999999,
  429. autoHide: true
  430. });
  431. $('.dateYear-input').datepicker({
  432. language: 'zh-CN',
  433. format: 'yyyy',
  434. zIndex: 19999999,
  435. autoHide: true
  436. });
  437. </script>