更新所有前端代码,优化前端显示

master
lyy 6 months ago
parent abdc2b11b7
commit 048b544f8e

@ -0,0 +1,506 @@
`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Title</title>
<link rel="stylesheet" type="text/css" href="msgList.css">
<link rel="stylesheet" href="./assets/css/style.css">
<script type="text/javascript" src="./assets/js/jquery.js"></script>
</head>
<style>
#pie {
width: 400px;
height: 400px;
}
.mainbody{
position: absolute;
left: 190px;
}
.wrap{
width: 260px;
height: 100%;
background-color: #dce0e9;
position: fixed;
}
.header{
width: 100%;
height: 65px;
background-color: #adadad;
font-size: 24px;
color: #fff;
text-align: center;
line-height: 65px;
}
.nav{
width:250px;
margin: 10px 5px 0;
}
.list{
margin-bottom: 5px;
}
.list h2{
position: relative;
padding: 15px 0;
background-color: #3889d4;
text-align: center;
font-size: 16px;
color: #fff;
transition: .5s;
}
.list h2.on{
background-color: #393c4a;
}
.list i{
position: absolute;
right: 10px;
top: 16px;
border: 8px solid transparent;
border-left-color: #fff;/*triangle*/
transform:rotate(0deg);
transform-origin: 1px 8px;
transition: .5s;
}
.list i.on{
transform:rotate(90deg);
}
.hide{
overflow: hidden;
height: 0;
transition: .5s;
}
.hide h5{
padding: 10px 0;
background-color: #282c3a;
text-align: center;
color:#fff;
border-bottom:#42495d;
div{
display: block;
}
.h1, .h2, .h3, .h4, .h5, .h6, a, abbr, body, cite, dd, dl, dt, h1, h2, h3, h4, h5, h6, iframe, input, li, object, ol, p, pre, span, ul {
font-family: 'Microsoft YaHei','SF Pro Display',Roboto,Noto,Arial,'PingFang SC',sans-serif;
}
a{
text-decoration: none;
cursor: pointer;
}
ul, li, ol, dl, dt, dd {
list-style: none;
}
div, figure, footer, header, hgroup, html, iframe, img, mark, menu, nav, object, section, span, table, tr, td, th, tbody, tfoot, thead, video {
border: 0;
margin: 0;
padding: 0;
}
.my_msg_list{
position:inherit;
margin-top: 50px;
width: 1300px;
min-height: 400px;
margin-bottom: 20px;
}
.my_msg_list_view{
position: relative;
margin-left: 100px;
background-color: #fff;
padding: 24px 16px;
-webkit-box-shadow: 0 2px 4px 0 rgba(0,0,0,0.28);
box-shadow: 0 2px 4px 0 rgba(0,0,0,0.28);
min-height: 520px;
box-sizing: border-box;
}
.my_msg_list_box{
border: 0;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.my_msg_list_con{
border: 0;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.my_msg_list_title{
width: 100%;
margin: 0;
font-size: 14px;
color: #3d3d3d;
margin-bottom: 8px;
display: block;
overflow: hidden;
zoom: 1;
box-sizing: border-box;
}
.fr{
float: right!important;
display: inline-block;
color: #4a90e2;
}
.line{
display: inline-block;
height: 12px;
margin: 2px 12px;
border-right: 1px solid #979797;
}
.msg_list{
padding: 0 0 0 15px;
min-height: 370px;
box-sizing: border-box;
}
.msg_list_ul{
font-size: 14px;
vertical-align: baseline;
margin: 0;
padding: 0;
}
.msg_list_ul_li{
position: relative;
padding: 16px 0;
border-bottom: 1px solid #e0e0e0;
}
.msg_type{
display: inline-block;
height: 40px;
line-height: 40px;
padding: 0 5px;
color: #4d4d4d;
font-size: 25px;
text-align: center;
background-color: #fff;
border: 1px solid #e0e0e0;
vertical-align: top;
}
.msg_info_box{
width: 100%;
color: #4d4d4d;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
}
.msg_title{
display: inline-block;
width: 85%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
}
.options-f{
width: 16%;
height: 20px;
margin: 0;
margin-top: -20px;
padding: 0;
}
.msg_delete{
width: 10px;
height: 10px;
float: right;
}
.msg_content{
margin-top: 15px;
margin-bottom: -16px;
padding: 15px;
background-color: #f7f7f7;
font-size: 14px;
color: #4d4d4d;
line-height: 22px;
}
.page-box{
width: 100%;
margin: 32px 0 20px;
text-align: center;
border-top-color: initial;
border-right-color: initial;
border-bottom-color: initial;
border-left-color: initial;
}
.ule {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
}
.lie {
width: 23%;
display: inline-block;
font: 13px sans-serif;
}
.lie a {
display: block;
color: rgb(39, 124, 184);
text-align: center;
padding: 14px 70px;
text-decoration: none;
}
.lie a:hover {
background-color: #e3e3f5;
}
.ula {
width: 100%;
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
}
.lia {
width: 23%;
display: inline-block;
font: 13px sans-serif;
}
.lia a {
display: block;
font-size: larger;
color: rgb(0, 0, 0);
text-align: center;
padding: 14px 50px;
text-decoration: none;
}
.lia a:hover {
background-color: #b7b7b7;
}
.square{
width:200px;
height:5px;
border:1px solid transparent;
background: #06b81a;
}
}
</style>
<header class="top-navigation">
<div class="container">
<a class="logo" aria-label="MDN homepage"><svg id="mdn-docs-logo" x="0" y="0" viewBox="0 0 694.9 10.4" style="enable-background:new 0 0 694.9 104.4" role="img"><title>MDN Web Docs</title>
<button title="Open main menu" type="button" class="button action has-icon main-menu-toggle" aria-haspopup="true" aria-label="Open main menu" aria-expanded="true"><span class="button-wrap"><span class="icon icon-menu "></span><span class="visually-hidden"><a href="MainPageUI.html">Open main menu</a></span></span></button>
</div>
</header>
<body>
<div class="wrap">
<div class="header">消息过滤器</div>
<div class="nav">
<ul>
<li class="list">
<h2><i></i>服务器</h2>
<div class="hide">
<h5>北京</h5>
<h5>长沙</h5>
<h5>上海</h5>
</div>
</li>
<li class="list">
<h2><i></i>响应时间</h2>
<div class="hide">
<h5>"<=100ms"</h5>
<h5>"<=1500ms"</h5>
<h5>">1500ms"</h5>
</div>
</li>
<li class="list">
<h2><i></i>当前服务器状态</h2>
<div class="hide">
<h5>正常</h5>
<h5>受损</h5>
<h5>繁忙</h5>
</div>
</li>
<li class="list">
<h2><i></i>返回消息报头</h2>
<div class="hide">
<h5>TCP</h5>
</div>
</li>
</ul>
</div>
</div>
<script>
(function () {
var oList = document.querySelectorAll('.list h2'),
oHide = document.querySelectorAll('.hide'),
oIcon = document.querySelectorAll('.list i'),
lastIndex = 0;
for(var i=0;i<oList.length;i++){
oList[i].index = i;
oList[i].isClick = false;
oList[i].initHeight = oHide[i].clientHeight;
oHide[i].style.height = '0';
oList[i].onclick = function () {
if(this.isClick){
oHide[this.index].style.height = '0';
oIcon[this.index].className = '';
oList[this.index].className = '';
oList[this.index].isClick = false;
}
else{
oHide[lastIndex].style.height = '0';
oIcon[lastIndex].className = '';
oList[lastIndex].className = '';
oHide[this.index].style.height = '220px';
oIcon[this.index].className = 'on';
oList[this.index].className = 'on';
oList[lastIndex].isClick = false;
oList[this.index].isClick = true;
lastIndex = this.index;
}
}
}
})();
</script>
<div class="mainbody">
<div class="chart-container">
<div class="chart-card">
<h4 class="h3">消息类别统计表</h4>
<table class="card-table">
<tbody class="table-body flex-center">
<tr class="table-row flex-center">
<th class="table-heading" scope="col">北京</th>
<td class="table-data">
<div class="chart-bar" data-chart-bar="beijing"></div>
</td>
</tr>
<tr class="table-row flex-center">
<th class="table-heading" scope="col">上海</th>
<td class="table-data">
<div class="chart-bar" data-chart-bar="shanghai"></div>
</td>
</tr>
<tr class="table-row flex-center">
<th class="table-heading" scope="col">长沙</th>
<td class="table-data">
<div class="chart-bar" data-chart-bar="长沙"></div>
</td>
</tr>
</tbody>
</table>
<span class="tooltip text" data-tooltip></span>
<div class="wrapper flex-center">
<div class="card-meta">
<p class="text">最近7天总共有</p>
<data class="meta-value" value="478.33">478条</data>
</div>
<div class="card-meta">
<data class="meta-value small" value="2.4">+2.4%</data>
<p class="text">from last month</p>
</div>
</div>
</div>
</div>
<script src="./assets/js/script.js" type="module" defer></script>
<div class="piechart" id="pie"></div>
<script>
var pie = echarts.init(document.getElementById('pie'));
pieOption = {
title: {
text: '数据统计饼状图'
},
tooltip: {
show: true,
trigger: "item",
backgroundColor: "#1677FF",
// {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)
formatter: "{a}{b}<br/>{c}吨({d}%)"
},
color: ['#3e87ff', '#65b2f3', '#b9cfec'],
series: [
{
name: '品种',
type: 'pie',
// 数组的第一项是内半径,第二项是外半径;可以设置不同的内外半径显示成圆环图
radius: '50%',
// 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标;设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
center: ['50%', '50%'],
data: [
{ value: 2000, name: '北京' },
{ value: 2000, name: '上海' },
{ value: 2000, name: '长沙' },
],
itemStyle: {
// 显示图例
normal: {
label: {
show: true
},
labelLine: {
show: true
}
},
emphasis: {
// 图形阴影的模糊大小
shadowBlur: 10,
// 阴影水平方向上的偏移距离
shadowOffsetX: 0,
// 阴影颜色
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
pie.setOption(pieOption);
</script>
<div class="my_msg_list">
<div class="my_msg_list_view">
<div class="my_msg_list_box">
<div class="my_msg_list_con">
<div class="my_msg_list_title">
<span >消息列表:</span>
<a class="fr">清空所有消息</a>
<span class="line fr"></span>
<a class="fr">全部标记为已读</a>
</div>
<div class="ule">
<div class="lie"><a href="#home">服务器列表</a></div>
<div class="lie"><a href="#news">距离上次响应时间</a></div>
<div class="lie"><a href="#contact">当前服务器状态</a></div>
<div class="lie"><a href="#about">返回消息报头</a></div>
</div>
<div class="ula">
<div class="lia"><a href="#home"><span><div class="square"></div></span>北京</a></div>
<div class="lia"><a href="#news">100ms</a></div>
<div class="lia"><a href="#contact">正常</a></div>
<div class="lia"><a href="#about">TCP</a></div>
</div>
<em class="data-time" style="float: right;padding-right:10px">2019-03-28</em>
<li class="msg_list_ul_li">
<div class="ula">
<div class="lia"><a href="#home">长沙</a></div>
<div class="lia"><a href="#news">1300ms</a></div>
<div class="lia"><a href="#contact">受损</a></div>
<div class="lia"><a href="#about">TCP</a></div>
</div>
<em class="data-time" style="float: right;padding-right:10px">2019-03-28</em>
</li>
<li class="msg_list_ul_li">
<div class="ula">
<div class="lia"><a href="#home">上海</a></div>
<div class="lia"><a href="#news">70ms</a></div>
<div class="lia"><a href="#contact">繁忙</a></div>
<div class="lia"><a href="#about">TCP</a></div>
</div>
<em class="data-time" style="float: right;padding-right:10px">2019-03-28</em>
</li>
</ul>
</div>
<div class="page-box">
</div>
</div>
</div>
</div>
</div>
</div>
</html>

@ -0,0 +1,132 @@
<style>
.loader {
background: #ffffff;
background: radial-gradient(#ffffff, #ffffff);
bottom: 0;
left: 0;
overflow: hidden;
position: fixed;
right: 0;
top: 0;
z-index: 99999;
}
.loader-inner {
bottom: 0;
height: 60px;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0;
width: 100px;
}
.loader-line-wrap {
animation:
spin 2000ms cubic-bezier(.175, .885, .32, 1.275) infinite
;
box-sizing: border-box;
height: 50px;
left: 0;
overflow: hidden;
position: absolute;
top: 0;
transform-origin: 50% 100%;
width: 100px;
}
.loader-line {
border: 4px solid transparent;
border-radius: 100%;
box-sizing: border-box;
height: 100px;
left: 0;
margin: 0 auto;
position: absolute;
right: 0;
top: 0;
width: 100px;
}
.loader-line-wrap:nth-child(1) { animation-delay: -50ms; }
.loader-line-wrap:nth-child(2) { animation-delay: -100ms; }
.loader-line-wrap:nth-child(3) { animation-delay: -150ms; }
.loader-line-wrap:nth-child(4) { animation-delay: -200ms; }
.loader-line-wrap:nth-child(5) { animation-delay: -250ms; }
.loader-line-wrap:nth-child(1) .loader-line {
border-color: hsl(0, 80%, 60%);
height: 90px;
width: 90px;
top: 7px;
}
.loader-line-wrap:nth-child(2) .loader-line {
border-color: hsl(60, 80%, 60%);
height: 76px;
width: 76px;
top: 14px;
}
.loader-line-wrap:nth-child(3) .loader-line {
border-color: hsl(120, 80%, 60%);
height: 62px;
width: 62px;
top: 21px;
}
.loader-line-wrap:nth-child(4) .loader-line {
border-color: hsl(180, 80%, 60%);
height: 48px;
width: 48px;
top: 28px;
}
.loader-line-wrap:nth-child(5) .loader-line {
border-color: hsl(240, 80%, 60%);
height: 34px;
width: 34px;
top: 35px;
}
@keyframes spin {
0%, 15% {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}
</style>
<div class="loader">
<div class="loader-inner">
<div class="loader-line-wrap">
<div class="loader-line"></div>
</div>
<div class="loader-line-wrap">
<div class="loader-line"></div>
</div>
<div class="loader-line-wrap">
<div class="loader-line"></div>
</div>
<div class="loader-line-wrap">
<div class="loader-line"></div>
</div>
<div class="loader-line-wrap">
<div class="loader-line"></div>
</div>
</div>
</div>
<style>
.login {
position: absolute;
top: 50%;
left: 75%;
margin: -150px 0 0 -150px;
width:300px;
height:300px;
}
</style>
<html>
<body>
<h1>welcome</h1>
</body>
<script>
setTimeout(()=>location.href="LoginUI.html",5000);
</script>
</html>

@ -0,0 +1,199 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>LoginUI</title>
<script type="text/javascript">
function submits(btn){
var userName = document.getElementById("username").value;
var pwd = document.getElementById("pwd").value;
console.log(userName)
if (userName == "admin" && pwd == "admin") {
window.location.href="MainPageUI.html";
window.event.returnValue=false;
}
else {
alert("用户名或密码不正确!");
}
}
</script>
<style>
/* 让页面所有元素的padding和margin都设置为0 */
/*{margin:0;padding:0;box-sizing:border-box;}*/
h3{
right: 0;
}
.wrapper {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 150px 150px;
grid-gap: 10px;
}
/* 设置背景图,字体设置为微软雅黑 */
body{background:url(bg.jpg);font-family: "微软雅黑", sans-serif;}
/* 引用图片高度设置为28px就是页面最上方像屋檐一样的黑色图 */
.headtop{background:url(dove.png);height:28px;}
/* 整个登录框的css并使用绝对定位居中 */
.login {
position: absolute;
top: 50%;
left: 75%;
margin: -150px 0 0 -150px;
width:300px;
height:300px;
}
.login h1 { color:#555555; text-shadow: 0px 10px 8px #CDC673; letter-spacing:2px;text-align:center;margin-bottom:20px; }
input{
grid-column: 2;
grid-row: 1/3;
padding:10px;
width:100%;
color:white;
margin-bottom:10px;
background-color:#555555;
border: 1px solid black;
border-radius:4px;
letter-spacing:2px;
}
.imgBox{
padding-top: 180px;
border-top: 2px solid cadetblue;
width: 100%;
height: 450px;
margin: 0 auto;
}
.imgBox img{
width: 100%;
height: 450px;
margin: 0 auto;
padding-top: 30px;
}
.img1{
display: block;
}
.img2{
display: none
}
.img3{
display: block;
}
.box1 {
grid-column: 2;
grid-row: 1/3;
}
label{
color: #ffffff;
font-weight: bold;
font-size: 20px;
margin-left: 40px;
}
.box2 {
grid-column: 1;
grid-row: 1 / 3;
}
/* 登录按钮的csscursor:pointer当鼠标移到按钮上面时变成小手形状 */
form button{
width: 107%;
padding:10px;
background-color:#CDC673;
border:1px solid black;
border-radius:4px;
cursor:pointer;
}
</style>
</head>
<body style="background-image:url('./assets/images/R-C\ \(1\).png'); background-repeat:no-repeat; background-position:center center; background-attachment:fixed; background-size:cover;">
<div class="wrapper">
<div class="box1">
<div class="headtop"></div>
<div class="login">
<h1 style="font-size: 25px;">//欢迎来到HADG的登入界面//</h1>
<h1 style="font-size: 15px;">请核实您登入的身份</h1>
<form action="" method="post">
<label for="username">用户名</label><br>
<input type="text" name="username" id="username" class="input" value="" placeholder="用户名admin"><br>
<label for="pwd">密码</label><br>
<input type="password" name="" id="pwd" class="input" value="" placeholder="密码admin">
<button type="submit" class="submit" onclick="submits(this)">开始登录</button>
</form>
<td class="login_td" align="right" width=71><a
href="RegisterUI.html"
>新用户注册</a></td>
</div>
</div>
<div class="imgBox">
<img class="img-slide img1"
src="./assets/images/img1.jpg"
alt="1"
/>
<img class="img-slide img2"
src="./assets/images/img2.jpg"
alt="2"
/>
</div>
</div>
</div>
</body>
<script type="text/javascript">
var index=0;
//效果
function ChangeImg() {
index++;
var a=document.getElementsByClassName("img-slide");
if(index>=a.length) index=0;
for(var i=0;i<a.length;i++){
a[i].style.display='none';
}
a[index].style.display='block';
}
//设置定时器,每隔两秒切换一张图片
setInterval(ChangeImg,8000);
</script>
</html>
<script>
document.addEventListener('DOMContentLoaded', function() {
// 获取表单元素
var form = document.querySelector('.ant-form');
// 为表单添加提交事件监听器
form.addEventListener('submit', function(e) {
e.preventDefault(); // 阻止表单的默认提交行为
// 收集表单数据
var formData = {
//question_kind: document.getElementsByName('question_kind').value,
type:"login_message",
username: document.getElementById('username').value,
password: document.getElementById('password').value,
};
console.log(formData);
// 使用fetch API发送数据到后端
fetch('http://localhost:8080/xmy', {
method: 'POST', // 或者 'PUT'
headers: {
'Content-Type': 'application/json',
// 如果需要认证添加Authorization头部
// 'Authorization': 'Bearer your_token_here'
},
body: JSON.stringify(formData) // 将表单数据转换为JSON字符串
})
.then(response => response.json()) // 转换响应为JSON
.then(data => {
console.log('Success:', data);
alert('登录成功提交!');
location.href = "./MainPageUI.html";
})
.catch((error) => {
console.error('Error:', error);
alert('登录失败,请检查用户名和密码!');
});
});
});
</script>

@ -0,0 +1,336 @@
<!DOCTYPE html>
<!-- 声明文档类型-->
<html lang="en">
<!-- 确定语言形态 -->
<style>
#pie {
width: 400px;
height: 400px;
}
.downorder{
width: 100px;
position: relative;
height: auto;
margin: auto;
}
.downorder:hover a{
display: block;
}
.order{
position: relative;
text-align: center;
display: inline-block;
font-size: 16px;
padding: 15px;
background-color: rgb(1, 1, 1);
color: aliceblue;
}
.order:hover{
background-color: rgb(0, 0, 0);
color: rgb(6, 80, 238);
}
.downtext{
position: relative;
text-align: center;
display: inline-block;
font-size: 10px;
background-color: rgba(182, 182, 182,0.75);
color: aliceblue;
}
.downtext a{
/* display: block; */
display: none;
padding: 15px;
}
.downtext a:hover{
background-color: rgba(182, 182, 182,0.25);
color: rgb(58, 76, 243);
}
/* 遮罩层 */
#overlay {
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
font-size: 16px;
/* IE9以下不支持rgba模式 */
background-color: rgba(0, 0, 0, 0.5);
/* 兼容IE8及以下 */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#7f000000,endColorstr=#7f000000);
display: none;
}
/* 弹出框主体 */
.popup {
background-color: #ffffff;
max-width: 400px;
min-width: 200px;
height: 240px;
border-radius: 5px;
margin: 100px auto;
text-align: center;
}
/* 弹出框的标题 */
.popup_title {
height: 60px;
line-height: 60px;
border-bottom: solid 1px #cccccc;
}
/* 弹出框的内容 */
.popup_content {
height: 50px;
line-height: 50px;
padding: 15px 20px;
}
/* 弹出框的按钮栏 */
.popup_btn {
padding-bottom: 10px;
}
/* 弹出框的按钮 */
.popup_btn button {
color: #778899;
width: 40%;
height: 40px;
cursor: pointer;
border: solid 1px #cccccc;
border-radius: 5px;
margin: 5px 10px;
color: #ffffff;
background-color: #337ab7;
}
</style>
<script type="text/javascript" src="echarts.js"></script>
<head>
<meta charset="UTF-8">
<!--控制网页的编码格式 utf-8 国际性编码-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--控制视口比例以及缩放-->
<title>首页</title>
<!-- 先引入重置样式表和公共样式表以及主页样式表 -->
<link rel="stylesheet" href="./css/index.css">
<link rel="stylesheet" href="./css/public.css">
<link rel="stylesheet" href="./css/reset.css">
<!-- 这个顺序引入更规范 -->
</head>
<body>
<!-- 这是网页的头部版心盒子 -->
<div class="header_con">
<!-- h1里面放logo哦 -->
<h1>
<img
width="150px"
height="80px"
src="./assets/images/Nginx.jpg" alt="">
</h1>
<!-- 头部右侧表单标签-->
<form action="">
<input type="text" class="search" value="SEARCH...">
<div>
<input type="button" class="btn">
</div>
</form>
</div>
<!-- 导航栏平铺部分:会显示黑色 -->
<div id="nav">
<!-- 导航栏版心部分 -->
<div class="nav_con">
<ul>
<li>
<div class="downorder">
<button class="order">
首页
</button>
<div class="downtext">
<a href="">查看主动探测</a>
<a href="">查看流量控制</a>
<a href="">查看Nginx日志</a>
</div>
</div></li>
<li>
<button class="order"
id="showPopup" onclick="showPopup()">系统设置</button>
<div id="overlay">
<div class="popup">
<p class="popup_title">系统设置</p>
<p class="popup_content">当前系统版本1.13</p>
<div class="popup_btn">
<button onclick="hidePopup()">确认</button>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
<!-- banner的平铺部分 -->
<div id="banner">
<div class="banner_con">
<img src="./assets/images/R-C.png"
height="466px"
width="1000px">
</div>
</div>
<!-- 新闻列表的版心部分 -->
<div class="news_con">
<!-- 最左侧的盒子 -->
<div class="news_l">
<h3 class="news_title">版本更新情况</h3>
<ul class="news_list">
<li>
<a>alpha 0.11 更新ui版本</a>
<span>2024-05-05</span>
</li>
<li>
<a>alpha 0.10 更新跳转其他界面逻辑</a>
<span>2024-05-03</span>
</li>
<li>
<a>alpha 0.09 更新LoginUI设计</a>
<span>1998-09-15</span>
</li>
</ul>
</div>
<!-- 中间的盒子-->
<div class="news_c">
<h3 class="news_title">服务器列表</h3>
<p class="txt1">北京 ip192.168.20.2</p>
<p class="txt1">广州 ip192.168.21.4</p>
<p class="txt1">长沙 ip192.168.23.4</p>
</div>
<!-- 右边的盒子 -->
<div class="news_r">
<h3 class="news_title">最近操作</h3>
<p class="txt3">开启主备切换服务</p>
<p class="txt3">开启Nginx服务</p>
<a href="#"><img src="./images/btn_img_05.jpg" alt=""></a>
</div>
</div>
<!-- 市场项目那一部分 -->
<div class="case_con">
<h3>当前可用服务</h3>
<div class="case_box">
<dl>
<dt><a href="DetectUI.html"><img src="./assets/images/R-C green.png" alt=""></a></dt>
<dd>查看主动探测</dd>
</dl>
<dl>
<dt><img src="./assets/images/R-C red.png" alt=""></dt>
<dd>查看流量控制</dd>
</dl>
<dl>
<dt><img src="./assets/images/R-C pink.png" alt=""></dt>
<dd>启用主备切换</dd>
</dl>
<dl>
<dt><img src="./assets/images/R-C blue.png"></dt>
<dd>查看Nginx日志</dd>
<script>
const util = require('util');
const child_process = require('child_process');
// 调用util.promisify方法返回一个promise,如const { stdout, stderr } = await exec('rm -rf build')
const exec = util.promisify(child_process.exec);
const appPath = join(__dirname, 'app');
const runClean = async function () {
// cwd指定子进程的当前工作目录 这里的rm -rf build为删除指定目录下的一个文件夹
await exec(`rm -rf build`, { cwd: appPath });
await exec(`rm -rf test`, { cwd: appPath });
runClean();
}
</script>
</dl>
</div>
</div>
<!-- 产品中心那一部分的平铺-->
<div id="links">
<!-- 这个顺序引入更规范 -->
<div class="links_con">
<!-- 版心部分 -->
<!-- 左边的盒子 -->
<div class="links_l">
<h3 class="links_title">技术支持</h3>
<ul class="links_list">
<li>
<a href="#">国防科技大学信息中心</a>
</li>
<li>
<a href="#">全军指挥控制中心</a>
</li>
<li>
<a href="#">国防科技大学网络安全小组</a>
</li>
<li>
<a href="#">软体生物开发小组</a>
</li>
<li>
<a href="#">国防科技大学软件体系结构课程</a>
</li>
</ul>
</div>
<!-- 中间的盒子 -->
<div class="links_c">
<h3 class="links_title">开发者联系方式</h3>
<ul class="links_list">
<li>
<a href="#">liuyuyang21a@gfkd.mtn</a>
</li>
<li>
<a href="#">yuankaifeng21@gfkd.mtn</a>
</li>
<li>
<a href="#">xumingyang21@gfkd.mtn</a>
</li>
<li>
<a href="#">dongjiaqi21@gfkd.mtn</a>
</li>
</ul>
</div>
<!-- 右边的盒子 -->
<div class="links_r">
<h3 class="links_title">HADG</h3>
<h3 class="links_a"> 旨在为全军指挥信息系统提供坚实保障,开发更高效的网关服务</h3>
<div class="map">
<img
width="150px"
height="100px"
src="./assets/images/nginx.gif">
</div>
</div>
</div>
</div>
<!-- 页脚 -->
<div class="footer_con">
<!-- 页脚左边的盒子 -->
<p class="footer_l">
<a href="./table.html">意见反馈</a>
<a href="#">用户协议</a>
<a href="#">交流QQ群</a>
<a href="#" class="footer-right">湘ICP备20002562号-1</a>
</p>
<!-- 页脚右边的盒子 -->
<p class="footer_r">
国防科技大学软件体系结构课程徐明洋小组开发
</p>
</div>
</body>
<script>
function showPopup(){
var overlay = document.getElementById("overlay");
overlay.style.display = "block";
}
function hidePopup(){
var overlay = document.getElementById("overlay");
overlay.style.display = "none";
}
</script>
</html>

@ -0,0 +1,183 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册页面</title>
<!-- 引入格式文件-->
<!-- <link rel="stylesheet" href="html&css.css"> -->
</head>
<body>
<style>
*{
margin: 0px;/*所有的外边距为0*/
padding: 0px;/*所有的内边距为0*/
box-sizing: border-box;/*规定两个并排的带边框的框*/
}
table{
text-align: center;
}
body{
background: url("./assets/images/button.jpg")no-repeat center;
padding-top: 25px;
}
.rg_layout{
width: 900px;
height: 500px;
border: 8px solid #EEEEEE;/*solid 定义实线*/
background-color: white;
margin: auto;
}
.rg_left{
float: none;
text-align: center;
margin: 15px;
}
.rg_left>p:first-child{
color: #FFD026;
font-size: 20px;
}
.rg_left>p:last-child{
color: #A6A6A6;
font-size: 20px;
}
.rg_center{
float: left;
}
.rg_right{
float: none;
margin: 250px;
padding-left: 10px;
white-space:nowrap;
}
.rg_right p{
font-size: 15px;
}
.rg_right p a{
color: coral;
}
.td_left{
padding-left: 250px;
width: 100px;
text-align: center;
height: 45px;
white-space:nowrap;
}
.td_right{
padding-left: 40px;
text-align: center;
white-space:nowrap;
}
.bt_center{
padding-left: 310px;
}
#username,#real_name,#ID,#password,#tel,#birthday,#checkcode{
width: 251px;
height: 32px;
border: 1px solid #A6A6A6;
/*设置边框圆角*/
border-radius: 5px;
padding-left: 10px;
}
#checkcode{
width: 110px;
}
#img_check{
height: 32px;
vertical-align: middle;/*设置图片的位置垂直居中*/
}
#btn_sub{
width: 100px;
height: 40px;
background-color: #FFD026;
border: 1px solid #FFD026;
padding-left: 10px;
}
</style>
<div class="rg_layout">
<div class="rg_left">
<p>新用户注册</p>
<p>USER REGISTER</p>
</div>
<div class="rg_center">
<div class="rg_form">
<form class="ant-form" action="#" method="post">
<table>
<tr><!--label 标签的作用是当点击文字也会跳到文本输出框-->
<!--for属性与ID属性对应规定 label 绑定到哪个表单元素。-->
<td class="td_left"><label for="username">用户名</label> </td>
<td class="td_right"><input type="text" name="username" id="username"> </td>
</tr>
<tr>
<td class="td_left"><label for="real_name">姓名</label> </td>
<td class="td_right"><input type="text" name="real_name" id="real_name"> </td>
</tr>
<tr><!--label 标签的作用是当点击文字也会跳到文本输出框-->
<td class="td_left"><label for="ID">身份证号</label> </td>
<td class="td_right"><input type="text" name="ID" id="ID"> </td>
</tr>
<tr>
<td class="td_left"><label for="password">密码</label> </td>
<td class="td_right"><input type="password" name="password" id="password"> </td>
</tr>
<tr>
<td class="td_left"><label for="tel">再次输入密码</label> </td>
<td class="td_right"><input type="password" name="tel" id="tel"> </td>
</tr>
<tr>
<td colspan="2" align="center" class="bt_center">
<input type="submit" value="注册" id="btn_sub">
</td>
</tr>
</table>
</form>
</div>
</div>
<div class="rg_right">
<p><a href="LoginUI.html">返回登录界面</a></p>
</div>
</div>
</body>
<script>
document.addEventListener('DOMContentLoaded', function() {
// 获取表单元素
var form = document.querySelector('.ant-form');
// 为表单添加提交事件监听器
form.addEventListener('submit', function(e) {
e.preventDefault(); // 阻止表单的默认提交行为
// 收集表单数据
var formData = {
//question_kind: document.getElementsByName('question_kind').value,
ID:document.getElementById('ID').value,
password: document.getElementById('password').value,
real_name:document.getElementById('real_name').value,
source:"frontend",
tel:document.getElementById('tel').value,
type:"register_message",
username: document.getElementById('username').value,
};
console.log(formData);
fetch('', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(formData) // 将表单数据转换为JSON字符串
})
.then(response => response.json()) // 转换响应为JSON
.then(data => {
console.log('Success:', data);
alert('反馈成功提交!');
})
.catch((error) => {
console.error('Error:', error);
alert('提交失败,请稍后重试!');
});
});
});
</script>
</html>

@ -0,0 +1,288 @@
/*-----------------------------------*\
#style.css
\*-----------------------------------*/
/**
* copyright 2022 codewithsadee
*/
/*-----------------------------------*\
#CUSTOM PROPERTY
\*-----------------------------------*/
:root {
/**
* colors
*/
--medium-slate-blue: hsl(240, 73%, 65%);
--space-cadet_10: hsl(226, 54%, 26%, 0.1);
--space-cadet: hsl(226, 54%, 26%);
--ghost-white: hsl(227, 69%, 97%);
--cool-gray: hsl(226, 19%, 63%);
--cultured: hsl(0, 0%, 95%);
--white: hsl(0, 0%, 100%);
/**
* typography
*/
--ff-dm-sans: 'Roboto', sans-serif;
--ff-helvetica: 'Helvetica', sans-serif;
--fs-1: 3rem;
--fs-2: 2.4rem;
--fs-3: 1.5rem;
--fs-4: 1.2rem;
--fw-500: 500;
--fw-600: 600;
--fw-700: 700;
/**
* shadow
*/
--shadow: 1px 1px 3px hsla(0, 0%, 0%, 0.15);
/**
* radius
*/
--radius-5: 5px;
--radius-15: 15px;
/**
* transition
*/
--transition-1: 0.25s ease;
--transition-2: 1s ease;
}
/*-----------------------------------*\
#RESET
\*-----------------------------------*/
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
span,
data { display: block; }
img { height: auto; }
table,
tbody,
tr,
th,
td {
all: unset;
}
html {
font-family: var(--ff-dm-sans);
font-size: 10px;
}
body {
background-color: var(--ghost-white);
color: var(--cool-gray);
font-size: 1.6rem;
padding-inline: 15px;
min-height: 100vh;
}
/*-----------------------------------*\
#REUSED STYLE
\*-----------------------------------*/
.flex-center {
display: flex;
justify-content: center;
align-items: center;
}
.balance-card,
.chart-card {
width: 300px;
height: 150px;
position: relative;
padding: 5px;
border-radius: var(--radius-10);
}
.text { font-size: var(--fs-3); }
.h2 { font-size: var(--fs-2); }
/*-----------------------------------*\
#BALANCE CARD
\*-----------------------------------*/
.chart-container {
width: 100%;
max-width: 540px;
margin-inline: 100px;
left: 50px;
}
.balance-card {
background-color: var(--medium-slate-blue);
color: var(--white);
justify-content: space-between;
margin-block-end: 15px;
}
.balance-card .text {
font-weight: unset;
margin-block-end: 5px;
}
.balance-card .h2 { font-weight: var(--fw-700); }
.balance-card .logo { width: 60px; }
/*-----------------------------------*\
#CHART CARD
\*-----------------------------------*/
.chart-card {
position: relative;
margin-right: 30px;
background-color: var(--white);
}
.chart-card .h2 {
color: var(--space-cadet);
font-weight: var(--fw-500);
margin-block-end: 50px;
}
.chart-card .card-table {
display: block;
padding-block-end: 24px;
border-block-end: 1px solid var(--space-cadet_10);
margin-block-end: 24px;
}
.chart-card .table-body {
justify-content: space-evenly;
align-items: stretch;
gap: 12px;
}
.chart-card .table-row {
flex-direction: column-reverse;
justify-content: flex-start;
gap: 10px;
min-height: calc(150px + 31px);
}
.chart-card .table-heading {
color: var(--space-cadet);
font-family: var(--ff-helvetica);
font-size: var(--fs-4);
}
.chart-card .table-data {
min-width: 20px;
height: 100%;
background-color: var(--cultured);
cursor: pointer;
}
.chart-card .chart-bar {
background-color: var(--medium-slate-blue);
height: 100%;
transform-origin: bottom;
transition: transform var(--transition-2);
}
.chart-card .chart-bar:hover { opacity: 0.75; }
.tooltip {
position: fixed;
top: 0;
left: 50%;
transform: translateX(-50%);
background-color: var(--white);
color: var(--space-cadet);
font-family: var(--ff-helvetica);
font-weight: var(--fw-600);
padding: 8px;
border: 1px solid var(--cultured);
border-radius: var(--radius-5);
box-shadow: var(--shadow);
pointer-events: none;
opacity: 0;
transition: var(--transition-1);
}
.tooltip.active { opacity: 1; }
.chart-card .wrapper {
justify-content: space-between;
align-items: flex-start;
}
.chart-card .meta-value {
color: var(--space-cadet);
font-weight: var(--fw-500);
margin-block-start: 5px;
}
.chart-card .meta-value:not(.small) { font-size: var(--fs-1); }
.chart-card .card-meta:last-child {
align-self: flex-end;
text-align: right;
}
.piechart{
margin-top: -180px;
left: 600px;
width: 150px;
height: 150px;
position: fixed;
padding: 5px;
border-radius: var(--radius-10);
}
/*-----------------------------------*\
#MEDIA QUERIES
\*-----------------------------------*/
/**
* responsive for large than 768px screen
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

@ -0,0 +1,4 @@
<svg width="61" height="42" viewBox="0 0 61 42" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M40.7182 41C51.9195 41 60.9999 32.0457 60.9999 21C60.9999 9.9543 51.9195 1 40.7182 1C29.5169 1 20.4365 9.9543 20.4365 21C20.4365 32.0457 29.5169 41 40.7182 41Z" fill="#1E2F65"/>
<path d="M20.4366 40.1666C31.1712 40.1666 39.8732 31.5854 39.8732 21C39.8732 10.4145 31.1712 1.83331 20.4366 1.83331C9.70207 1.83331 1 10.4145 1 21C1 31.5854 9.70207 40.1666 20.4366 40.1666Z" stroke="white" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

@ -0,0 +1,20 @@
[
{
"server": "shanghai",
"stat": "busy",
"amount": 70,
"recentTime":70
},
{
"server": "changsha",
"stat": "busy",
"amount": 50,
"recentTime": 1300
},
{
"server": "beijing",
"stat": "busy",
"amount": 56,
"recentTime": 70
}
]

@ -0,0 +1,235 @@
@charset "utf-8";
/* 统一板块宽度和左右居中 */
.banner_con,
.news_con,
.case_con,
.links_con,
.footer_con {
width: 1002px;
margin: 0 auto;
}
#banner {
height: 465px;
background: gray url("../images/banner1_02_02.jpg") no-repeat center;
}
#banner .banner_con {
height: 465px;
/* background: pink; */
margin: 0 auto;
}
.news_con {
height: 243px;
background: white;
}
.news_title {
/* background: cadetblue; */
font-size: 18px;
color: #3f434f;
line-height: 18px;
padding-top: 36px;
}
.news_list {
/* background: cornflowerblue; */
margin-top: 23px;
}
.news_list li {
width: 437px;
height: 25px;
background: url("../images/ico_05.jpg") no-repeat left;
padding-left: 14px;
/* margin-top: 23px;不能给li加哦 要给他爹,不然每个儿子顶部都会空出来*/
}
.news_list li a {
float: left;
font-size: 12px;
color: #565656;
line-height: 25px;
}
.news_list li span {
float: right;
color: #9a9a9a;
font-size: 12px;
}
.news_l {
width: 480px;
height: 243px;
/* background: rebeccapurple; */
float: left;
padding-left: 21px;
}
.news_c {
width: 194px;
height: 243px;
background: #f1f1f1;
float: left;
padding: 0 27px 0 20px;
}
.news_c .txt1 {
font-size: 12px;
color: #555555;
line-height: 25px;
margin-top: 34px;
/* 行高自己去量哦 */
}
.news_c .txt2 {
font-size: 12px;
color: #979797;
line-height: 25px;
margin-top: 15 px;
/* 行高自己去量哦 */
}
.news_r {
width: 180px;
height: 243px;
background: #fbfbfb url("../images/ma_05.jpg") no-repeat right bottom;
float: left;
padding: 0 38px 0 24px;
}
.news_r .txt3 {
font-size: 12px;
color: #585858;
line-height: 24px;
margin: 21px 0 22px 0;
}
.case_con {
height: 304px;
/* background: goldenrod; */
}
.case_con h3 {
font-size: 18px;
color: #3f434f;
/* background: pink; */
padding: 28px 0 18px 22px;
}
.case_con .case_box {
height: 240px;
/* background: orange; */
}
.case_box dl {
width: 210px;
/* 这是由图片尺寸为210得出的这样文本就会屈居于一处 */
/* background: burlywood; */
float: left;
margin: 0 20px;
}
/* 这里很重要!一定要设置宽高,也就是图片尺寸得出,这样以后图片更换,结构就不会乱! */
.case_box dl dt {
width: 190px;
height: 190px;
}
.case_box dl dd {
font-size: 24px;
color: #4f4f4f;
line-height: 24px;
margin-top: 13px;
float: center;
left: 10px;
}
/* 上面给dt这个容器指定了宽高现在让img跟随这个容器的宽高 */
.case_box dl dt img {
width: 100%;
height: 100%;
}
#links {
background: #e5e5e5;
}
.links_con {
height: 250px;
/* */
}
.links_con .links_title {
color: #5d5d5d;
line-height: 16px;
border-bottom: 1px solid #c1c1c1;
padding: 31px 0 11px 13px;
}
.links_con .links_l {
width: 452px;
height: 250px;
background: #e5e5e5;
float: left;
margin-left: 20px;
}
.links_con .links_list {
/* background: cornsilk; */
height: 170px;
padding-left: 5px;
padding-top: 15px;
}
.links_con .links_list li {
width: 136px;
height: 24px;
background: url("../images/btn_img_13.jpg") no-repeat left center;
font-size: 12px;
line-height: 24px;
padding-left: 13px;
float: left;
}
.links_con .links_list li a {
color: #5f5f5f;
white-space:nowrap;
}
.links_con .links_c {
width: 153px;
height: 250px;
background: #e5e5e5;
float: left;
margin: 0 50px;
}
.links_con .links_a {
width: 265px;
height: 24px;
font-size: 14px;
color: #8f8585;
}
.links_con .links_c .links_list li {
width: 130px;
}
.links_con .links_r {
width: 256px;
height: 250px;
background: #e5e5e5;
float: left;
}
.links_con .links_r .map {
text-align: center;
padding-top: 11px;
}

@ -0,0 +1,138 @@
@charset "utf-8";
/* 公共区域版心宽度一样,左右居中 */
/* .header-wrap {
width: 1100px;
height: 62px;
margin: 0 auto;
} */
.header_con {
width: 1002px;
height: 100px;
/* background: pink; */
/* 左右居中 */
margin: 0 auto;
}
.header_con h1 {
width: 604px;
height: 10px;
/* background: orange; */
float: left;
padding: 34px 0 0 20px;
}
.header_con form {
width: 227px;
height: 61px;
/* background: orangered; */
float: left;
padding-top: 39px;
padding-right: 21px;
}
.header_con .search {
width: 195px;
height: 26px;
background: #f1f1f1;
border: 1px solid #e5e5e5;
/* 清除右侧边框 */
border-right: none;
float: left;
color: #888888;
}
.header_con .btn {
width: 30px;
height: 26px;
border: none;
background: #f1f1f1 url("../images/search_03.jpg") no-repeat center;
}
.header_con form div {
width: 30px;
height: 26px;
border: 1px solid #e5e5e5;
border-left: none;
float: left;
/* 给btn套盒子的时候也要加浮动 */
}
#nav {
height: 58px;
background: black;
}
#nav .nav_con {
width: 1002px;
height: 58px;
background: black;
margin: 0 auto;
}
/* 导航横向排列 */
#nav .nav_con li {
width: 498px;
height: 58px;
float: left;
background: black;
/* 左右居中 */
text-align: center;
/* 上下居中 */
line-height: 58px;
border-left: 1px solid #4a4a4a;
font-size: 12px;
}
.nav_con li a {
color: white;
}
.margin-left {
margin-left: 25px;
border-left: none!important;
}
/* 公共样式的footer */
.footer_con {
height: 82px;
/* background: #cccccc; */
}
.footer_con .footer_l {
height: 58px;
float: left;
/* background: red; */
padding-top: 24px;
}
.footer_con .footer_l a {
font-size: 12px;
float: left;
color: #868686;
border-right: 1px solid #868686;
/* padding:字体和边框的距离哈 */
padding: 0 7px;
padding-left: 15px;
}
.footer_con .footer_l .footer-right {
border-right: none!important;
}
.footer_con .footer_r {
height: 57px;
color: #8a8a8a;
font-size: 12px;
padding-top: 25px;
/* background: pink; */
padding-right: 21px;
float: right;
}

@ -0,0 +1,93 @@
.loader {
background: #000;
background: radial-gradient(#222, #000);
bottom: 0;
left: 0;
overflow: hidden;
position: fixed;
right: 0;
top: 0;
z-index: 99999;
}
.loader-inner {
bottom: 0;
height: 60px;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0;
width: 100px;
}
.loader-line-wrap {
animation:
spin 2000ms cubic-bezier(.175, .885, .32, 1.275) infinite
;
box-sizing: border-box;
height: 50px;
left: 0;
overflow: hidden;
position: absolute;
top: 0;
transform-origin: 50% 100%;
width: 100px;
}
.loader-line {
border: 4px solid transparent;
border-radius: 100%;
box-sizing: border-box;
height: 100px;
left: 0;
margin: 0 auto;
position: absolute;
right: 0;
top: 0;
width: 100px;
}
.loader-line-wrap:nth-child(1) { animation-delay: -50ms; }
.loader-line-wrap:nth-child(2) { animation-delay: -100ms; }
.loader-line-wrap:nth-child(3) { animation-delay: -150ms; }
.loader-line-wrap:nth-child(4) { animation-delay: -200ms; }
.loader-line-wrap:nth-child(5) { animation-delay: -250ms; }
.loader-line-wrap:nth-child(1) .loader-line {
border-color: hsl(0, 80%, 60%);
height: 90px;
width: 90px;
top: 7px;
}
.loader-line-wrap:nth-child(2) .loader-line {
border-color: hsl(60, 80%, 60%);
height: 76px;
width: 76px;
top: 14px;
}
.loader-line-wrap:nth-child(3) .loader-line {
border-color: hsl(120, 80%, 60%);
height: 62px;
width: 62px;
top: 21px;
}
.loader-line-wrap:nth-child(4) .loader-line {
border-color: hsl(180, 80%, 60%);
height: 48px;
width: 48px;
top: 28px;
}
.loader-line-wrap:nth-child(5) .loader-line {
border-color: hsl(240, 80%, 60%);
height: 34px;
width: 34px;
top: 35px;
}
@keyframes spin {
0%, 15% {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}

@ -0,0 +1,76 @@
@charset "utf-8";
/* 重置样式表 */
* {
margin: 0;
padding: 0;
}
/* 统一页面文本 */
body {
font-size: 16px;
font-family: "微软雅黑";
}
/* 清除列表符号 */
ul,
ol,
li {
list-style: none;
}
/* 清除下划线 */
u,
a {
text-decoration: none;
}
/* 清除倾斜 */
i,
em {
font-style: normal;
}
/* 清除加粗 */
b,
strong {
font-weight: normal;
}
/* 清除文本默认大小和加粗 */
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: 16px;
font-weight: normal;
}
/* 边框清零 */
img {
border: none;
}
/* 清除聚焦时候的边框 */
input {
outline: none;
}

@ -0,0 +1,64 @@
body{
background: url("ab.jpg") no-repeat center;
background-size: cover;
height: 100vh;
width: 100%;
}
.login{
color: #988fc7;
float: right;
width: 100px;
height: 40px;
border-radius: 50%;
justify-content: center;
align-items: center;
transition: 0.4s;
}
.search-box{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
background:#2f3640;
height: 38px;
border-radius: 60px;
padding: 10px;
}
.search-box:hover > .search-txt{
width: 240px;
padding: 0 6px;
}
.search-box:hover > .search-btn{
background: white;
}
.search-btn{
color: #988fc7;
float: right;
width: 40px;
height: 40px;
border-radius: 50%;
background: #2f3640;
display: flex;
justify-content: center;
align-items: center;
transition: 0.4s;
}
.search-txt{
border:none;
background: none;
outline: none;
float: left;
padding: 0;
color: white;
font-size: 16px;
transition: 0.4s;
line-height: 40px;
width: 0px;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,206 @@
div{
display: block;
}
.h1, .h2, .h3, .h4, .h5, .h6, a, abbr, body, cite, dd, dl, dt, h1, h2, h3, h4, h5, h6, iframe, input, li, object, ol, p, pre, span, ul {
font-family: 'Microsoft YaHei','SF Pro Display',Roboto,Noto,Arial,'PingFang SC',sans-serif;
}
a{
text-decoration: none;
cursor: pointer;
}
ul, li, ol, dl, dt, dd {
list-style: none;
}
div, figure, footer, header, hgroup, html, iframe, img, mark, menu, nav, object, section, span, table, tr, td, th, tbody, tfoot, thead, video {
border: 0;
margin: 0;
padding: 0;
}
.my_msg_list{
position:inherit;
margin-top: 50px;
width: 1300px;
min-height: 400px;
margin-bottom: 20px;
}
.my_msg_list_view{
position: relative;
margin-left: 100px;
background-color: #fff;
padding: 24px 16px;
-webkit-box-shadow: 0 2px 4px 0 rgba(0,0,0,0.28);
box-shadow: 0 2px 4px 0 rgba(0,0,0,0.28);
min-height: 520px;
box-sizing: border-box;
}
.my_msg_list_box{
border: 0;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.my_msg_list_con{
border: 0;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.my_msg_list_title{
width: 100%;
margin: 0;
font-size: 14px;
color: #3d3d3d;
margin-bottom: 8px;
display: block;
overflow: hidden;
zoom: 1;
box-sizing: border-box;
}
.fr{
float: right!important;
display: inline-block;
color: #4a90e2;
}
.line{
display: inline-block;
height: 12px;
margin: 2px 12px;
border-right: 1px solid #979797;
}
.msg_list{
padding: 0 0 0 15px;
min-height: 370px;
box-sizing: border-box;
}
.msg_list_ul{
font-size: 14px;
vertical-align: baseline;
margin: 0;
padding: 0;
}
.msg_list_ul_li{
position: relative;
padding: 16px 0;
border-bottom: 1px solid #e0e0e0;
}
.msg_type{
display: inline-block;
height: 40px;
line-height: 40px;
padding: 0 5px;
color: #4d4d4d;
font-size: 25px;
text-align: center;
background-color: #fff;
border: 1px solid #e0e0e0;
vertical-align: top;
}
.msg_info_box{
width: 100%;
color: #4d4d4d;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
}
.msg_title{
display: inline-block;
width: 85%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
}
.options-f{
width: 16%;
height: 20px;
margin: 0;
margin-top: -20px;
padding: 0;
}
.msg_delete{
width: 10px;
height: 10px;
float: right;
}
.msg_content{
margin-top: 15px;
margin-bottom: -16px;
padding: 15px;
background-color: #f7f7f7;
font-size: 14px;
color: #4d4d4d;
line-height: 22px;
}
.page-box{
width: 100%;
margin: 32px 0 20px;
text-align: center;
border-top-color: initial;
border-right-color: initial;
border-bottom-color: initial;
border-left-color: initial;
}
.ule {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
}
.lie {
width: 23%;
display: inline-block;
font: 13px sans-serif;
}
.lie a {
display: block;
color: rgb(39, 124, 184);
text-align: center;
padding: 14px 70px;
text-decoration: none;
}
/*鼠标移动到选项上修改背景颜色 */
.lie a:hover {
background-color: #e3e3f5;
}
.ula {
width: 100%;
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
}
.lia {
width: 23%;
display: inline-block;
font: 13px sans-serif;
}
.lia a {
display: block;
font-size: larger;
color: rgb(0, 0, 0);
text-align: center;
padding: 14px 50px;
text-decoration: none;
}
/*鼠标移动到选项上修改背景颜色 */
.lia a:hover {
background-color: #b7b7b7;
}
.square{
width:200px;
height:5px;
border:1px solid transparent;
background: #06b81a;
}

@ -0,0 +1,276 @@
<head>
<script>
document.addEventListener('DOMContentLoaded', function() {
// 获取表单元素
var form = document.querySelector('.ant-form');
// 为表单添加提交事件监听器
form.addEventListener('submit', function(e) {
e.preventDefault(); // 阻止表单的默认提交行为
// 收集表单数据
var formData = {
//question_kind: document.getElementsByName('question_kind').value,
url: document.getElementById('url').value,
description: document.getElementById('description').value,
question_kind:document.querySelector('input[name="option"]:checked').value
};
console.log(formData);
// 使用fetch API发送数据到后端
fetch('http://localhost:8080/xmy', {
method: 'POST', // 或者 'PUT'
headers: {
'Content-Type': 'application/json',
// 如果需要认证添加Authorization头部
// 'Authorization': 'Bearer your_token_here'
},
body: JSON.stringify(formData) // 将表单数据转换为JSON字符串
})
.then(response => response.json()) // 转换响应为JSON
.then(data => {
console.log('Success:', data);
alert('反馈成功提交!');
})
.catch((error) => {
console.error('Error:', error);
alert('提交失败,请稍后重试!');
});
});
});
window.setInterval(myFunction,5000);
    function myFunction(){
        fetch('http://localhost:8080/aaa', {
            method: 'POST', // 或者 'PUT'
            headers: {
                'Content-Type': 'application/json',
                // 如果需要认证添加Authorization头部
                // 'Authorization': 'Bearer your_token_here'
            },
            body: 'abc' // 将表单数据转换为JSON字符串
        })
        .then(response => response.json()) // 转换响应为JSON
        .then(data => {
console.log(data);
            renderEl(data.message);
        })
    }
   function renderEl(arr) {
        let str = '';
        str += `
           <div
