reply.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. {template 'common/header'}
  2. {if in_array($m, $sysmods)}
  3. <div class="we7-page-title">
  4. 自动回复
  5. </div>
  6. <ul class="we7-page-tab">
  7. <li {if $m == 'keyword' || $m == ''}class="active" {/if}><a href="{url 'platform/reply' array('m' => 'keyword')}">关键字自动回复 </a></li>
  8. <li {if $m == 'special'}class="active"{/if}><a href="{url 'platform/reply' array('m' => 'special')}">非文字自动回复</a></li>
  9. <li {if $m == 'welcome'}class="active"{/if}><a href="{url 'platform/reply' array('m' => 'welcome')}">首次访问自动回复</a></li>
  10. <li {if $m == 'default'}class="active"{/if}><a href="{url 'platform/reply' array('m' => 'default')}">默认回复</a></li>
  11. <li {if $m == 'service'}class="active"{/if}><a href="{url 'platform/reply' array('m' => 'service')}">常用服务</a></li>
  12. <li {if $m == 'userapi'}class="active"{/if}><a href="{url 'platform/reply' array('m' => 'userapi')}">自定义接口回复</a></li>
  13. </ul>
  14. {else}
  15. <div class="we7-page-title">
  16. 入口设置
  17. </div>
  18. <ul class="we7-page-tab">
  19. {if !empty($_W['current_module']['isrulefields']) &&!empty($_W['account']) && in_array($_W['account']['type'], array(ACCOUNT_TYPE_OFFCIAL_NORMAL, ACCOUNT_TYPE_OFFCIAL_AUTH))}<li class="active"><a href="{url 'platform/reply' array('m' => $m, 'version_id' => intval($_GPC['version_id']))}">关键字链接入口 </a></li>{/if}
  20. {if !empty($frames['section']['platform_module_common']['menu']['platform_module_cover'])}
  21. <li><a href="{url 'platform/cover' array('m' => $m, 'version_id' => intval($_GPC['version_id']))}">封面链接入口</a></li>
  22. {/if}
  23. </ul>
  24. {/if}
  25. {if $m == 'keyword' || $m == 'userapi' || !in_array($m, $sysmods)}
  26. <div id="js-keyword-display" ng-controller="KeywordDisplay" ng-cloak>
  27. <div class="keyword-list-head">
  28. <form action="./index.php" method="get" class="form-horizontal" role="form">
  29. <input type="hidden" name="c" value="platform">
  30. <input type="hidden" name="a" value="reply">
  31. <input type="hidden" name="m" value="{$_GPC['m']}" />
  32. <input type="hidden" name="status" value="{$status}" />
  33. <div class="keyword-list-head clearfix">
  34. <div class="pull-right">
  35. <a href="{url 'platform/reply/post' array('m' => $m)}" class="btn btn-primary">+添加{if $m == 'userapi'}自定义接口{else}关键字{/if}回复</a>
  36. {if in_array($m, $sysmods) && $m != 'userapi'}<a href="{url 'platform/reply/post' array('m' => 'apply')}" class="btn btn-danger we7-margin-left">+添加应用关键字</a>{/if}
  37. </div>
  38. <div class="input-group we7-margin-bottom" style="width:465px;">
  39. <select class="we7-select pull-left" name="search_type">
  40. <option value="keyword" {if $_GPC['search_type'] == 'keyword'}selected{/if}>关键字</option>
  41. <option value="rule" {if $_GPC['search_type'] == 'rule'}selected{/if}>规则名</option>
  42. </select>
  43. <input name="type" type="hidden" value="{$_GPC['type']}">
  44. <input class="form-control" name="keyword" type="text" value="{$_GPC['keyword']}" placeholder="输入规则名称或关键字名称" style="width: 330px;">
  45. <span class="input-group-btn"><button class="btn btn-default"><i class="fa fa-search"></i></button></span>
  46. </div>
  47. </div>
  48. </form>
  49. </div>
  50. {if in_array($m, $sysmods) && $m != 'userapi'}
  51. <div class="btn-group we7-btn-group we7-margin-bottom btn-group-justified">
  52. <a href="{url 'platform/reply/display' array('m' => 'keyword')}" class="btn {if !$_GPC[type]}active{/if}">全部</a>
  53. <a href="{url 'platform/reply/display' array('m' => 'keyword', 'type' => 'news')}" class="btn {if $_GPC[type] == 'news'}active{/if}">回复图文</a>
  54. <a href="{url 'platform/reply/display' array('m' => 'keyword', 'type' => 'apply')}" class="btn {if $_GPC[type] == 'apply'}active{/if}">回复模块</a>
  55. <a href="{url 'platform/reply/display' array('m' => 'keyword', 'type' => 'voice')}" class="btn {if $_GPC[type] == 'voice'}active{/if}">回复语音</a>
  56. <a href="{url 'platform/reply/display' array('m' => 'keyword', 'type' => 'basic')}" class="btn {if $_GPC[type] == 'basic'}active{/if}">回复文字</a>
  57. <a href="{url 'platform/reply/display' array('m' => 'keyword', 'type' => 'music')}" class="btn {if $_GPC[type] == 'music'}active{/if}">回复音乐</a>
  58. <a href="{url 'platform/reply/display' array('m' => 'keyword', 'type' => 'images')}" class="btn {if $_GPC[type] == 'images'}active{/if}">回复图片</a>
  59. <a href="{url 'platform/reply/display' array('m' => 'keyword', 'type' => 'video')}" class="btn {if $_GPC[type] == 'video'}active{/if}">回复视频</a>
  60. </div>
  61. {/if}
  62. <div class="clearfix"></div>
  63. <div class="table we7-tables {if !in_array($m, $sysmods)} we7-padding-bottom {/if}">
  64. <form action="{php echo url('platform/reply/delete');}" method="post" role="form" class="form we7-form" id="form1">
  65. <input type="hidden" name="m" value="{$m}">
  66. {if !empty($replies)}
  67. {loop $replies $row}
  68. <table class="table we7-table table-hover">
  69. <col width="80px"/>
  70. <col width=""/>
  71. <col width="120px"/>
  72. <col width="230px"/>
  73. <tr>
  74. <th class="text-left" colspan="2">
  75. <div class="pull-left">
  76. <input id='rid-{$row['id']}' type="checkbox" name='rid[]' we7-check-all="we7-check-all" value="{$row['id']}"/>
  77. <label class="text-over reply-item-name" for="rid-{$row['id']}">&nbsp;</label>
  78. <label class="text-over reply-item-name">{if !empty($row['name'])}规则名:{$row['name']}{/if}</label>
  79. </div>
  80. <span class="pull-right">
  81. {if $row['displayorder'] > 0}
  82. {if $row['displayorder'] == '255'}
  83. <span class="label label-primary">置顶</span>
  84. {else}
  85. <span class="label label-info">优先级 {$row['displayorder']}</span>
  86. {/if}
  87. {/if}
  88. </span>
  89. </th>
  90. <th>是否开启</th>
  91. <th class="text-right">操作</th>
  92. </tr>
  93. <tr>
  94. {if !in_array($row['module'], $sysmods)}
  95. <td class="vertical-middle">
  96. <img src="{$row['module_info']['logo']}" alt="" class="keyword-img"/>
  97. </td>
  98. <td class="text-left">
  99. {else}
  100. <td class="text-left" colspan="2">
  101. {/if}
  102. <div class="we7-form reply-item-keyword">
  103. <div class="form-inline">
  104. <label for="" class="control-label">关&nbsp;键&nbsp;字</label>
  105. <div class="form-controls form-control-static">
  106. {loop $row['keywords'] $kw}
  107. <span class="keyword-tag" data-toggle="tooltip" data-placement="bottom" title="{if $kw['type']==1}此关键字为精准触发{elseif $kw['type']==2}此关键字为包含触发{elseif $kw['type']==3}此关键字为正则匹配触发{/if}">{$kw['content']}</span>
  108. {if $kw['type'] == 4}<span class="form-control-static keyword-tag" data-toggle="tooltip" data-placement="bottom" title="托管">优先级在{$row['displayorder']}之下直接生效</span>{/if}
  109. {/loop}
  110. </div>
  111. <div class="form-inline">
  112. <label for="" class="control-label col-sm-2">回复内容</label>
  113. <div class="form-controls form-control-static">
  114. <span class="">
  115. {if $m == 'userapi'}
  116. 自定义
  117. {elseif in_array($row['module'], $sysmods)}
  118. 共{$row['allreply']['sum']}条({if $row['allreply']['basic'] > 0}{$row['allreply']['basic']}条文字 {/if}{if $row['allreply']['images'] > 0}{$row['allreply']['images']}条图片 {/if}{if $row['allreply']['news'] > 0}{$row['allreply']['news']}条图文 {/if}{if $row['allreply']['music'] > 0}{$row['allreply']['music']}条音乐 {/if}{if $row['allreply']['voice'] > 0}{$row['allreply']['voice']}条语音 {/if}{if $row['allreply']['video'] > 0}{$row['allreply']['video']}条视频 {/if}{if $row['allreply']['wxcard'] > 0}{$row['allreply']['wxcard']}条卡券{/if})
  119. {else}
  120. {php echo cutstr($row['module_info']['title'], 10);}应用
  121. {/if}
  122. </span>
  123. </div>
  124. </div>
  125. </div>
  126. </td>
  127. <td class="vertical-middle">
  128. <label>
  129. <div class="switch {if $row['status']} switchOn{/if}" id="key-{$row['id']}" ng-click="changeStatus({$row[id]})"></div>
  130. </label>
  131. </td>
  132. <td class="vertical-middle text-right">
  133. <div class="link-group">
  134. {if in_array($row['module'], $sysmods)}
  135. <a href="{php echo url('platform/reply/post', array('m' => $m, 'rid' => $row['id']))}">编辑</a>
  136. {else}
  137. <a href="{php echo url('platform/reply/post', array('m' => $row['module'], 'rid' => $row['id']))}">编辑</a>
  138. {/if}
  139. <a href="{php echo url('platform/reply/delete', array('m' => $m, 'rid' => $row['id']))}" class="del" onclick="return confirm('删除规则将同时删除关键字与回复,确认吗?');return false;">删除</a>
  140. {loop $entries['rule'] $ext_menu}
  141. <a href="{$ext_menu['url']}&id={$row['id']}&rid={$row['id']}">{$ext_menu['title']}</a>
  142. {/loop}
  143. </div>
  144. </td>
  145. </tr>
  146. </table>
  147. {/loop}
  148. <div>
  149. <input type="checkbox" name="rid[]" we7-check-all="we7-check-all" id="select_all" class="we7-margin-left" value="1" />
  150. <label for="select_all">&nbsp;</label>
  151. <input type="submit" class="btn btn-danger" value="删除" onclick="if(!confirm('确定删除选中的规则吗?')) return false;"/>
  152. <input type="hidden" name="token" value="{$_W['token']}"/>
  153. <div class="text-right">
  154. {$pager}
  155. </div>
  156. </div>
  157. {else}
  158. <p class="text-center we7-margin-top">暂无数据</p>
  159. {/if}
  160. </form>
  161. </div>
  162. </div>
  163. <script>
  164. $(function () {
  165. $('[data-toggle="tooltip"]').tooltip();
  166. $('#select_all').click(function(){
  167. $('#form1 :checkbox').prop('checked', $(this).prop('checked'));
  168. });
  169. $('#form1 :checkbox').click(function(){
  170. if(!$(this).prop('checked')) {
  171. $('#select_all').prop('checked', false);
  172. } else {
  173. var flag = 0;
  174. $('#form1 :checkbox[name="rid[]"]').each(function(){
  175. if(!$(this).prop('checked') && !flag) {
  176. flag = 1;
  177. }
  178. });
  179. if(flag) {
  180. $('#select_all').prop('checked', false);
  181. } else {
  182. $('#select_all').prop('checked', true);
  183. }
  184. }
  185. });
  186. });
  187. angular.bootstrap($('#js-keyword-display'), ['replyFormApp']);
  188. </script>
  189. {elseif $m == 'special'}
  190. <div class="NoKeyword-list" id="js-special-display" ng-controller="SpecialDisplay" ng-cloak>
  191. <div class="table we7-tables">
  192. <table class="table we7-table table-hover vertical-middle">
  193. <col width="160px"/>
  194. <col />
  195. <col width="120px"/>
  196. <col width="180px"/>
  197. <tr>
  198. <th class="text-left">类型</th>
  199. <th class="text-left">关键字/模块</th>
  200. <th>状态</th>
  201. <th class="text-left">操作</th>
  202. </tr>
  203. {loop $mtypes $name $title}
  204. <tr>
  205. <td class="text-left">
  206. {$title}
  207. </td>
  208. <td class="text-left">
  209. {if !empty($setting[$name]['type'])}
  210. {if $setting[$name]['type'] == 'keyword'}{$setting[$name]['keyword']}{else}{$module[$setting[$name]['module']]['title']}{/if}
  211. {else}
  212. {if !empty($setting[$name]['keyword'])}{$setting[$name]['keyword']}{else}{$module[$setting[$name]['module']]['title']}{/if}
  213. {/if}
  214. </td>
  215. <td>
  216. <label>
  217. <div ng-class="switch_class['{$name}']" ng-click="changestatus('{$name}')"></div>
  218. </label>
  219. </td>
  220. <td>
  221. <div class="link-group text-left">
  222. <a href="{php echo url('platform/reply/post', array('m' => 'special', 'type' => $name))}" class="keyword-link">编辑</a>
  223. </div>
  224. </td>
  225. </tr>
  226. {/loop}
  227. </table>
  228. </div>
  229. </div>
  230. <script>
  231. $(function() {
  232. angular.module('replyFormApp').value('config', {
  233. {loop $mtypes $name $title}
  234. '{$name}' : '{$setting[$name]['type']}',
  235. {/loop}
  236. 'url' : '{php echo url('platform/reply/change_status')}'
  237. });
  238. angular.bootstrap($('#js-special-display'), ['replyFormApp']);
  239. });
  240. </script>
  241. {elseif $m == 'welcome'}
  242. <div class="alert we7-page-alert">
  243. <i class="wi wi-info-sign"></i>用户关注公众号时,发送的欢迎信息。
  244. </div>
  245. <div class="new-keyword" id="welcome" ng-cloak>
  246. <div class="we7-form" ng-controller="WelcomeDisplay">
  247. <form id="reply-form" class="form-horizontal form" action="{php echo url('platform/reply/post', array('m' => $m, 'rid' => $rule_keyword_id))}" method="post" enctype="multipart/form-data">
  248. <div>
  249. {php echo module_build_form('core', $rule_keyword_id, array('keyword' => false))}
  250. </div>
  251. <input type="submit" name="submit" value="保存" class="btn btn-primary" style="padding: 6px 50px;"/>
  252. <input type="hidden" name="token" value="{$_W['token']}">
  253. <input type="hidden" name="m" value="{$m}">
  254. <input type="hidden" name="type" value="{$type}">
  255. </form>
  256. </div>
  257. </div>
  258. <script>
  259. require(['underscore'], function() {
  260. angular.bootstrap($('#welcome'), ['replyFormApp']);
  261. });
  262. </script>
  263. {elseif $m == 'default'}
  264. <div class="alert we7-page-alert">
  265. <i class="wi wi-info-sign"></i>当系统不知道该如何回复粉丝的消息时,默认发送的内容。
  266. </div>
  267. <div class="new-keyword" id="default">
  268. <div id="a" class="we7-form" ng-controller="DefaultDisplay">
  269. <form id="reply-form" class="form-horizontal form" action="{php echo url('platform/reply/post', array('m' => $m, 'rid' => $rule_keyword_id))}" method="post" enctype="multipart/form-data">
  270. <div>
  271. {php echo module_build_form('core', $rule_keyword_id, array('keyword' => false))}
  272. </div>
  273. <input type="submit" name="submit" value="保存" class="btn btn-primary" style="padding: 6px 50px;"/>
  274. <input type="hidden" name="token" value="{$_W['token']}">
  275. <input type="hidden" name="m" value="{$m}">
  276. <input type="hidden" name="type" value="{$type}">
  277. </form>
  278. </div>
  279. </div>
  280. <script>
  281. require(['underscore'], function() {
  282. angular.bootstrap($('#default'), ['replyFormApp']);
  283. });
  284. </script>
  285. {elseif $m == 'service'}
  286. <div class="NoKeyword-list" id="js-service-display" ng-controller="serviceDisplay" ng-cloak>
  287. <div class="table we7-tables">
  288. <table class="table we7-table table-hover">
  289. <col width="160px"/>
  290. <col />
  291. <col width="120px"/>
  292. <tr>
  293. <th class="text-left">服务名称</th>
  294. <th class="text-left">功能说明</th>
  295. <th>状态</th>
  296. </tr>
  297. <tr ng-repeat="(id, api) in service track by id" ng-if="service">
  298. <td class="text-left">
  299. {{ api.name }}
  300. </td>
  301. <td class="text-left" ng-bind-html="api.description">
  302. </td>
  303. <td class="vertical-middle">
  304. <label>
  305. <div ng-class="api.switch == 'checked' ? 'switch switchOn' : 'switch'" ng-click="changeStatus(id)"></div>
  306. </label>
  307. </td>
  308. </tr>
  309. <tr ng-if="!service">
  310. <td colspan="3" class="text-center">
  311. 暂无数据
  312. </td>
  313. </tr>
  314. </table>
  315. </div>
  316. </div>
  317. <script>
  318. $(function() {
  319. angular.module('replyFormApp').value('config', {
  320. 'url' : "{php echo url('platform/reply/change_status')}",
  321. 'service' : {php echo !empty($service_list) ? json_encode($service_list) : 'null'}
  322. });
  323. angular.bootstrap($('#js-service-display'), ['replyFormApp']);
  324. });
  325. </script>
  326. {/if}
  327. {template 'common/footer'}