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

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 {
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;
-moz-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">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="renderer" content="webkit">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="webkit" name="renderer">
<title>若依系统首页</title>
<!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link th:href="@{favicon.ico}" rel="shortcut icon"/>
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link th:href="@{/css/jquery.contextMenu.min.css}" rel="stylesheet"/>
<link th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
<link th:href="@{/css/animate.min.css}" rel="stylesheet"/>
<link th:href="@{/css/style.min.css}" rel="stylesheet"/>
<link th:href="@{/css/skins.css}" rel="stylesheet"/>
<link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}" rel="stylesheet"/>
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<link rel="shortcut icon" th:href="@{favicon.ico}"/>
<link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"/>
<link rel="stylesheet" th:href="@{/css/jquery.contextMenu.min.css}"/>
<link rel="stylesheet" th:href="@{/css/font-awesome.min.css}"/>
<link rel="stylesheet" th:href="@{/css/animate.min.css}"/>
<link rel="stylesheet" th:href="@{/css/style.min.css}"/>
<link rel="stylesheet" th:href="@{/css/skins.css}"/>
<link rel="stylesheet" th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}"/>
</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">
<!--左侧导航开始-->
@ -26,45 +27,62 @@
</div>
<a th:href="@{/index}">
<li class="logo hidden-xs">
<span class="logo-lg">RuoYi</span>
<span class="logo-lg" style="font-size: 18px">业务绩效考核系统</span>
</li>
</a>
<div class="sidebar-collapse">
<ul class="nav" id="side-menu">
<li>
<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="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>
</a>
<div class="pull-left info">
<p>[[${user.loginName}]]</p>
<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>
</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 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>
<span class="nav-label" th:text="${menu.menuName}">一级菜单</span>
<span th:class="${#strings.isEmpty(menu.url) || menu.url == '#'} ? |fa arrow|"></span>
</a>
<ul class="nav nav-second-level collapse">
<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:if="${not #lists.isEmpty(cmenu.children)}" href="#">[[${cmenu.menuName}]]<span class="fa arrow"></span></a>
<ul th:if="${not #lists.isEmpty(cmenu.children)}" class="nav nav-third-level">
<a th:class="${#strings.isEmpty(cmenu.target)} ? |menuItem| : ${cmenu.target}"
th:data-refresh="${cmenu.isRefresh == '0'}"
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}">
<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:if="${not #lists.isEmpty(emenu.children)}" href="#">[[${emenu.menuName}]]<span class="fa arrow"></span></a>
<ul th:if="${not #lists.isEmpty(emenu.children)}" class="nav nav-four-level">
<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>
<a th:class="${#strings.isEmpty(emenu.target)} ? |menuItem| : ${emenu.target}"
th:data-refresh="${emenu.isRefresh == '0'}"
th:href="@{${emenu.url}}" th:if="${#lists.isEmpty(emenu.children)}"
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>
</li>
</ul>
@ -72,9 +90,10 @@
</ul>
</li>
<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">
<li> <a>表单<span class="fa arrow"></span></a>
<li><a>表单<span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li><a class="menuItem" th:href="@{/demo/form/button}">按钮</a></li>
<li><a class="menuItem" th:href="@{/demo/form/grid}">栅格</a></li>
@ -99,7 +118,7 @@
<li><a class="menuItem" th:href="@{/demo/form/localrefresh}">Ajax局部刷新</a></li>
</ul>
</li>
<li> <a>表格<span class="fa arrow"></span></a>
<li><a>表格<span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li><a class="menuItem" th:href="@{/demo/table/search}">查询条件</a></li>
<li><a class="menuItem" th:href="@{/demo/table/footer}">数据汇总</a></li>
@ -132,20 +151,20 @@
<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
</ul>
</li>
<li> <a>弹框<span class="fa arrow"></span></a>
<li><a>弹框<span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li><a class="menuItem" th:href="@{/demo/modal/dialog}">模态窗口</a></li>
<li><a class="menuItem" th:href="@{/demo/modal/layer}">弹层组件</a></li>
<li><a class="menuItem" th:href="@{/demo/modal/table}">弹层表格</a></li>
</ul>
</li>
<li> <a>操作<span class="fa arrow"></span></a>
<li><a>操作<span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li><a class="menuItem" th:href="@{/demo/operate/table}">表格</a></li>
<li><a class="menuItem" th:href="@{/demo/operate/other}">其他</a></li>
</ul>
</li>
<li> <a>报表<span class="fa arrow"></span></a>
<li><a>报表<span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li><a class="menuItem" th:href="@{/demo/report/echarts}">百度ECharts</a></li>
<li><a class="menuItem" th:href="@{/demo/report/peity}">peity</a></li>
@ -153,7 +172,7 @@
<li><a class="menuItem" th:href="@{/demo/report/metrics}">图表组合</a></li>
</ul>
</li>
<li> <a>图标<span class="fa arrow"></span></a>
<li><a>图标<span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li><a class="menuItem" th:href="@{/demo/icon/fontawesome}">Font Awesome</a></li>
<li><a class="menuItem" th:href="@{/demo/icon/glyphicons}">Glyphicons</a></li>
@ -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">
<nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0">
<div class="navbar-header">
<a class="navbar-minimalize minimalize-styl-2" style="color:#FFF;" href="#" title="收起菜单">
<nav class="navbar navbar-static-top" role="navigation"
style="margin-bottom: 0;display: flex;flex-direction: row;align-items: center;">
<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>
</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>
<ul class="nav navbar-top-links navbar-right welcome-message">
<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>
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="锁定屏幕" href="#" id="lockScreen"><i class="fa fa-lock"></i> 锁屏</a></li>
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="全屏显示" href="#" id="fullScreen"><i class="fa fa-arrows-alt"></i> 全屏</a></li>
</div>
<div style="flex: 1;color: #ffffff;font-size: 20px">鄂尔多斯市公共资源交易中心达拉特旗分中心绩效考核系统</div>
<ul class="nav navbar-top-links navbar-right welcome-message" style="flex: 1;text-align: right">
<!-- <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">
<a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown">
<img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="user-image">
<a class="dropdown-toggle" data-hover="dropdown" href="javascript:void(0)">
<img class="user-image"
th:src="'../img/userAdmin.png'">
<span class="hidden-xs">[[${#strings.defaultString(user.userName, '-')}]]</span>
</a>
<ul class="dropdown-menu">
<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>
</li>
<li>
<a onclick="resetPwd()">
<i class="fa fa-key"></i> 修改密码</a>
</li>
<li>
<a onclick="switchSkin()">
<i class="fa fa-dashboard"></i> 切换主题</a>
</li>
<li>
<a onclick="toggleMenu()">
<i class="fa fa-toggle-off"></i> 横向菜单</a>
</li>
<!-- <li>-->
<!-- <a onclick="switchSkin()">-->
<!-- <i class="fa fa-dashboard"></i> 切换主题</a>-->
<!-- </li>-->
<!-- <li>-->
<!-- <a onclick="toggleMenu()">-->
<!-- <i class="fa fa-toggle-off"></i> 横向菜单</a>-->
<!-- </li>-->
<li class="divider"></li>
<li>
<a th:href="@{logout}">
@ -234,24 +261,21 @@
</button>
<nav class="page-tabs menuTabs">
<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>
</nav>
<button class="roll-nav roll-right tabRight">
<i class="fa fa-forward"></i>
</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>
<a id="ax_close_max" class="ax_close_max" href="#" title="关闭全屏"> <i class="fa fa-times-circle-o"></i> </a>
<a class="ax_close_max" href="#" id="ax_close_max" title="关闭全屏"> <i class="fa fa-times-circle-o"></i> </a>
<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}"
th:src="@{/system/main}" frameborder="0" seamless></iframe>
<iframe class="RuoYi_iframe" frameborder="0" height="100%" name="iframe0" seamless
th:data-id="@{/system/main}" th:src="@{/system/main}" width="100%"></iframe>
</div>
<div th:if="${footer}" class="footer">
<div class="pull-right">© [[${copyrightYear}]] RuoYi Copyright </div>
<div class="footer" th:if="${footer}">
<div class="pull-right">© [[${copyrightYear}]] RuoYi Copyright</div>
</div>
</div>
<!--右侧部分结束-->
@ -269,70 +293,72 @@
<script th:src="@{/ruoyi/index.js?v=20201208}"></script>
<script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
<script th:inline="javascript">
window.history.forward(1);
var ctx = [[@{/}]];
var lockscreen = [[${session.lockscreen}]];
if(lockscreen){window.top.location=ctx+"lockscreen";}
// 皮肤缓存
var skin = storage.get("skin");
// history表示去掉地址的#)否则地址以"#"形式展示
var mode = "history";
// 历史访问路径缓存
var historyPath = storage.get("historyPath");
// 是否页签与菜单联动
var isLinkage = true;
window.history.forward(1);
var ctx = [[@{/}]];
var lockscreen = [[${session.lockscreen}]];
if (lockscreen) {
window.top.location = ctx + "lockscreen";
}
// 皮肤缓存
var skin = storage.get("skin");
// history表示去掉地址的#)否则地址以"#"形式展示
var mode = "history";
// 历史访问路径缓存
var historyPath = storage.get("historyPath");
// 是否页签与菜单联动
var isLinkage = true;
// 本地主题优先,未设置取系统配置
if($.common.isNotEmpty(skin)){
// 本地主题优先,未设置取系统配置
if ($.common.isNotEmpty(skin)) {
$("body").addClass(skin.split('|')[0]);
$("body").addClass(skin.split('|')[1]);
} else {
} else {
$("body").addClass([[${sideTheme}]]);
$("body").addClass([[${skinName}]]);
}
}
/* 用户管理-重置密码 */
function resetPwd() {
/* 用户管理-重置密码 */
function resetPwd() {
var url = ctx + 'system/user/profile/resetPwd';
$.modal.open("重置密码", url, '770', '380');
}
}
/* 切换主题 */
function switchSkin() {
/* 切换主题 */
function switchSkin() {
layer.open({
type : 2,
shadeClose : true,
title : "切换主题",
area : ["530px", "386px"],
content : [ctx + "system/switchSkin", 'no']
type: 2,
shadeClose: true,
title: "切换主题",
area: ["530px", "386px"],
content: [ctx + "system/switchSkin", 'no']
})
}
}
/* 切换菜单 */
function toggleMenu() {
$.modal.confirm("确认要切换成横向菜单吗?", function() {
$.get(ctx + 'system/menuStyle/topnav', function(result) {
/* 切换菜单 */
function toggleMenu() {
$.modal.confirm("确认要切换成横向菜单吗?", function () {
$.get(ctx + 'system/menuStyle/topnav', function (result) {
window.location.reload();
});
})
}
}
/** 刷新时访问路径页签 */
function applyPath(url) {
/** 刷新时访问路径页签 */
function applyPath(url) {
$('a[href$="' + decodeURI(url) + '"]').click();
if (!$('a[href$="' + url + '"]').hasClass("noactive")) {
$('a[href$="' + url + '"]').parent("li").addClass("selected").parents("li").addClass("active").end().parents("ul").addClass("in");
}
}
}
$(function() {
$(function () {
var lockPath = storage.get('lockPath');
if($.common.equals("history", mode) && window.performance.navigation.type == 1) {
if ($.common.equals("history", mode) && window.performance.navigation.type == 1) {
var url = storage.get('publicPath');
if ($.common.isNotEmpty(url)) {
applyPath(url);
}
} else if($.common.isNotEmpty(lockPath)) {
} else if ($.common.isNotEmpty(lockPath)) {
applyPath(lockPath);
storage.remove('lockPath');
} else {
@ -341,18 +367,18 @@ $(function() {
var url = hash.substring(1, hash.length);
applyPath(url);
} else {
if($.common.equals("history", mode)) {
if ($.common.equals("history", mode)) {
storage.set('publicPath', "");
}
}
}
/* 初始密码提示 */
if([[${isDefaultModifyPwd}]]) {
if ([[${isDefaultModifyPwd}]]) {
layer.confirm("您的密码还是初始密码,请修改密码!", {
icon: 0,
title: "安全提示",
btn: ['确认' , '取消'],
btn: ['确认', '取消'],
offset: ['30%']
}, function (index) {
resetPwd();
@ -361,11 +387,11 @@ $(function() {
}
/* 过期密码提示 */
if([[${isPasswordExpired}]]) {
if ([[${isPasswordExpired}]]) {
layer.confirm("您的密码已过期,请尽快修改密码!", {
icon: 0,
title: "安全提示",
btn: ['确认' , '取消'],
btn: ['确认', '取消'],
offset: ['30%']
}, function (index) {
resetPwd();
@ -373,7 +399,7 @@ $(function() {
});
}
$("[data-toggle='tooltip']").tooltip();
});
});
</script>
</body>
</html>

View File

@ -2,78 +2,69 @@
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<title>登录若依系统</title>
<meta name="description" content="若依后台管理框架">
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
<link href="../static/css/style.min.css" th:href="@{/css/style.min.css}" rel="stylesheet"/>
<link href="../static/css/login.min.css" th:href="@{/css/login.min.css}" rel="stylesheet"/>
<link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}" rel="stylesheet"/>
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0" name="viewport">
<title>鄂尔多斯市公共资源交易中心达拉特旗分中心绩效考核系统</title>
<meta content="若依后台管理框架" name="description">
<link href="../static/css/bootstrap.min.css" rel="stylesheet" th:href="@{/css/bootstrap.min.css}"/>
<link href="../static/css/font-awesome.min.css" rel="stylesheet" th:href="@{/css/font-awesome.min.css}"/>
<link href="../static/css/style.min.css" rel="stylesheet" th:href="@{/css/style.min.css}"/>
<link href="../static/css/login.min.css" rel="stylesheet" th:href="@{/css/login.min.css}"/>
<link href="../static/ruoyi/css/ry-ui.css" rel="stylesheet" th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}"/>
<!-- 360浏览器急速模式 -->
<meta name="renderer" content="webkit">
<meta content="webkit" name="renderer">
<!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/>
<style type="text/css">label.error { position:inherit; }</style>
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<link href="../static/favicon.ico" rel="shortcut icon" th:href="@{favicon.ico}"/>
<style type="text/css">label.error {
position: inherit;
}</style>
<script>
if(window.top!==window.self){alert('未登录或登录超时。请重新登录');window.top.location=window.location};
if (window.top !== window.self) {
alert('未登录或登录超时。请重新登录');
window.top.location = window.location
}
;
</script>
</head>
<body class="signin">
<div class="signinpanel">
<div class="row">
<div class="col-sm-7">
<div class="signin-info">
<div class="logopanel m-b">
<h1><img alt="[ 若依 ]" src="../static/ruoyi.png" th:src="@{/ruoyi.png}"></h1>
</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 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 style="width: 350px;margin: 0 auto">
<form autocomplete="off" id="signupForm">
<h4 class="no-margins" style="font-size: 22px">请登录:业务绩效考核系统</h4>
<input class="form-control uname" name="username" placeholder="用户名" type="text" value="admin"/>
<input class="form-control pword" name="password" placeholder="密码" type="password" value="admin123"/>
<div class="row m-t" th:if="${captchaEnabled==true}">
<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 class="col-xs-6">
<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>
</div>
</div>
<div class="checkbox-custom" th:if="${isRemembered}" th:classappend="${captchaEnabled==false} ? 'm-t'">
<input type="checkbox" id="rememberme" name="rememberme"> <label for="rememberme">记住我</label>
<div class="checkbox-custom" th:classappend="${captchaEnabled==false} ? 'm-t'" th:if="${isRemembered}">
<input id="rememberme" name="rememberme" type="checkbox"> <label for="rememberme">记住我</label>
</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>
</div>
</div>
<div class="signup-footer">
<div class="pull-left">
Copyright © 2018-2023 ruoyi.vip All Rights Reserved. <br>
</div>
</div>
</div>
</div>
<div class="signup-footer">
Copyright © 2018-2023 ruoyi.vip All Rights Reserved.
</div>
<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 -->
<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/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>

File diff suppressed because it is too large Load Diff