camera_add.blade.php 17 KB

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