edit.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388
  1. {extend name="public/layout" /} {block name="title"}视频修改{/block} {block name="head"} {include file="public/head"}
  2. <style>
  3. #douyin {
  4. display: none;
  5. }
  6. video {
  7. max-width: 100%;
  8. max-height: 400px;
  9. margin: 30px 0px;
  10. }
  11. html {
  12. background: #fff;
  13. }
  14. .colorRed{color:red;}
  15. .layui-upload-drag {
  16. width: 128px;
  17. height: 90px;
  18. }
  19. .isimgupload{width:190px;height: 152px;}
  20. .imageDiv{position: absolute;top:0;left:0;width:100%;height: 100%;background: rgba(230,230,230,.5);display: none;}
  21. .imageDiv i{display: block;width:18px;height: 18px;position: absolute;top:0;left:0;bottom:0;right: 0;margin:auto;}
  22. </style>
  23. {/block} {block name="body"}
  24. <body>
  25. <form class="layui-form" lay-filter="layuiadmin-app-form-list" id="layuiadmin-app-form-list"
  26. style="padding: 20px 30px 0 0;">
  27. <div class="layui-form-item">
  28. <label class="layui-form-label"><span class="colorRed">*</span>标题</label>
  29. <div class="layui-input-inline" style="width: 70%;">
  30. <input type="text" name="title" lay-verify="required" placeholder="请输入标题" autocomplete="off"
  31. class="layui-input" value="{$data.title}">
  32. </div>
  33. </div>
  34. <div class="layui-form-item">
  35. <label class="layui-form-label"><span class="colorRed">*</span>分类</label>
  36. <div class="layui-input-inline">
  37. <select name="type" lay-filter="type" id="type" lay-verify="required" lay-search>
  38. <option value="">请选择分类</option>
  39. {volist name="type" id="t"}
  40. <option value="{$t.id}" {if condition="$data.type eq $t.id"}selected{/if}>{$t.name}</option>
  41. {/volist}
  42. </select>
  43. </div>
  44. <i class="layui-icon layui-icon-add-circle adding" style="font-size: 32px" id="addType"></i>
  45. </div>
  46. <div class="layui-form-item">
  47. <label class="layui-form-label">标签</label>
  48. <div class="layui-input-inline">
  49. <select name="label" id="label">
  50. <option value="">请选择标签</option>
  51. {volist name="checked" id="t"}
  52. <option value="{$key}" {if condition="$data.label eq $key"}selected{/if}>{$t}</option>
  53. {/volist}
  54. </select>
  55. </div>
  56. <i class="layui-icon layui-icon-add-circle adding" style="font-size: 32px" id="addLabel"></i>
  57. </div>
  58. <div class="layui-form-item">
  59. <label class="layui-form-label">视频封面图</label>
  60. <div class="isimgupload layui-input-inline" style="position:relative;">
  61. <div class="" id="upload-drag">
  62. {if condition="$data.cover neq ''"}
  63. <img class="fmimages" src="{$data.cover}" style="height:100%;width:100%;">
  64. {else/}
  65. <div class="layui-upload-drag">
  66. <i class="layui-icon">&#xe681;</i>
  67. <p>上传图片</p>
  68. </div>
  69. {/if}
  70. </div>
  71. <div class="imageDiv"><i class="layui-icon layui-icon-delete" prop="del"></i></div>
  72. </div>
  73. </div>
  74. <div class="layui-form-item">
  75. <label class="layui-form-label">分享封面</label>
  76. <div class="layui-input-inline isimgupload" style="position: relative;">
  77. <div class="" id="upload-share-drag">
  78. {if condition="$data.cover_share_img neq ''"}
  79. <img class="fmimages" src="{$data.cover_share_img}" style="height:100%;width:100%;">
  80. {else/}
  81. <div class="layui-upload-drag">
  82. <i class="layui-icon">&#xe681;</i>
  83. <p>上传图片</p>
  84. </div>
  85. {/if}
  86. </div>
  87. <div class="imageDiv"><i class="layui-icon layui-icon-delete" prop="del"></i></div>
  88. </div>
  89. </div>
  90. <div class="layui-form-item">
  91. <label class="layui-form-label"></label>
  92. <div><i style="color:red;margin-right:5px;">*</i>视频封面比例建议按照全屏比例750X1334,或者宽高比例5:3,图片大小不超过1M</div>
  93. </div>
  94. <div class="layui-form-item layui-hide" >
  95. <label class="layui-form-label"><span class="colorRed">*</span>视频</label>
  96. <div class="layui-input-inline" style="width: 290px;">
  97. <!-- <input type="radio" name="myradio" value="local_name" /> 上传文件名字保持本地文件名字-->
  98. <input type="radio" name="myradio" value="random_name" checked=true/> 上传文件名字是随机文件名, 后缀保留
  99. </div>
  100. </div>
  101. <div class="layui-form-item">
  102. <label class="layui-form-label"><span class="colorRed">*</span>视频</label>
  103. <div class="layui-input-inline" style="width: 290px;display: block;" id="container">
  104. <a class="layui-btn btn" id="selectfiles" href="javascript:void(0);" >选择视频</a>
  105. <a class="layui-btn btn" id="postfiles" href="javascript:void(0);">开始上传</a>
  106. <div id="ossfile"></div>
  107. <div id="symbshowed">
  108. <video src="{$data.video_urls}" controls="controls"></video>
  109. </div>
  110. <!--报错信息返回展示-->
  111. <pre id="console"></pre>
  112. <input type="hidden" value="{$data.video_url}" id="fileuri">
  113. <!--上传到OSS哪个文件下,在这里定义-->
  114. <input type="hidden" value="Video" id="category_name">
  115. </div>
  116. </div>
  117. <div class="layui-form-item videolimit">
  118. <label class="layui-form-label"></label>
  119. <div><i style="color:red;margin-right:5px;">*</i><span id="limitVA">上传视频大小不超过280M</span></div>
  120. </div>
  121. <div class="layui-form-item" style="clear:both;width:100%;">
  122. <label class="layui-form-label"><i style="color:red;">*</i> 视频格式:</label>
  123. <div class="layui-input-block lh45 mdl20" style="max-width: 300px !important;">
  124. <input type="radio" id="1" class="radio_input" lay-filter="video_type"
  125. name="video_type" value="0" title="全屏" {if $data.video_type == 0} checked {/if}>
  126. <input type="radio" id="2" class="radio_input" lay-filter="video_type"
  127. name="video_type" value="1" title="横屏" {if $data.video_type == 1} checked {/if}>
  128. </div>
  129. </div>
  130. <div class="layui-form-item">
  131. <label class="layui-form-label">视频描述</label>
  132. <div class="layui-input-block" style="width: 70%;">
  133. <textarea name="description" style="width: 100%; height: 100px;"
  134. autocomplete="off" class="layui-textarea">{$data.description}</textarea>
  135. <div class="layui-form-mid layui-word-aux">描述最长200个汉字</div>
  136. <div class="layui-form-mid layui-word-aux" id="dy">
  137. <a href="javascript:;" style="color: red;text-decoration-line: underline;">点击抓取抖音视频</a>
  138. </div>
  139. </div>
  140. </div>
  141. <div class="layui-form-item" id="douyin">
  142. <label class="layui-form-label">抖音地址</label>
  143. <div class="layui-input-inline">
  144. <input type="text" id="douyinurl" placeholder="请粘贴抖音分享地址" autocomplete="off" class="layui-input">
  145. </div>
  146. <div class="layui-input-inline">
  147. <a class="layui-btn layui-btn-primary" id="catch">抓取</a>
  148. </div>
  149. </div>
  150. <div class="layui-form-item layui-hide">
  151. <input type="button" lay-submit lay-filter="layuiadmin-app-form-submit" id="layuiadmin-app-form-submit"
  152. value="确认添加">
  153. <input type="button" lay-submit lay-filter="layuiadmin-app-form-edit" id="layuiadmin-app-form-edit"
  154. value="确认编辑">
  155. </div>
  156. <input type="hidden" name="id" value="{$data.id}" />
  157. <input type="hidden" name="douyin_url" value="">
  158. </form>
  159. <div id="loading" style="background-color: grey; display: none;">
  160. <div class="layui-progress layui-progress-big" lay-showPercent="yes" lay-filter="load">
  161. <div class="layui-progress-bar layui-bg-green" lay-percent="0%"></div>
  162. </div>
  163. </div>
  164. </body>
  165. {/block} {block name="js"}
  166. <script type="text/javascript" src="__STATIC__/js/plupload/js/plupload.full.min.js"></script>
  167. <script type="text/javascript" src="__STATIC__/js/plupload/ossupload.js"></script>
  168. <script>
  169. layui.config({
  170. base: '__LAYUI__/',
  171. urlbase: '/sys'
  172. }).extend({
  173. index: 'lib/index' //主入口模块
  174. }).use(['index', 'upload', 'form', 'element'], function () {
  175. var form = layui.form,
  176. upload = layui.upload,
  177. $ = layui.jquery;
  178. form.on('submit(layuiadmin-app-form-submit)', function (data) {
  179. if($(data.elem).hasClass('layui-btn-disabled')) return false;
  180. $(data.elem).addClass('layui-btn-disabled');
  181. var index = parent.layer.getFrameIndex(window.name);
  182. var formData = new FormData(data.form);
  183. formData.append('video_url',$('#fileuri').val());
  184. $.ajax({
  185. url: '{:url("video/addSave")}',
  186. data: formData,
  187. type: 'post',
  188. dataType: 'json',
  189. processData: false,
  190. contentType: false,
  191. success: function (res) {
  192. if (res.code == 0) {
  193. layer.msg('添加成功', {
  194. offset: '15px',
  195. icon: 1,
  196. time: 1000
  197. },function(){
  198. parent.layui.table.reload('layui-table-video');
  199. parent.layer.close(index);
  200. });
  201. } else {
  202. layer.msg(res.msg);
  203. }
  204. $(data.elem).removeClass('layui-btn-disabled');
  205. }
  206. });
  207. });
  208. //下拉框关联
  209. var typeData = JSON.parse('{$label|raw}');
  210. form.on('select(type)', function (data) {
  211. var typeJson = typeData[data.value]
  212. var typeLabel = $('#label');
  213. typeLabel.empty().append('<option value="">请选择标签</option>');
  214. for (r in typeJson) {
  215. typeLabel.append('<option value=' + r + '>' + typeJson[r] + '</option>');
  216. }
  217. form.render();
  218. });
  219. $('#dy').click(function () {
  220. console.log(66);
  221. var display = $('#douyin').css('display');
  222. if (display == 'none') {
  223. $('#douyin').show();
  224. } else {
  225. $('#douyin').hide();
  226. }
  227. });
  228. //拖拽上传
  229. upload.render({
  230. elem: '#upload-drag',
  231. accept: 'image',
  232. exts: 'png|jpg|jpeg',
  233. auto: false,
  234. field: 'cover',
  235. size: 3 * 1024,
  236. choose: function(obj) {
  237. $('#cover').val('');
  238. obj.preview(function(index, file, result) {
  239. $('#upload-drag').html('<img class="fmimages" src="' + result + '" style="height: 100%;width:100%;">');
  240. });
  241. }
  242. });
  243. //拖拽上传
  244. upload.render({
  245. elem: '#upload-share-drag',
  246. accept: 'image',
  247. exts: 'png|jpg|jpeg',
  248. auto: false,
  249. field: 'cover_share_img',
  250. size: 3 * 1024,
  251. choose: function (obj) {
  252. obj.preview(function (index, file, result) {
  253. $('#upload-share-drag').html('<img class="fmimages" src="' + result + '" style="height: 100%;width:100%;">');
  254. });
  255. }
  256. });
  257. $('.isimgupload').hover(function(){
  258. if($(this).find('#upload-drag').length>0 && $("#upload-drag:has(img.fmimages)").length>0){
  259. $(this).find('.imageDiv').show();
  260. }
  261. if($(this).find('#upload-share-drag').length>0 && $("#upload-share-drag:has(img.fmimages)").length>0){
  262. $(this).find('.imageDiv').show();
  263. }
  264. },function(){
  265. $(this).find('.imageDiv').hide();
  266. })
  267. $('.imageDiv').on('click', function(e) {
  268. var that = this;
  269. layer.confirm('确定删除该图片么?',{title: ['信息', 'color:#333333;background-color:#D8E6F1;'],}, function(index) {
  270. var imgDiv = $('#upload-drag').find('img');
  271. imgDiv.remove();
  272. $('#cover').val('');
  273. $('#upload-drag').html('<div class="layui-upload-drag"><i class="layui-icon">&#xe681;</i><p>上传图片</p></div>');
  274. layer.close(index);
  275. });
  276. });
  277. $("#catch").click(function () {
  278. var url = $('#douyinurl').val();
  279. $.ajax({
  280. url: "{:url('video/catch')}",
  281. data: {
  282. link: url
  283. },
  284. success: function (res) {
  285. if (res.code == 0) {
  286. var form_div = $('#layuiadmin-app-form-list');
  287. form_div.find('input[name=title]').val(res.data.title);
  288. form_div.find('textarea').text(res.data.desc);
  289. $('#video').html('<video controls="" name="media"><source src="' +
  290. res
  291. .data.video + '" type="video/mp4"></video>');
  292. form_div.find('input[name=douyin_url]').val(res.data.video);
  293. $('#video').show();
  294. } else {
  295. layer.msg(res.msg);
  296. }
  297. }
  298. });
  299. });
  300. //添加分类
  301. $('#addType').click(function(){
  302. layer.prompt({
  303. title: ['添加分类', 'color:#333333;background-color:#D8E6F1;']
  304. }, function(value, index, elem) {
  305. var value = $.trim(value);
  306. if(value == '') {
  307. layer.msg('请输入分类名称', {anim: 6});
  308. return false;
  309. }
  310. if(value.length > 6) {
  311. layer.msg('分类名称超长', {anim: 6});
  312. return false;
  313. }
  314. $.post('{:url("video/addtype")}', {
  315. value: value
  316. }, function(res) {
  317. if(res.code == 0) {
  318. $('#type').append("<option selected value='"+res.data.id+"'>"+res.data.value+"</option>")
  319. form.render();
  320. layer.msg(res.msg, {
  321. anim: 0
  322. }, function() {
  323. layer.close(index); //再执行关闭
  324. });
  325. } else {
  326. layer.msg(res.msg, {
  327. anim: 6
  328. });
  329. }
  330. });
  331. });
  332. });
  333. //添加分类下的标签
  334. $('#addLabel').click(function(){
  335. var checktTypeId = $('#type').val();
  336. if(checktTypeId == ''){
  337. layer.msg('请先选择归属分类', {anim: 6});
  338. return false;
  339. }
  340. layer.prompt({
  341. title: ['添加标签', 'color:#333333;background-color:#D8E6F1;']
  342. }, function(value, index, elem) {
  343. var value = $.trim(value);
  344. if(value == '') {
  345. layer.msg('请输入标签名称', {anim: 6});
  346. return false;
  347. }
  348. if(value.length > 6) {
  349. layer.msg('标签名称超长', {anim: 6});
  350. return false;
  351. }
  352. $.post('{:url("video/addtype")}', {
  353. value: value , id: checktTypeId
  354. }, function(res) {
  355. if(res.code == 0) {
  356. $('#label').append("<option selected value='"+res.data.id+"'>"+res.data.value+"</option>")
  357. form.render();
  358. layer.msg(res.msg, {
  359. anim: 0
  360. }, function() {
  361. layer.close(index); //再执行关闭
  362. });
  363. } else {
  364. layer.msg(res.msg, {
  365. anim: 6
  366. });
  367. }
  368. });
  369. });
  370. });
  371. });
  372. </script>
  373. {/block}