add_task.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. {extend name="public/container"}
  2. {block name='head_top'}
  3. <style>
  4. .layui-input-block .layui-video-box{
  5. width: 50%;
  6. height: 180px;
  7. border-radius: 10px;
  8. background-color: #707070;
  9. margin-top: 10px;
  10. position: relative;
  11. overflow: hidden;
  12. }
  13. .layui-input-block .layui-video-box i{
  14. color: #fff;
  15. line-height: 180px;
  16. margin: 0 auto;
  17. width: 50px;
  18. height: 50px;
  19. display: inherit;
  20. font-size: 50px;
  21. }
  22. .layui-input-block .layui-video-box .mark{
  23. position: absolute;
  24. width: 100%;
  25. height: 30px;
  26. top: 0;
  27. background-color: rgba(0,0,0,.5);
  28. text-align: center;
  29. }
  30. </style>
  31. <script type="text/javascript" src="{__ADMIN_PATH}js/aliyun-oss-sdk-4.4.4.min.js"></script>
  32. <script type="text/javascript" src="{__ADMIN_PATH}js/request.js"></script>
  33. <script type="text/javascript" src="{__MODULE_PATH}widget/lib/plupload-2.1.2/js/plupload.full.min.js"></script>
  34. <script type="text/javascript" src="{__MODULE_PATH}widget/OssUpload.js"></script>
  35. {/block}
  36. {block name="content"}
  37. <div class="layui-fluid">
  38. <div class="layui-row layui-col-space15" id="app">
  39. <div class="layui-col-md12">
  40. <div class="layui-card">
  41. <div class="layui-card-header">{if isset($task)}修改任务{else}新增任务{/if}</div>
  42. <div class="layui-card-body">
  43. <form class="layui-form" action="">
  44. <div class="layui-form-item">
  45. <label class="layui-form-label">是否收费</label>
  46. <div class="layui-input-block">
  47. <input type="radio" name="is_pay" value="1" title="收费" {if isset($task)}{if $task.is_pay==1}checked{/if}{else}checked{/if}>
  48. <input type="radio" name="is_pay" value="0" title="免费" {if isset($task)}{if $task.is_pay==0}checked{/if}{/if} >
  49. </div>
  50. </div>
  51. <div class="layui-form-item">
  52. <label class="layui-form-label">请选专题</label>
  53. <div class="layui-input-block">
  54. <select name="special_id" lay-search="" lay-filter="special_id">
  55. <option value="0">请选专题</option>
  56. {volist name='specialList' id='item'}
  57. <option value="{$item.id}" {if isset($special_id) && $special_id == $item.id} selected {/if}>
  58. {if condition = "$item.is_live eq 1"}
  59. 直播----
  60. {else/}
  61. 普通----
  62. {/if}
  63. {$item.title}
  64. </option>
  65. {/volist}
  66. </select>
  67. </div>
  68. </div>
  69. <div class="layui-form-item">
  70. <label class="layui-form-label">任务名称</label>
  71. <div class="layui-input-block">
  72. <input type="text" name="title" value="{if isset($task)}{$task.title}{/if}" lay-verify="title" autocomplete="off" placeholder="请输入任务名称" class="layui-input">
  73. </div>
  74. </div>
  75. <div class="layui-form-item">
  76. <label class="layui-form-label">排序</label>
  77. <div class="layui-input-block">
  78. <input type="number" style="width: 30%" name="sort" value="{if isset($task)}{$task.sort}{/if}" lay-verify="sort" autocomplete="off" class="layui-input">
  79. </div>
  80. </div>
  81. <div class="layui-form-item">
  82. <label class="layui-form-label">浏览量</label>
  83. <div class="layui-input-block">
  84. <input type="number" style="width: 30%" name="play_count" value="{if isset($task)}{$task.play_count}{/if}" lay-verify="play_count" autocomplete="off" class="layui-input">
  85. </div>
  86. </div>
  87. <div class="layui-form-item submit">
  88. <label class="layui-form-label">封面图</label>
  89. <div class="layui-input-block" id="image">
  90. {if isset($task) && $task.image}
  91. <div class="upload-image-box">
  92. <img src="{$task.image.pic}" alt="">
  93. <input type="hidden" name="image" value="{$task.image.pic}">
  94. <div class="mask">
  95. <p><i class="fa fa-eye open_image" data-url="{$task.image.pic}"></i><i class="fa fa-trash-o delete_image" data-url="{$task.image.key}"></i></p>
  96. </div>
  97. </div>
  98. {/if}
  99. <div class="upload-image" id="file_image" {if isset($task) && $task.image} style="display: none" {/if}>
  100. <div class="fiexd"><i class="fa fa-plus"></i></div>
  101. <p>上传图片</p>
  102. </div>
  103. </div>
  104. <input type="file" name="file_image" style="display:none;">
  105. </div>
  106. <div class="layui-form-item submit">
  107. <label class="layui-form-label">插入视频</label>
  108. <div class="layui-input-block">
  109. <input type="text" name="link_key" style="width:50%;display:inline-block;margin-right: 10px;" autocomplete="off" placeholder="请输入视频链接" class="layui-input">
  110. <button type="button" class="layui-btn layui-btn-sm layui-btn-normal but_title">插入视频</button>
  111. <button type="button" id="ossUpload" class="layui-btn layui-btn-sm layui-btn-normal">上传视频</button>
  112. </div>
  113. <div class="layui-input-block video_show" style="width: 50%;margin-top: 20px;display:none">
  114. <div class="layui-progress" style="margin-bottom: 10px">
  115. <div class="layui-progress-bar layui-bg-blue"></div>
  116. </div>
  117. <button type="button" class="layui-btn layui-btn-sm layui-btn-danger cancel">取消</button>
  118. </div>
  119. <div class="layui-input-block">
  120. <div class="layui-video-box">
  121. {if isset($task) && $task.link}
  122. <video style="width:100%;height: 100%!important;border-radius: 10px;" src="{$task.link.pic}" controls="controls">
  123. 您的浏览器不支持 video 标签。
  124. </video>
  125. <input type="hidden" name="link" value="{$task.link.pic}">
  126. <div class="mark"><span class="layui-icon layui-icon-delete" data-key="{$task.link.key}" style="font-size: 30px; color: #1E9FFF;"></span><div>
  127. {else}
  128. <i class="layui-icon layui-icon-play"></i>
  129. {/if}
  130. </div>
  131. </div>
  132. <div class="layui-form-mid layui-word-aux">输入链接将视为添加视频直接添加,请确保视频链接的正确性</div>
  133. </div>
  134. <div class="layui-form-item submit">
  135. <div class="layui-input-block">
  136. {if isset($task)}
  137. <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="save">立即修改</button>
  138. {else}
  139. <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="save">立即提交</button>
  140. <button class="layui-btn layui-btn-primary clone">取消</button>
  141. {/if}
  142. </div>
  143. </div>
  144. </form>
  145. </div>
  146. </div>
  147. </div>
  148. </div>
  149. </div>
  150. <script src="{__ADMIN_PATH}js/layuiList.js"></script>
  151. {/block}
  152. {block name="script"}
  153. <script>
  154. layList.form.render();
  155. //初始化
  156. var file_image = $('#file_image'),
  157. windowindex = parent.layer.getFrameIndex(window.name),
  158. link = $('input[name="link_key"]'),
  159. bark_name = ossUpload.host,
  160. Help = {},
  161. id = {$id};
  162. /**
  163. *
  164. * 获取视频HTML
  165. * @param url
  166. * @param key
  167. * @return string
  168. * */
  169. Help.videoHtml=function(url,key) {
  170. return '<video style="width:100%;height: 100%!important;border-radius: 10px;" src="'+url+'" controls="controls">\n' +
  171. '您的浏览器不支持 video 标签。\n' +
  172. '</video>' +
  173. '<input type="hidden" name="link" value="'+url+'">' +
  174. '<div class="mark"><span class="layui-icon layui-icon-delete" data-key="'+key+'" style="font-size: 30px; color: #1E9FFF;"></span><div>';
  175. }
  176. /**
  177. * 视频播放事件
  178. *
  179. * */
  180. Help.video_read = function(){
  181. $('.layui-video-box .mark .layui-icon-delete').on('click',function () {
  182. var key_name=$(this).data('key');
  183. if(key_name) {
  184. ossUpload.delete(key_name).then(function (res) {
  185. Help.addPayIocn('layui-video-box');
  186. }).catch(function (res) {
  187. Help.addPayIocn('layui-video-box');
  188. })
  189. }else{
  190. Help.addPayIocn('layui-video-box');
  191. }
  192. });
  193. }
  194. /**
  195. * 进度条事件
  196. * */
  197. Help.percentHide = function(){
  198. $('.video_show').hide();
  199. $('.layui-progress-bar').css('width',0);
  200. }
  201. /**
  202. * 添加播放图标事件
  203. * */
  204. Help.addPayIocn = function(className){
  205. $('.'+className).html('<i class="layui-icon layui-icon-play"></i>');
  206. }
  207. Help.show = function() {
  208. $('#image .delete_image').on('click',function () {
  209. $(this).parents('.upload-image-box').remove();
  210. file_image.show();
  211. })
  212. }
  213. $('.but_title').click(function () {
  214. if(link.val()){
  215. var url=link.val();
  216. if(url.substr(0,7).toLowerCase() == "http://" || url.substr(0,8).toLowerCase() == "https://"){
  217. var keyIndex = url.indexOf(bark_name);
  218. var key = keyIndex===-1 ? '':url.substr(keyIndex+bark_name.length+1);
  219. $('.layui-video-box').html(Help.videoHtml(url,key));
  220. Help.video_read();
  221. }else{
  222. layList.msg('请输入正确的视频链接');
  223. link.val('');
  224. $('.layui-video-box').html('<i class="layui-icon layui-icon-play"></i>');
  225. }
  226. }
  227. })
  228. ossUpload.upload({
  229. id: 'ossUpload',
  230. FilesAddedSuccess:function(file){
  231. $('.video_show').show();
  232. },
  233. uploadIng:function (file) {
  234. $('.layui-progress-bar').css('width',file.percent+'%');
  235. },
  236. init:function (uploader) {
  237. $('.stop').on('click',function () {
  238. uploader.stop();
  239. Help.percentHide();
  240. })
  241. },
  242. success:function (res) {
  243. console.log(res);
  244. layList.msg('上传成功');
  245. Help.percentHide();
  246. $('.layui-video-box').html(Help.videoHtml(res.url,res.key));
  247. Help.video_read();
  248. },
  249. fail:function (err) {
  250. layList.msg(err);
  251. $('.video_show').hide();
  252. $('.layui-progress-bar').css('width',0);
  253. }
  254. });
  255. /**
  256. * 选择图片回调事件
  257. * */
  258. var changeIMG = function(res,url){
  259. file_image.parents('.layui-input-block').prepend(ossUpload.getImageHtml(url,'image',''));
  260. file_image.hide();
  261. ossUpload.LoadEvent();
  262. Help.show();
  263. }
  264. /**
  265. * 选择图片
  266. */
  267. file_image.on('click',function () {
  268. ossUpload.createFrame('选择任务封面图',{},{w:700});
  269. });
  270. Help.show();
  271. Help.video_read();
  272. layList.search('save',function (data) {
  273. delete data.file_image;
  274. delete data.link_key;
  275. delete data.video;
  276. console.log(data);
  277. if(data.special_id == 0) return layList.msg('请选择专题');
  278. if(!data.title) return layList.msg('请填写任务标题');
  279. if(!data.image) return layList.msg('请上传任务封面');
  280. if(!data.link) return layList.msg('请上传视频或者插入链接(输入连接后点击确认添加)');
  281. layList.basePost(layList.U({a:'save_task',q:{id:id}}),data,function (res) {
  282. layList.msg(res.msg,function () {
  283. parent.layer.close(windowindex);
  284. })
  285. },function (res) {
  286. layList.msg(res.msg);
  287. });
  288. });
  289. </script>
  290. {/block}