You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

322 rivejä
16 KiB

  1. <script>var pt_nr=/\s+/</script>
  2. <div class="layui-layout layui-layout-admin">
  3. <div class="layui-header">
  4. <!-- 头部区域 -->
  5. <ul class="layui-nav layui-layout-left">
  6. <li class="layui-nav-item layadmin-flexible" lay-unselect>
  7. <a href="javascript:;" layadmin-event="flexible" title="侧边伸缩">
  8. <i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
  9. </a>
  10. </li>
  11. <!--<li class="layui-nav-item layui-this layui-hide-xs layui-hide-sm layui-show-md-inline-block">
  12. <a lay-href="" title="">
  13. 控制台
  14. </a>
  15. </li>-->
  16. <li class="layui-nav-item layui-hide-xs" lay-unselect>
  17. <a href="/" target="_blank" title="查看网站">
  18. <i class="layui-icon layui-icon-website"></i>
  19. </a>
  20. </li>
  21. <li class="layui-nav-item" lay-unselect>
  22. <a href="javascript:;" layadmin-event="refresh" title="刷新">
  23. <i class="layui-icon layui-icon-refresh-3"></i>
  24. </a>
  25. </li>
  26. </ul>
  27. <ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right">
  28. <li class="layui-nav-item layui-hide-xs" lay-unselect>
  29. <a href="javascript:;" layadmin-event="pinyin" title="拼音转换">
  30. <i class="layui-icon layui-icon-template"></i>
  31. </a>
  32. </li>
  33. <li class="layui-nav-item layui-hide-xs" lay-unselect>
  34. <a href="javascript:;" layadmin-event="theme" title="配色方案">
  35. <i class="layui-icon layui-icon-theme"></i>
  36. </a>
  37. </li>
  38. <li class="layui-nav-item layui-hide-xs" lay-unselect>
  39. <a href="javascript:;" layadmin-event="note" title="便签">
  40. <i class="layui-icon layui-icon-note"></i>
  41. </a>
  42. </li>
  43. <li class="layui-nav-item layui-hide-xs" lay-unselect>
  44. <a href="javascript:;" layadmin-event="fullscreen">
  45. <i class="layui-icon layui-icon-screen-full"></i>
  46. </a>
  47. </li>
  48. <li class="layui-nav-item" lay-unselect>
  49. <script type="text/html" template lay-url="/manage/user/info.json?v={{ layui.admin.v }}"
  50. lay-done="layui.element.render('nav', 'layadmin-layout-right');">
  51. <a href="javascript:;">
  52. <cite>{{ d.data.username }}</cite>
  53. </a>
  54. <dl class="layui-nav-child">
  55. <dd><a lay-href="set/user/info">基本资料</a></dd>
  56. <dd><a lay-href="set/user/password">修改密码</a></dd>
  57. <hr>
  58. <dd layadmin-event="logout" style="text-align: center;"><a>退出</a></dd>
  59. </dl>
  60. </script>
  61. </li>
  62. <li class="layui-nav-item layui-hide-xs" lay-unselect>
  63. <a href="javascript:;" layadmin-event="about"><i class="layui-icon layui-icon-more-vertical"></i></a>
  64. </li>
  65. <li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-unselect>
  66. <a href="javascript:;" layadmin-event="more"><i class="layui-icon layui-icon-more-vertical"></i></a>
  67. </li>
  68. </ul>
  69. </div>
  70. <!-- 侧边菜单 -->
  71. <div class="layui-side layui-side-menu">
  72. <div class="layui-side-scroll">
  73. <script type="text/html" template lay-url="/manage/system/menu/left.json?v={{ layui.admin.v }}"
  74. lay-done="layui.element.render('nav', 'layadmin-system-side-menu');" id="TPL_layout">
  75. <div class="layui-logo" lay-href="">
  76. <span>{{ layui.setter.name || 'layuiAdmin' }}</span>
  77. </div>
  78. <ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-menu" lay-filter="layadmin-system-side-menu">
  79. {{#
  80. var path = layui.router().path
  81. ,pathURL = layui.admin.correctRouter(path.join('/'))
  82. ,dataName = layui.setter.response.dataName;
  83. layui.each(d[dataName], function(index, item){
  84. var hasChildren = typeof item.list === 'object' && item.list.length > 0
  85. ,classSelected = function(){
  86. var match =(path[0] == item.name || (index == 0 && !path[0])
  87. || (item.jump && pathURL == layui.admin.correctRouter(item.jump)) || item.spread);
  88. if(match){
  89. return hasChildren ? 'layui-nav-itemed' : 'layui-this';
  90. }
  91. return '';
  92. }
  93. ,url = (item.jump && typeof item.jump === 'string') ? item.jump : item.name;
  94. }}
  95. <li data-name="{{ item.name || '' }}" data-jump="{{ item.jump || '' }}" class="layui-nav-item {{ classSelected() }}">
  96. <a href="javascript:;" {{ hasChildren ? '' : 'lay-href="'+ url +'"' }} lay-tips="{{ item.title }}" lay-direction="2">
  97. <i class="layui-icon {{ item.icon }}"></i>
  98. <cite>{{ item.title }}</cite>
  99. </a>
  100. {{# if(hasChildren){ }}
  101. <dl class="layui-nav-child">
  102. {{# layui.each(item.list, function(index2, item2){
  103. var hasChildren2 = typeof item2.list == 'object' && item2.list.length > 0
  104. ,classSelected2 = function(){
  105. var match = path.length>0 && ((path[0] == item.name && path[1] == item2.name)
  106. || (item2.jump && pathURL == layui.admin.correctRouter(item2.jump)) || item2.spread);
  107. if(match){
  108. return hasChildren2 ? 'layui-nav-itemed' : 'layui-this';
  109. }
  110. return '';
  111. }
  112. ,url2 = (item2.jump && typeof item2.jump === 'string')
  113. ? item2.jump
  114. : [item.name, item2.name, ''].join('/');
  115. }}
  116. <dd data-name="{{ item2.name || '' }}" data-jump="{{ item2.jump || '' }}"
  117. {{ classSelected2() ? ('class="'+ classSelected2() +'"') : '' }}>
  118. <a href="javascript:;" {{ hasChildren2 ? '' : 'lay-href="'+ url2 +'"' }}>{{ item2.title }}</a>
  119. {{# if(hasChildren2){ }}
  120. <dl class="layui-nav-child">
  121. {{# layui.each(item2.list, function(index3, item3){
  122. var match = path.length>0 && ((path[0] == item.name && path[1] == item2.name && path[2] == item3.name)
  123. || (item3.jump && pathURL == layui.admin.correctRouter(item3.jump)))
  124. ,url3 = (item3.jump && typeof item3.jump === 'string')
  125. ? item3.jump
  126. : [item.name, item2.name, item3.name].join('/')
  127. }}
  128. <dd data-name="{{ item3.name || '' }}" data-jump="{{ item3.jump || '' }}"
  129. {{ match ? 'class="layui-this"' : '' }}>
  130. <a href="javascript:;" lay-href="{{ url3 }}" {{ item3.iframe ? 'lay-iframe="true"' : '' }}>{{ item3.title }}</a>
  131. </dd>
  132. {{# }); }}
  133. </dl>
  134. {{# } }}
  135. </dd>
  136. {{# }); }}
  137. </dl>
  138. {{# } }}
  139. </li>
  140. {{# }); }}
  141. </ul>
  142. </script>
  143. </div>
  144. </div>
  145. <!-- 页面标签 -->
  146. <script type="text/html" template lay-done="layui.element.render('nav', 'layadmin-pagetabs-nav')">
  147. {{# if(layui.setter.pageTabs){ }}
  148. <div class="layadmin-pagetabs" id="LAY_app_tabs">
  149. <div class="layui-icon layadmin-tabs-control layui-icon-prev" layadmin-event="leftPage"></div>
  150. <div class="layui-icon layadmin-tabs-control layui-icon-next" layadmin-event="rightPage"></div>
  151. <div class="layui-icon layadmin-tabs-control layui-icon-down">
  152. <ul class="layui-nav layadmin-tabs-select" lay-filter="layadmin-pagetabs-nav">
  153. <li class="layui-nav-item" lay-unselect>
  154. <a href="javascript:;"></a>
  155. <dl class="layui-nav-child layui-anim-fadein">
  156. <dd layadmin-event="closeThisTabs"><a href="javascript:;">关闭当前标签页</a></dd>
  157. <dd layadmin-event="closeOtherTabs"><a href="javascript:;">关闭其它标签页</a></dd>
  158. <dd layadmin-event="closeAllTabs"><a href="javascript:;">关闭全部标签页</a></dd>
  159. </dl>
  160. </li>
  161. </ul>
  162. </div>
  163. <div class="layui-tab" lay-unauto lay-allowClose="true" lay-filter="layadmin-layout-tabs">
  164. <ul class="layui-tab-title" id="LAY_app_tabsheader">
  165. <li lay-id="/"><i class="layui-icon layui-icon-home"></i></li>
  166. </ul>
  167. </div>
  168. </div>
  169. {{# } }}
  170. </script>
  171. <!-- 主体内容 -->
  172. <div class="layui-body" id="LAY_app_body">
  173. <div class="layadmin-tabsbody-item layui-show"></div>
  174. </div>
  175. <!-- 辅助元素,一般用于移动设备下遮罩 -->
  176. <div class="layadmin-body-shade" layadmin-event="shade"></div>
  177. <!-- 添加页/编辑页/设定页 模板 -->
  178. <script id="tplField" type="text/html">
  179. {{# d.style = typeof d.style ==='undefined'?'':d.style}}
  180. {{# if(d.type == 'hidden' || d.type == 'hide'){ }}
  181. <input type="hidden" name="{{d.key}}" value="{{d.value?d.value:''}}">
  182. {{# }else if(d.type == 'set'){ }}
  183. <fieldset class="layui-elem-field layui-field-title {{d.style}}" {{=d.color?'style="border-color: '+d.color+';color: '+d.color+'"':''}}><legend >{{d.name}}</legend></fieldset>
  184. {{# }else if(d.type == 'quote'){ }}
  185. <blockquote class="layui-elem-quote {{d.style}}">{{d.name}}</blockquote>
  186. {{# }else{ }}
  187. {{# var isdisabled=d.disabled?'disabled':''}}
  188. <div class="layui-form-item {{d.style}}">
  189. <label class="layui-form-label">{{d.name}}{{#if(d.require){}} <span style="color: #ff5555;">*</span>{{#}}}</label>
  190. <div class="layui-input-block">
  191. {{# if(d.type == 'num'){ }}
  192. <input type="number" name="{{d.key}}" value="{{d.verify?d.verify:(typeof d.value==='number'?d.value:'')}}" {{d.filter?'lay-filter="'+d.filter+'"':''}} class="layui-input" {{isdisabled}}>
  193. {{# }else if(d.type == 'date'){ }}
  194. <input type="text" name="{{d.key}}" value="{{ d.value?d.value:'' }}" class="layui-input" {{isdisabled}} id="date-{{ d.key }}">
  195. {{# }else if(d.type == 'datetime'){}}
  196. <input type="text" name="{{d.key}}" value="{{ d.value?d.value:'' }}" class="layui-input" {{isdisabled}} id="datetime-{{ d.key }}">
  197. {{# }else if(d.type == 'text'){ }}
  198. {{# var match = d.key.match(/(phone|email|identity)/) }}
  199. <input type="text" name="{{d.key}}" lay-verify="{{d.verify?d.verify:(match && match.length > 1 ? match[0] : '')}}" value="{{=d.value?d.value:''}}" {{d.filter?'lay-filter="'+d.filter+'"':''}} class="layui-input" {{isdisabled}}>
  200. {{# }else if(d.type == 'radio'){ }}
  201. {{# var value,title,values = d.extra.split(pt_nr) }}
  202. <div>
  203. {{# layui.each(values, function(i, item){ }}
  204. {{# item = item.split(':');}}
  205. {{# if(item.length >= 2){ }}
  206. {{# value = item[0];item.shift(0);title=item.join(':')}}
  207. <input type="radio" name="{{d.key}}" value="{{value}}" title="{{title}}" {{d.filter?'lay-filter="'+d.filter+'"':''}} {{d.value && d.value==value?'checked':''}}>
  208. {{# } }}
  209. {{# }); }}
  210. </div>
  211. {{# }else if(d.type == 'checkbox'){ }}
  212. {{# var value,title,values = d.extra.split(pt_nr)}}
  213. <div >
  214. {{# layui.each(values, function(i, item){ }}
  215. {{# item = item.split(':');}}
  216. {{# if(item.length >= 2){ }}
  217. {{# value = item[0];item.shift();title=item.join(':')}}
  218. <input type="checkbox" name="{{d.key}}[]" value="{{value}}" title="{{title}}" {{d.filter?'lay-filter="'+d.filter+'"':''}} {{=d.value && d.value==value?'checked':''}}>
  219. {{# } }}
  220. {{# }); }}
  221. </div>
  222. {{# }else if(d.type == 'textarea'){ }}
  223. <textarea name="{{d.key}}" placeholder="请输入{{d.name}}" class="layui-textarea" {{d.filter?'lay-filter="'+d.filter+'"':''}} {{isdisabled}}>{{=d.value?d.value:''}}</textarea>
  224. {{# }else if(d.type == 'editor'){ }}
  225. <textarea name="{{d.key}}" class="layui-hide" {{d.filter?'lay-filter="'+d.filter+'"':''}} {{isdisabled}}>{{=d.value?d.value:''}}</textarea>
  226. <div id="editor_box_{{d.key}}"></div>
  227. {{# }else if(d.type == 'array'){ }}
  228. <textarea name="{{d.key}}" placeholder="请输入{{d.name}}" class="layui-textarea" {{d.filter?'lay-filter="'+d.filter+'"':''}} {{isdisabled}}>{{=d.value?d.value:''}}</textarea>
  229. {{# }else if(d.type == 'select'){ }}
  230. {{# d.extra = typeof d.extra == 'object' ? d.extra : JSON.parse(d.extra) ;}}
  231. <select name="{{d.key}}" lay-search {{d.filter?'lay-filter="'+d.filter+'"':''}} {{isdisabled}}>
  232. <option value=""></option>
  233. {{# layui.each(d.extra, function(k, v){ }}
  234. <option value="{{k}}" {{=d.value && d.value==k?'selected':''}}>{{v}}</option>
  235. {{# }); }}
  236. </select>
  237. {{# }else if(d.type == 'switch'){ }}
  238. <div>
  239. <input type="checkbox" name="{{d.key}}" lay-skin="switch" lay-text="{{= d.extra ? d.extra : '开启|关闭'}}" value="1" {{d.filter?'lay-filter="'+d.filter+'"':''}} {{d.value == 1 || d.checked ? 'checked' : ''}} {{isdisabled}}>
  240. </div>
  241. {{# }else if(d.type == 'label'){ }}
  242. <input type="text" name="{{d.key}}" value="{{=d.value?d.value:''}}" class="layui-input" style="border: none;" disabled {{d.filter?'lay-filter="'+d.filter+'"':''}}>
  243. {{# }else if(d.type == 'password'){ }}
  244. <input type="password" name="{{d.key}}" value="" placeholder="{{=d.placeholder?d.placeholder:'请输入'+d.name}}" class="layui-input" {{d.filter?'lay-filter="'+d.filter+'"':''}} {{isdisabled}}>
  245. {{# }else if(d.type == 'slider'){ }}
  246. <input type="hidden" name="{{d.key}}" value="" class="layui-input" {{d.filter?'lay-filter="'+d.filter+'"':''}}>
  247. <div id="slider_{{d.key}}" style="top: 16px;"></div>
  248. {{# }else if(d.type == 'rate'||d.type == 'star'){ }}
  249. <div id="rate_box_{{d.key}}"></div>
  250. <input id="rate_input_{{d.key}}" name="{{d.key}}" type="hidden" value="{{=d.value?d.value:''}}">
  251. {{# }else if(d.type == 'img'||d.type == 'file'){ }}
  252. <div>
  253. <div class="layui-col-md10">
  254. <input type="text" name="{{d.key}}" lay-verify="url" value="{{=d.value?d.value:''}}" {{d.readonly?'readonly="readonly"':''}} {{d.filter?'lay-filter="'+d.filter+'"':''}} class="layui-input">
  255. </div>
  256. <div class="layui-col-md2">
  257. <button type="button" class="layui-btn" id="btn_upload_{{d.key}}" style="width: 100%;">
  258. <i class="{{d.icon?d.icon:'layui-icon'}}"></i>{{d.text?d.text:'上传'}}
  259. </button>
  260. </div>
  261. </div>
  262. {{# }else if(d.type == 'imgs'){ }}
  263. <div class="img_upload_box">
  264. <div class="img_file_box" id="img_file_{{d.key}}"></div>
  265. <div class="img_preview_box" id="img_preview_{{d.key}}">
  266. <button type="button" class="layui-btn" id="btn_upload_{{d.key}}"><i class="layui-icon">&#xe67c;</i>上传</button>
  267. </div>
  268. <div class="layui-form-mid layui-word-aux"></div>
  269. </div>
  270. {{# } }}
  271. {{# if(d.intro){ }}
  272. <div class="layui-form-mid layui-word-aux">{{d.intro}}</div>
  273. {{# } }}
  274. </div>
  275. </div>
  276. {{# } }}
  277. </script>
  278. <!-- 列表页 模板 -->
  279. <script type="text/html" id="table-switch">
  280. <input type="checkbox" lay-skin="switch" lay-text="{{=d.CONFIG.text?d.CONFIG.text:'开启|关闭'}}" lay-filter="table-switch" data-field="{{d.FIELD}}" value="{{d.id}}" {{d.VALUE == 1 ? 'checked' : '' }} {{=d.CONFIG.disabled?'disabled':''}}>
  281. </script>
  282. <script type="text/html" id="table-curd-list">
  283. <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
  284. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
  285. </script>
  286. <script type="text/html" id="table-img">
  287. <img src="{{d.VALUE}}">
  288. </script>
  289. <script type="text/html" id="table-label">
  290. {{#
  291. var data = typeof d.CONFIG.data === 'object' ? d.CONFIG.data : JSON.parse(d.CONFIG.data);
  292. var text = data[d.VALUE] ? data[d.VALUE] : '未知'
  293. }}
  294. {{ text }}
  295. </script>
  296. <script type="text/html" id="table-timestamp">
  297. {{#
  298. var time = new Date(d.VALUE*1000),
  299. y = time.getFullYear(),
  300. m = time.getMonth()+1,
  301. d = time.getDate(),
  302. h = time.getHours(),
  303. mm = time.getMinutes(),
  304. s = time.getSeconds();
  305. var date = y+'-'+(m<10?'0'+m:m)+'-'+(d<10?'0'+d:d)+' '+(h<10?'0'+h:h)+':'+(mm<10?'0'+mm:mm)+':'+(s<10?'0'+s:s);
  306. }}
  307. {{date}}
  308. </script>
  309. </div>