Update: (步骤备份)更新夜间模式同步

This commit is contained in:
wojiaoyishang
2025-01-21 11:02:03 +08:00
parent 813363f0d4
commit b6a64f15dc
5 changed files with 175 additions and 138 deletions
+1
View File
@@ -11,6 +11,7 @@ from applications.schemas import DeptSchema
bp = Blueprint('dept', __name__, url_prefix='/dept') bp = Blueprint('dept', __name__, url_prefix='/dept')
# Todo: 部门管理后端
@bp.get('/') @bp.get('/')
@authorize("system:dept:main", log=True) @authorize("system:dept:main", log=True)
@@ -1,7 +1,3 @@
.pear-container {
background-color: whitesmoke;
}
body::-webkit-scrollbar { body::-webkit-scrollbar {
width: 0px; width: 0px;
height: 0px; height: 0px;
+4 -5
View File
@@ -1,10 +1,9 @@
<script> <script>
// 自动变换主题色 // 自动变换主题色
const variableKey = "--global-primary-color"; const variableKey = "--global-primary-color";
const variableVal = localStorage.getItem("theme-color-color"); const variableVal = localStorage.getItem("theme-color-color");
document.documentElement.style.setProperty(variableKey, variableVal); document.documentElement.style.setProperty(variableKey, variableVal);
</script> </script>
<script src="{{ url_for('static', filename='system/component/layui/layui.js') }}"></script> <script src="{{ url_for('static', filename='system/component/layui/layui.js') }}"></script>
<script src="{{ url_for('static', filename='system/component/pear/pear.js') }}"></script> <script src="{{ url_for('static', filename='system/component/pear/pear.js') }}"></script>
+18
View File
@@ -5,9 +5,27 @@
<link rel="stylesheet" href="{{ url_for('static', filename='system/component/pear/css/pear.css') }}"/> <link rel="stylesheet" href="{{ url_for('static', filename='system/component/pear/css/pear.css') }}"/>
<link rel="stylesheet" href="{{ url_for('static', filename='system/admin/css/variables.css') }}"/> <link rel="stylesheet" href="{{ url_for('static', filename='system/admin/css/variables.css') }}"/>
<link rel="stylesheet" href="{{ url_for('static', filename='system/admin/css/reset.css') }}"/> <link rel="stylesheet" href="{{ url_for('static', filename='system/admin/css/reset.css') }}"/>
<link rel="stylesheet" href="{{ url_for('static', filename='system/admin/css/admin.css') }}"/>
<link rel="stylesheet" href="{{ url_for('static', filename='system/admin/css/admin.dark.css') }}"/>
<style> <style>
.layui-form-checked:hover > div { .layui-form-checked:hover > div {
background-color: unset; background-color: unset;
} }
</style> </style>
<script>
// 自动切换夜间模式
if (window.self != window.top) {
requestAnimationFrame(function () {
try {
const admin = window.parent.PearAdmin;
let checked = admin.isdrak;
if (checked === true || checked === "true") {
document.querySelector("body").classList.add("pear-admin-dark");
}
} catch (error) {
}
})
}
</script>
+152 -129
View File
@@ -1,138 +1,161 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>Pear Admin 4.0</title> <title>Pear Admin 4.0</title>
<meta charset="utf-8"> <meta charset="utf-8">
{% include 'system/common/header.html' %} {% include 'system/common/header.html' %}
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="{{ url_for('static', filename='system/admin/css/admin.css') }}" /> </head>
<link rel="stylesheet" href="{{ url_for('static', filename='system/admin/css/admin.dark.css') }}" /> <!-- 结 构 代 码 -->
</head> <body class="layui-layout-body pear-admin">
<!-- 结 构 代 码 --> <!-- 布 局 框 架 -->
<body class="layui-layout-body pear-admin"> <div class="layui-layout layui-layout-admin">
<!-- 布 局 框 架 --> <!-- 顶 部 样 式 -->
<div class="layui-layout layui-layout-admin"> <div class="layui-header">
<!-- 顶 部 样 式 --> <!-- 菜 单 顶 部 -->
<div class="layui-header"> <div class="layui-logo">
<!-- 菜 单 顶 部 --> <!-- 图 标 -->
<div class="layui-logo"> <img class="logo">
<!-- --> <!-- -->
<img class="logo"> <span class="title"></span>
<!-- 标 题 --> </div>
<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>
<ul class="layui-nav layui-layout-left"> <li class="refresh layui-nav-item"><a href="#" class="layui-icon layui-icon-refresh-1" loading=600></a></li>
<li class="collapse layui-nav-item"><a href="#" class="layui-icon layui-icon-shrink-right"></a></li> </ul>
<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>
<!-- 多 系 统 菜 单 --> <!-- 顶 部 右 侧 菜 单 -->
<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>
<ul class="layui-nav layui-layout-right"> </li>
<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 message"></li> <li class="layui-nav-item layui-hide-xs"><a href="#"
<li class="layui-nav-item layui-hide-xs"><a href="#" class="fullScreen layui-icon layui-icon-screen-full"></a></li> class="fullScreen layui-icon layui-icon-screen-full"></a></li>
<li class="layui-nav-item user"> <li class="layui-nav-item user">
<!-- 头 像 --> <!-- 头 像 -->
<a class="layui-icon layui-icon-username" href="javascript:;"></a> <a class="layui-icon layui-icon-username" href="javascript:;"></a>
<!-- 功 能 菜 单 --> <!-- 功 能 菜 单 -->
<dl class="layui-nav-child"> <dl class="layui-nav-child">
<dd><a href="javascript:void(0);" user-menu-url="/system/user/center" user-menu-id="5555" user-menu-title="基本资料">基本资料</a></dd> <dd><a href="javascript:void(0);" user-menu-url="/system/user/center" user-menu-id="5555"
<dd><a href="javascript:void(0);" class="logout">注销登录</a></dd> user-menu-title="基本资料">基本资料</a></dd>
</dl> <dd><a href="javascript:void(0);" class="logout">注销登录</a></dd>
</li> </dl>
<!-- 主 题 配 置 --> </li>
<li class="layui-nav-item setting"><a href="#" class="layui-icon layui-icon-more-vertical"></a></li> <!-- 主 题 配 置 -->
</ul> <li class="layui-nav-item setting"><a href="#" class="layui-icon layui-icon-more-vertical"></a></li>
</div> </ul>
<!-- 侧 边 区 域 --> </div>
<div class="layui-side layui-bg-black"> <!-- 侧 边 区 域 -->
<!-- 菜 单 顶 部 --> <div class="layui-side layui-bg-black">
<div class="layui-logo"> <!-- 菜 单 顶 部 -->
<!-- 图 标 --> <div class="layui-logo">
<img class="logo"> <!-- 图 标 -->
<!-- 标 题 --> <img class="logo">
<span class="title"></span> <!-- 标 题 -->
</div> <span class="title"></span>
<!-- 菜 单 内 容 --> </div>
<div class="layui-side-scroll"> <!-- 菜 单 内 容 -->
<div id="side"></div> <div class="layui-side-scroll">
</div> <div id="side"></div>
</div> </div>
<!-- 视 图 页 面 --> </div>
<div class="layui-body"> <!-- 视 图 页 面 -->
<!-- 内 容 页 面 --> <div class="layui-body">
<div id="content"></div> <!-- 内 容 页 面 -->
</div> <div id="content"></div>
<!-- 页脚 --> </div>
<div class="layui-footer layui-text"></div> <!-- 页脚 -->
<!-- 遮 盖 层 --> <div class="layui-footer layui-text"></div>
<div class="pear-cover"></div> <!-- 遮 盖 层 -->
<!-- 加 载 动 画 --> <div class="pear-cover"></div>
<div class="loader-wrapper"> <!-- 加 载 动 画 -->
<!-- 动 画 对 象 --> <div class="loader-wrapper">
<div class="loader"></div> <!-- 动 画 对 象 -->
</div> <div class="loader"></div>
</div> </div>
<!-- 移 动 端 便 捷 操 作 --> </div>
<div class="pear-collapsed-pe collapse"> <!-- 移 动 端 便 捷 操 作 -->
<a href="#" class="layui-icon layui-icon-shrink-right"></a> <div class="pear-collapsed-pe collapse">
</div> <a href="#" class="layui-icon layui-icon-shrink-right"></a>
<!-- 依 赖 脚 本 --> </div>
<script src="{{ url_for('static', filename='system/component/layui/layui.js') }}"></script> <!-- 依 赖 脚 本 -->
<script src="{{ url_for('static', filename='system/component/pear/pear.js') }}"></script> <script src="{{ url_for('static', filename='system/component/layui/layui.js') }}"></script>
<!-- 框 架 初 始 化 --> <script src="{{ url_for('static', filename='system/component/pear/pear.js') }}"></script>
<script> <!-- 框 架 初 始 化 -->
layui.use(['admin','jquery','popup'], function() { <script>
var admin = layui.admin; layui.use(['admin', 'jquery', 'popup'], function () {
var popup = layui.popup; var admin = layui.admin;
var $ = layui.jquery; var popup = layui.popup;
var $ = layui.jquery;
// yml | json | api // yml | json | api
admin.setConfigurationPath("{{ url_for('system.rights.configs') }}"); admin.setConfigurationPath("{{ url_for('system.rights.configs') }}");
// 主题色自动通知子页面 // 主题色自动通知子页面
admin._changeTheme = admin.changeTheme; admin._changeTheme = admin.changeTheme;
admin.changeTheme = function() { admin.changeTheme = function () {
admin._changeTheme(); // 调用原方法 admin._changeTheme(); // 调用原方法
/* 遍历所有 iframe 更改主题色 */ /* 遍历所有 iframe 更改主题色 */
const variableKey = "--global-primary-color"; const variableKey = "--global-primary-color";
const variableVal = localStorage.getItem("theme-color-color"); const variableVal = localStorage.getItem("theme-color-color");
const iframes = document.querySelectorAll('iframe'); const iframes = document.querySelectorAll('iframe');
iframes.forEach(function (iframe) { iframes.forEach(function (iframe) {
try { try {
const iframeDocument = iframe.contentDocument || iframe.contentWindow.document; const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
// 设置 iframe 中的主题色 // 设置 iframe 中的主题色
iframeDocument.documentElement.style.setProperty(variableKey, variableVal); iframeDocument.documentElement.style.setProperty(variableKey, variableVal);
} catch (e) { } catch (e) {
}
});
} }
// 渲染 });
admin.render(); }
// 注销 // 夜间模式切换通知子页面
admin.logout(function () { admin._switchTheme = admin.switchTheme
let loading = layer.load() admin.switchTheme = function (checked) {
$.ajax({ admin.isdrak = checked;
url: '{{ url_for('system.passport.logout') }}', admin._switchTheme(checked)
dataType: 'json',
async: false, const iframes = document.querySelectorAll('iframe');
type: 'post', iframes.forEach(function (iframe) {
success: function (result) { try {
layer.close(loading) const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
if (result.success) {
popup.success(result.msg, function () { if (checked === true || checked === "true") {
iframeDocument.body.classList.add("pear-admin-dark");
} else {
iframeDocument.body.classList.remove("pear-admin-dark");
}
} catch (e) {
}
});
}
// 渲染
admin.render();
// 注销
admin.logout(function () {
let loading = layer.load()
$.ajax({
url: '{{ url_for('system.passport.logout') }}',
dataType: 'json',
async: false,
type: 'post',
success: function (result) {
layer.close(loading)
if (result.success) {
popup.success(result.msg, function () {
location.href = '/' location.href = '/'
}) })
return true return true
} }
} }
}) })
}) })
}) })
</script> </script>
</body> </body>
</html> </html>