1
0

code_list.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. {extend name="public/layout" /} {block name="title"}营销工具-渠道活码{/block} {block name="body"}
  2. <link rel="stylesheet" href="__LAYUI__/common.css" media="all">
  3. <style>
  4. html,
  5. body {
  6. display: block;
  7. min-width: 950px;
  8. }
  9. .layui-fluid {
  10. display: block;
  11. box-shadow: 0 0 4px 0 #b6cade;
  12. border-radius: 5px;
  13. margin: 15px;
  14. background-color: #ffffff;
  15. }
  16. .layuiadmin-btn-qrcode {
  17. background-color: #ffffff;
  18. color: #249efb;
  19. border: 1px solid #249efb;
  20. }
  21. .layuiadmin-btn-qrcode:hover {
  22. color: #249efb;
  23. }
  24. .layui-form-onswitch {
  25. border-color: #249efb;
  26. background-color: #249efb;
  27. height: 24px;
  28. line-height: 24px;
  29. }
  30. .layui-form-switch {
  31. height: 24px;
  32. line-height: 24px;
  33. }
  34. .nowbtn {
  35. border: 1px solid #249EFB;
  36. background-color: #fff;
  37. color: #249EFB;
  38. }
  39. .nowbtn:hover {
  40. border: 1px solid #249EFB;
  41. background-color: #fff;
  42. color: #249EFB;
  43. }
  44. .layui-table thead tr,
  45. .layui-table-header {
  46. background-color: #D8E6F1 !important;
  47. }
  48. .inline-block {
  49. display: inline-block;
  50. }
  51. .codeicon {
  52. height: 16px;
  53. cursor: pointer;
  54. }
  55. .copyicon {
  56. margin-left: 12px;
  57. }
  58. .mask {
  59. position: fixed;
  60. width: 100%;
  61. height: 100vh;
  62. background-color: rgba(0, 0, 0, 0.5);
  63. z-index: 9999999;
  64. top: 0px;
  65. left: 0px;
  66. display: flex;
  67. justify-content: center;
  68. align-items: center;
  69. }
  70. .maskBlock {
  71. width: 500px;
  72. height: 500px;
  73. background-color: #fff;
  74. display: flex;
  75. flex-direction: column;
  76. justify-content: center;
  77. align-items: center;
  78. position: relative;
  79. }
  80. .qrcode {
  81. width: 150px;
  82. height: 150px;
  83. }
  84. .qrtext {
  85. margin-top: 20px;
  86. }
  87. .mask-title {
  88. position: absolute;
  89. top: 0px;
  90. left: 0px;
  91. width: 100%;
  92. background-color: #D8E6F1;
  93. padding: 10px 20px;
  94. display: flex;
  95. justify-content: space-between;
  96. align-items: center;
  97. }
  98. #downloadQrCode {
  99. margin-top: 20px;
  100. }
  101. .layui-btn-normal,.layui-btn-normal:hover {
  102. border:1px solid #249EFB;
  103. background-color: #fff;
  104. color: #249EFB;
  105. }
  106. .layui-btn-danger,.layui-btn-danger:hover {
  107. color: #FF5722;
  108. border: 1px solid #FF5722;
  109. background-color: #fff;
  110. }
  111. .layui-form-label{
  112. width: auto;
  113. }
  114. .layui-form-selected dl{z-index:99999999 ;}
  115. </style>
  116. <body>
  117. <div class="layui-fluid">
  118. <div class="layui-card">
  119. <div class="layui-form layui-card-header layuiadmin-card-header-auto">
  120. <div class="layui-form-item clearfix relative">
  121. <div style="padding-bottom: 10px; float:left">
  122. {auth:check name="huoma/add_code"}
  123. <button class="layui-btn layuiadmin-btn-qrcode" data-type="add">创建渠道活码</button>
  124. {/auth:check}
  125. </div>
  126. <div style="float:right;">
  127. <div class="layui-inline">
  128. <label class="layui-form-label">活动名称</label>
  129. <div class="layui-input-inline">
  130. <input type="text" name="keyword" placeholder="请输入活动名称" autocomplete="off" class="layui-input">
  131. </div>
  132. </div>
  133. <div class="layui-inline">
  134. <label class="layui-form-label">有效时间</label>
  135. <div class="layui-input-inline select-date">
  136. <input type="text" name="date" id="select_date" placeholder="有效时间" autocomplete="off" class="layui-input">
  137. </div>
  138. </div>
  139. <div class="layui-inline" style="margin-right: 0px;">
  140. <label class="layui-form-label">上传人</label>
  141. <div class="layui-input-inline">
  142. <select name="employee_id" id="employee">
  143. <option value="">请选择人员</option>
  144. {volist name="employee" id="e"}
  145. <option value="{$e.id}">{$e.name}</option>
  146. {/volist}
  147. </select>
  148. </div>
  149. </div>
  150. <div class="layui-inline" style="margin-right: 0;">
  151. <button class="layui-btn layuiadmin-btn-course searchBtn submitbtn" lay-submit lay-filter="LAY-user-front-search">
  152. <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
  153. </button>
  154. </div>
  155. </div>
  156. </div>
  157. </div>
  158. <div class="layui-card-body layui-form">
  159. <table class="layui-table" id="livecode" lay-filter="livecode">
  160. </table>
  161. <script type="text/html" id="qrLinkOperate">
  162. <img class="inline-block codeicon" src="__STATIC__/img/qrcodeicon.png" lay-event="viewqr" alt=""/>
  163. <img class="inline-block codeicon copyicon" src="__STATIC__/img/copyicon.png" lay-event="copyqr" alt="" />
  164. </script>
  165. <script type="text/html" id="show">
  166. <input type="checkbox" name="show" value="{{d.id}}" lay-skin="switch" lay-text="上架|下架" lay-filter="show" {{ d.status == 1 ? 'checked' : '' }} id="clickshow">
  167. </script>
  168. <script type="text/html" id="table-user-bind">
  169. {auth:check name="huoma/add_code"}
  170. <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">
  171. 编辑
  172. </a>
  173. {/auth:check}
  174. <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="qrStatistics">
  175. 报名统计
  176. </a>
  177. {auth:check name="huoma/del_code"}
  178. <a class="layui-btn layui-btn-normal layui-btn-xs layui-btn-danger" lay-event="del">
  179. 删除
  180. </a>
  181. {/auth:check}
  182. </script>
  183. <script type="text/html" id="switch_type">
  184. {{# if(d.switch_type == 1){ }}
  185. 轮循切换
  186. {{# }else if(d.switch_type == 2){ }}
  187. 顺序切换
  188. {{# }else if(d.switch_type == 3){ }}
  189. 随机切换
  190. {{# } }}
  191. </script>
  192. <script type="text/html" id="status">
  193. {{# if(d.status == 1){ }}
  194. 正常
  195. {{# }else if(d.status == 2){ }}
  196. 关闭
  197. {{# } }}
  198. </script>
  199. <script type="text/html" id="employee_name">
  200. {{# if(d.opt_name){ }}
  201. <span>{{d.opt_name}}</span>
  202. {{# }else{ }}
  203. <span style="color: #cccccc;">无</span>
  204. {{# } }}
  205. </script>
  206. </div>
  207. </div>
  208. </div>
  209. <div class="mask layui-hide">
  210. <div class="maskBlock">
  211. <div class="mask-title">
  212. <span>二维码</span>
  213. <i class="layui-icon layui-icon-close"
  214. style="color: #333;font-weight: 700;font-size: 18px;cursor: pointer;"></i>
  215. </div>
  216. <div id="qrcode"></div>
  217. <div class="layui-btn" id="downloadQrCode">下载二维码</div>
  218. <div class="qrtext">右键单击图片下载二维码</div>
  219. </div>
  220. </div>
  221. </body>
  222. {/block} {block name="js"}
  223. <script src="__STATIC__/js/qrcode.js" type="text/javascript" charset="utf-8"></script>
  224. <script>
  225. layui.config({
  226. base: '__LAYUI__/',
  227. urlbase: '/sys'
  228. }).extend({
  229. index: 'lib/index' //主入口模块
  230. }).use(['index', 'form', 'table','laydate'], function () {
  231. var $ = layui.$,
  232. form = layui.form,
  233. laydate = layui.laydate,
  234. table = layui.table;
  235. //日期范围
  236. laydate.render({
  237. elem: '#select_date',
  238. range:true
  239. });
  240. //监听搜索
  241. form.on('submit(LAY-user-front-search)', function(data) {
  242. var field = data.field;
  243. //执行重载
  244. table.reload('livecode', {
  245. where: field
  246. });
  247. });
  248. document.onkeydown=function(event){
  249. var e = event || window.event || arguments.callee.caller.arguments[0];
  250. if(e && e.keyCode==13){
  251. $(".submitbtn").trigger("click");
  252. }
  253. };
  254. //事件
  255. var active = {
  256. add: function () {
  257. layer.open({
  258. type: 2,
  259. title: ['创建活码', 'color:#333333;background-color:#D8E6F1;'],
  260. content: '{:url("huoma/add_code")}',
  261. maxmin: true,
  262. area: ['80%', '80%']
  263. });
  264. },
  265. };
  266. $('.layui-icon-close').click(() => {
  267. $('.mask').addClass('layui-hide');
  268. $('#qrcode').empty()
  269. })
  270. $('#downloadQrCode').click(() => {
  271. download();
  272. })
  273. function download() {
  274. let myCanvas = document.getElementById('qrcode').getElementsByTagName('canvas');
  275. console.log(myCanvas, 'myCanvas');
  276. let a = document.createElement('a');
  277. a.href = myCanvas[0].toDataURL('image/png');
  278. a.download = '二维码';
  279. a.click();
  280. a = null;
  281. }
  282. //活动列表
  283. table.render({
  284. elem: '#livecode',
  285. url: "{:url('Huoma/code_list')}",
  286. height: 'full-160',
  287. cols: [
  288. [
  289. { align: 'center', field: 'name', title: '活码名称', width: '15%', templet: '#titletpl' },
  290. { align: 'center', field: 'addtime', title: '创建时间', width: '10%', templet: '#activitype' },
  291. { align: 'center', field: 'code_url', title: '活码地址', minWidth: 100, templet: '#qrLinkOperate' },
  292. { align: 'center', field: 'switch_type', title: '切换方式', minWidth: 100, templet: '#switch_type' },
  293. { align: 'center', field: 'num', title: '今日报名数', minWidth: 80, templet: '#end_datetpl' },
  294. { align: 'center', field: 'visit', title: '累计报名数', minWidth: 80, templet: '#timestate' },
  295. { align: 'center', field: 'status', title: '状态', minWidth: 100, templet: '#status' },
  296. { align: 'center', field: 'user_count', title: '开关', minWidth: 100, templet: '#show' },
  297. { align: 'center', field: 'invalid_time', title: '失效时间', minWidth: 100 },
  298. {align:'center',templet: '#employee_name',title: '上传人',maxWidth: 80},
  299. { align: 'center', title: '操作', width: '18%', align: 'center', toolbar: '#table-user-bind',fixed:'right' }
  300. ]
  301. ],
  302. page: true,
  303. text: '对不起,加载出现异常!'
  304. });
  305. //监听审核
  306. table.on('tool(livecode)', function (obj) {
  307. var data = obj.data;
  308. switch (obj.event) {
  309. case 'edit':
  310. layer.open({
  311. type: 2,
  312. title: ['编辑活码', 'color:#333333;background-color:#D8E6F1;'],
  313. content: '{:url("huoma/edit_code")}?id=' + data.id,
  314. maxmin: true,
  315. area: ['80%', '80%']
  316. });
  317. break;
  318. case 'qrStatistics':
  319. layer.open({
  320. type: 2,
  321. title: ['报名统计', 'color:#333333;background-color:#D8E6F1;'],
  322. content: '{:url("huoma/visit_list")}?id=' + data.id,
  323. maxmin: true,
  324. area: ['80%', '80%']
  325. });
  326. break;
  327. case 'del':
  328. layer.confirm('确定删除此渠道活码?', { title: ['信息', 'color:#333333;background-color:#D8E6F1;'], }, function (index) {
  329. $.ajax({
  330. type: 'post',
  331. url: "{:url('huoma/del_code')}",
  332. data: {
  333. id: data.id
  334. },
  335. success: function (res) {
  336. if (res.code == 0) {
  337. layer.msg(res.msg, {
  338. anim: 0
  339. }, function () {
  340. //执行重载
  341. table.reload('livecode');
  342. // obj.del();
  343. layer.close(index);
  344. });
  345. } else {
  346. layer.msg(res.msg, {
  347. anim: 6
  348. });
  349. }
  350. }
  351. });
  352. });
  353. break;
  354. case 'viewqr':
  355. new QRCode(document.getElementById("qrcode"), data.code_url); // 设置要生成二维码的链接
  356. $('.mask').removeClass('layui-hide');
  357. break;
  358. case 'copyqr':
  359. var url = obj.innerHTML;
  360. var input = document.createElement('input');
  361. document.body.appendChild(input);
  362. input.setAttribute('value', data.code_url);
  363. input.select();
  364. document.execCommand("copy"); // 执行浏览器复制命令
  365. if (document.execCommand('copy')) {
  366. document.execCommand('copy');
  367. layer.msg('复制成功')
  368. }
  369. document.body.removeChild(input);
  370. break
  371. }
  372. })
  373. form.on('switch(show)', function (obj) {
  374. var id = obj.value;
  375. $.ajax({
  376. type: "post",
  377. url: '{:url("huoma/up_status")}',
  378. data: {
  379. id: id
  380. },
  381. success: function (res) {
  382. layer.msg(res.msg);
  383. }
  384. });
  385. });
  386. $('.layui-btn.layuiadmin-btn-qrcode').on('click', function () {
  387. var type = $(this).data('type');
  388. active[type] ? active[type].call(this) : '';
  389. });
  390. })
  391. </script>
  392. {/block}