build.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. {extend name="public/layout"}
  2. {block name="body"}
  3. <style>
  4. .status .jihuo {
  5. display: none;
  6. }
  7. .edit {
  8. float: right;
  9. position: relative;
  10. top: 3px;
  11. }
  12. .layui-table thead tr,
  13. .layui-table-header {
  14. background-color: #D8E6F1 !important;
  15. }
  16. .jihuo {
  17. /* display: inline-block !important; */
  18. width: 34px !important;
  19. height: 18px !important;
  20. line-height: 18px !important;
  21. text-align: center !important;
  22. padding: 0 !important;
  23. }
  24. .btn-bg-blue {
  25. background-color: #249efb;
  26. border: none;
  27. }
  28. .layui-tab-title .layui-this {
  29. background-color: #249EFB;
  30. color: #fff;
  31. }
  32. .layui-tab-title .layui-this:after {
  33. border-bottom: none;
  34. border: none;
  35. }
  36. .layui-tab-title li {
  37. background-color: #F2F2F2;
  38. margin: 0px 5px;
  39. }
  40. .layui-btn-xs,.layui-btn-xs:hover {
  41. border: 1px solid #249EFB;
  42. background-color: #fff;
  43. color: #249EFB;
  44. padding: 0px 10px;
  45. }
  46. .layui-btn-danger,.layui-btn-danger:hover{
  47. color: #FF5722;
  48. background-color: #fff;
  49. border: 1px solid #FF5722;
  50. padding: 0px 10px;
  51. }
  52. .layui-btn-border,.layui-btn-border:hover {
  53. background-color: #fff;
  54. color: #249EFB;
  55. border: 1px solid #249EFB;
  56. }
  57. </style>
  58. <body>
  59. <div class="layui-fluid">
  60. <div class="layui-row layui-col-space15">
  61. <div class="layui-col-md12" style="background-color:#ffffff">
  62. <div class="tplay-body-div">
  63. <div class="layui-tab">
  64. <ul class="layui-tab-title">
  65. <li class="layui-this" style="margin-left: 0px;">
  66. 我要直播
  67. </li>
  68. <li>
  69. <a href="{:url('broad/goods')}">商品管理</a>
  70. </li>
  71. <li>
  72. <a href="{:url('broad/course_setting')}">直播设置</a>
  73. </li>
  74. </ul>
  75. </div>
  76. <div class="layui-card-body">
  77. <div class="layui-form">
  78. <div class="layui-inline">
  79. <div class="layui-btn layui-btn-border" data-type="add" title="新建活动"><i class="layui-icon layui-icon-add-circle-fine"></i>新建活动</div>
  80. <span style="color: #afb1b6;margin-left: 15px;">标准直播5秒左右延迟属于正常现象,禁止同网络下其他设备连接可有效降低延迟。</span>
  81. </div>
  82. <div class="layui-inline" style="float:right;margin-right: 100px;margin-left: 5px;">
  83. <button class="layui-btn layui-btn-primary btn-bg-blue" data-type="reload"><i
  84. class="layui-icon layui-icon-search layuiadmin-button-btn" style="color: #fff;"></i></button>
  85. </div>
  86. <div class="layui-inline" style="float:right;">
  87. <input class="layui-input" name="title" id="title" autocomplete="off" placeholder="查找活动主题..">
  88. </div>
  89. </div>
  90. <div class="layui-row">
  91. <table class="layui-hide" id="user" lay-filter="user"></table>
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. </div>
  97. </div>
  98. {/block}
  99. {block name="js"}
  100. <script type="text/html" id="result">
  101. <div class="status">
  102. {{# if(d.status == 1){ }}
  103. <a class="layui-btn layui-btn-xs" title="去直播" lay-event="links">去直播</a>
  104. {{# }else{ }}
  105. <a class="layui-btn layui-btn-normal layui-btn-xs jihuo" title="激活" lay-event="jihuo">激活</a>
  106. {{# } }}
  107. <a class="layui-btn layui-btn-primary layui-btn-xs" title="观摩统计" lay-event="data">统计</a>
  108. <a class="layui-btn layui-btn-primary layui-btn-xs" title="录播" lay-event="vod">录播</a>
  109. <a class="layui-btn layui-btn-primary layui-btn-xs" title="用户" lay-event="useLog">用户</a>
  110. </div>
  111. </script>
  112. <script type="text/html" id="scqr">
  113. <a class="layui-btn layui-btn-primary layui-btn-xs" title="小程序推流" lay-event="scqr"><i class="layui-icon">&#xe610;</i></a>
  114. </script>
  115. <script type="text/html" id="bt">
  116. {{d.title}}
  117. <a class="layui-btn layui-btn-primary layui-btn-xs edit" title="修改" lay-event="edit" style="margin-left: 10px;"><i class="layui-icon">&#xe642;</i></a>
  118. <a class="layui-btn layui-btn-primary layui-btn-xs edit" title="用户预约" lay-event="appoint"><i class="layui-icon">&#xe68d;</i></a>
  119. {{# if(d.key){ }}
  120. <a href="javascript:;" title="{{d.key}}" style="color:#9c9c9c;"><i class="layui-icon">&#xe673;</i></a>
  121. {{# } }}
  122. {{# if(d.price != 0.00){ }}
  123. <a href="javascript:;" title="{{d.price}}" style="color:#9c9c9c;"><i class="layui-icon">&#xe65e;</i></a>
  124. {{# } }}
  125. </script>
  126. <script>
  127. var indexurl = '{:url("broad/build")}';
  128. var addurl = '{:url("broad/course_add")}';
  129. var editurl = '{:url("broad/course_edit")}';
  130. var delurl = '{:url("course/delete")}';
  131. var linksurl = '{:url("broad/course_links")}';
  132. var lookurl = '{:url("broad/course_total")}';
  133. var vodthemeurl = '{:url("broad/course_recordtheme")}';
  134. var useLog = '{:url("broad/course_use_log")}';
  135. var appointUrl = '{:url("broad/course_appoint")}';
  136. var t;
  137. layui.use(['table', 'form'], function () {
  138. var liveplay = '';
  139. var form = layui.form
  140. , table = layui.table
  141. , $ = layui.jquery
  142. , active = {
  143. reload: function () {
  144. var title = $('#title');
  145. //执行重载
  146. table.reload('userTable', {
  147. page: {
  148. curr: 1 //重新从第 1 页开始
  149. }
  150. , where: {
  151. title: title.val()
  152. }
  153. });
  154. }
  155. , links: function () {
  156. liveplay = layer.open({
  157. title: ['您可使用以下几种方式推流或进入直播间', 'color:#333333;background-color:#D8E6F1;']
  158. , type: 2
  159. , content: linksurl
  160. ,resize: false
  161. , area: ['80%', '80%']
  162. });
  163. }
  164. , add: function () {
  165. location.href = addurl;
  166. }
  167. , edit: function () {
  168. var id = this.data.cid;
  169. location.href = editurl + '?id=' + id;
  170. }
  171. , data: function () {
  172. var id = this.data.cid;
  173. $.get(lookurl + '?id=' + id, function (res) {
  174. var resp = JSON.parse(res);
  175. layer.open({
  176. type: 1,
  177. title: ['观摩统计', 'color:#333333;background-color:#D8E6F1;'],
  178. content: resp.data,
  179. resize: false,
  180. area: ['50%','35%']
  181. });
  182. })
  183. }
  184. , vod: function () {
  185. var id = this.data.cid;
  186. layer.open({
  187. title: ['录播设置', 'color:#333333;background-color:#D8E6F1;'],
  188. type: 2,
  189. content: vodthemeurl + '?cid=' + id,
  190. resize: false,
  191. area: ['80%', '80%']
  192. });
  193. }
  194. , useLog: function () {
  195. var id = this.data.cid;
  196. layer.open({
  197. title: ['活动用户数据统计', 'color:#333333;background-color:#D8E6F1;'],
  198. type: 2,
  199. content: useLog + '?cid=' + id,
  200. resize: false,
  201. area: ['80%', '80%']
  202. });
  203. }
  204. , del: function () {
  205. var checkStatus = table.checkStatus('userTable');
  206. var cidArr = checkStatus.data.map(function (x) {
  207. return x['cid'];
  208. });
  209. layer.confirm('确定要删除选中的活动么?',{title: ['信息', 'color:#333333;background-color:#D8E6F1;'],}, function (index) {
  210. $.post(delurl, { 'cid': cidArr }, function (res) {
  211. if (res.code == 0) {
  212. layer.msg('删除成功', { anim: 0 }, function () {
  213. location.reload();
  214. });
  215. } else {
  216. layer.msg(res.mgs, { anim: 6 });
  217. }
  218. });
  219. layer.close(index);
  220. });
  221. }
  222. , jihuo: function () {
  223. var that = this;
  224. var id = this.data.cid;
  225. $.post('{:url("broad/course_state")}', { id: id }, function (res) {
  226. var resp = JSON.parse(res);
  227. if (resp.code == 0) {
  228. layer.msg(resp.msg, { anim: 0 }, function () {
  229. active.links();
  230. active.reload();
  231. });
  232. } else {
  233. layer.msg(resp.msg, { anim: 6 });
  234. }
  235. });
  236. }
  237. , appoint: function () {
  238. var cid = this.data.cid;
  239. layer.open({
  240. title: ['预约记录', 'color:#333333;background-color:#D8E6F1;'],
  241. type: 2,
  242. content: appointUrl + '?cid=' + cid,
  243. resize: false,
  244. area: ['80%', '80%']
  245. });
  246. }
  247. };
  248. //展示已知数据
  249. t = table.render({
  250. elem: '#user'
  251. , url: indexurl
  252. , page: true
  253. , autoSort: true
  254. , cols: [[ //标题栏
  255. { type: 'numbers', title: '序号', fixed: 'left', width: 50 }
  256. , { templet: '#bt', title: '活动主题' }
  257. , { field: 'date', title: '直播时间', width: 200, sort: true, align: 'center' }
  258. // , { field: 'name', title: '主持人', width: 100, align: 'center' }
  259. , { fixed: 'right', title: '操作', toolbar: '#result', width: 260, align: 'right' }
  260. ]]
  261. , id: 'userTable'
  262. });
  263. $('.layui-form .layui-btn').on('click', function () {
  264. var type = $(this).data('type');
  265. active[type] ? active[type].call(this) : '';
  266. });
  267. table.on('sort(user)', function (obj) {
  268. table.reload('userTable', {
  269. initSort: obj
  270. , where: obj
  271. });
  272. });
  273. table.on('toolbar(user)', function (obj) {
  274. var type = obj.event;
  275. active[type] ? active[type].call(this) : '';
  276. });
  277. table.on('tool(user)', function (obj) {
  278. var type = obj.event;
  279. active[type] ? active[type].call(obj) : '';
  280. })
  281. form.on('switch(state)', function (obj) {
  282. var id = this.value;
  283. $.post('{:url("course/state")}', { id: id }, function (res) {
  284. if (res.code == 0) {
  285. layer.msg(res.msg, { anim: 0 }, function () {
  286. layer.open({
  287. title: '直播流地址'
  288. , type: 2
  289. , content: linksurl + '?cid=' + id
  290. , area: ['700px', '385px']
  291. });
  292. active.reload();
  293. });
  294. } else {
  295. layer.msg(res.msg, { anim: 6 });
  296. }
  297. });
  298. });
  299. $('.layui-card-body').on('mouseover', 'tr', function () {
  300. if ($(this).find('.jihuo').length != '0') {
  301. $(this).find('.jihuo')[0].style.display = "inline-block";
  302. }
  303. })
  304. $('.layui-card-body').on('mouseout', 'tr', function () {
  305. $(this).find('.jihuo').hide();
  306. })
  307. });
  308. </script>
  309. {/block}