style={{
position: 'absolute',
left: '900px',
top: '20px',
border: 'thick double #FFFAFA',
width:'300px',
whiteSpace:'nowrap'
}}>
<div>
已经解决问题数:${arr.slice(5,11)}
</div>
<table>
<caption>
问题统计数据 更新时间:${arr.substr(arr.indexOf("time:")+5,19)}
</caption>
<thead>
<tr>
<th scope="col">问题类型</th>
<th scope="col">问题数量</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">登录注册</th>
<td>${arr.substr(arr.indexOf("登录")+2,3)}</td>
</tr>
<tr>
<th scope="row">信息认证</th>
<td>${arr.substr(arr.indexOf("信息")+2,3)}</td>
</tr>
<tr>
<th scope="row">实训编程</th>
<td>${arr.substr(arr.indexOf("编程")+2,3)}</td>
</tr>
<tr>
<th scope="row">实训课程 </th>
<td>${arr.substr(arr.indexOf("课程")+2,3)}</td>
</tr>
</tbody>
<tfoot>
<tr>
<th scope="row">其它</th>
<td>${arr.substr(arr.indexOf("其它")+2,3)}</td>
</tr>
</tfoot>
</table>
</div>
            `;
        const el = document.getElementById('wrap');
        el.innerHTML = str;
    }
</script>
</head>
<body>
<div style="padding-left: 10px; padding-right: 10px; flex: 1 1 0%;">
<h1 class="title___Q0EMb">意见反馈</h1>
<div class="minH500">
<section class="wrap___AsKly bg-white pl30 pr30 pt30">
<div class="Text">想对我们的平台提供功能建议?
<br>发现网页中的问题或bug想告诉我们
<br>期望与我们展开合作?
<br>在这里把你想说的一切告诉我们吧?</div>
<div class="c-red-ee4 mt20 mb20">* <a class=
href="">看看帮助中心是否有你想要的答案</a>
</div>
<form class="ant-form ant-form-vertical ant-form-middle css-lw48js">
<div class="ant-form-item css-lw48js ant-form-item-has-success">
<div class="ant-row ant-form-item-row css-lw48js">
<div class="ant-col ant-form-item-label css-lw48js">
<label for="question_kind"
class="ant-form-item-required"
title="问题分类:">问题分类:</label>
</div>
<div class="ant-col ant-form-item-control css-lw48js">
<div class="ant-form-item-control-input">
<div class="ant-form-item-control-input-content">
<div aria-required="true"
class="ant-radio-group ant-radio-group-outline ant-radio-group-middle css-lw48js"
>
<span class="ant-radio ant-wave-target">
<input
type="radio"
value="1"
id="option1"
checked="true"
name="option">
</span>
<span><label for="option1">登录注册</label></span>
<span class="ant-radio ant-wave-target">
<input
type="radio"
value="2"
id="option2"
name="option">
</span>
<span><label for="option2">信息认证</label></span>
<span class="ant-radio ant-wave-target">
<input
type="radio"
value="3"
id="option3"
name="option">
</span>
<span><label for="option3">实训编程</label></span>
<span class="ant-radio ant-wave-target">
<input
type="radio"
value="4"
id="option4"
name="option">
</span>
<span><label for="option4">实训课程</label></span>
<span class="ant-radio ant-wave-target">
<input
type="radio"
value="5"
id="option5"
name="option">
</span>
<span><label for="option5">课堂</label></span>
<span class="ant-radio ant-wave-target">
<input
type="radio"
value="6"
id="option6"
name="option">
</span>
<span><label for="option6">其它</label></span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="ant-form-item css-lw48js">
<div class="ant-row ant-form-item-row css-lw48js">
<div class="ant-col ant-form-item-label css-lw48js">
<label for="url"
class="ant-form-item-required"
title="问题页面网址:">问题页面网址:</label>
</div>
<div class="ant-col ant-form-item-control css-lw48js"
style="display: flex ;width: 100px;">
<div class="ant-form-item-control-input">
<div class="ant-form-item-control-input-content">
<input placeholder="反馈平台问题,请同时填写对应的问题页面链接,以便平台能够及时跟踪解决,谢谢"
id="url"
aria-required="true"
class="ant-input css-lw48js"
type="text"
value="">
</div>
</div>
</div>
</div>
</div>
<div class="ant-form-item css-lw48js">
<div class="ant-row ant-form-item-row css-lw48js">
<div class="ant-col ant-form-item-label css-lw48js">
<label for="description"
class="ant-form-item-required"
title="问题描述:">问题描述:</label>
</div>
<div class="ant-col ant-form-item-control css-lw48js">
<div class="ant-form-item-control-input">
<div class="ant-form-item-control-input-content">
<textarea rows="4"
placeholder="反馈平台问题,请同时填写对应的问题页面链接,以便平台能够及时跟踪解决,谢谢"
id="description"
aria-required="true"
class="ant-input css-lw48js"></textarea>
</div>
</div>
</div>
</div>
</div>
<div id="wrap"></div>
<div class="ant-form-item css-lw48js">
<div class="ant-row ant-form-item-row css-lw48js">
<div class="ant-col ant-form-item-control css-lw48js">
<div class="ant-form-item-control-input">
<div class="ant-form-item-control-input-content">
<button type="submit"
class="ant-btn css-lw48js ant-btn-primary">
<span>提交</span>
</button>
</div>
</div>
</div>
</div>
</div>
</form>
</section>
</div>
</div>
</body>
Loading…
Cancel
Save