index.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
  6. <meta http-equiv="Cache" content="no-cache">
  7. <meta http-equiv="Pragma" content="no-cache" />
  8. <meta http-equiv="Expires" content="0" />
  9. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  10. <title> 管理后台 </title>
  11. <!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
  12. <!--[if lt IE 9]>
  13. <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
  14. <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
  15. <![endif]-->
  16. <script>
  17. localStorage.setItem("moduleName", "wike_aging"); //模块名
  18. var href = window.location.href;
  19. if(href.indexOf('/addons/') != -1){
  20. localStorage.setItem("sysType", "W7");
  21. }else{
  22. localStorage.setItem("sysType", "");
  23. }
  24. localStorage.setItem("version","2.1.0.Release");//静态资源版本号
  25. // localStorage.setItem("sysType", "W7"); //系统类型
  26. if (localStorage.getItem("sysType") == 'W7') {
  27. localStorage.setItem("adminDomainModel", "false"); // /public/admin目录是否独立绑定域名模式
  28. localStorage.setItem("adminApiDomain", "/addons/" + localStorage.getItem("moduleName") +
  29. "/public/index.php"); // 请求后台接口的域名
  30. localStorage.setItem("adminDomain", "/addons/" + localStorage.getItem("moduleName") + "/public"); // 请求静态资源的域名
  31. localStorage.setItem("staticDomain", "/addons/" + localStorage.getItem("moduleName") +
  32. "/public/static"); // 请求静态资源的域名
  33. // if(localStorage.getItem("staticDomain")){
  34. document.write("<link rel='stylesheet' href='" + localStorage.getItem("staticDomain") +
  35. "/component/layui/css/layui.css?v=" + localStorage.getItem("version") + "'>");
  36. document.write("<link rel='stylesheet' href='" + localStorage.getItem("staticDomain") + "/admin/css/load.css?v=" +
  37. localStorage.getItem("version") + "'>");
  38. document.write("<link rel='stylesheet' href='" + localStorage.getItem("staticDomain") +
  39. "/admin/css/admin.css?v=" + localStorage.getItem("version") + "'>");
  40. // }
  41. } else {
  42. localStorage.setItem("adminDomainModel", "true"); // /public/admin目录是否独立绑定域名模式
  43. localStorage.setItem("adminApiDomain", ""); // 请求后台接口的域名
  44. localStorage.setItem("adminDomain", ""); //
  45. localStorage.setItem("staticDomain", "/static"); // 请求静态资源的域名
  46. document.write("<link rel='stylesheet' href='/static/component/layui/css/layui.css?v=" + localStorage.getItem(
  47. "version") + "'>");
  48. document.write("<link rel='stylesheet' href='/static/admin/css/load.css?v=" + localStorage.getItem("version") +
  49. "'>");
  50. document.write("<link rel='stylesheet' href='/static/admin/css/admin.css?v=" + localStorage.getItem("version") +
  51. "'>");
  52. }
  53. </script>
  54. </head>
  55. <!-- 结 构 代 码 -->
  56. <body class="layui-layout-body laytp-admin">
  57. <!-- 布 局 框 架 -->
  58. <div class="layui-layout layui-layout-admin">
  59. <div class="layui-header">
  60. <!-- 顶 部 左 侧 功 能 -->
  61. <ul class="layui-nav layui-layout-left">
  62. <li class="collaspe layui-nav-item"><a href="javascript:void(0);" class="layui-icon layui-icon-shrink-right"></a></li>
  63. <li class="refresh layui-nav-item"><a href="javascript:void(0);" class="layui-icon layui-icon-refresh-1" loading=600></a></li>
  64. </ul>
  65. <!-- 顶 部 右 侧 菜 单 -->
  66. <div id="control" class="layui-layout-control"></div>
  67. <ul class="layui-nav layui-layout-right">
  68. <li class="layui-nav-item layui-hide-xs"><a href="javascript:void(0);" class="fullScreen layui-icon layui-icon-screen-full"></a></li>
  69. <li class="layui-nav-item layui-hide-xs message"></li>
  70. <li class="layui-nav-item user alone-show" style="display:none">
  71. <!-- 头 像 -->
  72. <a href="javascript:;">
  73. <img class="layui-nav-img">
  74. </a>
  75. <!-- 功 能 菜 单 -->
  76. <dl class="layui-nav-child">
  77. <dd><a user-menu-url="/admin/admin/user/single.html" user-menu-id="999999999" user-menu-title="基本资料">基本资料</a></dd>
  78. <dd><a user-menu-url="/admin/update.html" user-menu-id="999999999" user-menu-title="基本资料">系统管理</a></dd>
  79. <dd><a href="javascript:void(0);" class="logout">退出登录</a></dd>
  80. </dl>
  81. </li>
  82. <!-- 主 题 配 置 -->
  83. <li class="layui-nav-item setting"><a href="javascript:void(0);" class="layui-icon layui-icon-more-vertical"></a></li>
  84. </ul>
  85. </div>
  86. <!-- 侧 边 区 域 -->
  87. <div class="layui-side layui-bg-black">
  88. <!-- 菜 单 顶 部 -->
  89. <div class="layui-logo">
  90. <!-- 图 标 -->
  91. <img class="logo" />
  92. <!-- 标 题 -->
  93. <span class="title"></span>
  94. </div>
  95. <!-- 菜 单 内 容 -->
  96. <div>
  97. <ul class="layui-nav arrow layui-nav-tree laytp-nav-tree" style="display: block;">
  98. <li class="layui-nav-item">
  99. <div class="search">
  100. <input type="text" class="layui-input search-menu" placeholder="搜索菜单">
  101. </div>
  102. </li>
  103. </ul>
  104. </div>
  105. <div class="layui-side-scroll">
  106. <div id="sideMenu"></div>
  107. </div>
  108. <div class="w7c-show" style="position:fixed;bottom:0px;left:0;display:none;">
  109. <a class="site-demo-active" style="color:#777" plateform-menu-url="/addons/wike_chatgpt/public/admin/update.html" plateform-menu-id="888" plateform-menu-title="云更新" href="javascript:;"><i class="layui-icon layui-icon-template"></i><span>云更新</span></a>
  110. </div>
  111. </div>
  112. <!-- 视 图 页 面 -->
  113. <div class="layui-body">
  114. <!-- 内 容 页 面 -->
  115. <div id="content"></div>
  116. <div class="footer w7-show" style="text-align:center;display:none">Powered by <a href="http://www.w7.cc"><b>微擎</b></a> </div>
  117. </div>
  118. <!-- 遮 盖 层 -->
  119. <div class="laytp-cover"></div>
  120. <!-- 加 载 动 画-->
  121. <div class="loader-main">
  122. <div class="loader"></div>
  123. </div>
  124. </div>
  125. <!-- 移 动 端 便 捷 操 作 -->
  126. <div class="laytp-collasped-pe collaspe">
  127. <a href="javascript:void(0);" class="layui-icon layui-icon-shrink-right"></a>
  128. </div>
  129. <!-- 依 赖 脚 本 -->
  130. <script>
  131. if(localStorage.getItem("staticDomain")){
  132. document.write("<script src='" + localStorage.getItem("staticDomain") + "/component/layui/layui.js?v="+localStorage.getItem("version")+"'><\/script>");
  133. document.write("<script src='" + localStorage.getItem("staticDomain") + "/component/laytp/layuiConfig.js?v="+localStorage.getItem("version")+"'><\/script>");
  134. }else{
  135. document.write("<script src='/static/component/layui/layui.js?v="+localStorage.getItem("version")+"'><\/script>");
  136. document.write("<script src='/static/component/laytp/layuiConfig.js?v="+localStorage.getItem("version")+"'><\/script>");
  137. }
  138. </script>
  139. <!-- 框 架 初 始 化 -->
  140. <script>
  141. window.ltVersion = '2.1.0';
  142. layui.use(['laytp','admin','popup','context'], function() {
  143. var context = layui.context;
  144. if(localStorage.getItem("sysType") == 'W7'){
  145. $('.w7-show').show();
  146. } else {
  147. $('.alone-show').show();
  148. }
  149. // ajax请求,更新缓存
  150. facade.ajax({route: '/admin.admin.user/loginInfo',successAlert:false}).done(function(res){
  151. // console.log(res['code']);
  152. if (res['code'] === 0) {
  153. sessionStorage.clear();
  154. ltVersion = res.data.ltVersion;
  155. context.put("user", res.data.user);
  156. context.put("authList", res.data.authList);
  157. context.put("pluginConf", res.data.pluginConf);
  158. context.put("copyRight", res.data.copyRight);
  159. context.put("defaultTableToolbar",['add', 'edit', 'del', 'search', 'recycle', 'refresh', 'recycle-refresh', 'recycle-search', 'restore', 'true-del']);
  160. //数据表格每行的操作列按钮
  161. context.put("defaultTableTool",['detail', 'edit', 'del', 'restore', 'true-del']);
  162. let footerText = '';
  163. if(res.data.copyRight){
  164. if(res.data.copyRight.footerleft){
  165. footerText = res.data.copyRight.company + res.data.copyRight.footerleft
  166. } else {
  167. if(res.data.w7Type == 'W7SAAS'){
  168. footerText = '<div class="friend-link"><a href="http://www.w7.cc">微信开发</a><a href="http://s.w7.cc">微信应用</a><a href="http://s.w7.cc">小程序开发</a></div><div>Powered by <a href="http://www.w7.cc"><b>微擎</b></a>&copy; 2014-2022 <a href="http://www.w7.cc">www.w7.cc</a></div>'
  169. }
  170. if(res.data.isr == '1'){
  171. localStorage.setItem("adminApiDomain", "/addons/" + localStorage.getItem("moduleName") +
  172. "/public/"); // 请求后台接口的域名
  173. }
  174. }
  175. }
  176. if(res.data.w7Type == 'W7C'){
  177. $('.w7c-show').show();
  178. }
  179. $('.footer').html(footerText)
  180. // 初始化顶部用户信息
  181. var user = res.data.user;
  182. if(user){
  183. layui.admin.setAvatar(user.avatar_file.path,user.nickname);
  184. }else{
  185. facade.redirect("/admin/login.html");
  186. return false;
  187. }
  188. layui.admin.setConfigType("yml");
  189. var laytpConfigYmlPath= '';
  190. if(localStorage.getItem("staticDomain")){
  191. laytpConfigYmlPath = localStorage.getItem("staticDomain") + "/component/laytp/config/laytp.config.yml?v=" + localStorage.getItem("version");
  192. }else{
  193. laytpConfigYmlPath = "/static/component/laytp/config/laytp.config.yml?v=" + localStorage.getItem("version")
  194. }
  195. layui.admin.setConfigPath(laytpConfigYmlPath);
  196. layui.admin.render();
  197. if(res.data.conf&&res.data.conf.background_title){
  198. // console.log(res.data.conf.background_title)
  199. $('.title').html(res.data.conf.background_title)
  200. }
  201. // 登出逻辑
  202. layui.admin.logout(function(){
  203. layui.popup.success("退出成功",function(){
  204. facade.ajax({
  205. route: "/admin.admin.user/logout"
  206. }).done(function(){
  207. facade.redirect("/admin/login.html");
  208. });
  209. });
  210. // 退出逻辑 返回 true / false
  211. return true;
  212. });
  213. // 初始化消息回调
  214. // layui.admin.message();
  215. if(user){
  216. $('body').show();
  217. // 搜索菜单功能添加在这里,不要添加到js组件里面,因为会在子页面进行调用,这里只会在父页面执行
  218. // 这里触发搜索菜单要按下回车键
  219. $(".search-menu").focus(
  220. function(){
  221. $(document).on("keydown",
  222. function(event){
  223. if( event.keyCode === 13 ){
  224. window.searchMenuData = [];
  225. var searchKey = $(".search-menu").val();
  226. if(searchKey){
  227. searchMenu(window.menuData, searchKey);
  228. layui.admin.setConfigPath(laytpConfigYmlPath);
  229. var param = layui.admin.readConfig();
  230. param.menu.async = false;
  231. param.menu.data = window.searchMenuData;
  232. param.isSearch = true;
  233. layui.admin.render(param);
  234. }else{
  235. $("#sideMenu").show();
  236. $("#searchSideMenu").hide();
  237. renderMenu();
  238. }
  239. }
  240. }
  241. );
  242. $(".search-menu").unbind();
  243. }
  244. );
  245. // $(document).off('input propertychange', ".search-menu").on('input propertychange', ".search-menu", function() {
  246. // var searchKey = $(this).val();
  247. // if(searchKey){
  248. // window.searchMenuData = [];
  249. // searchMenu(window.menuData, searchKey);
  250. // layui.admin.setConfigType("yml");
  251. // layui.admin.setConfigPath("/static/component/laytp/config/laytp.config.yml?v=" + localStorage.getItem("version"));
  252. // var param = layui.admin.readConfig();
  253. // param.menu.async = false;
  254. // param.menu.data = window.searchMenuData;
  255. // sideMenu = layui.menu.render({
  256. // elem: 'sideMenu',
  257. // async: param.menu.async !== undefined ? param.menu.async : true,
  258. // theme: "dark-theme",
  259. // height: '100%',
  260. // method: param.menu.method,
  261. // control: param.menu.control ? 'control' : false, // control
  262. // defaultMenu: 0,
  263. // accordion: param.menu.accordion,
  264. // url: param.menu.data,
  265. // data: param.menu.data, //async为false时,传入菜单数组
  266. // parseData: function(res){
  267. // var result = {
  268. // "id" : 0,
  269. // "is_menu" : 1,
  270. // "is_show" : 1,
  271. // "title" : "搜索结果",
  272. // "type" : 0,
  273. // "children" : res,
  274. // "href" : "",
  275. // "icon" : ""
  276. // };
  277. // var resArr = [];
  278. // resArr.push(result);
  279. // return resArr;
  280. // },
  281. // done: function() {
  282. // sideMenu.selectItem(param.menu.select);
  283. // }
  284. // });
  285. // }else{
  286. // layui.admin.setConfigType("yml");
  287. // layui.admin.setConfigPath("/static/component/laytp/config/laytp.config.yml?v=" + localStorage.getItem("version"));
  288. // var config = layui.admin.readConfig();
  289. // layui.admin.menuRender(config);
  290. // }
  291. // });
  292. }
  293. // 递归搜索菜单
  294. window.searchMenu = function(menuData, searchKey){
  295. searchKey = searchKey.toLowerCase();
  296. $.each(menuData, function(i, item) {
  297. var oldTitle = item.title;
  298. item.title = item.title.toLowerCase();
  299. if(item.title.indexOf(searchKey) > -1){
  300. item.title = oldTitle;
  301. window.searchMenuData.push(item);
  302. }else{
  303. item.title = oldTitle;
  304. if(item.children && item.children.length > 0){
  305. searchMenu(item.children, searchKey);
  306. }
  307. }
  308. });
  309. };
  310. // 重新渲染菜单
  311. window.renderMenu = function(){
  312. $(".search-menu").val('');
  313. layui.admin.setConfigPath(laytpConfigYmlPath);
  314. var config = layui.admin.readConfig();
  315. layui.admin.menuRender(config);
  316. };
  317. // 重写消息回调 [消息列表点击事件]
  318. // admin.message(function(id, title, context, form) {});
  319. }else if(res['code'] == 10402){
  320. let moduleName = facade.getModuleName();
  321. window.location.href = '/addons/' + moduleName + '/public/admin/w7login.html';
  322. return false;
  323. }else{
  324. $('.layui-layout-admin').html('');
  325. $('body').show();
  326. }
  327. }).fail(function(){
  328. $('.layui-layout-admin').html('');
  329. $('body').show();
  330. });
  331. });
  332. </script>
  333. <script type="text/html" id="default-toolbar">
  334. <button class="laytp-btn laytp-btn-primary laytp-btn-md" lay-event="add">
  335. <i class="layui-icon layui-icon-add-1"></i>
  336. 新增
  337. </button>
  338. <button class="laytp-btn laytp-btn-danger laytp-btn-md" lay-event="batchRemove">
  339. <i class="layui-icon layui-icon-delete"></i>
  340. 删除
  341. </button>
  342. <button class="laytp-btn laytp-btn-warming laytp-btn-md" lay-event="batchRemove">
  343. <i class="layui-icon layui-icon-search"></i>
  344. 搜索
  345. </button>
  346. </script>
  347. </body>
  348. </html>