refactor(all): 完成项目的前后端逻辑分离,静态页面可以单独部署
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, maximum-scale=1"
|
||||
/>
|
||||
<title>Pear Admin Flask</title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/static/admin/css/admin.css" />
|
||||
<link rel="stylesheet" href="/static/admin/css/admin.dark.css" />
|
||||
<link rel="stylesheet" href="/static/admin/css/variables.css" />
|
||||
<link rel="stylesheet" href="/static/admin/css/reset.css" />
|
||||
<!-- 依 赖 脚 本 -->
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script src="/static/js/pear_admin_flask.js"></script>
|
||||
</head>
|
||||
<!-- 结 构 代 码 -->
|
||||
<body class="layui-layout-body pear-admin">
|
||||
<!-- 布 局 框 架 -->
|
||||
<div class="layui-layout layui-layout-admin">
|
||||
<!-- 顶 部 样 式 -->
|
||||
<div class="layui-header">
|
||||
<!-- 菜 单 顶 部 -->
|
||||
<div class="layui-logo">
|
||||
<!-- 图 标 -->
|
||||
<img class="logo" />
|
||||
<!-- 标 题 -->
|
||||
<span class="title"></span>
|
||||
</div>
|
||||
<!-- 顶 部 左 侧 功 能 -->
|
||||
<ul class="layui-nav layui-layout-left">
|
||||
<li class="collapse layui-nav-item">
|
||||
<a href="#" class="layui-icon layui-icon-shrink-right"></a>
|
||||
</li>
|
||||
<li class="refresh layui-nav-item">
|
||||
<a
|
||||
href="#"
|
||||
class="layui-icon layui-icon-refresh-1"
|
||||
loading="600"
|
||||
></a>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 多 系 统 菜 单 -->
|
||||
<div id="control" class="layui-layout-control"></div>
|
||||
<!-- 顶 部 右 侧 菜 单 -->
|
||||
<ul class="layui-nav layui-layout-right">
|
||||
<li class="layui-nav-item layui-hide-xs">
|
||||
<a href="#" class="menuSearch layui-icon layui-icon-search"></a>
|
||||
</li>
|
||||
<li class="layui-nav-item layui-hide-xs message"></li>
|
||||
<li class="layui-nav-item layui-hide-xs">
|
||||
<a
|
||||
href="#"
|
||||
class="fullScreen layui-icon layui-icon-screen-full"
|
||||
></a>
|
||||
</li>
|
||||
<li class="layui-nav-item user">
|
||||
<!-- 头 像 -->
|
||||
<a class="layui-icon layui-icon-username" href="javascript:;"></a>
|
||||
<!-- 功 能 菜 单 -->
|
||||
<dl class="layui-nav-child">
|
||||
<dd>
|
||||
<a
|
||||
user-menu-url="view/system/person.html"
|
||||
user-menu-id="5555"
|
||||
user-menu-title="基本资料"
|
||||
>基本资料</a
|
||||
>
|
||||
</dd>
|
||||
<dd><a href="javascript:void(0);" class="logout">注销登录</a></dd>
|
||||
</dl>
|
||||
</li>
|
||||
<!-- 主 题 配 置 -->
|
||||
<li class="layui-nav-item setting">
|
||||
<a href="#" class="layui-icon layui-icon-more-vertical"></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- 侧 边 区 域 -->
|
||||
<div class="layui-side layui-bg-black">
|
||||
<!-- 菜 单 顶 部 -->
|
||||
<div class="layui-logo">
|
||||
<!-- 图 标 -->
|
||||
<img class="logo" />
|
||||
<!-- 标 题 -->
|
||||
<span class="title"></span>
|
||||
</div>
|
||||
<!-- 菜 单 内 容 -->
|
||||
<div class="layui-side-scroll">
|
||||
<div id="sideMenu"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 视 图 页 面 -->
|
||||
<div class="layui-body">
|
||||
<!-- 内 容 页 面 -->
|
||||
<div id="content"></div>
|
||||
</div>
|
||||
<!-- 页脚 -->
|
||||
<div class="layui-footer layui-text"></div>
|
||||
<!-- 遮 盖 层 -->
|
||||
<div class="pear-cover"></div>
|
||||
<!-- 加 载 动 画 -->
|
||||
<div class="loader-wrapper">
|
||||
<!-- 动 画 对 象 -->
|
||||
<div class="loader"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 移 动 端 便 捷 操 作 -->
|
||||
<div class="pear-collapsed-pe collapse">
|
||||
<a href="#" class="layui-icon layui-icon-shrink-right"></a>
|
||||
</div>
|
||||
|
||||
<!-- 框 架 初 始 化 -->
|
||||
<script>
|
||||
layui.use(["admin", "jquery", "popup"], function () {
|
||||
var $ = layui.jquery;
|
||||
var admin = layui.admin;
|
||||
var popup = layui.popup;
|
||||
|
||||
// 请求后端,严重是否已经登录
|
||||
fetch("/api/v1/user/profile", {
|
||||
method: "GET",
|
||||
headers: {
|
||||
Authorization: "Bearer " + localStorage.getItem("access_token"),
|
||||
},
|
||||
})
|
||||
.then((res) => res.json())
|
||||
.then(function (data) {
|
||||
if (data.code !== 0) {
|
||||
location.href = "/view/login.html";
|
||||
}
|
||||
});
|
||||
|
||||
// 给 pear-admin-layui 的默认 ajax 请求添加权限
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
Authorization: "Bearer " + localStorage.getItem("access_token"),
|
||||
},
|
||||
});
|
||||
|
||||
admin.setConfigurationPath("/static/config/pear.config.json");
|
||||
|
||||
admin.render();
|
||||
|
||||
admin.logout(function () {
|
||||
popup.success("注销成功", function () {
|
||||
fetch("/api/v1/logout")
|
||||
.then((res) => res.json())
|
||||
.then(function (data) {
|
||||
if (data.code !== 0) {
|
||||
localStorage.removeItem("access_token");
|
||||
localStorage.removeItem("refresh_token");
|
||||
location.href = "/view/login.html";
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 清空 tabs 缓存
|
||||
return new Promise((resolve) => {
|
||||
resolve(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,149 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, maximum-scale=1"
|
||||
/>
|
||||
<title>登录</title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/static/admin/css/other/login.css" />
|
||||
<link rel="stylesheet" href="/static/admin/css/variables.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="login-page">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-sm6 login-bg">
|
||||
<img
|
||||
class="login-bg-img"
|
||||
src="/static/admin/images/banner.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<div class="layui-col-sm6 login-form">
|
||||
<div class="layui-form">
|
||||
<div class="form-center">
|
||||
<div class="form-center-box">
|
||||
<div class="top-log-title">
|
||||
<img
|
||||
class="top-log"
|
||||
src="http://www.layui-vue.com/assets/logo.685dda16.jpg"
|
||||
alt=""
|
||||
/>
|
||||
<span>Pear Admin Flask</span>
|
||||
</div>
|
||||
<div class="top-desc">
|
||||
以 超 乎 想 象 的 速 度 构 建 内 部 工 具
|
||||
</div>
|
||||
<div style="margin-top: 30px">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-username"></i>
|
||||
</div>
|
||||
<input
|
||||
lay-verify="required"
|
||||
placeholder="账户"
|
||||
autocomplete="off"
|
||||
name="username"
|
||||
value="正心全栈编程"
|
||||
class="layui-input"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-password"></i>
|
||||
</div>
|
||||
<input
|
||||
type="password"
|
||||
name="password"
|
||||
value="123456"
|
||||
lay-verify="required|confirmPassword"
|
||||
placeholder="密码"
|
||||
autocomplete="off"
|
||||
class="layui-input"
|
||||
lay-affix="eye"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="remember-passsword">
|
||||
<div class="remember-cehcked">
|
||||
<input
|
||||
type="checkbox"
|
||||
name="like1[write]"
|
||||
lay-skin="primary"
|
||||
title="自动登录"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="login-btn">
|
||||
<button
|
||||
type="button"
|
||||
lay-submit
|
||||
lay-filter="login-in"
|
||||
class="layui-btn login"
|
||||
>
|
||||
登 录
|
||||
</button>
|
||||
</div>
|
||||
<div class="other-login">
|
||||
<div class="other-login-methods">其他方式</div>
|
||||
<a class="greenText" href="/view/register.html">注册账号</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 资 源 引 入 -->
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(["form", "button", "popup", "jquery"], function () {
|
||||
var form = layui.form;
|
||||
var button = layui.button;
|
||||
var popup = layui.popup;
|
||||
var $ = layui.jquery;
|
||||
|
||||
// 登 录 提 交
|
||||
form.on("submit(login-in)", function (data) {
|
||||
/// 验证
|
||||
|
||||
/// 动画
|
||||
let btn = button.load({ elem: ".login" });
|
||||
|
||||
/// 登录
|
||||
$.ajax({
|
||||
url: "/api/v1/login",
|
||||
type: "POST",
|
||||
data: JSON.stringify(data.field),
|
||||
contentType: "application/json",
|
||||
success: function (res) {
|
||||
localStorage.setItem("access_token", res.access_token);
|
||||
localStorage.setItem("refresh_token", res.refresh_token);
|
||||
btn.stop(function () {
|
||||
popup.success("登录成功", function () {
|
||||
location.href = "/";
|
||||
});
|
||||
});
|
||||
},
|
||||
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
||||
btn.stop(function () {
|
||||
popup.failure(XMLHttpRequest.responseJSON.message);
|
||||
});
|
||||
},
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,171 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, maximum-scale=1"
|
||||
/>
|
||||
<title>登录</title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/static/admin/css/other/login.css" />
|
||||
<link rel="stylesheet" href="/static/admin/css/variables.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="login-page">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-sm6 login-bg">
|
||||
<img
|
||||
class="login-bg-img"
|
||||
src="/static/admin/images/banner.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<div class="layui-col-sm6 login-form">
|
||||
<div class="layui-form">
|
||||
<div class="form-center">
|
||||
<div class="form-center-box">
|
||||
<div class="top-log-title">
|
||||
<img
|
||||
class="top-log"
|
||||
src="http://www.layui-vue.com/assets/logo.685dda16.jpg"
|
||||
alt=""
|
||||
/>
|
||||
<span>Pear Admin Flask</span>
|
||||
</div>
|
||||
<div class="top-desc">
|
||||
以 超 乎 想 象 的 速 度 构 建 内 部 工 具
|
||||
<br />
|
||||
<br />
|
||||
(注册账号)
|
||||
</div>
|
||||
<div style="margin-top: 30px">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-username"></i>
|
||||
</div>
|
||||
<input
|
||||
lay-verify="required"
|
||||
placeholder="账户"
|
||||
autocomplete="off"
|
||||
name="username"
|
||||
value=""
|
||||
class="layui-input"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-password"></i>
|
||||
</div>
|
||||
<input
|
||||
type="password"
|
||||
name="password"
|
||||
value=""
|
||||
lay-verify="required|confirmPassword"
|
||||
placeholder="密码"
|
||||
autocomplete="off"
|
||||
class="layui-input"
|
||||
lay-affix="eye"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-log-verification">
|
||||
<div class="verification-text">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-auz"></i>
|
||||
</div>
|
||||
<input
|
||||
lay-verify="required"
|
||||
placeholder="验证码"
|
||||
autocomplete="off"
|
||||
class="layui-input"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<img
|
||||
src="/static/admin/images/captcha.gif"
|
||||
alt=""
|
||||
class="verification-img"
|
||||
/>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="remember-passsword">
|
||||
<div class="remember-cehcked">
|
||||
<input
|
||||
type="checkbox"
|
||||
name="login-in"
|
||||
lay-skin="primary"
|
||||
title="注册成功后自动登录"
|
||||
checked
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="login-btn">
|
||||
<button
|
||||
type="button"
|
||||
lay-submit
|
||||
lay-filter="login-in"
|
||||
class="layui-btn login"
|
||||
>
|
||||
登 录
|
||||
</button>
|
||||
</div>
|
||||
<div class="other-login">
|
||||
<div class="other-login-methods">其他方式</div>
|
||||
<a class="greenText" href="/view/login.html">登录</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 资 源 引 入 -->
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(["form", "button", "popup", "jquery"], function () {
|
||||
var form = layui.form;
|
||||
var button = layui.button;
|
||||
var popup = layui.popup;
|
||||
var $ = layui.jquery;
|
||||
|
||||
// 登 录 提 交
|
||||
form.on("submit(login-in)", function (data) {
|
||||
/// 验证
|
||||
|
||||
/// 动画
|
||||
let btn = button.load({ elem: ".login" });
|
||||
|
||||
/// 登录
|
||||
$.ajax({
|
||||
url: "/api/v1/login",
|
||||
type: "POST",
|
||||
data: JSON.stringify(data.field),
|
||||
contentType: "application/json",
|
||||
success: function (res) {
|
||||
btn.stop(function () {
|
||||
popup.success("登录成功", function () {
|
||||
location.href = "/";
|
||||
});
|
||||
});
|
||||
},
|
||||
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
||||
btn.stop(function () {
|
||||
popup.failure(XMLHttpRequest.responseJSON.message);
|
||||
});
|
||||
},
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user