Files
zyt/server/public/admin/index.html
T
2026-07-16 09:04:40 +08:00

397 lines
34 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>后台管理系统</title>
<style>
* {
margin: 0;
padding: 0;
}
.preload {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
width: 100vw;
}
.circular {
height: 42px;
width: 42px;
animation: loading-rotate 2s linear infinite;
}
.circular .path {
animation: loading-dash 1.5s ease-in-out infinite;
stroke-dasharray: 90, 150;
stroke-dashoffset: 0;
stroke-width: 2;
stroke: #4073fa;
stroke-linecap: round;
}
@keyframes loading-rotate {
100% {
transform: rotate(1turn);
}
}
@keyframes loading-dash {
0% {
stroke-dasharray: 90, 150;
stroke-dashoffset: -40px;
}
100% {
stroke-dasharray: 90, 150;
stroke-dashoffset: -120px;
}
}
</style>
<script>
// 动态加载 Chat UIKit 样式
(function() {
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://web.sdk.qcloud.com/im/assets/latest/index.css';
document.head.appendChild(link);
})();
</script>
<!-- Dify AI 客服机器人(全局悬浮气泡) -->
<script>
window.difyChatbotConfig = {
token: 'OcRvj5VVR76cME9J',
baseUrl: 'https://ai.zhenyangtang.com.cn/',
draggable: true,
dragAxis: 'both',
inputs: {},
systemVariables: {},
userVariables: {}
}
</script>
<script
src="https://ai.zhenyangtang.com.cn/embed.min.js"
id="OcRvj5VVR76cME9J"
defer
></script>
<style>
/* 气泡按钮使用自定义 AI 图标(base 为 /admin/public 资源在该路径下) */
#dify-chatbot-bubble-button {
background-color: #fff !important;
background-image: url('data:image/png;base64,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');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
/* 隐藏 embed.min.js 内置的笑脸/关闭 SVG 图标 */
#dify-chatbot-bubble-button svg {
display: none !important;
}
/* 聊天窗口 iframe 默认透明。小窗口布局顶栏是白色文字,
顶部 56px 垫深蓝衬托,下方近白作聊天区底色 */
#dify-chatbot-bubble-window {
background: linear-gradient(
to bottom,
#1c64f2 0,
#1c64f2 56px,
#f7f8fc 56px
) !important;
}
/* 全屏(宽屏布局)顶栏是深色文字,用整片近白底色 */
#dify-chatbot-bubble-window.dify-chatbot-fullscreen {
background: #f7f8fc !important;
}
/* 全屏态:#dify-chatbot-bubble-window 是 iframe 本身,用 !important 覆盖其内联样式 */
#dify-chatbot-bubble-window.dify-chatbot-fullscreen {
position: fixed !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
width: 100vw !important;
height: 100vh !important;
max-width: 100vw !important;
max-height: 100vh !important;
min-width: 0 !important;
min-height: 0 !important;
border-radius: 0 !important;
}
/* 聊天窗口控制按钮(全屏切换 / 关闭),仅窗口打开时显示,位置由脚本计算 */
#dify-fullscreen-toggle,
#dify-chat-close {
position: fixed;
display: none;
width: 32px;
height: 32px;
border: none;
border-radius: 8px;
background-color: rgba(255, 255, 255, 0.18);
color: #fff;
font-size: 16px;
line-height: 32px;
text-align: center;
cursor: pointer;
z-index: 2147483646;
}
#dify-fullscreen-toggle:hover,
#dify-chat-close:hover {
background-color: rgba(255, 255, 255, 0.35);
}
/* 全屏时顶栏是浅色的,按钮改用实色圆形放在左上角 */
#dify-fullscreen-toggle.is-fullscreen,
#dify-chat-close.is-fullscreen {
width: 40px;
height: 40px;
border-radius: 20px;
background-color: #1c64f2;
box-shadow: rgba(0, 0, 0, 0.2) 0 4px 8px 0;
line-height: 40px;
}
#dify-fullscreen-toggle.is-fullscreen:hover,
#dify-chat-close.is-fullscreen:hover {
background-color: #1a56db;
}
/* 遮盖聊天窗口底部的 POWERED BY Dify 版权条(该区域在 iframe 内部,只能覆盖) */
#dify-brand-cover,
#dify-brand-transition-cover {
position: fixed;
display: none;
background: #f2f4f7;
z-index: 2147483641;
}
</style>
<script type="module" crossorigin src="/admin/assets/index-DsiMl32K.js"></script>
<link rel="modulepreload" crossorigin href="/admin/assets/@babel/runtime-BanGtE2-.js">
<link rel="modulepreload" crossorigin href="/admin/assets/fflate-_ayOYiT1.js">
<link rel="modulepreload" crossorigin href="/admin/assets/jspdf-BsthCvR5.js">
<link rel="modulepreload" crossorigin href="/admin/assets/lodash-D3kF6u-c.js">
<link rel="modulepreload" crossorigin href="/admin/assets/@vue/shared-mAAVTE9n.js">
<link rel="modulepreload" crossorigin href="/admin/assets/@vue/reactivity-DiY1c2vO.js">
<link rel="modulepreload" crossorigin href="/admin/assets/@vue/runtime-core-C6bnekPw.js">
<link rel="modulepreload" crossorigin href="/admin/assets/vue-router-QlpZ4wdW.js">
<link rel="modulepreload" crossorigin href="/admin/assets/pinia-B8cvXbiZ.js">
<link rel="modulepreload" crossorigin href="/admin/assets/axios-C80V62Fs.js">
<link rel="modulepreload" crossorigin href="/admin/assets/@vue/runtime-dom-DDAG46FW.js">
<link rel="modulepreload" crossorigin href="/admin/assets/@element-plus/icons-vue-B0jSCQ-G.js">
<link rel="modulepreload" crossorigin href="/admin/assets/lodash-es-C2A-Pj28.js">
<link rel="modulepreload" crossorigin href="/admin/assets/@popperjs/core-C5az9QE8.js">
<link rel="modulepreload" crossorigin href="/admin/assets/dayjs-DG77mNTn.js">
<link rel="modulepreload" crossorigin href="/admin/assets/@ctrl/tinycolor-BuyEbX8F.js">
<link rel="modulepreload" crossorigin href="/admin/assets/async-validator-CFA_igpM.js">
<link rel="modulepreload" crossorigin href="/admin/assets/normalize-wheel-es-BQoi3Ox2.js">
<link rel="modulepreload" crossorigin href="/admin/assets/element-plus-Bolc0EfP.js">
<link rel="modulepreload" crossorigin href="/admin/assets/@vueuse/shared-Cl3lVqjz.js">
<link rel="modulepreload" crossorigin href="/admin/assets/@vueuse/core-1S4fJlii.js">
<link rel="modulepreload" crossorigin href="/admin/assets/balanced-match-BdS7OldZ.js">
<link rel="modulepreload" crossorigin href="/admin/assets/clone-DBZ6_OiU.js">
<link rel="modulepreload" crossorigin href="/admin/assets/color-name-Dju3oUBS.js">
<link rel="modulepreload" crossorigin href="/admin/assets/color-convert-OrFsTA_V.js">
<link rel="modulepreload" crossorigin href="/admin/assets/color-string-pUQDDJII.js">
<link rel="modulepreload" crossorigin href="/admin/assets/color-B2zxaWkI.js">
<link rel="modulepreload" crossorigin href="/admin/assets/ms-CzQ2E3wO.js">
<link rel="modulepreload" crossorigin href="/admin/assets/css-color-function-DI01JAaZ.js">
<link rel="modulepreload" crossorigin href="/admin/assets/clipboard-CHgxszqY.js">
<link rel="modulepreload" crossorigin href="/admin/assets/vue-clipboard3-DByT_rEQ.js">
<link rel="modulepreload" crossorigin href="/admin/assets/tslib-BDyQ-Jie.js">
<link rel="modulepreload" crossorigin href="/admin/assets/zrender-DRNXw7y3.js">
<link rel="modulepreload" crossorigin href="/admin/assets/echarts-CNLwa9wG.js">
<link rel="modulepreload" crossorigin href="/admin/assets/highlight.js-Bxt7hFFy.js">
<link rel="modulepreload" crossorigin href="/admin/assets/@highlightjs/vue-plugin-C4onkBvW.js">
<link rel="stylesheet" crossorigin href="/admin/assets/element-plus-CL62-hT2.css">
<link rel="stylesheet" crossorigin href="/admin/assets/highlight-BfC0goYb.css">
<link rel="stylesheet" crossorigin href="/admin/assets/index-B8eb0l7L.css">
</head>
<body>
<div id="app">
<div class="preload">
<svg viewBox="25 25 50 50" class="circular">
<circle cx="50" cy="50" r="20" fill="none" class="path"></circle>
</svg>
</div>
</div>
<script>
// Dify 聊天窗口全屏切换:#dify-chatbot-bubble-window 是 iframe 本身,
// 无法往其内部挂按钮,故在气泡旁放一个独立按钮,窗口打开时才显示
(function () {
var btn = document.createElement('button')
btn.type = 'button'
btn.id = 'dify-fullscreen-toggle'
btn.title = '全屏 / 还原'
btn.textContent = '⛶'
var transitionUntil = 0
// 全屏切换(放大和还原都算)后的过渡期:Dify 内部重排期间版权位置不定,
// 用大面积遮盖兜底,并逐帧跟踪窗口尺寸动画
function startTransition() {
transitionUntil = Date.now() + TRANSITION_MS
function loop() {
sync()
if (Date.now() < transitionUntil) requestAnimationFrame(loop)
}
loop()
}
btn.addEventListener('click', function () {
var win = document.getElementById('dify-chatbot-bubble-window')
if (!win) return
win.classList.toggle('dify-chatbot-fullscreen')
startTransition()
})
document.body.appendChild(btn)
// 自定义关闭按钮:窗口打开时气泡被隐藏,由它代替气泡的关闭功能
var closeBtn = document.createElement('button')
closeBtn.type = 'button'
closeBtn.id = 'dify-chat-close'
closeBtn.title = '关闭'
closeBtn.textContent = '✕'
closeBtn.addEventListener('click', function () {
var win = document.getElementById('dify-chatbot-bubble-window')
var difyBubble = document.getElementById('dify-chatbot-bubble-button')
if (win) win.classList.remove('dify-chatbot-fullscreen')
// 复用 embed.min.js 的开关逻辑,保证气泡图标状态同步
if (difyBubble) difyBubble.click()
sync()
})
document.body.appendChild(closeBtn)
// 隐藏 Dify 头部自带的展开按钮:该按钮仅在收到 isToggledByButton:true 时渲染
// embed.min.js 默认发送),在其后补发 false 覆盖即可
var DIFY_ORIGIN = 'https://ai.zhenyangtang.com.cn'
window.addEventListener('message', function (event) {
if (event.origin !== DIFY_ORIGIN) return
if (!event.data || event.data.type !== 'dify-chatbot-iframe-ready') return
var win = document.getElementById('dify-chatbot-bubble-window')
if (!win || event.source !== win.contentWindow) return
setTimeout(function () {
win.contentWindow.postMessage(
{
type: 'dify-chatbot-config',
payload: { isToggledByButton: false, isDraggable: false }
},
DIFY_ORIGIN
)
}, 200)
})
var cover = document.createElement('div')
cover.id = 'dify-brand-cover'
document.body.appendChild(cover)
var transitionCover = document.createElement('div')
transitionCover.id = 'dify-brand-transition-cover'
document.body.appendChild(transitionCover)
var BRAND_BAR_HEIGHT = 38
// 全屏后 Dify 内部布局重排的过渡时长,期间用大面积遮盖兜底
var TRANSITION_MS = 1500
// Dify 宽屏布局断点 40rem:窄窗口版权条在底部,宽窗口(展开/全屏)移到顶栏右侧
var WIDE_BREAKPOINT = 640
function sync() {
var win = document.getElementById('dify-chatbot-bubble-window')
var opened = win && win.style.display !== 'none'
var difyBubble = document.getElementById('dify-chatbot-bubble-button')
btn.style.display = opened ? 'block' : 'none'
closeBtn.style.display = opened ? 'block' : 'none'
if (!opened) {
cover.style.display = 'none'
transitionCover.style.display = 'none'
// 窗口关闭后恢复气泡(可拖动)
if (difyBubble) difyBubble.style.display = ''
return
}
var rect = win.getBoundingClientRect()
var fullscreen = win.classList.contains('dify-chatbot-fullscreen')
var inTransition = Date.now() < transitionUntil
cover.style.display = 'block'
// 窗口打开期间隐藏气泡(气泡可能被拖到任意位置,浮在窗口上很突兀),
// 控制按钮统一停靠在窗口顶栏
if (difyBubble) difyBubble.style.display = 'none'
btn.classList.toggle('is-fullscreen', fullscreen)
closeBtn.classList.toggle('is-fullscreen', fullscreen)
if (fullscreen) {
// 全屏:实色圆钮放左上角,避开右上角版权遮盖区和底部输入区
btn.style.top = '12px'
btn.style.left = '12px'
closeBtn.style.top = '12px'
closeBtn.style.left = '60px'
} else {
// 小窗口:白色幽灵按钮停靠在蓝色顶栏右侧,避开 iframe 内部右上角的重置按钮
btn.style.top = rect.top + 12 + 'px'
btn.style.left = rect.right - 132 + 'px'
closeBtn.style.top = rect.top + 12 + 'px'
closeBtn.style.left = rect.right - 92 + 'px'
}
if (inTransition) {
// 过渡期:版权可能出现在顶部或底部,两处都盖住并跟随窗口动画;
// 顶部遮盖的配色须与当前状态的 iframe 背景一致
cover.style.left = rect.left + 'px'
cover.style.top = rect.top + 'px'
cover.style.width = rect.width + 'px'
cover.style.height = '100px'
cover.style.borderRadius = fullscreen ? '0' : '1rem 1rem 0 0'
cover.style.background = fullscreen
? '#f7f8fc'
: 'linear-gradient(to bottom, #1c64f2 0, #1c64f2 56px, #f7f8fc 56px)'
transitionCover.style.display = 'block'
transitionCover.style.left = rect.left + 'px'
transitionCover.style.top = rect.bottom - BRAND_BAR_HEIGHT + 'px'
transitionCover.style.bottom = 'auto'
transitionCover.style.width = rect.width + 'px'
transitionCover.style.height = BRAND_BAR_HEIGHT + 'px'
transitionCover.style.background = '#f7f8fc'
return
}
transitionCover.style.display = 'none'
if (fullscreen) {
// 全屏:版权信息在顶栏右侧,遮到窗口右边缘
cover.style.left = rect.right - 390 + 'px'
cover.style.top = rect.top + 'px'
cover.style.width = '390px'
cover.style.height = '56px'
cover.style.borderRadius = '0'
cover.style.background = '#f7f8fc'
} else if (rect.width >= WIDE_BREAKPOINT) {
// 宽窗口(浏览器缩放等场景):版权信息在顶栏右侧
cover.style.left = rect.right - 390 + 'px'
cover.style.top = rect.top + 'px'
cover.style.width = '390px'
cover.style.height = '84px'
cover.style.borderRadius = '0'
cover.style.background = '#f7f8fc'
} else {
// 窄窗口布局:版权条横贯底部
cover.style.left = rect.left + 'px'
cover.style.top = rect.bottom - BRAND_BAR_HEIGHT + 'px'
cover.style.width = rect.width + 'px'
cover.style.height = BRAND_BAR_HEIGHT + 'px'
cover.style.borderRadius = '0 0 1rem 1rem'
cover.style.background = '#f2f4f7'
}
}
// 监听 iframe 的创建及 display 切换(embed.min.js 通过内联 style 开关窗口),
// 再加低频轮询兜底,跟住窗口尺寸过渡动画和视口变化
var observer = new MutationObserver(sync)
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['style', 'class']
})
window.addEventListener('resize', sync)
window.addEventListener('keydown', function (event) {
if (event.key !== 'Escape') return
var win = document.getElementById('dify-chatbot-bubble-window')
if (win && win.classList.contains('dify-chatbot-fullscreen')) {
win.classList.remove('dify-chatbot-fullscreen')
startTransition()
}
})
setInterval(sync, 300)
sync()
})()
</script>
</body>
</html>