index.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. {include file="../../../application/admin/view/public/head" /}
  2. <div class="page-container p10">
  3. <div class="my-toolbar-box">
  4. <div class="center mb10">
  5. <form class="layui-form " method="post" action="{:url('data')}">
  6. <input type="hidden" value="{$param.select|mac_filter_xss}" name="select">
  7. <input type="hidden" value="{$param.input|mac_filter_xss}" name="input">
  8. <input type="hidden" name="recycle" value="{$param.recycle|mac_filter_xss}">
  9. <div class="layui-input-inline w150">
  10. <select name="type">
  11. <option value="">{:lang('select_type')}</option>
  12. {volist name="type_tree" id="vo"}
  13. {if condition="$vo.type_mid eq 2"}
  14. <option value="{$vo.type_id}" {if condition="$param['type'] eq $vo.type_id"}selected {/if}>{$vo.type_name}</option>
  15. {volist name="vo.child" id="ch"}
  16. <option value="{$ch.type_id}" {if condition="$param['type'] eq $ch.type_id"}selected {/if}>&nbsp;&nbsp;&nbsp;&nbsp;├&nbsp;{$ch.type_name}</option>
  17. {/volist}
  18. {/if}
  19. {/volist}
  20. </select>
  21. </div>
  22. <div class="layui-input-inline w150">
  23. <select name="status">
  24. <option value="">{:lang('select_status')}</option>
  25. <option value="0" {if condition="$param['status'] eq '0'"}selected {/if}>{:lang('reviewed_not')}</option>
  26. <option value="1" {if condition="$param['status'] eq '1'"}selected {/if}>{:lang('reviewed')}</option>
  27. </select>
  28. </div>
  29. <div class="layui-input-inline w150">
  30. <select name="level">
  31. <option value="">{:lang('select_level')}</option>
  32. <option value="9" {if condition="$param['level'] eq '9'"}selected {/if}>{:lang('level')}9-{:lang('slide')}</option>
  33. <option value="1" {if condition="$param['level'] eq '1'"}selected {/if}>{:lang('level')}1</option>
  34. <option value="2" {if condition="$param['level'] eq '2'"}selected {/if}>{:lang('level')}2</option>
  35. <option value="3" {if condition="$param['level'] eq '3'"}selected {/if}>{:lang('level')}3</option>
  36. <option value="4" {if condition="$param['level'] eq '4'"}selected {/if}>{:lang('level')}4</option>
  37. <option value="5" {if condition="$param['level'] eq '5'"}selected {/if}>{:lang('level')}5</option>
  38. <option value="6" {if condition="$param['level'] eq '6'"}selected {/if}>{:lang('level')}6</option>
  39. <option value="7" {if condition="$param['level'] eq '7'"}selected {/if}>{:lang('level')}7</option>
  40. <option value="8" {if condition="$param['level'] eq '8'"}selected {/if}>{:lang('level')}8</option>
  41. </select>
  42. </div>
  43. <div class="layui-input-inline w150">
  44. <select name="lock">
  45. <option value="">{:lang('select_lock')}</option>
  46. <option value="0" {if condition="$param['lock'] eq '0'"}selected {/if}>{:lang('unlock')}</option>
  47. <option value="1" {if condition="$param['lock'] eq '1'"}selected {/if}>{:lang('lock')}</option>
  48. </select>
  49. </div>
  50. <div class="layui-input-inline w150">
  51. <select name="pic">
  52. <option value="">{:lang('select_pic')}</option>
  53. <option value="1" {if condition="$param['pic'] eq '1'"}selected{/if}>{:lang('pic_empty')}</option>
  54. <option value="2" {if condition="$param['pic'] eq '2'"}selected{/if}>{:lang('pic_remote')}</option>
  55. <option value="3" {if condition="$param['pic'] eq '3'"}selected{/if}>{:lang('pic_sync_err')}</option>
  56. </select>
  57. </div>
  58. <div class="layui-input-inline w150">
  59. <select name="order">
  60. <option value="">{:lang('select_sort')}</option>
  61. <option value="art_time" {if condition="$param['order'] eq 'art_time'"}selected{/if}>{:lang('update_time')}</option>
  62. <option value="art_id" {if condition="$param['order'] eq 'art_id'"}selected{/if}>{:lang('id')}</option>
  63. <option value="art_hits" {if condition="$param['order'] eq 'art_hits'"}selected{/if}>{:lang('hits')}</option>
  64. <option value="art_hits_month" {if condition="$param['order'] eq 'art_hits_month'"}selected{/if}>{:lang('hits_month')}</option>
  65. <option value="art_hits_week" {if condition="$param['order'] eq 'art_hits_week'"}selected{/if}>{:lang('hits_week')}</option>
  66. <option value="art_hits_day" {if condition="$param['order'] eq 'art_hits_day'"}selected{/if}>{:lang('hits_day')}</option>
  67. </select>
  68. </div>
  69. <div class="layui-input-inline">
  70. <input type="text" autocomplete="off" placeholder="{:lang('wd')}" class="layui-input" name="wd" value="{$param['wd']|mac_restore_htmlfilter}">
  71. </div>
  72. <button class="layui-btn mgl-20 j-search" >{:lang('btn_search')}</button>
  73. </form>
  74. </div>
  75. <div class="layui-btn-group">
  76. {if condition="$param.recycle eq 1"}
  77. <a href="{:url('data')}" class="layui-btn layui-btn-primary">{:lang('admin/recycle/back_list')}</a>
  78. <a data-href="{:url('restore')}" class="layui-btn layui-btn-normal j-page-btns confirm">{:lang('recycle_restore')}</a>
  79. <a data-href="{:url('del')}?purge=1" class="layui-btn layui-btn-danger j-page-btns confirm">{:lang('recycle_purge')}</a>
  80. {else/}
  81. <a href="{:url('data',['recycle'=>1])}" class="layui-btn layui-btn-primary">{:lang('admin/recycle/bin')}</a>
  82. <a data-href="{:url('info')}" data-full="1" class="layui-btn layui-btn-primary j-iframe"><i class="layui-icon">&#xe654;</i>{:lang('add')}</a>
  83. <a data-href="{:url('del')}" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del')}</a>
  84. <a data-href="{:url('index/select')}?tab=art&col=type_id&tpl=select_type&url=art/field" data-width="270" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('type')}</a>
  85. <a data-href="{:url('index/select')}?tab=art&col=art_level&tpl=select_level&url=art/field" data-width="270" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('level')}</a>
  86. <a data-href="{:url('index/select')}?tab=art&col=art_hits&tpl=select_hits&url=art/field" data-width="470" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('hits')}</a>
  87. <a data-href="{:url('index/select')}?tab=art&col=art_status&tpl=select_status&url=art/field" data-width="470" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('status')}</a>
  88. <a data-href="{:url('index/select')}?tab=art&col=art_lock&tpl=select_lock&url=art/field" data-width="470" data-height="100" data-checkbox="1" class="layui-btn layui-btn-primary j-select"><i class="layui-icon">&#xe620;</i>{:lang('lock')}</a>
  89. <a class="layui-btn layui-btn-primary j-iframe" data-href="{:url('images/opt?tab=art')}" href="javascript:;" title="{:lang('pic_sync')}"><i class="layui-icon">&#xe620;</i>{:lang('pic_sync')}</a>
  90. <a class="layui-btn layui-btn-primary j-iframe" data-checkbox="true" data-href="{:url('make/make?ac=info&tab=art')}" href="javascript:;" title="{:lang('make_page')}"><i class="layui-icon">&#xe620;</i>{:lang('make_page')}</a>
  91. {if condition="$param.select eq 1"}
  92. <a data-href="" onclick="parent.onSelectResult('{$param.input|mac_filter_xss}', $('.checkbox-ids:checked'))" class="layui-btn layui-btn-normal">{:lang('select_return')}</a>
  93. {/if}
  94. {if condition="$param['repeat'] neq ''"}
  95. <a data-href="{:url('del')}?repeat=1&retain=min" data-checkbox="no" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del_auto_keep_min')}</a>
  96. <a data-href="{:url('del')}?repeat=1&retain=max" data-checkbox="no" class="layui-btn layui-btn-primary j-page-btns confirm"><i class="layui-icon">&#xe640;</i>{:lang('del_auto_keep_max')}</a>
  97. {/if}
  98. {/if}
  99. </div>
  100. <blockquote class="layui-elem-quote layui-quote-nm" style="margin:10px 0 0 0;padding:12px 15px;font-size:13px;">
  101. <div class="layui-form" style="margin:0;">
  102. <div style="display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:8px;">
  103. <input type="checkbox" id="ai_seo_skip_existing" name="ai_seo_skip_existing" lay-skin="primary" lay-filter="ai_seo_skip_existing">
  104. <label for="ai_seo_skip_existing" style="cursor:pointer;font-weight:700;margin:0;">{:lang('admin/ai_seo/list_skip_label')}</label>
  105. <button type="button" class="layui-btn layui-btn-warm layui-btn-sm" id="btn_ai_seo_batch">{:lang('admin/ai_seo/list_batch_btn')}</button>
  106. </div>
  107. <div style="color:#666;font-size:12px;line-height:1.55;">{:lang('admin/ai_seo/list_skip_hint')}</div>
  108. </div>
  109. </blockquote>
  110. </div>
  111. <form class="layui-form " method="post" id="pageListForm">
  112. <table class="layui-table" lay-size="sm">
  113. <thead>
  114. <tr>
  115. <th width="25"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
  116. <th width="40">{:lang('id')}</th>
  117. <th >{:lang('name')}</th>
  118. <th width="90">{:lang('admin/ai_seo/status_col')}</th>
  119. <th width="50">{:lang('hits')}</th>
  120. <th width="30">{:lang('score')}</th>
  121. <th width="30">{:lang('level')}</th>
  122. <th width="30">{:lang('browse')}</th>
  123. <th width="80">{:lang('author')}</th>
  124. <th width="120">{:lang('update_time')}</th>
  125. <th width="260">{:lang('opt')}</th>
  126. </tr>
  127. </thead>
  128. {volist name="list" id="vo"}
  129. <tr data-seo-status="{$vo.seo_ai_status|default=0}">
  130. <td><input type="checkbox" name="ids[]" value="{$vo.art_id}" class="layui-checkbox checkbox-ids" lay-skin="primary"></td>
  131. <td>{$vo.art_id}</td>
  132. <td>[{$vo.type.type_name|mac_filter_xss|mac_restore_htmlfilter}] <a target="_blank" class="layui-badge-rim " href="{:mac_url_art_detail($vo)}">{$vo.art_name|mac_filter_xss|mac_restore_htmlfilter}</a> {if condition="$vo.art_status eq 0"} <span class="layui-badge">{:lang('reviewed_not')}</span>{/if} {if condition="$vo.art_lock eq 1"} <span class="layui-badge">{:lang('lock')}</span>{/if}</td>
  133. <td>
  134. {if condition="$vo.seo_ai_status eq 1"}
  135. <span class="layui-badge layui-bg-green">{:lang('admin/ai_seo/status_optimized')}</span>
  136. {elseif condition="$vo.seo_ai_status eq 2"/}
  137. <span class="layui-badge layui-bg-orange">{:lang('admin/ai_seo/status_fallback')}</span>
  138. {else/}
  139. <span class="layui-badge layui-bg-gray">{:lang('admin/ai_seo/status_none')}</span>
  140. {/if}
  141. </td>
  142. <td>{$vo.art_hits}</td>
  143. <td>{$vo.art_score}</td>
  144. <td><a data-href="{:url('index/select')}?tab=art&col=art_level&tpl=select_level&url=art/field&ids={$vo.art_id}" data-width="270" data-height="100" class=" j-select"><span class="layui-badge layui-bg-orange">{$vo.art_level}</span></a></td>
  145. <td>{if condition="$vo.ismake eq 1"}<a target="_blank" class="layui-badge layui-bg-green " href="{:mac_url_art_detail($vo)}">Y</a>{else/}<a class="layui-badge" href="{:url('make/make?ac=info&tab=art')}?ids={$vo.art_id}&ref=1">N</a>{/if}</td>
  146. <td>{$vo.art_author|htmlspecialchars}</td>
  147. <td>{$vo.art_time|mac_day='color'}</td>
  148. <td class="mac-table-opt-cell">
  149. <div class="mac-table-opt-btns">
  150. {if condition="$param.recycle eq 1"}
  151. <a class="layui-btn layui-btn-normal j-tr-del" data-href="{:url('restore?ids='.$vo['art_id'])}" href="javascript:;" title="{:lang('recycle_restore')}">{:lang('recycle_restore')}</a>
  152. <a class="layui-btn layui-btn-danger j-tr-del" data-href="{:url('del?ids='.$vo['art_id'].'&purge=1')}" href="javascript:;" title="{:lang('recycle_purge')}">{:lang('recycle_purge')}</a>
  153. {else/}
  154. <a href="javascript:;" class="layui-btn layui-btn-warm j-ai-seo-row" data-id="{$vo.art_id}" title="{:lang('admin/ai_seo/list_row_btn')}">{:lang('admin/ai_seo/list_row_btn')}</a>
  155. <a class="layui-btn layui-btn-primary j-iframe" data-full="1" data-href="{:url('info?id='.$vo['art_id'])}" href="javascript:;" title="{:lang('edit')}">{:lang('edit')}</a>
  156. <a class="layui-btn layui-btn-danger j-tr-del" data-href="{:url('del?ids='.$vo['art_id'])}" href="javascript:;" title="{:lang('del')}">{:lang('del')}</a>
  157. {/if}
  158. </div>
  159. </td>
  160. </tr>
  161. {/volist}
  162. </tbody>
  163. </table>
  164. <div id="pages" class="center"></div>
  165. </form>
  166. </div>
  167. {include file="../../../application/admin/view/public/foot" /}
  168. <script type="text/javascript" src="__STATIC__/js/ai_seo_list.js?{$MAC_VERSION}"></script>
  169. <script type="text/javascript">
  170. var curUrl="{:url('art/data',$param)}";
  171. layui.use(['laypage', 'layer','form'], function() {
  172. var laypage = layui.laypage
  173. , layer = layui.layer,
  174. form = layui.form,
  175. $ = layui.jquery;
  176. laypage.render({
  177. elem: 'pages'
  178. ,count: {$total}
  179. ,limit: {$limit}
  180. ,curr: {$page}
  181. ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
  182. ,jump: function(obj,first){
  183. if(!first){
  184. location.href = curUrl.replace('%7Bpage%7D',obj.curr).replace('%7Blimit%7D',obj.limit);
  185. }
  186. }
  187. });
  188. if (typeof initAiSeoListPage === 'function') {
  189. initAiSeoListPage({
  190. $: $,
  191. layer: layer,
  192. form: form,
  193. postUrl: "{:url('art/aiSeoGenerate')}",
  194. lang: {
  195. no_selection: "{:lang('admin/ai_seo/list_no_selection')}",
  196. progress_title: "{:lang('admin/ai_seo/list_progress_title')}",
  197. progress_line: "{:lang('admin/ai_seo/list_progress_line')}",
  198. progress_sub: "{:lang('admin/ai_seo/list_progress_sub')}",
  199. summary: "{:lang('admin/ai_seo/list_summary')}",
  200. list_batch_cancel: "{:lang('admin/ai_seo/list_batch_cancel')}",
  201. list_summary_cancelled: "{:lang('admin/ai_seo/list_summary_cancelled')}",
  202. row_ok: "{:lang('admin/ai_seo/list_row_ok')}",
  203. row_fail: "{:lang('admin/ai_seo/msg_generate_fail')}",
  204. msg_request_fail: "{:lang('admin/ai_seo/msg_request_fail')}"
  205. }
  206. });
  207. }
  208. });
  209. </script>
  210. </body>
  211. </html>