default.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. {extend name="app/shop/view/base.html" /}
  2. {block name="resources"}
  3. <link rel="stylesheet" href="WECHAT_CSS/wx_follow.css">
  4. <style>
  5. .layui-layout-admin.admin-style-2 .layui-body .body-content{background-color: transparent;}
  6. </style>
  7. {/block}
  8. {block name="main"}
  9. <div class="layui-tab-brief clearfix fourstage-nav">
  10. <ul class="layui-tab-title">
  11. <li>
  12. <a href='{:addon_url("wechat://shop/replay/replay")}'>关键词自动回复</a>
  13. </li>
  14. <li class='layui-this'><a href='{:addon_url("wechat://shop/replay/default")}'>默认回复</a></li>
  15. <li>
  16. <a href='{:addon_url("wechat://shop/replay/follow")}'>关注后自动回复</a>
  17. </li>
  18. </ul>
  19. <div class="weixin-normal rule-autoreplay-page">
  20. <div id="load_rule_list"></div>
  21. <!--添加回复-->
  22. <div class="layui-form rule-container" id="add_reply" style="display: none">
  23. <input type="hidden" name="layer_index" value="">
  24. <input type="hidden" name="rule_id" value="">
  25. <input type="hidden" name="key_id" value="-1">
  26. <!-- <div class="arrow"><i class="layui-icon">&#xe603;</i></div> -->
  27. <span class="add_reply-top"></span>
  28. <!--<a href="javascript:;" class="close&#45;&#45;circle js-close">×</a>-->
  29. <div>
  30. <div class="misc">
  31. <!-- <a href="javascript:;" class="js-replay" nc-event="click" nc-action="emotion">表情</a> -->
  32. <a href="javascript:;" class="js-replay" nc-event="click" nc-action="hyperlink">插入链接</a>
  33. <a href="javascript:;" class="image" onclick="material(5);">文本消息</a>
  34. <!-- <a href="javascript:;" class="js-replay" nc-event="click" nc-action="music">音乐</a> -->
  35. <a href="javascript:;" class="js-replay" onclick="material(1);">选择图文</a>
  36. <!--<div class="others">-->
  37. <!--<a href="javascript:;">其他<i class="caret"></i></a>-->
  38. <!--<ul class="dropdown-menu">-->
  39. <!--{volist name="link_list" id="vo"}-->
  40. <!--<li><a class="js-open-goods" data-action-type="{$vo.name}" data-complex-mode="true" href="javascript:;">{$vo.title}</a></li>-->
  41. <!--{/volist}-->
  42. <!--</ul>-->
  43. <!--</div>-->
  44. </div>
  45. <div class="layui-form-item">
  46. <textarea placeholder="请输入内容" class="layui-textarea reply-content" name="reply_content" maxlength="300" lay-verify="required|content" ></textarea>
  47. <div class="complex-backdrop">
  48. <div class="complex-content"></div>
  49. </div>
  50. <div class="layui-input-block" style="margin-top:10px;margin-left: 0;">
  51. <button class="layui-btn" type="button" lay-submit lay-filter="add_reply">确定</button>
  52. <span class="pull-right">还能输入 <i>300</i> 个字</span>
  53. </div>
  54. </div>
  55. <input type="hidden" value="" id="hidden_reply_type"/>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. <!-- 插入链接 -->
  61. <div class="layui-form" id="hyperlink" style="display:none">
  62. <div class="layui-form-item" style="margin-bottom:0;">
  63. <div class="layui-input-inline">
  64. <input type="text" name="title" lay-verify="required|title" autocomplete="off" placeholder="http://" class="layui-input">
  65. </div>
  66. <button class="layui-btn" lay-submit lay-filter="hyperlink">确定</button>
  67. </div>
  68. </div>
  69. <!-- 音乐素材 -->
  70. <div class="layui-form" id="music" style="display:none">
  71. <div class="layui-form-item ">
  72. <label class="layui-form-label msg-music-thumb"><a href="javascript:;" class="js-replay" nc-event="click" nc-action="thumbnail"><i class="layui-icon">&#xe654;</i></a></label>
  73. <div class="layui-input-inline ">
  74. <input type="text" name="title" placeholder="音乐标题" autocomplete="off" class="layui-input" lay-verify="required|title" style="margin-bottom: 10px;">
  75. <textarea placeholder="音乐描述" class="layui-textarea" name="description" maxlength="300" lay-verify="required|description" ></textarea>
  76. </div>
  77. </div>
  78. <div class="layui-form-item ">
  79. <label class="layui-form-label">普通音质</label>
  80. <div class="layui-input-inline ">
  81. <input type="text" name="music_url" placeholder="填写音乐地址" autocomplete="off" class="layui-input" lay-verify="required|url">
  82. </div>
  83. </div>
  84. <div class="layui-form-item ">
  85. <label class="layui-form-label">高清音质</label>
  86. <div class="layui-input-inline ">
  87. <input type="text" name="hq_music_url" placeholder="填写音乐地址" autocomplete="off" class="layui-input" lay-verify="required|url">
  88. </div>
  89. </div>
  90. <div class="layui-form-item">
  91. <button class="layui-btn" lay-submit lay-filter="music" style="float: right; margin-right: 10px;">确定</button>
  92. </div>
  93. <input type="hidden" name="thumb_attachment_id" value="">
  94. </div>
  95. {/block}
  96. {block name="script"}
  97. <script type='text/javascript' src='WECHAT_JS/wx_default.js'></script>
  98. <script src="WECHAT_JS/common.js"></script>
  99. <script type="text/javascript">
  100. $(function () {
  101. var replay = new WxReplay(3,[3,6,9]);
  102. replay.getData({"_this": replay, "rule_type": 'AFTER'});//数据初始化
  103. replay.pageInit({"_this": replay});//分页初始化
  104. // $(".js-replay").bind("click", {"_this": replay}, replay.e); //元素事件
  105. $(".rule-autoreplay-page,.replay-button").delegate(".js-replay","click",{"_this": replay},replay.e);
  106. //form 操作模块
  107. layui.use(['form'], function () {
  108. var form = layui.form;
  109. //添加和修改回复
  110. form.on('submit(add_reply)', function (data) {
  111. var d = data.field;
  112. var rule_id = d.rule_id;
  113. var key_id = d.key_id;
  114. var reply_content = $.trim(d.reply_content);
  115. var layer_index = d.layer_index;
  116. var type = $("#hidden_reply_type").val() ? $("#hidden_reply_type").val() : "text";
  117. var param = {
  118. url: ns.url('wechat://shop/replay/editReplays'),
  119. data: {"rule_id": rule_id,"reply_content":reply_content, "key_id":key_id, "type" : type,"replay_type":"default"},
  120. success: function (res) {
  121. layer.msg(res.message);
  122. if (res.code >= 0) {
  123. $(".layui-laypage-btn").click();
  124. $('#add_reply').css("display","none");
  125. location.reload();
  126. }
  127. }
  128. };
  129. replay.sendAjax(param);
  130. });
  131. //插入链接 确定
  132. form.on('submit(hyperlink)', function (data, index) {
  133. var d = data.field;
  134. var url = d.title;
  135. if (url.indexOf('http://') == -1 && url.indexOf('https://') == -1) {
  136. url = 'http://' + url;
  137. }
  138. var textarea = $(".reply-content").val();
  139. if(textarea.indexOf("href") != -1){
  140. var num_1 = textarea.indexOf("'");
  141. var num_2 = textarea.indexOf("'", num_1 + 1);
  142. var text = textarea.slice(num_1 + 1 ,num_2);
  143. var value = textarea.replace(text, url);
  144. }else{
  145. var value = "<a href='"+ url +"'>"+ textarea +"</a>";
  146. }
  147. $("#add_reply").find("textarea[name='reply_content']").val(value);
  148. layer.close(layer.index);
  149. });
  150. //音乐 确定
  151. form.on('submit(music)', function (data, index) {
  152. var d = data.field;
  153. var thumb_attachment_id = d.thumb_attachment_id;
  154. var title = d.title;
  155. var description = d.description;
  156. var music_url = d.music_url;
  157. var hq_music_url = d.hq_music_url;
  158. var active_pic = '';
  159. active_pic += '<div class="voice-wrapper" data-voice-src="'+music_url+'">';
  160. active_pic += '<span class="voice-player">';
  161. active_pic += '<a href="javascript:;" class="close--circle js-delete-complex">×</a>';
  162. active_pic += '<span class="stop">点击播放</span>';
  163. active_pic += '<span class="second"></span>';
  164. active_pic += '<i class="play" style="display:none;"></i>';
  165. active_pic += '</span>';
  166. active_pic += '</div>';
  167. $("#add_reply").find(".complex-content").html(active_pic);
  168. $('.complex-backdrop').css("display","block");
  169. $("#add_reply").find("textarea[name='reply_content']").val(music_url);
  170. layer.close(layer.index);
  171. });
  172. });
  173. //关闭 清除
  174. $(".js-close").click(function(){
  175. $("#add_reply").find("textarea[name='reply_content']").val();
  176. $('.complex-backdrop').css("display","none");
  177. $('#add_reply').css("display","none");
  178. $(".layui-layer-shade").remove();
  179. });
  180. //清除
  181. $("body").on('click',".js-delete-complex",function(){
  182. $("#add_reply").find("textarea[name='reply_content']").val('');
  183. $('.complex-backdrop').css("display","none");
  184. });
  185. });
  186. //音乐回调
  187. function albumUploadSuccess(o,name){
  188. $("#hidden_reply_type").val('image');
  189. var active_pic = '';
  190. active_pic += '<div class="ng ng-single ng-image">';
  191. active_pic += '<a class="picture" target="_blank" href=""><img src="'+nc.img(o[0]['small_pic_path'])+'" alt=""/></a>';
  192. active_pic += '</div>';
  193. $("#add_reply").find(".complex-content").html(active_pic);
  194. $('.complex-backdrop').css("display","block");
  195. $("#add_reply").find("textarea[name='reply_content']").val(o[0]['small_pic_path']);
  196. }
  197. //图文回调
  198. function chooseGraphicMessage(data) {
  199. var active_pic = '';
  200. active_pic += '<div class="ng ng-single">';
  201. active_pic += '<a href="javascript:;" class="close--circle js-delete-complex">×</a>';
  202. active_pic += '<div class="ng-item">';
  203. active_pic += '<span class="label label-success">图 文</span>';
  204. active_pic += '<div class="ng-title">';
  205. active_pic += '<a href="'+data.value[0].url+'" target="_blank" class="new-window" title="'+data.value[0].title+'">' + data.value[0].title + '</a>';
  206. active_pic += '</div>';
  207. active_pic += '</div>';
  208. active_pic += '<div class="ng-item view-more">';
  209. active_pic += '<a href="'+data.value[0].url+'" target="_blank" class="clearfix new-window">';
  210. active_pic += '<span class="pull-left">阅读全文</span>';
  211. active_pic += '<span class="pull-right">&gt;</span>';
  212. active_pic += '</a>';
  213. active_pic += '</div>';
  214. active_pic += '</div>';
  215. $("#add_reply").find(".complex-content").html(active_pic);
  216. $('.complex-backdrop').css("display", "block");
  217. $("#add_reply").find("textarea[name='reply_content']").val(data.value[0].title);
  218. $("#hidden_reply_type").val('articles');
  219. $("#hidden_media_id").val(data.media_id);
  220. }
  221. function chooseTextMessage(data){
  222. var active_pic = '';
  223. active_pic += '<div class="ng ng-single">';
  224. active_pic += '<a href="javascript:;" class="close--circle js-delete-complex">×</a>';
  225. active_pic += '<div class="ng-item">';
  226. active_pic += '<span class="label label-success">文 本</span>';
  227. active_pic += '<div class="ng-title">';
  228. active_pic += '<a href="javascript:;" title="'+data.value.content+'">' + data.value.content + '</a>';
  229. active_pic += '</div>';
  230. // active_pic += '<a href="h" target="_blank" class="new-window" title="' + data.value.content + '"><span class="label label-success">' + data.value.content + '</span></a>';
  231. active_pic += '</div>';
  232. active_pic += '<div class="ng-item view-more">';
  233. active_pic += '<a href="" target="_blank" class="clearfix new-window">';
  234. active_pic += '<span class="pull-left">阅读全文</span>';
  235. active_pic += '<span class="pull-right">&gt;</span>';
  236. active_pic += '</a>';
  237. active_pic += '</div>';
  238. active_pic += '</div>';
  239. $("#add_reply").find(".complex-content").html(active_pic);
  240. $('.complex-backdrop').css("display", "block");
  241. $("#add_reply").find("textarea[name='reply_content']").val(data.value.content);
  242. $("#add_reply").find("span.pull-right").hide();
  243. $("#hidden_reply_type").val('text');
  244. $("#hidden_media_id").val(data.media_id);
  245. }
  246. //弹出框的位置
  247. $("body").on('click',".add-reply-menu",function(){
  248. var x = $(this).position().top;
  249. var y = $(this).position().left;
  250. var real_x = 16;
  251. var real_y = 72;
  252. $('.rule-container').css('top', real_x);
  253. $('.rule-container').css('left', real_y);
  254. var m = '<i class="layui-icon">&#xe603;</i>';
  255. $('.rule-container .arrow').html(m);
  256. $('.rule-container .arrow').css('right', 'auto');
  257. $('.rule-container .arrow').css('left', '-13px');
  258. $('.pull-right').find('i').text(300);
  259. });
  260. //编辑弹出框的位置
  261. $("body").on('click',".js-edit-it",function(){
  262. var x = $(this).position().top;
  263. var y = $(this).position().left;
  264. var real_x = x + 78;
  265. var real_y = y;
  266. $('.rule-container').css('top', real_x);
  267. $('.rule-container').css('right', real_y);
  268. var s = '<i class="layui-icon">&#xe602;</i>';
  269. $('.rule-container .arrow').html(s);
  270. $('.rule-container .arrow').css('left', 'auto');
  271. $('.rule-container .arrow').css('right', 3);
  272. var text_leng = $('.rule-container').find(".layui-textarea").val().length;
  273. var left_leng = 300 - text_leng;
  274. $('.pull-right').find('i').text(left_leng);
  275. });
  276. $("body").on('keydown',".layui-textarea",function(){
  277. var text_leng = $(this).val().length;
  278. var left_leng = 300 - text_leng;
  279. $('.pull-right').find('i').text(left_leng);
  280. })
  281. </script>
  282. {/block}