完成登录页和首页的功能,部分前端框架东西进行修改

This commit is contained in:
duxp 2023-07-18 10:29:45 +08:00
parent 9c2e183751
commit 4e79041039
21 changed files with 1285 additions and 1984 deletions

View File

@ -3,7 +3,7 @@ html {
} }
body.signin { body.signin {
height:auto; height:auto;
background:url(../img/login-background.jpg) no-repeat center fixed; background:url(../img/index.jpg) no-repeat center fixed;
-webkit-background-size:cover; -webkit-background-size:cover;
-moz-background-size:cover; -moz-background-size:cover;
-o-background-size:cover; -o-background-size:cover;

View File

@ -1 +1 @@
html{height:100%}body.signin{height:auto;background:url(../img/login-background.jpg) no-repeat center fixed;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover}.signinpanel{width:750px;margin:10% auto 0;color:rgba(255,255,255,.95)}.signinpanel .logopanel{float:none;width:auto;padding:0;background:0}.signinpanel .signin-info ul{list-style:none;padding:0;margin:20px 0}.signinpanel .form-control{display:block;margin-top:15px}.signinpanel .uname{background:#fff url(../img/user.png) no-repeat 95% center;color:#333}.signinpanel .pword{background:#fff url(../img/locked.png) no-repeat 95% center;color:#333}.signinpanel .code{background:#fff no-repeat 95% center;color:#333;margin:0 0 15px 0}.signinpanel .btn{margin-top:15px}.signinpanel form{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);-moz-box-shadow:0 3px 0 rgba(12,12,12,.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,.03);box-shadow:0 3px 0 rgba(12,12,12,.03);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:30px}.signup-footer{border-top:solid 1px rgba(255,255,255,.3);margin:20px 0;padding-top:15px}@media screen and (max-width:768px){.signinpanel,.signuppanel{margin:0 auto;width:380px!important;padding:20px}.signinpanel form{margin-top:20px}.signup-footer,.signuppanel .form-control{margin-bottom:10px}.signup-footer .pull-left,.signup-footer .pull-right{float:none!important;text-align:center}.signinpanel .signin-info ul{display:none}}@media screen and (max-width:320px){.signinpanel,.signuppanel{margin:0 20px;width:auto}}.checkbox-custom{position:relative;padding:0 15px 0 25px;margin-bottom:7px;display:inline-block}.checkbox-custom input[type="checkbox"]{opacity:0;position:absolute;cursor:pointer;z-index:2;margin:-6px 0 0 0;top:50%;left:3px}.checkbox-custom label:before{content:'';position:absolute;top:50%;left:0;margin-top:-9px;width:18px;height:17px;display:inline-block;border-radius:2px;border:1px solid #bbb;background:#fff}.checkbox-custom input[type="checkbox"]:checked+label:after{position:absolute;display:inline-block;font-family:'Glyphicons Halflings';content:"\e013";top:42%;left:3px;margin-top:-5px;font-size:11px;line-height:1;width:16px;height:16px;color:#333}.checkbox-custom label{cursor:pointer;line-height:1.2;font-weight:normal;margin-bottom:0;text-align:left}.form-control,.form-control:focus,.has-error .form-control:focus,.has-success .form-control:focus,.has-warning .form-control:focus,.navbar-collapse,.navbar-form,.navbar-form-custom .form-control:focus,.navbar-form-custom .form-control:hover,.open .btn.dropdown-toggle,.panel,.popover,.progress,.progress-bar{box-shadow:none}.form-control{border-radius:1px!important;padding:6px 12px!important;height:34px!important}.form-control:focus{border-color:#1ab394!important} html{height:100%}body.signin{height:auto;background:url(../img/index.jpg) no-repeat center fixed;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover}.signinpanel{margin:10% auto 0;color:rgba(255,255,255,.95)}.signinpanel .logopanel{float:none;width:auto;padding:0;background:0}.signinpanel .signin-info ul{list-style:none;padding:0;margin:20px 0}.signinpanel .form-control{display:block;margin-top:15px}.signinpanel .uname{background:#fff url(../img/user.png) no-repeat 95% center;color:#333}.signinpanel .pword{background:#fff url(../img/locked.png) no-repeat 95% center;color:#333}.signinpanel .code{background:#fff no-repeat 95% center;color:#333;margin:0 0 15px 0}.signinpanel .btn{margin-top:15px}.signinpanel form{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);-moz-box-shadow:0 3px 0 rgba(12,12,12,.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,.03);box-shadow:0 3px 0 rgba(12,12,12,.03);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:30px}.signup-footer{width:100%;text-align:center;position: fixed;bottom:0;box-sizing: border-box;border-top:solid 1px rgba(255,255,255,.3);color: #ffffff;padding:15px}@media screen and (max-width:768px){.signinpanel,.signuppanel{margin:0 auto;width:380px!important;padding:20px}.signinpanel form{margin-top:20px}.signup-footer,.signuppanel .form-control{margin-bottom:10px}.signup-footer .pull-left,.signup-footer .pull-right{float:none!important;text-align:center}.signinpanel .signin-info ul{display:none}}@media screen and (max-width:320px){.signinpanel,.signuppanel{margin:0 20px;width:auto}}.checkbox-custom{position:relative;padding:0 15px 0 25px;margin-bottom:7px;display:inline-block}.checkbox-custom input[type="checkbox"]{opacity:0;position:absolute;cursor:pointer;z-index:2;margin:-6px 0 0 0;top:50%;left:3px}.checkbox-custom label:before{content:'';position:absolute;top:50%;left:0;margin-top:-9px;width:18px;height:17px;display:inline-block;border-radius:2px;border:1px solid #bbb;background:#fff}.checkbox-custom input[type="checkbox"]:checked+label:after{position:absolute;display:inline-block;font-family:'Glyphicons Halflings';content:"\e013";top:42%;left:3px;margin-top:-5px;font-size:11px;line-height:1;width:16px;height:16px;color:#333}.checkbox-custom label{cursor:pointer;line-height:1.2;font-weight:normal;margin-bottom:0;text-align:left}.form-control,.form-control:focus,.has-error .form-control:focus,.has-success .form-control:focus,.has-warning .form-control:focus,.navbar-collapse,.navbar-form,.navbar-form-custom .form-control:focus,.navbar-form-custom .form-control:hover,.open .btn.dropdown-toggle,.panel,.popover,.progress,.progress-bar{box-shadow:none}.form-control{border-radius:1px!important;padding:6px 12px!important;height:34px!important}.form-control:focus{border-color:#1ab394!important}

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,329 @@
function initContentMenu() {
// 基于准备好的dom初始化echarts实例
var myChart = echarts.init(document.getElementById('main_center_echarts'));
let color = ['#ffffff', '#ffe93a', '#36fff6', '#67f95f'];
let oneArr = [{
name: '',
type: 0,
//logo图片
symbol: 'image://../img/main_center/center_icon.png',
symbolSize: 100,
itemStyle: {
color: {
type: 'linear',
x: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0,
color: '#ffe93a' // 0% 处的颜色
}, {
offset: 1,
color: '#36fff6' // 100% 处的颜色
}],
global: false // 缺省为 false
}
}
}];
let erArr = [{
name: '部门年度考核完成情况',
type: 2,
symbol:'image://../img/main_center/icon2.png'
}, {
name: '党风廉政建设',
type: 2,
symbol:'image://../img/main_center/icon4.png'
}, {
name: '党务及意识形态',
type: 2,
symbol:'image://../img/main_center/icon3.png'
}, {
name: '部门日常考核完成情况',
type: 2,
symbol:'image://../img/main_center/icon1.png'
}];
let allArr = [...oneArr, ...erArr],
dataArr = [];
// 点
allArr.forEach((el, ind) => {
if (el.type > 0) {
el.symbolSize = 50
// el.symbol = "image://././images/index/dc1.png";
el.itemStyle = {
color: color[el.type],
};
}
if(ind === 1 || ind === 2){
el.label = {
show: true,
position: "right",
distance: 10,
color: color[el.type],
};
}else{
el.label = {
show: true,
position: "left",
distance: 10,
color: color[el.type],
};
}
let _str = `\n\n目前考核分:100分\n\n当前分数:65分\n\n当前进度:25%`;
if(el.name){
el.name = el.name+_str;
}
});
// 圆形分区
function group(arr, r) {
const newArray = [];
const {
length: arLen
} = arr;
arr.forEach((e, ind) => {
// 按角度均匀分布 本来为90°分割现在多加45°
const ang = 90 - (360 / arLen).toFixed(2) * (ind + 1)+45;
const x = (Math.cos(ang * Math.PI / 180)).toFixed(2) * r;
const y = (Math.sin(ang * Math.PI / 180)).toFixed(2) * r;
const x1 = (Math.cos(ang * Math.PI / 180)).toFixed(2) * (r - 5);
const y1 = (Math.sin(ang * Math.PI / 180)).toFixed(2) * (r - 5);
const x0 = (Math.cos(ang * Math.PI / 180)).toFixed(2) * (r - 30);
const y0 = (Math.sin(ang * Math.PI / 180)).toFixed(2) * (r - 30);
e.value = [x.toFixed(2), y.toFixed(2)]
e.twoPoint = [
[x1.toFixed(2), y1.toFixed(2)],
[x0.toFixed(2), y0.toFixed(2)]
];
newArray.push(e);
});
return newArray;
}
// 线配置
function linesConfig(arr) {
const [dataArr, targetCoord] = [
[],
[0, 0]
];
arr.forEach((el) => {
function getFormatItem(start, end) {
let item = [{
coord: el.twoPoint[start]
}, // 起点
{
coord: el.twoPoint[end],
lineStyle: {
color: color[el.type],
curveness: el.type === 1 ? 0.4 : 0,
},
effect: {
color: color[el.type]
}
}, // 终点
]
return item
}
switch (el.type) {
case 0:
break;
case 1:
dataArr.push(getFormatItem(0, 1));
break;
case 2:
dataArr.push(getFormatItem(1, 0));
break;
case 3:
dataArr.push(getFormatItem(0, 1));
break;
case 4:
dataArr.push(getFormatItem(1, 0));
break;
}
});
return dataArr;
}
// 点分布
oneArr = group(oneArr, 0);
erArr = group(erArr, 40);
allArr = [...oneArr, ...erArr];
// 线坐标和配置
dataArr = linesConfig(allArr);
function generateData(totalNum, bigvalue, smallvalue, color) {
let dataArr = [];
for (var i = 0; i < totalNum; i++) {
if (i % 2 === 0) {
dataArr.push({
name: (i + 1).toString(),
value: bigvalue,
itemStyle: {
color: color,
borderWidth: 0,
}
});
} else {
dataArr.push({
name: (i + 1).toString(),
value: smallvalue,
itemStyle: {
color: "rgba(0,0,0,0)",
borderWidth: 0,
}
});
}
}
return dataArr;
}
let dolitData = generateData(100, 25, 20, 'rgb(126,190,255)');
let threeData = generateData(6, 40, 10, '#2dc0c9');
function getOption(startAngle, radius) {
let option = {
// backgroundColor: '#081c47',
title: {
text: '',
left: 'center',
textStyle: {
color: '#fff'
}
},
xAxis: {
show: false,
type: "value",
max: 50,
min: -51,
},
grid: {
top: 10,
bottom: 10,
left: 10,
right: 10,
},
yAxis: {
show: false,
type: "value",
max: 50,
min: -50,
},
series: [{
name: "节点",
type: "graph",
silent: false, //图形是否不响应和触发鼠标事件,默认为 false即响应和触发鼠标事件。
hoverAnimation: true, // 鼠标悬浮高亮
animation:true,
cursor: 'point',
coordinateSystem: "cartesian2d",
z: 3,
itemStyle: {
shadowColor: "none",
},
emphasis: {
scale: false
},
data: allArr,
},
{
name: "线图",
type: "lines",
hoverAnimation: false,
silent: true,
cursor: 'default',
coordinateSystem: "cartesian2d",
polyline: false, // 多线段
z: 1,
lineStyle: {
width: 2,
type: 'dashed',
curveness: 0,
},
effect: {
show: true,
period: 8, //箭头指向速度,值越小速度越快
trailLength: 0, //特效尾迹长度[0,1]值越大,尾迹越长重
symbol: 'arrow', //箭头图标
symbolSize: 6
},
emphasis: {
lineStyle: {
type: 'dashed',
}
},
data: dataArr,
},
{
name: '不动外圆',
type: 'pie',
zlevel: 4,
silent: true,
hoverAnimation: false,
radius: ['60%', '59%'],
label: {
show: false,
},
labelLine: {
show: false,
},
data: dolitData
},
{
type: 'pie',
name: '旋转圆',
zlevel: 20,
silent: true,
hoverAnimation: false,
radius: ['50%', '49%'],
startAngle: startAngle,
data: threeData,
label: {
show: false,
},
labelLine: {
show: false,
},
},
{
name: '缩放圆',
type: 'pie',
zlevel: 4,
silent: true,
hoverAnimation: false,
radius: [(radius + 1) + '%', radius + '%'],
label: {
show: false,
},
labelLine: {
show: false,
},
data: dolitData
},
],
};
return option;
}
let startAngle = 50; // 初始旋转角度
let [minradius, radius, maxradius] = [24, 24, 28] // 初始缩放尺寸
let isBig = true // 缩放动画 标识
function draw() {
startAngle = startAngle - 5
if (isBig) {
radius = radius + 0.5
if (radius > maxradius) {
isBig = false
}
} else {
radius = radius - 0.5
if (radius < minradius) {
isBig = true
}
}
let option = getOption(startAngle, radius)
myChart.setOption(option, true);
}
setInterval(draw, 500);
}

View File

@ -2,21 +2,22 @@
<html lang="zh" xmlns:th="http://www.thymeleaf.org"> <html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta name="renderer" content="webkit"> <meta content="webkit" name="renderer">
<title>若依系统首页</title> <title>若依系统首页</title>
<!-- 避免IE使用兼容模式 --> <!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content="IE=edge" http-equiv="X-UA-Compatible">
<link th:href="@{favicon.ico}" rel="shortcut icon"/> <link rel="shortcut icon" th:href="@{favicon.ico}"/>
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/> <link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"/>
<link th:href="@{/css/jquery.contextMenu.min.css}" rel="stylesheet"/> <link rel="stylesheet" th:href="@{/css/jquery.contextMenu.min.css}"/>
<link th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/> <link rel="stylesheet" th:href="@{/css/font-awesome.min.css}"/>
<link th:href="@{/css/animate.min.css}" rel="stylesheet"/> <link rel="stylesheet" th:href="@{/css/animate.min.css}"/>
<link th:href="@{/css/style.min.css}" rel="stylesheet"/> <link rel="stylesheet" th:href="@{/css/style.min.css}"/>
<link th:href="@{/css/skins.css}" rel="stylesheet"/> <link rel="stylesheet" th:href="@{/css/skins.css}"/>
<link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}" rel="stylesheet"/> <link rel="stylesheet" th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}"/>
</head> </head>
<body class="fixed-sidebar full-height-layout gray-bg" th:classappend="${isMobile} ? 'canvas-menu'" style="overflow: hidden"> <body class="fixed-sidebar full-height-layout gray-bg" style="overflow: hidden"
th:classappend="${isMobile} ? 'canvas-menu'">
<div id="wrapper"> <div id="wrapper">
<!--左侧导航开始--> <!--左侧导航开始-->
@ -26,45 +27,62 @@
</div> </div>
<a th:href="@{/index}"> <a th:href="@{/index}">
<li class="logo hidden-xs"> <li class="logo hidden-xs">
<span class="logo-lg">RuoYi</span> <span class="logo-lg" style="font-size: 18px">业务绩效考核系统</span>
</li> </li>
</a> </a>
<div class="sidebar-collapse"> <div class="sidebar-collapse">
<ul class="nav" id="side-menu"> <ul class="nav" id="side-menu">
<li> <li>
<div class="user-panel"> <div class="user-panel">
<a class="menuItem noactive" title="个人中心" th:href="@{/system/user/profile}"> <a class="menuItem noactive" th:href="@{/system/user/profile}" title="个人中心">
<div class="hide" th:text="个人中心"></div> <div class="hide" th:text="个人中心"></div>
<div class="pull-left image"> <div class="pull-left image">
<img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="img-circle" alt="User Image"> <img class="user-image"
th:src="'../img/userAdmin.png'">
</div> </div>
</a> </a>
<div class="pull-left info"> <div class="pull-left info">
<p>[[${user.loginName}]]</p> <p>[[${user.loginName}]]</p>
<a href="#"><i class="fa fa-circle text-success"></i> 在线</a> <a href="#"><i class="fa fa-circle text-success"></i> 在线</a>
<a th:href="@{logout}" style="padding-left:5px;"><i class="fa fa-sign-out text-danger"></i> 注销</a> <a style="padding-left:5px;" th:href="@{logout}"><i class="fa fa-sign-out text-danger"></i>
注销</a>
</div> </div>
</div> </div>
</li> </li>
<li> <li>
<a class="menuItem" th:href="@{/system/main}"><i class="fa fa-home"></i> <span class="nav-label">首页</span> </a> <a class="menuItem" th:href="@{/system/main}"><i class="fa fa-home"></i> <span
class="nav-label">首页</span> </a>
</li> </li>
<li th:each="menu : ${menus}"> <li th:each="menu : ${menus}">
<a th:class="@{${!#strings.isEmpty(menu.url) && menu.url != '#'} ? ${menu.target}}" th:href="@{${#strings.isEmpty(menu.url)} ? |#| : ${menu.url}}" th:data-refresh="${menu.isRefresh == '0'}"> <a th:class="@{${!#strings.isEmpty(menu.url) && menu.url != '#'} ? ${menu.target}}"
th:data-refresh="${menu.isRefresh == '0'}"
th:href="@{${#strings.isEmpty(menu.url)} ? |#| : ${menu.url}}">
<i class="fa fa-bar-chart-o" th:class="${menu.icon}"></i> <i class="fa fa-bar-chart-o" th:class="${menu.icon}"></i>
<span class="nav-label" th:text="${menu.menuName}">一级菜单</span> <span class="nav-label" th:text="${menu.menuName}">一级菜单</span>
<span th:class="${#strings.isEmpty(menu.url) || menu.url == '#'} ? |fa arrow|"></span> <span th:class="${#strings.isEmpty(menu.url) || menu.url == '#'} ? |fa arrow|"></span>
</a> </a>
<ul class="nav nav-second-level collapse"> <ul class="nav nav-second-level collapse">
<li th:each="cmenu : ${menu.children}"> <li th:each="cmenu : ${menu.children}">
<a th:if="${#lists.isEmpty(cmenu.children)}" th:class="${#strings.isEmpty(cmenu.target)} ? |menuItem| : ${cmenu.target}" th:utext="${cmenu.menuName}" th:href="@{${cmenu.url}}" th:data-refresh="${cmenu.isRefresh == '0'}">二级菜单</a> <a th:class="${#strings.isEmpty(cmenu.target)} ? |menuItem| : ${cmenu.target}"
<a th:if="${not #lists.isEmpty(cmenu.children)}" href="#">[[${cmenu.menuName}]]<span class="fa arrow"></span></a> th:data-refresh="${cmenu.isRefresh == '0'}"
<ul th:if="${not #lists.isEmpty(cmenu.children)}" class="nav nav-third-level"> th:href="@{${cmenu.url}}" th:if="${#lists.isEmpty(cmenu.children)}"
th:utext="${cmenu.menuName}">二级菜单</a>
<a href="#" th:if="${not #lists.isEmpty(cmenu.children)}">[[${cmenu.menuName}]]<span
class="fa arrow"></span></a>
<ul class="nav nav-third-level" th:if="${not #lists.isEmpty(cmenu.children)}">
<li th:each="emenu : ${cmenu.children}"> <li th:each="emenu : ${cmenu.children}">
<a th:if="${#lists.isEmpty(emenu.children)}" th:class="${#strings.isEmpty(emenu.target)} ? |menuItem| : ${emenu.target}" th:text="${emenu.menuName}" th:href="@{${emenu.url}}" th:data-refresh="${emenu.isRefresh == '0'}">三级菜单</a> <a th:class="${#strings.isEmpty(emenu.target)} ? |menuItem| : ${emenu.target}"
<a th:if="${not #lists.isEmpty(emenu.children)}" href="#">[[${emenu.menuName}]]<span class="fa arrow"></span></a> th:data-refresh="${emenu.isRefresh == '0'}"
<ul th:if="${not #lists.isEmpty(emenu.children)}" class="nav nav-four-level"> th:href="@{${emenu.url}}" th:if="${#lists.isEmpty(emenu.children)}"
<li th:each="fmenu : ${emenu.children}"><a th:if="${#lists.isEmpty(fmenu.children)}" th:class="${#strings.isEmpty(fmenu.target)} ? |menuItem| : ${fmenu.target}" th:text="${fmenu.menuName}" th:href="@{${fmenu.url}}" th:data-refresh="${fmenu.isRefresh == '0'}">四级菜单</a></li> th:text="${emenu.menuName}">三级菜单</a>
<a href="#" th:if="${not #lists.isEmpty(emenu.children)}">[[${emenu.menuName}]]<span
class="fa arrow"></span></a>
<ul class="nav nav-four-level" th:if="${not #lists.isEmpty(emenu.children)}">
<li th:each="fmenu : ${emenu.children}"><a
th:class="${#strings.isEmpty(fmenu.target)} ? |menuItem| : ${fmenu.target}"
th:data-refresh="${fmenu.isRefresh == '0'}"
th:href="@{${fmenu.url}}" th:if="${#lists.isEmpty(fmenu.children)}"
th:text="${fmenu.menuName}">四级菜单</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -72,7 +90,8 @@
</ul> </ul>
</li> </li>
<li th:if="${demoEnabled}"> <li th:if="${demoEnabled}">
<a href="#"><i class="fa fa-desktop"></i><span class="nav-label">实例演示</span><span class="fa arrow"></span></a> <a href="#"><i class="fa fa-desktop"></i><span class="nav-label">实例演示</span><span
class="fa arrow"></span></a>
<ul class="nav nav-second-level collapse"> <ul class="nav nav-second-level collapse">
<li><a>表单<span class="fa arrow"></span></a> <li><a>表单<span class="fa arrow"></span></a>
<ul class="nav nav-third-level"> <ul class="nav nav-third-level">
@ -184,40 +203,48 @@
<!--左侧导航结束--> <!--左侧导航结束-->
<!--右侧部分开始--> <!--右侧部分开始-->
<div id="page-wrapper" class="gray-bg dashbard-1"> <div class="gray-bg dashbard-1" id="page-wrapper">
<div class="row border-bottom"> <div class="row border-bottom">
<nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0"> <nav class="navbar navbar-static-top" role="navigation"
<div class="navbar-header"> style="margin-bottom: 0;display: flex;flex-direction: row;align-items: center;">
<a class="navbar-minimalize minimalize-styl-2" style="color:#FFF;" href="#" title="收起菜单"> <div class="navbar-header" style="flex: 1">
<a class="navbar-minimalize minimalize-styl-2" href="#" style="color:#FFF;" title="收起菜单">
<i class="fa fa-bars"></i> <i class="fa fa-bars"></i>
</a> </a>
<div style="width: 100px;display: flex;flex-direction:column;align-items: center;">
<img src="../img/logo.png" width="80"/>
<div style="color: #ffffff;font-size: 10px">创新服务-阳光交易</div>
</div> </div>
<ul class="nav navbar-top-links navbar-right welcome-message"> </div>
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="开发文档" href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i> 文档</a></li> <div style="flex: 1;color: #ffffff;font-size: 20px">鄂尔多斯市公共资源交易中心达拉特旗分中心绩效考核系统</div>
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="锁定屏幕" href="#" id="lockScreen"><i class="fa fa-lock"></i> 锁屏</a></li> <ul class="nav navbar-top-links navbar-right welcome-message" style="flex: 1;text-align: right">
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="全屏显示" href="#" id="fullScreen"><i class="fa fa-arrows-alt"></i> 全屏</a></li> <!-- <li><a data-placement="bottom" data-toggle="tooltip" data-trigger="hover" href="#" id="lockScreen"-->
<!-- title="锁定屏幕"><i class="fa fa-lock"></i> 锁屏</a></li>-->
<!-- <li><a data-placement="bottom" data-toggle="tooltip" data-trigger="hover" href="#" id="fullScreen"-->
<!-- title="全屏显示"><i class="fa fa-arrows-alt"></i> 全屏</a></li>-->
<li class="dropdown user-menu"> <li class="dropdown user-menu">
<a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown"> <a class="dropdown-toggle" data-hover="dropdown" href="javascript:void(0)">
<img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="user-image"> <img class="user-image"
th:src="'../img/userAdmin.png'">
<span class="hidden-xs">[[${#strings.defaultString(user.userName, '-')}]]</span> <span class="hidden-xs">[[${#strings.defaultString(user.userName, '-')}]]</span>
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li class="mt5"> <li class="mt5">
<a th:href="@{/system/user/profile}" class="menuItem noactive"> <a class="menuItem noactive" th:href="@{/system/user/profile}">
<i class="fa fa-user"></i> 个人中心</a> <i class="fa fa-user"></i> 个人中心</a>
</li> </li>
<li> <li>
<a onclick="resetPwd()"> <a onclick="resetPwd()">
<i class="fa fa-key"></i> 修改密码</a> <i class="fa fa-key"></i> 修改密码</a>
</li> </li>
<li> <!-- <li>-->
<a onclick="switchSkin()"> <!-- <a onclick="switchSkin()">-->
<i class="fa fa-dashboard"></i> 切换主题</a> <!-- <i class="fa fa-dashboard"></i> 切换主题</a>-->
</li> <!-- </li>-->
<li> <!-- <li>-->
<a onclick="toggleMenu()"> <!-- <a onclick="toggleMenu()">-->
<i class="fa fa-toggle-off"></i> 横向菜单</a> <!-- <i class="fa fa-toggle-off"></i> 横向菜单</a>-->
</li> <!-- </li>-->
<li class="divider"></li> <li class="divider"></li>
<li> <li>
<a th:href="@{logout}"> <a th:href="@{logout}">
@ -234,23 +261,20 @@
</button> </button>
<nav class="page-tabs menuTabs"> <nav class="page-tabs menuTabs">
<div class="page-tabs-content"> <div class="page-tabs-content">
<a href="javascript:;" class="active menuTab" th:data-id="@{/system/main}">首页</a> <a class="active menuTab" href="javascript:;" th:data-id="@{/system/main}">首页</a>
</div> </div>
</nav> </nav>
<button class="roll-nav roll-right tabRight"> <button class="roll-nav roll-right tabRight">
<i class="fa fa-forward"></i> <i class="fa fa-forward"></i>
</button> </button>
<a href="javascript:void(0);" class="roll-nav roll-right tabReload"><i class="fa fa-refresh"></i> 刷新</a> <a class="roll-nav roll-right tabReload" href="javascript:void(0);"><i class="fa fa-refresh"></i> 刷新</a>
</div> </div>
<a class="ax_close_max" href="#" id="ax_close_max" title="关闭全屏"> <i class="fa fa-times-circle-o"></i> </a>
<a id="ax_close_max" class="ax_close_max" href="#" title="关闭全屏"> <i class="fa fa-times-circle-o"></i> </a>
<div class="row mainContent" id="content-main" th:classappend="${mainClass}"> <div class="row mainContent" id="content-main" th:classappend="${mainClass}">
<iframe class="RuoYi_iframe" name="iframe0" width="100%" height="100%" th:data-id="@{/system/main}" <iframe class="RuoYi_iframe" frameborder="0" height="100%" name="iframe0" seamless
th:src="@{/system/main}" frameborder="0" seamless></iframe> th:data-id="@{/system/main}" th:src="@{/system/main}" width="100%"></iframe>
</div> </div>
<div class="footer" th:if="${footer}">
<div th:if="${footer}" class="footer">
<div class="pull-right">© [[${copyrightYear}]] RuoYi Copyright</div> <div class="pull-right">© [[${copyrightYear}]] RuoYi Copyright</div>
</div> </div>
</div> </div>
@ -272,7 +296,9 @@
window.history.forward(1); window.history.forward(1);
var ctx = [[@{/}]]; var ctx = [[@{/}]];
var lockscreen = [[${session.lockscreen}]]; var lockscreen = [[${session.lockscreen}]];
if(lockscreen){window.top.location=ctx+"lockscreen";} if (lockscreen) {
window.top.location = ctx + "lockscreen";
}
// 皮肤缓存 // 皮肤缓存
var skin = storage.get("skin"); var skin = storage.get("skin");
// history表示去掉地址的#)否则地址以"#"形式展示 // history表示去掉地址的#)否则地址以"#"形式展示

View File

@ -2,78 +2,69 @@
<html lang="zh" xmlns:th="http://www.thymeleaf.org"> <html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0" name="viewport">
<title>登录若依系统</title> <title>鄂尔多斯市公共资源交易中心达拉特旗分中心绩效考核系统</title>
<meta name="description" content="若依后台管理框架"> <meta content="若依后台管理框架" name="description">
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/> <link href="../static/css/bootstrap.min.css" rel="stylesheet" th:href="@{/css/bootstrap.min.css}"/>
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/> <link href="../static/css/font-awesome.min.css" rel="stylesheet" th:href="@{/css/font-awesome.min.css}"/>
<link href="../static/css/style.min.css" th:href="@{/css/style.min.css}" rel="stylesheet"/> <link href="../static/css/style.min.css" rel="stylesheet" th:href="@{/css/style.min.css}"/>
<link href="../static/css/login.min.css" th:href="@{/css/login.min.css}" rel="stylesheet"/> <link href="../static/css/login.min.css" rel="stylesheet" th:href="@{/css/login.min.css}"/>
<link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}" rel="stylesheet"/> <link href="../static/ruoyi/css/ry-ui.css" rel="stylesheet" th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}"/>
<!-- 360浏览器急速模式 --> <!-- 360浏览器急速模式 -->
<meta name="renderer" content="webkit"> <meta content="webkit" name="renderer">
<!-- 避免IE使用兼容模式 --> <!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content="IE=edge" http-equiv="X-UA-Compatible">
<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/> <link href="../static/favicon.ico" rel="shortcut icon" th:href="@{favicon.ico}"/>
<style type="text/css">label.error { position:inherit; }</style> <style type="text/css">label.error {
position: inherit;
}</style>
<script> <script>
if(window.top!==window.self){alert('未登录或登录超时。请重新登录');window.top.location=window.location}; if (window.top !== window.self) {
alert('未登录或登录超时。请重新登录');
window.top.location = window.location
}
;
</script> </script>
</head> </head>
<body class="signin"> <body class="signin">
<div style="margin: 2%;color: #ffffff;display: flex;flex-direction: row;align-items: flex-end">
<img src="../img/logo2.png" width="120"/>
<strong style="font-size: 30px">鄂尔多斯市公共资源交易中心达拉特旗分中心</strong>
</div>
<div class="signinpanel"> <div class="signinpanel">
<div class="row"> <div style="width: 350px;margin: 0 auto">
<div class="col-sm-7"> <form autocomplete="off" id="signupForm">
<div class="signin-info"> <h4 class="no-margins" style="font-size: 22px">请登录:业务绩效考核系统</h4>
<div class="logopanel m-b"> <input class="form-control uname" name="username" placeholder="用户名" type="text" value="admin"/>
<h1><img alt="[ 若依 ]" src="../static/ruoyi.png" th:src="@{/ruoyi.png}"></h1> <input class="form-control pword" name="password" placeholder="密码" type="password" value="admin123"/>
</div>
<div class="m-b"></div>
<h4>欢迎使用 <strong>若依 后台管理系统</strong></h4>
<ul class="m-b">
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> SpringBoot</li>
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Mybatis</li>
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Shiro</li>
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Thymeleaf</li>
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Bootstrap</li>
</ul>
<strong th:if="${isAllowRegister}">还没有账号? <a th:href="@{/register}">立即注册&raquo;</a></strong>
</div>
</div>
<div class="col-sm-5">
<form id="signupForm" autocomplete="off">
<h4 class="no-margins">登录:</h4>
<p class="m-t-md">你若不离不弃,我必生死相依</p>
<input type="text" name="username" class="form-control uname" placeholder="用户名" value="admin" />
<input type="password" name="password" class="form-control pword" placeholder="密码" value="admin123" />
<div class="row m-t" th:if="${captchaEnabled==true}"> <div class="row m-t" th:if="${captchaEnabled==true}">
<div class="col-xs-6"> <div class="col-xs-6">
<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" /> <input class="form-control code" maxlength="5" name="validateCode" placeholder="验证码"
type="text"/>
</div> </div>
<div class="col-xs-6"> <div class="col-xs-6">
<a href="javascript:void(0);" title="点击更换验证码"> <a href="javascript:void(0);" title="点击更换验证码">
<img th:src="@{/captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/> <img class="imgcode" th:src="@{/captcha/captchaImage(type=${captchaType})}" width="85%"/>
</a> </a>
</div> </div>
</div> </div>
<div class="checkbox-custom" th:if="${isRemembered}" th:classappend="${captchaEnabled==false} ? 'm-t'"> <div class="checkbox-custom" th:classappend="${captchaEnabled==false} ? 'm-t'" th:if="${isRemembered}">
<input type="checkbox" id="rememberme" name="rememberme"> <label for="rememberme">记住我</label> <input id="rememberme" name="rememberme" type="checkbox"> <label for="rememberme">记住我</label>
</div> </div>
<button class="btn btn-success btn-block" id="btnSubmit" data-loading="正在验证登录,请稍候...">登录</button> <button class="btn btn-success btn-block" data-loading="正在验证登录,请稍候..." id="btnSubmit">登录</button>
</form> </form>
</div> </div>
</div> </div>
<div class="signup-footer"> <div class="signup-footer">
<div class="pull-left"> Copyright © 2018-2023 ruoyi.vip All Rights Reserved.
Copyright © 2018-2023 ruoyi.vip All Rights Reserved. <br>
</div>
</div>
</div> </div>
<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script> <script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script>
<!--[if lte IE 8]><script>window.location.href=ctx+'html/ie.html';</script><![endif]--> <!--[if lte IE 8]>
<script>window.location.href = ctx + 'html/ie.html';</script><![endif]-->
<!-- 全局js --> <!-- 全局js -->
<script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script> <script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script>
<script src="../static/ajax/libs/validate/jquery.validate.min.js" th:src="@{/ajax/libs/validate/jquery.validate.min.js}"></script> <script src="../static/ajax/libs/validate/jquery.validate.min.js"
th:src="@{/ajax/libs/validate/jquery.validate.min.js}"></script>
<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script> <script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
<script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script> <script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.7.7}"></script> <script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.7.7}"></script>

File diff suppressed because it is too large Load Diff