index.html.tp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>layui</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  9. <link rel="stylesheet" href="{literal}__PUBLIC__{/literal}/layui/css/layui.css" media="all">
  10. <link rel="stylesheet" href="{literal}__PUBLIC__{/literal}/font-awesome/css/font-awesome.min.css" media="all"/>
  11. <link rel="stylesheet" href="{literal}__CSS__{/literal}/admin.css" media="all">
  12. <style type="text/css">
  13. /* tooltip */
  14. #tooltip {
  15. position: absolute;
  16. border: 1px solid #ccc;
  17. background: #333;
  18. padding: 2px;
  19. display: none;
  20. color: #fff;
  21. }
  22. .tooltip > img{
  23. width: 20px;
  24. height: 20px;
  25. }
  26. </style>
  27. </head>
  28. <body style="padding:10px;">
  29. <div class="tplay-body-div">
  30. {if condition="array_key_exists('create',$crud)"}
  31. <div class="layui-tab">
  32. <ul class="layui-tab-title">
  33. <li class="layui-this">列表</li>
  34. <li><a href="{literal}{:url('{/literal}publish{literal}')}{/literal}" class="a_menu">新增</a></li>
  35. </ul>
  36. </div>
  37. {/if}
  38. <script type="text/html" id="toolbarDemo">
  39. <div class="layui-btn-container">
  40. {if condition="array_key_exists('delete',$crud)"}
  41. <button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="deletes">批量删除</button>
  42. {/if}
  43. {if condition="array_key_exists('sort',$fieldsInfo)"}
  44. <button class="layui-btn layui-btn-sm" lay-submit lay-filter="admin">更新排序</button>
  45. {/if}
  46. </div>
  47. </script>
  48. <form class="layui-form serch" action="index" method="post">
  49. <div class="layui-form-item" style="float: left;">
  50. {php}
  51. foreach($fieldsInfo as $vo){
  52. if(empty($vo['ShowSearch'])){
  53. continue;
  54. }
  55. $comment = empty($vo['Comment']) ? $vo['Field'] : $vo['Comment'];
  56. if($vo['Field'] == 'id'){
  57. echo '<div class="layui-input-inline">
  58. <input type="text" name="ids" autocomplete="off" placeholder="请输入ID,多个id逗号分隔" class="layui-input layui-btn-sm">
  59. </div>';
  60. continue;
  61. }
  62. //输入框,文章段落,图片,复选框
  63. if(in_array($vo['Component'],[0,3,4,7])){
  64. echo '<div class="layui-input-inline">
  65. <input type="text" name="'.$vo['Field'].'" autocomplete="off" placeholder="'. $comment .'(模糊搜索)" class="layui-input layui-btn-sm">
  66. </div>';
  67. continue;
  68. }
  69. //数字
  70. if($vo['Component'] == 1){
  71. echo '<div class="layui-input-inline" style="width:100px">
  72. <input type="number" name="'.$vo['Field'].'" autocomplete="off" placeholder="'. $comment .'" class="layui-input layui-btn-sm">
  73. </div>';
  74. continue;
  75. }
  76. //时间
  77. if($vo['Component'] == 2){
  78. echo '<div class="layui-input-inline">
  79. <input type="text" class="layui-input time_range" id="time_range_'.$vo['Field'].'" autocomplete="off" placeholder="'. $comment .'" name="'.$vo['Field'].'">
  80. </div>';
  81. continue;
  82. }
  83. //开关,下拉框,单选
  84. if(in_array($vo['Component'],[5,6,8])){
  85. $arr = explode(':',$vo['Comment']);
  86. $comment = count($arr)==2 ? $arr[0] : ($vo['Component']==5 ? $vo['Comment'] : $vo['Field']);
  87. $options = count($arr)==2 ? $arr[1] : $arr[0];
  88. $option_arr = explode(',',$options);
  89. $option_html = '';
  90. foreach($option_arr as $option_item){
  91. $option_item_value = intval($option_item);
  92. $option_text = str_replace($option_item_value,'',$option_item);
  93. $option_html.= '<option value="'.$option_item_value.'">'.$option_text.'</option>';
  94. }
  95. echo '<div class="layui-input-inline" style="width: 100px">
  96. <select name="'.$vo['Field'].'" lay-search="">
  97. <option value="">'.$comment.'</option>
  98. '.$option_html.'
  99. </select>
  100. </div>';
  101. continue;
  102. }
  103. }
  104. {/php}
  105. <button class="layui-btn layui-btn-sm" lay-submit="" lay-filter="serch">立即提交</button>
  106. </div>
  107. </form>
  108. {if condition="array_key_exists('update',$crud) or array_key_exists('delete',$crud)"}
  109. <script type="text/html" id="barDemo">
  110. <div class="layui-btn-group">
  111. {if condition="array_key_exists('update',$crud)"}
  112. <button class="layui-btn layui-btn-xs a_menu" lay-event="edit"><i class="layui-icon" style="margin-right: 0;"></i></button>
  113. {/if}
  114. {if condition="array_key_exists('delete',$crud)"}
  115. <button class="layui-btn layui-btn-xs delete" lay-event="del"><i class="layui-icon" style="margin-right: 0;"></i></button>
  116. {/if}
  117. </div>
  118. </script>
  119. {/if}
  120. <table class="layui-table" id="table" lay-filter="table"></table>
  121. {literal}{include file="public/foot"}{/literal}
  122. <script type="text/javascript">
  123. layui.use(['table', 'layer', 'form','laydate'], function () {
  124. var table = layui.table,
  125. form = layui.form,
  126. layer = layui.layer;
  127. var laydate = layui.laydate;
  128. //第一个实例
  129. table.render({
  130. id: 'table'
  131. , elem: '#table'
  132. , size: 'sm' //小尺寸的表格
  133. {if condition="array_key_exists('sort',$fieldsInfo) or array_key_exists('delete',$crud)"}
  134. , toolbar: '#toolbarDemo'
  135. {/if}
  136. , limit: 15
  137. , limits: [15, 20, 30, 40, 50, 100]
  138. , url: "{literal}{:url('{/literal}index{literal}')}{/literal}" //数据接口
  139. , page: true //开启分页
  140. , cols: [[ //表头
  141. {type: 'checkbox'},
  142. {volist name="$fieldsInfo" id="vo"}
  143. {php}
  144. if(empty($vo['ShowList'])){
  145. continue;
  146. }
  147. $comment = empty($vo['Comment']) ? $vo['Field'] : $vo['Comment'];
  148. {/php}
  149. {if condition="$vo['Field'] == 'id'"}
  150. {field: 'id', title: 'ID', width: 60},
  151. {php}continue;{/php}
  152. {/if}
  153. {if condition="$vo['Field'] == 'sort'"}
  154. {field: 'sort', title: '排序', width: 60, templet: function (row) {
  155. return '<input type="text" name="sorts[]" value="' + row.sort + '" style="width: 20px;" class="sort"><input type="hidden" name="ids[]" value="' + row.id + '">';
  156. }},
  157. {php}continue;{/php}
  158. {/if}
  159. {if condition="$vo['Component'] == 4"}
  160. {php}//图片{/php}
  161. {field: "{$vo['Field']}", title: '{$comment}', width: 70, align: 'center', templet: function (row) {
  162. return (row.{$vo['Field']}_url == '') ? '' : '<a href="' + row.{$vo['Field']}_url + '" class="tooltip" target="_blank"><img src="' + row.{$vo['Field']}_url + '"></a>';
  163. }},
  164. {php}continue;{/php}
  165. {/if}
  166. {if condition="$vo['Component'] == 5"}
  167. {php}//开关
  168. $arr = explode(':',$vo['Comment']);
  169. $comment = count($arr)==2 ? $arr[0] : $vo['Field'];
  170. {/php}
  171. {field: "{$vo['Field']}", title: '{$comment}', width: 60, templet: function (row) {
  172. return '<a href="javascript:;" style="font-size:18px;" class="{$vo['Field']}" data-id="' + row.id + '" data-val="' + row.{$vo['Field']} + '">' + (row.{$vo['Field']} == 1 ? '<i class="fa fa-toggle-on"></i>' : '<i class="fa fa-toggle-off"></i>') + '</a>';
  173. }},
  174. {php}continue;{/php}
  175. {/if}
  176. {if condition="in_array($vo['Component'],[0,1,2,3,6,7,8])"}
  177. {php}//输入框,数字,时间,文章段落,下拉框,复选框,单选
  178. if(in_array($vo['Component'],[6,7,8])){
  179. $arr = explode(':',$vo['Comment']);
  180. $comment = count($arr)==2 ? $arr[0] : $vo['Field'];
  181. }
  182. {/php}
  183. {field: "{$vo['Field']}", title: '{$comment}'},
  184. {php}continue;{/php}
  185. {/if}
  186. {/volist}
  187. {if condition="array_key_exists('update',$crud) or array_key_exists('delete',$crud)"}
  188. {field: 'action', title: '操作', toolbar: '#barDemo', fixed: 'right'}
  189. {/if}
  190. ]],
  191. done: function () {
  192. if (isExitsFunction('showThumb')) {
  193. showThumb()
  194. }
  195. {volist name="$fieldsInfo" id="vo"}
  196. {if condition="$vo['Component'] == 5 && !empty($vo['ShowList'])"}
  197. switchStatus('.{$vo['Field']}', "{literal}{:url('{/literal}{$vo['Field']}{literal}')}{/literal}");
  198. {/if}
  199. {/volist}
  200. }
  201. });
  202. {volist name="$fieldsInfo" id="vo"}
  203. {if condition="$vo['Component'] == 2 && !empty($vo['ShowSearch'])"}
  204. laydate.render({
  205. elem: '#time_range_{$vo['Field']}'
  206. , type: 'datetime'
  207. , range: true
  208. , max: 0 //最大值0天后
  209. , theme: 'molv'
  210. , calendar: true
  211. , done: function (value, date, endDate) {
  212. if (endDate.hours == 0 && endDate.minutes == 0 && endDate.seconds == 0) {
  213. setTimeout(function () {
  214. $('#time_range_{$vo['Field']}').val(value.replace(/00:00:00$/, '23:59:59'))
  215. }, 100)
  216. }
  217. }
  218. });
  219. {/if}
  220. {/volist}
  221. form.on('submit(serch)', function (data) {
  222. table.reload('table', {
  223. where: data.field
  224. , page: {
  225. curr: 1 //重新从第 1 页开始
  226. }
  227. });
  228. return false;
  229. });
  230. {if condition="array_key_exists('update',$crud) or array_key_exists('delete',$crud)"}
  231. table.on('tool(table)', function (obj) {
  232. if (obj.event == 'edit') {
  233. {if condition="array_key_exists('update',$crud)"}
  234. window.parent.tab.tabAdd({
  235. icon: "fa-bookmark",
  236. id: "{$tableName}" + obj.data.id,
  237. title: obj.data.title == null ? "{$menuName}" + obj.data.id : obj.data.title,
  238. url: "/admin/{$underLineName}/publish?id=" + obj.data.id
  239. });
  240. {/if}
  241. }
  242. {if condition="array_key_exists('delete',$crud)"}
  243. else if (obj.event == 'del') {
  244. layer.confirm('确定要删除?', function (index) {
  245. $.ajax({
  246. url: "{literal}{:url('{/literal}delete{literal}')}{/literal}",
  247. dataType: 'json',
  248. data: {id: obj.data.id},
  249. success: function (res) {
  250. layer.msg(res.msg);
  251. if (res.code == 1) {
  252. table.reload('table');
  253. }
  254. }
  255. })
  256. })
  257. }
  258. {/if}
  259. });
  260. {/if}
  261. {if condition="array_key_exists('delete',$crud)"}
  262. //监听事件
  263. table.on('toolbar(table)', function (obj) {
  264. if (obj.event == 'deletes') {
  265. var checkStatus = table.checkStatus(obj.config.id);//获取选中的数据
  266. var data = checkStatus.data;
  267. if (data.length > 0) {
  268. var ids = [];//数组
  269. data.forEach(function (item, key) {
  270. ids[key] = item.id;
  271. })
  272. layer.confirm('是否删除?', function (index, layero) {
  273. $.ajax({
  274. url: "{literal}{:url('{/literal}deletes{literal}')}{/literal}",
  275. dataType: 'json',
  276. data: {"ids": ids},
  277. type: 'post',
  278. success: function (res) {
  279. layer.msg(res.msg);
  280. if (res.code == 1) {
  281. table.reload('table');
  282. }
  283. }
  284. })
  285. layer.close(index)
  286. });
  287. } else {
  288. layer.msg('请先勾选需要操作的记录');
  289. }
  290. }
  291. });
  292. {/if}
  293. });
  294. </script>
  295. {if condition="array_key_exists('sort',$fieldsInfo)"}
  296. <script>
  297. // 排序
  298. layui.use(['layer', 'form'], function () {
  299. var layer = layui.layer,
  300. $ = layui.jquery,
  301. form = layui.form;
  302. $(window).on('load', function () {
  303. form.on('submit(admin)', function (data) {
  304. $sort_eles = $('.sort');
  305. $data = {};
  306. if ($sort_eles.length > 0) {
  307. for (var i = 0; i < $sort_eles.length; i++) {
  308. $data['sorts[' + i + ']'] = $sort_eles[i].value;
  309. $data['ids[' + i + ']'] = $sort_eles[i].nextSibling.value;
  310. }
  311. }
  312. console.log($data)
  313. $.ajax({
  314. url: "{literal}{:url('{/literal}sort{literal}')}{/literal}",
  315. data: $data,
  316. type: 'post',
  317. async: false,
  318. success: function (res) {
  319. if (res.code == 1) {
  320. layer.alert(res.msg, function (index) {
  321. location.reload();
  322. })
  323. } else {
  324. layer.msg(res.msg);
  325. }
  326. }
  327. })
  328. return false;
  329. });
  330. });
  331. });
  332. </script>
  333. {/if}
  334. </div>
  335. </body>
  336. </html>