view.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. /** layuiAdmin.std-v1.0.0 LPPL License By http://www.layui.com/admin/ */
  2. ;
  3. layui.define(['laytpl',
  4. 'layer'], function (e) {
  5. var t = layui.jquery,
  6. n = layui.laytpl,
  7. a = layui.layer,
  8. r = layui.setter,
  9. o = (layui.device(), layui.hint()),
  10. i = function (e) {
  11. return new d(e)
  12. },
  13. s = 'LAY_app_body',
  14. d = function (e) {
  15. this.id = e,
  16. this.container = t('#' + (e || s))
  17. };
  18. i.loading = function (e) {
  19. e.append(this.elemLoad = t('<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon layui-icon-loading layadmin-loading"></i>'))
  20. },
  21. i.removeLoad = function () {
  22. this.elemLoad && this.elemLoad.remove()
  23. },
  24. i.exit = function (e) {
  25. layui.data(r.tableName, {
  26. key: r.request.tokenName,
  27. remove: !0
  28. }),
  29. e && e()
  30. },
  31. i.req = function (e) {
  32. var n = e.success,
  33. a = (e.error, r.request),
  34. o = r.response,
  35. s = function () {
  36. return r.debug ? '<br><cite>URL:</cite>' + e.url : ''
  37. };
  38. return e.data = e.data || {
  39. },
  40. e.headers = e.headers || {
  41. },
  42. a.tokenName && (e.data[a.tokenName] = a.tokenName in e.data ? e.data[a.tokenName] : layui.data(r.tableName) [a.tokenName] || '', e.headers[a.tokenName] = a.tokenName in e.headers ? e.headers[a.tokenName] : layui.data(r.tableName) [a.tokenName] || ''),
  43. delete e.success,
  44. delete e.error,
  45. t.ajax(t.extend({
  46. type: 'get',
  47. dataType: 'json',
  48. success: function (t) {
  49. var a = o.statusCode;
  50. if (t[o.statusName] == a.ok)
  51. 'function' == typeof e.done && e.done(t);
  52. else if (t[o.statusName] == a.logout) i.exit();
  53. else {
  54. var r = [
  55. '<cite>Error:</cite> ' + (t[o.msgName] || '返回状态码异常'),
  56. s()
  57. ].join('');
  58. i.error(r)
  59. }
  60. 'function' == typeof n && n(t)
  61. },
  62. error: function (e, t) {
  63. var n = [
  64. '请求异常,请重试<br><cite>错误信息:</cite>' + t,
  65. s()
  66. ].join('');
  67. i.error(n),
  68. 'function' == typeof n && n(res)
  69. }
  70. }, e))
  71. },
  72. i.popup = function (e) {
  73. var n = e.success,
  74. r = e.skin;
  75. return delete e.success,
  76. delete e.skin,
  77. a.open(t.extend({
  78. type: 1,
  79. title: '提示',
  80. content: '',
  81. id: 'LAY-system-view-popup',
  82. skin: 'layui-layer-admin' + (r ? ' ' + r : ''),
  83. shadeClose: !0,
  84. closeBtn: !1,
  85. success: function (e, r) {
  86. var o = t('<i class="layui-icon" close>&#x1006;</i>');
  87. e.append(o),
  88. o.on('click', function () {
  89. a.close(r)
  90. }),
  91. 'function' == typeof n && n.apply(this, arguments)
  92. }
  93. }, e))
  94. },
  95. i.error = function (e, n) {
  96. return i.popup(t.extend({
  97. content: e,
  98. maxWidth: 300,
  99. offset: 't',
  100. anim: 6,
  101. id: 'LAY_adminError'
  102. }, n))
  103. },
  104. d.prototype.render = function (e, n) {
  105. var a = this;
  106. layui.router();
  107. return e = r.views + e + r.engine,
  108. t('#' + s).children('.layadmin-loading').remove(),
  109. i.loading(a.container),
  110. t.ajax({
  111. url: e,
  112. type: 'get',
  113. dataType: 'html',
  114. data: {
  115. v: layui.cache.version
  116. },
  117. success: function (e) {
  118. e = '<div>' + e + '</div>';
  119. var r = t(e).find('title'),
  120. o = r.text() || (e.match(/\<title\>([\s\S]*)\<\/title>/) || [
  121. ]) [1],
  122. s = {
  123. title: o,
  124. body: e
  125. };
  126. r.remove(),
  127. a.params = n || {
  128. },
  129. a.then && (a.then(s), delete a.then),
  130. a.parse(e),
  131. i.removeLoad(),
  132. a.done && (a.done(s), delete a.done)
  133. },
  134. error: function (e) {
  135. return i.removeLoad(),
  136. a.render.isError ? i.error('请求视图文件异常,状态:' + e.status) : (404 === e.status ? a.render('template/tips/404') : a.render('template/tips/error'), void (a.render.isError = !0))
  137. }
  138. }),
  139. a
  140. },
  141. d.prototype.parse = function (e, a, r) {
  142. var s = this,
  143. d = 'object' == typeof e,
  144. l = d ? e : t(e),
  145. u = d ? e : l.find('*[template]'),
  146. c = function (e) {
  147. var a = n(e.dataElem.html());
  148. e.dataElem.after(a.render(t.extend({
  149. params: y.params
  150. }, e.res))),
  151. 'function' == typeof r && r();
  152. try {
  153. e.done && new Function('d', e.done) (e.res)
  154. } catch (o) {
  155. console.error(e.dataElem[0], '\n存在错误回调脚本\n\n', o)
  156. }
  157. },
  158. y = layui.router();
  159. l.find('title').remove(),
  160. s.container[a ? 'after' : 'html'](l.children()),
  161. y.params = s.params || {
  162. };
  163. for (var p = u.length; p > 0; p--) !function () {
  164. var e = u.eq(p - 1),
  165. t = e.attr('lay-done') || e.attr('lay-then'),
  166. a = n(e.attr('lay-url') || '').render(y),
  167. r = n(e.attr('lay-data') || '').render(y),
  168. s = n(e.attr('lay-headers') || '').render(y);
  169. try {
  170. r = new Function('return ' + r + ';') ()
  171. } catch (d) {
  172. o.error('lay-data: ' + d.message),
  173. r = {
  174. }
  175. }
  176. try {
  177. s = new Function('return ' + s + ';') ()
  178. } catch (d) {
  179. o.error('lay-headers: ' + d.message),
  180. s = s || {
  181. }
  182. }
  183. a ? i.req({
  184. type: e.attr('lay-type') || 'get',
  185. url: a,
  186. data: r,
  187. dataType: 'json',
  188. headers: s,
  189. success: function (n) {
  190. c({
  191. dataElem: e,
  192. res: n,
  193. done: t
  194. })
  195. }
  196. }) : c({
  197. dataElem: e,
  198. done: t
  199. })
  200. }();
  201. return s
  202. },
  203. d.prototype.autoRender = function (e, n) {
  204. var a = this;
  205. t(e || 'body').find('*[template]').each(function (e, n) {
  206. var r = t(this);
  207. a.container = r,
  208. a.parse(r, 'refresh')
  209. })
  210. },
  211. d.prototype.send = function (e, t) {
  212. var a = n(e || this.container.html()).render(t || {
  213. });
  214. return this.container.html(a),
  215. this
  216. },
  217. d.prototype.refresh = function (e) {
  218. var t = this,
  219. n = t.container.next(),
  220. a = n.attr('lay-templateid');
  221. return t.id != a ? t : (t.parse(t.container, 'refresh', function () {
  222. t.container.siblings('[lay-templateid="' + t.id + '"]:last').remove(),
  223. 'function' == typeof e && e()
  224. }), t)
  225. },
  226. d.prototype.then = function (e) {
  227. return this.then = e,
  228. this
  229. },
  230. d.prototype.done = function (e) {
  231. return this.done = e,
  232. this
  233. },
  234. e('view', i)
  235. });