Compare commits
3 Commits
8d3cca18d9
...
79a8fc11cf
| Author | SHA1 | Date | |
|---|---|---|---|
| 79a8fc11cf | |||
| 5133e4f983 | |||
| b2973c6d28 |
24
.gitignore
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# IntelliJ IDEA
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
|
||||||
|
# Eclipse
|
||||||
|
.settings/
|
||||||
|
.classpath
|
||||||
|
.project
|
||||||
|
|
||||||
|
# VS Code
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
# Mac
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Maven
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Node
|
||||||
|
node_modules/
|
||||||
|
npm-debug.log
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
3
commitlint.config.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
extends: ['@commitlint/config-conventional'],
|
||||||
|
};
|
||||||
12
package.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"name": "sipaiis-wms-root",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"prepare": "husky install"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@commitlint/cli": "^17.6.6",
|
||||||
|
"@commitlint/config-conventional": "^17.6.6",
|
||||||
|
"husky": "^8.0.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
2
pom.xml
@ -655,7 +655,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bouncycastle</groupId>
|
<groupId>org.bouncycastle</groupId>
|
||||||
<artifactId>bcprov-jdk15on</artifactId>
|
<artifactId>bcprov-jdk15on</artifactId>
|
||||||
<version>1.68</version>
|
<version>1.70</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-codec</groupId>
|
<groupId>commons-codec</groupId>
|
||||||
|
|||||||
@ -1,80 +1,251 @@
|
|||||||
.table {
|
|
||||||
border-collapse: collapse;
|
@charset "utf-8";
|
||||||
border-spacing: 0;
|
/*
|
||||||
font-size:12px;
|
* Comm.css - Global Custom Styles
|
||||||
table-layout:fixed;
|
* Optimized for "Intelligent" UI Look & Feel
|
||||||
width:100%;
|
* Brand Colors: Blue #009FE3, Green #7AC943
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* =========================================
|
||||||
|
1. Global Element Enhancements (Intelligent Look)
|
||||||
|
========================================= */
|
||||||
|
|
||||||
|
/* Modern Scrollbar */
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
}
|
||||||
|
::-webkit-scrollbar-track {
|
||||||
|
background: #f1f1f1;
|
||||||
|
}
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
background: #c1c1c1;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
::-webkit-scrollbar-thumb:hover {
|
||||||
|
background: #a8a8a8;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table th,.table td {
|
/* Typography Enhancements */
|
||||||
border: 1px solid #8CACBB;
|
body {
|
||||||
padding: 0.3em 0.7em;
|
font-family: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif; /* Clean, modern font stack */
|
||||||
text-align: left;
|
-webkit-font-smoothing: antialiased;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table th {
|
/* Buttons - Rounded, Shadow, Transition */
|
||||||
background: #F8F8F8;
|
.btn {
|
||||||
text-align: center;
|
border-radius: 4px !important;
|
||||||
|
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||||
|
transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.btn:hover {
|
||||||
|
box-shadow: 0 4px 8px rgba(0,0,0,0.15);
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
.btn:active {
|
||||||
|
box-shadow: 0 1px 2px rgba(0,0,0,0.1);
|
||||||
|
transform: translateY(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Inputs - Clean Focus State */
|
||||||
|
.form-control {
|
||||||
|
border-radius: 4px !important;
|
||||||
|
border: 1px solid #d2d6de;
|
||||||
|
box-shadow: none;
|
||||||
|
transition: border-color 0.3s ease, box-shadow 0.3s ease;
|
||||||
|
}
|
||||||
|
.form-control:focus {
|
||||||
|
border-color: #009FE3 !important;
|
||||||
|
box-shadow: 0 0 0 2px rgba(0, 159, 227, 0.2) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Cards / Boxes - Material Depth */
|
||||||
|
.box, .panel {
|
||||||
|
border-radius: 6px !important;
|
||||||
|
box-shadow: 0 1px 3px rgba(0,0,0,0.05), 0 1px 2px rgba(0,0,0,0.1) !important;
|
||||||
|
transition: box-shadow 0.3s ease;
|
||||||
|
border-top-width: 3px;
|
||||||
|
}
|
||||||
|
.box:hover, .panel:hover {
|
||||||
|
box-shadow: 0 10px 20px rgba(0,0,0,0.05), 0 6px 6px rgba(0,0,0,0.05) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Smart Dashboard Widgets (Small Box) */
|
||||||
|
.small-box {
|
||||||
|
border-radius: 8px !important;
|
||||||
|
box-shadow: 0 4px 10px rgba(0,0,0,0.15) !important;
|
||||||
|
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.small-box:hover {
|
||||||
|
transform: translateY(-5px);
|
||||||
|
box-shadow: 0 8px 15px rgba(0,0,0,0.2) !important;
|
||||||
|
}
|
||||||
|
.small-box .icon {
|
||||||
|
top: 10px;
|
||||||
|
right: 20px;
|
||||||
|
opacity: 0.3;
|
||||||
|
transition: all 0.3s linear;
|
||||||
|
}
|
||||||
|
.small-box:hover .icon {
|
||||||
|
font-size: 95px;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Modals - Modern & Clean */
|
||||||
|
.modal-content {
|
||||||
|
border-radius: 8px !important;
|
||||||
|
box-shadow: 0 15px 35px rgba(0,0,0,0.2) !important;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.modal-header {
|
||||||
|
background-color: #009FE3; /* Brand Blue */
|
||||||
|
color: #fff;
|
||||||
|
border-top-left-radius: 8px;
|
||||||
|
border-top-right-radius: 8px;
|
||||||
|
padding: 15px 20px;
|
||||||
|
}
|
||||||
|
.modal-title {
|
||||||
|
font-weight: 600;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
}
|
||||||
|
.close {
|
||||||
|
color: #fff;
|
||||||
|
opacity: 0.7;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
.close:hover {
|
||||||
|
color: #fff;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tables - Clean Header */
|
||||||
.table thead th {
|
.table thead th {
|
||||||
text-align: center;
|
background-color: #f8f9fa;
|
||||||
|
color: #444;
|
||||||
|
font-weight: 600;
|
||||||
|
border-bottom: 2px solid #e9ecef !important;
|
||||||
|
}
|
||||||
|
.table-striped > tbody > tr:nth-of-type(odd) {
|
||||||
|
background-color: rgba(0, 159, 227, 0.02); /* Very subtle brand tint */
|
||||||
}
|
}
|
||||||
|
|
||||||
.table tbody th {
|
|
||||||
width:120px;
|
/* =========================================
|
||||||
height:22px;
|
2. Brand Color Overrides (Blue & Green)
|
||||||
text-align: right;
|
========================================= */
|
||||||
|
|
||||||
|
/* Primary Action Color (Blue #009FE3) */
|
||||||
|
.btn-primary,
|
||||||
|
.pagination > .active > a,
|
||||||
|
.pagination > .active > a:focus,
|
||||||
|
.pagination > .active > a:hover,
|
||||||
|
.pagination > .active > span,
|
||||||
|
.pagination > .active > span:focus,
|
||||||
|
.pagination > .active > span:hover {
|
||||||
|
background-color: #009FE3 !important;
|
||||||
|
border-color: #009FE3 !important;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
.btn-primary:hover, .btn-primary:active, .btn-primary.hover {
|
||||||
|
background-color: #008AC6 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table tr:hover {
|
/* Success/Accent Color (Green #7AC943) */
|
||||||
background-color: #f6fafd;
|
.btn-success {
|
||||||
|
background-color: #7AC943 !important;
|
||||||
|
border-color: #7AC943 !important;
|
||||||
|
}
|
||||||
|
.btn-success:hover, .btn-success:active, .btn-success.hover {
|
||||||
|
background-color: #69B035 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table td:hover {
|
/* Custom Blue Utility Class */
|
||||||
background-color: #f9feff;
|
.blue {
|
||||||
|
background-color: #009FE3 !important;
|
||||||
|
border-color: #009FE3 !important;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
.blue:hover {
|
||||||
|
background-color: #008AC6 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tooltable input{
|
/* Link Colors */
|
||||||
width:160px;
|
a {
|
||||||
|
color: #009FE3;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #008AC6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form th {
|
|
||||||
text-align: right;
|
/* =========================================
|
||||||
|
3. Skin-Blue Theme Overrides (Default Theme)
|
||||||
|
========================================= */
|
||||||
|
|
||||||
|
/* Header Navbar - Gradient Brand Blue */
|
||||||
|
.skin-blue .main-header .navbar {
|
||||||
|
background: linear-gradient(135deg, #009FE3 0%, #0077aa 100%) !important;
|
||||||
|
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.form th,.form td {
|
/* Logo Area */
|
||||||
padding: 0.1em 0.3em;
|
.skin-blue .main-header .logo {
|
||||||
border: 1px solid #D1D7DC;
|
background-color: #009FE3 !important;
|
||||||
|
color: #ffffff !important;
|
||||||
|
border-right: 1px solid rgba(255,255,255,0.1);
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .logo:hover {
|
||||||
|
background-color: #008AC6 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form input,.form select,.form textarea {
|
/* Sidebar - Active Item Highlight (Green) */
|
||||||
width: 200px;
|
.skin-blue .sidebar-menu > li.active > a {
|
||||||
|
border-left-color: #7AC943 !important;
|
||||||
|
background: #1e282c !important;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-menu > li.active > a > i {
|
||||||
|
color: #7AC943;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form input[type='checkbox'],.form input[type='radio'] {
|
/* Treeview Submenu Active */
|
||||||
width: 20px;
|
.skin-blue .sidebar-menu .treeview-menu > li.active > a {
|
||||||
|
color: #7AC943 !important;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-menu .treeview-menu > li > a:hover {
|
||||||
|
color: #fff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldset {
|
/* Sidebar Toggle Button */
|
||||||
border: 1px dotted #D1D7DC;
|
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: rgba(0,0,0,0.1) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
legend {
|
/* User Panel */
|
||||||
border: 1px dotted #D1D7DC;
|
.skin-blue .user-panel > .info > a {
|
||||||
font-size: small;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul {
|
/* Box Colors Matching Brand */
|
||||||
list-style-type: none;
|
.box.box-primary {
|
||||||
margin: 0px;
|
border-top-color: #009FE3;
|
||||||
padding: 0px;
|
}
|
||||||
|
.box.box-success {
|
||||||
|
border-top-color: #7AC943;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Specific component tweaks from original file preserved below if needed */
|
||||||
.linkbutton {
|
.linkbutton {
|
||||||
color :#005590;
|
color :#009FE3;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.linkbutton:visited{
|
.linkbutton:visited{
|
||||||
color :#005590;
|
color :#009FE3;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.table th,.table td {
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle!important;
|
||||||
|
border: 1px solid #e0e0e0; /* Lighter border for modern look */
|
||||||
}
|
}
|
||||||
@ -4,7 +4,7 @@ Login page
|
|||||||
***/
|
***/
|
||||||
/* logo page */
|
/* logo page */
|
||||||
.login {
|
.login {
|
||||||
background-color: #666 !important; }
|
background-color: #005072 !important; }
|
||||||
.logo-img {
|
.logo-img {
|
||||||
width: 115px;
|
width: 115px;
|
||||||
height: 95px;
|
height: 95px;
|
||||||
@ -29,7 +29,7 @@ Login page
|
|||||||
/*北控登录框*/
|
/*北控登录框*/
|
||||||
/*background-color: rgba(169,194,214,0.45);*/
|
/*background-color: rgba(169,194,214,0.45);*/
|
||||||
/*通用登录框*/
|
/*通用登录框*/
|
||||||
background-color: rgba(171,229,253,0.65);
|
background-color: rgba(0, 159, 227, 0.15);
|
||||||
width: 31%;
|
width: 31%;
|
||||||
min-width: 390px;
|
min-width: 390px;
|
||||||
margin: 15px auto;
|
margin: 15px auto;
|
||||||
@ -37,16 +37,18 @@ Login page
|
|||||||
padding: 20px;
|
padding: 20px;
|
||||||
/* padding-top: 15px;
|
/* padding-top: 15px;
|
||||||
padding-bottom: 15px; */
|
padding-bottom: 15px; */
|
||||||
-webkit-border-radius: 7px;
|
-webkit-border-radius: 8px;
|
||||||
-moz-border-radius: 7px;
|
-moz-border-radius: 8px;
|
||||||
-ms-border-radius: 7px;
|
-ms-border-radius: 8px;
|
||||||
-o-border-radius: 7px;
|
-o-border-radius: 8px;
|
||||||
border-radius: 7px;
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 15px 35px rgba(0,0,0,0.3);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.login .content h3 {
|
.login .content h3 {
|
||||||
font-size: 21px;
|
font-size: 21px;
|
||||||
color: #000; }
|
color: #009FE3; }
|
||||||
|
|
||||||
.login .content h4 {
|
.login .content h4 {
|
||||||
color: #eee; }
|
color: #eee; }
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 82 KiB |
BIN
src/main/webapp/IMG/logo2.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
src/main/webapp/IMG/screen1.png
Normal file
|
After Width: | Height: | Size: 34 MiB |
BIN
src/main/webapp/IMG/screen2.png
Normal file
|
After Width: | Height: | Size: 13 MiB |
BIN
src/main/webapp/IMG/screen3.png
Normal file
|
After Width: | Height: | Size: 11 MiB |
BIN
src/main/webapp/IMG/sipai copy.ico
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 82 KiB |
@ -507,6 +507,20 @@ function initMenu() {
|
|||||||
//return;
|
//return;
|
||||||
} else {
|
} else {
|
||||||
$.post(ext.contextPath + "/user/showMenuListByCu.do", {}, function (result) {
|
$.post(ext.contextPath + "/user/showMenuListByCu.do", {}, function (result) {
|
||||||
|
var bigScreenHtml = '<li class="treeview">' +
|
||||||
|
'<a href="#">' +
|
||||||
|
'<i class="fa fa-desktop"></i> <span>大屏展示</span>' +
|
||||||
|
'<span class="pull-right-container">' +
|
||||||
|
'<i class="fa fa-angle-left pull-right"></i>' +
|
||||||
|
'</span>' +
|
||||||
|
'</a>' +
|
||||||
|
'<ul class="treeview-menu">' +
|
||||||
|
'<li><a href="javascript:void(0);" onclick="window.open(\'' + ext.contextPath + '/jsp/bigScreen.jsp\', \'_blank\');"><i class="fa fa-circle-o"></i> 水厂大屏</a></li>' +
|
||||||
|
'<li><a href="javascript:void(0);" onclick="window.open(\'' + ext.contextPath + '/jsp/bigScreen2.jsp\', \'_blank\');"><i class="fa fa-circle-o"></i> 区域管线大屏</a></li>' +
|
||||||
|
'<li><a href="javascript:void(0);" onclick="window.open(\'' + ext.contextPath + '/jsp/bigScreen3.jsp\', \'_blank\');"><i class="fa fa-circle-o"></i> 排污户大屏</a></li>' +
|
||||||
|
'</ul>' +
|
||||||
|
'</li>';
|
||||||
|
result = result + bigScreenHtml;
|
||||||
$('#menu').html(result);
|
$('#menu').html(result);
|
||||||
sessionStorage.setItem("menu", result);
|
sessionStorage.setItem("menu", result);
|
||||||
if (sessionStorage.m1 != undefined) {
|
if (sessionStorage.m1 != undefined) {
|
||||||
@ -841,7 +855,8 @@ var mySkins = [
|
|||||||
'skin-red-light',
|
'skin-red-light',
|
||||||
'skin-yellow-light',
|
'skin-yellow-light',
|
||||||
'skin-purple-light',
|
'skin-purple-light',
|
||||||
'skin-green-light'
|
'skin-green-light',
|
||||||
|
'skin-app-style'
|
||||||
];
|
];
|
||||||
var myBgs = [
|
var myBgs = [
|
||||||
'bg-light-blue',
|
'bg-light-blue',
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
<Attribute name="DBEDIT">2008</Attribute>
|
<Attribute name="DBEDIT">2008</Attribute>
|
||||||
<Attribute name="DEBUG">false</Attribute>
|
<Attribute name="DEBUG">false</Attribute>
|
||||||
<Attribute name="RESOURCES">false</Attribute>
|
<Attribute name="RESOURCES">false</Attribute>
|
||||||
<Attribute name="TOPTITLE">智慧水务云平台</Attribute>
|
<Attribute name="TOPTITLE">碳谷绿湾云平台</Attribute>
|
||||||
<Attribute name="DBNAME">EIP_PRD</Attribute>
|
<Attribute name="DBNAME">EIP_PRD</Attribute>
|
||||||
<Attribute name="DBSERVER">127.0.0.1</Attribute>
|
<Attribute name="DBSERVER">127.0.0.1</Attribute>
|
||||||
<Attribute name="DBSERVER2">127.0.0.1</Attribute>
|
<Attribute name="DBSERVER2">127.0.0.1</Attribute>
|
||||||
|
|||||||
599
src/main/webapp/jsp/bigScreen copy.jsp
Normal file
@ -0,0 +1,599 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>水厂大屏展示</title>
|
||||||
|
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/jquery/dist/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="<%=request.getContextPath()%>/JS/echarts3.0.js"></script>
|
||||||
|
<style>
|
||||||
|
body, html {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #030829;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
.screen-container {
|
||||||
|
width: 6500px;
|
||||||
|
height: 1800px;
|
||||||
|
background-image: url('<%=request.getContextPath()%>/IMG/screen1.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Common Text Styles */
|
||||||
|
.text-white { color: #ffffff; }
|
||||||
|
.text-blue { color: #00eaff; }
|
||||||
|
.text-yellow { color: #ffaa00; }
|
||||||
|
.text-green { color: #00ff00; }
|
||||||
|
|
||||||
|
/* Header */
|
||||||
|
.header {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 130px;
|
||||||
|
}
|
||||||
|
.header-weather {
|
||||||
|
position: absolute;
|
||||||
|
left: 100px;
|
||||||
|
top: 40px;
|
||||||
|
font-size: 48px;
|
||||||
|
color: #00eaff;
|
||||||
|
}
|
||||||
|
.header-title {
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 20px;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
font-size: 80px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #ffffff;
|
||||||
|
text-shadow: 0 0 20px #00aaff;
|
||||||
|
letter-spacing: 10px;
|
||||||
|
}
|
||||||
|
.header-time {
|
||||||
|
position: absolute;
|
||||||
|
right: 100px;
|
||||||
|
top: 40px;
|
||||||
|
font-size: 48px;
|
||||||
|
color: #00eaff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- LEFT COLUMN (0 - 1400) --- */
|
||||||
|
|
||||||
|
/* Section Titles */
|
||||||
|
.section-header-small {
|
||||||
|
position: absolute;
|
||||||
|
font-size: 32px;
|
||||||
|
color: #00eaff;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-left: 20px;
|
||||||
|
border-left: 6px solid #00eaff;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Water Trend Circles */
|
||||||
|
.water-trend-row {
|
||||||
|
position: absolute;
|
||||||
|
left: 50px;
|
||||||
|
top: 220px;
|
||||||
|
width: 1350px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
}
|
||||||
|
.circle-metric {
|
||||||
|
text-align: center;
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
.circle-metric .val { font-size: 64px; font-weight: bold; color: white; }
|
||||||
|
.circle-metric .label { font-size: 32px; color: #00eaff; margin-top: 10px; }
|
||||||
|
|
||||||
|
/* 7-Day Chart */
|
||||||
|
.chart-7day-container {
|
||||||
|
position: absolute;
|
||||||
|
left: 50px;
|
||||||
|
top: 550px;
|
||||||
|
width: 1350px;
|
||||||
|
height: 450px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sludge Metrics */
|
||||||
|
.sludge-metrics-row {
|
||||||
|
position: absolute;
|
||||||
|
left: 50px;
|
||||||
|
top: 1120px;
|
||||||
|
width: 1350px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
}
|
||||||
|
.sludge-metric {
|
||||||
|
text-align: center;
|
||||||
|
background: rgba(0, 50, 150, 0.2);
|
||||||
|
padding: 20px;
|
||||||
|
width: 30%;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
.sludge-metric .val { font-size: 56px; color: white; }
|
||||||
|
.sludge-metric .label { font-size: 28px; color: #00eaff; }
|
||||||
|
|
||||||
|
/* Sludge Chart */
|
||||||
|
.chart-sludge-container {
|
||||||
|
position: absolute;
|
||||||
|
left: 50px;
|
||||||
|
top: 1350px;
|
||||||
|
width: 1350px;
|
||||||
|
height: 350px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- MID-LEFT COLUMN (1450 - 2850) --- */
|
||||||
|
|
||||||
|
/* Chemicals */
|
||||||
|
.chem-container {
|
||||||
|
position: absolute;
|
||||||
|
left: 1480px;
|
||||||
|
top: 220px;
|
||||||
|
width: 1350px;
|
||||||
|
height: 250px;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.chem-boxes {
|
||||||
|
width: 60%;
|
||||||
|
display: flex;
|
||||||
|
gap: 20px;
|
||||||
|
}
|
||||||
|
.chem-box {
|
||||||
|
flex: 1;
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 10px;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
.chem-box.yellow { border: 2px solid #ffaa00; background: rgba(255, 170, 0, 0.1); }
|
||||||
|
.chem-box.green { border: 2px solid #00ff00; background: rgba(0, 255, 0, 0.1); }
|
||||||
|
.chem-box.blue { border: 2px solid #00eaff; background: rgba(0, 234, 255, 0.1); }
|
||||||
|
|
||||||
|
.chem-val { font-size: 48px; font-weight: bold; }
|
||||||
|
.chem-label { font-size: 24px; margin-top: 10px; }
|
||||||
|
|
||||||
|
.chem-list {
|
||||||
|
width: 40%;
|
||||||
|
padding-left: 20px;
|
||||||
|
font-size: 24px;
|
||||||
|
color: #00eaff;
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
.chem-list-item { display: flex; justify-content: space-between; }
|
||||||
|
.chem-list-val { color: white; }
|
||||||
|
|
||||||
|
/* Quality Table */
|
||||||
|
.quality-table-container {
|
||||||
|
position: absolute;
|
||||||
|
left: 1480px;
|
||||||
|
top: 580px;
|
||||||
|
width: 1350px;
|
||||||
|
}
|
||||||
|
.q-table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 28px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.q-table th { background: rgba(0, 80, 200, 0.4); color: #00eaff; padding: 15px; }
|
||||||
|
.q-table td { border-bottom: 1px solid rgba(0, 80, 200, 0.3); color: white; padding: 15px; }
|
||||||
|
|
||||||
|
/* Quality Chart */
|
||||||
|
.chart-quality-container {
|
||||||
|
position: absolute;
|
||||||
|
left: 1480px;
|
||||||
|
top: 1200px;
|
||||||
|
width: 1350px;
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- CENTER COLUMN (2900 - 4600) --- */
|
||||||
|
|
||||||
|
/* Center Items (Scattered) */
|
||||||
|
.center-point {
|
||||||
|
position: absolute;
|
||||||
|
background: rgba(0, 20, 50, 0.6);
|
||||||
|
border: 1px solid #0055aa;
|
||||||
|
padding: 10px 20px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.center-point::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: #00eaff;
|
||||||
|
border-radius: 50%;
|
||||||
|
box-shadow: 0 0 10px #00eaff;
|
||||||
|
}
|
||||||
|
/* Connectors can be simulated or assumed in BG. Here we just position the boxes. */
|
||||||
|
|
||||||
|
.cp-label { font-size: 24px; color: #00eaff; }
|
||||||
|
.cp-val { font-size: 32px; color: white; font-weight: bold; }
|
||||||
|
|
||||||
|
/* Specific Positions */
|
||||||
|
.cp-1 { left: 2950px; top: 500px; } /* 泵房液位 */
|
||||||
|
.cp-2 { left: 2900px; top: 700px; } /* 进水泵房1#电流 */
|
||||||
|
.cp-3 { left: 2980px; top: 900px; } /* 进水泵房2#电流 */
|
||||||
|
.cp-4 { left: 3100px; top: 1100px; } /* 进水泵房3#流量 */
|
||||||
|
.cp-5 { left: 3200px; top: 1300px; } /* 外回流泵1#流量 */
|
||||||
|
|
||||||
|
.cp-6 { left: 4300px; top: 500px; } /* 外回流泵2#液位 */
|
||||||
|
.cp-7 { left: 4350px; top: 700px; } /* 生化池剩余污泥泵 */
|
||||||
|
.cp-8 { left: 4250px; top: 900px; } /* 沉淀池剩余污泥泵 */
|
||||||
|
.cp-9 { left: 4150px; top: 1100px; } /* PAC加药流量 */
|
||||||
|
.cp-10 { left: 4050px; top: 1300px; } /* PAC储罐液位 */
|
||||||
|
|
||||||
|
/* --- RIGHT DATA COLUMN (4650 - 5450) --- */
|
||||||
|
|
||||||
|
.right-data-col {
|
||||||
|
position: absolute;
|
||||||
|
left: 4680px;
|
||||||
|
top: 220px;
|
||||||
|
width: 800px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-block {
|
||||||
|
margin-bottom: 40px;
|
||||||
|
background: rgba(0, 20, 50, 0.3);
|
||||||
|
padding: 20px;
|
||||||
|
border-left: 5px solid #00eaff;
|
||||||
|
}
|
||||||
|
.section-title {
|
||||||
|
font-size: 36px;
|
||||||
|
color: #00eaff;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.data-grid-2col {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
.data-item {
|
||||||
|
width: 50%;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.data-item-label { font-size: 24px; color: #aaaaff; }
|
||||||
|
.data-item-val { font-size: 32px; color: #00eaff; }
|
||||||
|
|
||||||
|
/* --- RIGHT VIDEO COLUMN (5500 - 6450) --- */
|
||||||
|
.video-container {
|
||||||
|
position: absolute;
|
||||||
|
left: 5520px;
|
||||||
|
top: 220px;
|
||||||
|
width: 950px;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 20px;
|
||||||
|
}
|
||||||
|
.video-box {
|
||||||
|
width: 460px;
|
||||||
|
height: 280px;
|
||||||
|
background: black;
|
||||||
|
border: 2px solid #0055aa;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.play-icon {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
font-size: 48px;
|
||||||
|
color: rgba(255,255,255,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="screen-container">
|
||||||
|
<!-- Header -->
|
||||||
|
<div class="header">
|
||||||
|
<div class="header-weather">上海 ☁️ 大雨 17-28℃</div>
|
||||||
|
<div class="header-title">金山卫污水厂数据大屏</div>
|
||||||
|
<div class="header-time" id="headerTime">2021.12.02 星期三 15:20:33</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Left Column -->
|
||||||
|
<div class="section-header-small" style="top: 150px; left: 50px;">水量趋势</div>
|
||||||
|
<div class="water-trend-row">
|
||||||
|
<div class="circle-metric">
|
||||||
|
<div class="val">6040</div>
|
||||||
|
<div class="label">今日处理</div>
|
||||||
|
</div>
|
||||||
|
<div class="circle-metric">
|
||||||
|
<div class="val">4197</div>
|
||||||
|
<div class="label">昨日处理</div>
|
||||||
|
</div>
|
||||||
|
<div class="circle-metric">
|
||||||
|
<div class="val">12356</div>
|
||||||
|
<div class="label">本月累计</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-header-small" style="top: 480px; left: 50px;">七日水量处理情况</div>
|
||||||
|
<div class="chart-7day-container" id="chartWater"></div>
|
||||||
|
|
||||||
|
<div class="section-header-small" style="top: 1050px; left: 50px;">污泥处理指标</div>
|
||||||
|
<div class="sludge-metrics-row">
|
||||||
|
<div class="sludge-metric">
|
||||||
|
<div class="val">0 m³</div>
|
||||||
|
<div class="label">昨日产泥量</div>
|
||||||
|
</div>
|
||||||
|
<div class="sludge-metric">
|
||||||
|
<div class="val">253 m³</div>
|
||||||
|
<div class="label">今日产泥量</div>
|
||||||
|
</div>
|
||||||
|
<div class="sludge-metric">
|
||||||
|
<div class="val">4.89 m</div>
|
||||||
|
<div class="label">今日泥位</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="chart-sludge-container" id="chartSludge"></div>
|
||||||
|
|
||||||
|
<!-- Mid-Left Column -->
|
||||||
|
<div class="section-header-small" style="top: 150px; left: 1480px;">药耗</div>
|
||||||
|
<div class="chem-container">
|
||||||
|
<div class="chem-boxes">
|
||||||
|
<div class="chem-box yellow">
|
||||||
|
<div class="chem-label">PAC投加药耗</div>
|
||||||
|
<div class="chem-val text-yellow">39.54</div>
|
||||||
|
</div>
|
||||||
|
<div class="chem-box green">
|
||||||
|
<div class="chem-label">乙酸钠投加药耗</div>
|
||||||
|
<div class="chem-val text-green">56.98</div>
|
||||||
|
</div>
|
||||||
|
<div class="chem-box blue">
|
||||||
|
<div class="chem-label">次氯酸钠投加</div>
|
||||||
|
<div class="chem-val text-blue">0</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="chem-list">
|
||||||
|
<div class="chem-list-item"><span>厌氧池ORP</span><span class="chem-list-val">-370 mV</span></div>
|
||||||
|
<div class="chem-list-item"><span>缺氧池溶解氧1</span><span class="chem-list-val">0.05 mg/L</span></div>
|
||||||
|
<div class="chem-list-item"><span>1#好氧池溶解氧</span><span class="chem-list-val">0.52 mg/L</span></div>
|
||||||
|
<div class="chem-list-item"><span>2#好氧池溶解氧</span><span class="chem-list-val">0.40 mg/L</span></div>
|
||||||
|
<div class="chem-list-item"><span>污泥浓度MLSS</span><span class="chem-list-val">1921 mg/L</span></div>
|
||||||
|
<div class="chem-list-item"><span>混合液回流泵</span><span class="chem-list-val">8340 mg/L</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-header-small" style="top: 520px; left: 1480px;">质量指标</div>
|
||||||
|
<div class="quality-table-container">
|
||||||
|
<table class="q-table">
|
||||||
|
<thead>
|
||||||
|
<tr><th>参数</th><th>当前值</th><th>平均值</th><th>最高</th><th>最低</th><th>指标</th></tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td>COD (mg/L)</td><td>13.106</td><td>12.996</td><td>14.656</td><td>11.92</td><td>0.000-20.000</td></tr>
|
||||||
|
<tr><td>TP (mg/L)</td><td>13.106</td><td>12.996</td><td>14.656</td><td>11.92</td><td>0.000-20.000</td></tr>
|
||||||
|
<tr><td>NH3-N (mg/L)</td><td>13.106</td><td>12.996</td><td>14.656</td><td>11.92</td><td>0.000-20.000</td></tr>
|
||||||
|
<tr><td>TN (mg/L)</td><td>13.106</td><td>12.996</td><td>14.656</td><td>11.92</td><td>0.000-20.000</td></tr>
|
||||||
|
<tr><td>PH (mg/L)</td><td>13.106</td><td>12.996</td><td>14.656</td><td>11.92</td><td>0.000-20.000</td></tr>
|
||||||
|
<tr><td>SS</td><td>13.106</td><td>12.996</td><td>14.656</td><td>11.92</td><td></td></tr>
|
||||||
|
<tr><td>温度(°C)</td><td>13.106</td><td>12.996</td><td>14.656</td><td>11.92</td><td></td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="chart-quality-container" id="chartQuality"></div>
|
||||||
|
|
||||||
|
<!-- Center Column -->
|
||||||
|
<div class="center-point cp-1">
|
||||||
|
<div class="cp-label">泵房液位</div>
|
||||||
|
<div class="cp-val">6.13 m</div>
|
||||||
|
</div>
|
||||||
|
<div class="center-point cp-2">
|
||||||
|
<div class="cp-label">进水泵房1#电流</div>
|
||||||
|
<div class="cp-val">66.6 A</div>
|
||||||
|
</div>
|
||||||
|
<div class="center-point cp-3">
|
||||||
|
<div class="cp-label">进水泵房2#电流</div>
|
||||||
|
<div class="cp-val">63.1 A</div>
|
||||||
|
</div>
|
||||||
|
<div class="center-point cp-4">
|
||||||
|
<div class="cp-label">进水泵房3#流量</div>
|
||||||
|
<div class="cp-val">2.84 L/s</div>
|
||||||
|
</div>
|
||||||
|
<div class="center-point cp-5">
|
||||||
|
<div class="cp-label">外回流泵1#流量</div>
|
||||||
|
<div class="cp-val">13.02 L/s</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="center-point cp-6">
|
||||||
|
<div class="cp-label">外回流泵2#液位</div>
|
||||||
|
<div class="cp-val">0.75 m</div>
|
||||||
|
</div>
|
||||||
|
<div class="center-point cp-7">
|
||||||
|
<div class="cp-label">生化池剩余污泥泵</div>
|
||||||
|
<div class="cp-val">0 m</div>
|
||||||
|
</div>
|
||||||
|
<div class="center-point cp-8">
|
||||||
|
<div class="cp-label">沉淀池剩余污泥泵</div>
|
||||||
|
<div class="cp-val">9.01 L/s</div>
|
||||||
|
</div>
|
||||||
|
<div class="center-point cp-9">
|
||||||
|
<div class="cp-label">PAC加药流量</div>
|
||||||
|
<div class="cp-val">1.03 L/s</div>
|
||||||
|
</div>
|
||||||
|
<div class="center-point cp-10">
|
||||||
|
<div class="cp-label">PAC储罐液位</div>
|
||||||
|
<div class="cp-val">4.2 m</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Right Data Column -->
|
||||||
|
<div class="right-data-col">
|
||||||
|
<div class="section-block">
|
||||||
|
<div class="section-title">进水</div>
|
||||||
|
<div class="data-grid-2col">
|
||||||
|
<div class="data-item"><div class="data-item-label">进水流量</div><div class="data-item-val">1360 m³/h</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">进水PH</div><div class="data-item-val">6.75</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">进水COD</div><div class="data-item-val">82.4 mg/L</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">进水氨氮</div><div class="data-item-val">15.30 mg/L</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">进水温度</div><div class="data-item-val">25.87 °C</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">进水累计流量</div><div class="data-item-val">1761406 m³</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-block">
|
||||||
|
<div class="section-title">出水</div>
|
||||||
|
<div class="data-grid-2col">
|
||||||
|
<div class="data-item"><div class="data-item-label">出水流量</div><div class="data-item-val">2451.64 m³/h</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">出水PH</div><div class="data-item-val">6.95</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">出水COD</div><div class="data-item-val">62.4 mg/L</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">出水氨氮</div><div class="data-item-val">15.18 mg/L</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">出水温度</div><div class="data-item-val">25.87 °C</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">出水总磷</div><div class="data-item-val">25.87</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">出水总氮</div><div class="data-item-val">25.87</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">出水累计流量</div><div class="data-item-val">1761406 m³</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-block">
|
||||||
|
<div class="section-title">其他</div>
|
||||||
|
<div class="data-grid-2col">
|
||||||
|
<div class="data-item"><div class="data-item-label">反冲洗泵1#电流</div><div class="data-item-val">6.72 m³/h</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">反冲洗泵2#压力</div><div class="data-item-val">66.67 MPa</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">剩余污泥泵1#流量</div><div class="data-item-val">71.34 m³/h</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-block">
|
||||||
|
<div class="section-title">液位</div>
|
||||||
|
<div class="data-grid-2col">
|
||||||
|
<div class="data-item"><div class="data-item-label">清水池液位</div><div class="data-item-val">5.05 m</div></div>
|
||||||
|
<div class="data-item"><div class="data-item-label">深床滤池液位</div><div class="data-item-val">4.03 m</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Video Column -->
|
||||||
|
<div class="video-container">
|
||||||
|
<div class="video-box"><div class="play-icon">▶</div></div>
|
||||||
|
<div class="video-box"><div class="play-icon">▶</div></div>
|
||||||
|
<div class="video-box"><div class="play-icon">▶</div></div>
|
||||||
|
<div class="video-box"><div class="play-icon">▶</div></div>
|
||||||
|
<div class="video-box"><div class="play-icon">▶</div></div>
|
||||||
|
<div class="video-box"><div class="play-icon">▶</div></div>
|
||||||
|
<div class="video-box"><div class="play-icon">▶</div></div>
|
||||||
|
<div class="video-box"><div class="play-icon">▶</div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.onload = function() {
|
||||||
|
initCharts();
|
||||||
|
updateTime();
|
||||||
|
setInterval(updateTime, 1000);
|
||||||
|
|
||||||
|
document.ondblclick = function() {
|
||||||
|
var docElm = document.documentElement;
|
||||||
|
if (docElm.requestFullscreen) {
|
||||||
|
docElm.requestFullscreen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function updateTime() {
|
||||||
|
var now = new Date();
|
||||||
|
var timeStr = now.getFullYear() + '.' + (now.getMonth()+1) + '.' + now.getDate() + ' 星期三 ' +
|
||||||
|
now.getHours() + ':' + (now.getMinutes()<10?'0':'') + now.getMinutes() + ':' + (now.getSeconds()<10?'0':'') + now.getSeconds();
|
||||||
|
document.getElementById('headerTime').innerHTML = timeStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
function initCharts() {
|
||||||
|
// Water Chart (7-Day)
|
||||||
|
var waterChart = echarts.init(document.getElementById('chartWater'));
|
||||||
|
var waterOption = {
|
||||||
|
color: ['#00eaff'],
|
||||||
|
tooltip: { trigger: 'axis' },
|
||||||
|
grid: { top: '10%', left: '3%', right: '4%', bottom: '3%', containLabel: true },
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: ['11-10', '11-11', '11-12', '11-13', '11-14', '11-15', '11-16'],
|
||||||
|
axisLabel: { color: '#fff', fontSize: 24 },
|
||||||
|
axisLine: { lineStyle: { color: '#0055aa' } }
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
axisLabel: { color: '#fff', fontSize: 24 },
|
||||||
|
splitLine: { show: false },
|
||||||
|
axisLine: { show: false }
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
data: [3000, 4200, 3500, 3800, 5000, 4800, 5200],
|
||||||
|
type: 'bar',
|
||||||
|
barWidth: '20px',
|
||||||
|
itemStyle: { normal: { barBorderRadius: [10, 10, 0, 0] } }
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
waterChart.setOption(waterOption);
|
||||||
|
|
||||||
|
// Sludge Chart (Area)
|
||||||
|
var sludgeChart = echarts.init(document.getElementById('chartSludge'));
|
||||||
|
var sludgeOption = {
|
||||||
|
color: ['#00ffaa'],
|
||||||
|
tooltip: { trigger: 'axis' },
|
||||||
|
grid: { top: '10%', left: '3%', right: '4%', bottom: '3%', containLabel: true },
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
boundaryGap: false,
|
||||||
|
data: ['2:00', '4:00', '6:00', '8:00', '10:00', '12:00', '14:00', '16:00', '18:00', '20:00'],
|
||||||
|
axisLabel: { color: '#fff', fontSize: 20 },
|
||||||
|
axisLine: { lineStyle: { color: '#0055aa' } }
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
axisLabel: { color: '#fff', fontSize: 20 },
|
||||||
|
splitLine: { show: false },
|
||||||
|
axisLine: { show: false }
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
data: [50, 80, 60, 120, 150, 140, 130, 160, 180, 100],
|
||||||
|
type: 'line',
|
||||||
|
smooth: true,
|
||||||
|
areaStyle: { opacity: 0.3 }
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
sludgeChart.setOption(sludgeOption);
|
||||||
|
|
||||||
|
// Quality Chart (Line)
|
||||||
|
var qualityChart = echarts.init(document.getElementById('chartQuality'));
|
||||||
|
var qualityOption = {
|
||||||
|
color: ['#00aaff'],
|
||||||
|
tooltip: { trigger: 'axis' },
|
||||||
|
grid: { top: '10%', left: '3%', right: '4%', bottom: '3%', containLabel: true },
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
boundaryGap: false,
|
||||||
|
data: ['11', '12', '13', '14', '15', '16', '17', '18', '19'],
|
||||||
|
axisLabel: { color: '#fff', fontSize: 20 },
|
||||||
|
axisLine: { lineStyle: { color: '#0055aa' } }
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
axisLabel: { color: '#fff', fontSize: 20 },
|
||||||
|
splitLine: { show: false },
|
||||||
|
axisLine: { show: false }
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
data: [15, 18, 16, 20, 22, 21, 25, 24, 23],
|
||||||
|
type: 'line',
|
||||||
|
smooth: true,
|
||||||
|
areaStyle: { opacity: 0.3 }
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
qualityChart.setOption(qualityOption);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
68
src/main/webapp/jsp/bigScreen.jsp
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>水厂大屏展示</title>
|
||||||
|
<style>
|
||||||
|
body, html {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto; /* Allow scrolling if window is smaller */
|
||||||
|
}
|
||||||
|
.screen-container {
|
||||||
|
width: 6500px;
|
||||||
|
height: 1800px;
|
||||||
|
background-image: url('<%=request.getContextPath()%>/IMG/screen1.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
/* Specific Position for Data 6040 */
|
||||||
|
.val-6040 {
|
||||||
|
position: absolute;
|
||||||
|
top: 335px;
|
||||||
|
left: 209px;
|
||||||
|
width: 121px;
|
||||||
|
height: 62px;
|
||||||
|
color: rgba(255, 255, 255, 1);
|
||||||
|
font-family: 'Gilroy', 'DIN Alternate', 'Arial Narrow', sans-serif;
|
||||||
|
font-weight: 900;
|
||||||
|
font-size: 50px;
|
||||||
|
z-index: 10;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 62px;
|
||||||
|
}
|
||||||
|
.val-4197 {
|
||||||
|
top: 335px;
|
||||||
|
left: 592px;
|
||||||
|
width: fit-content;
|
||||||
|
height: fit-content;
|
||||||
|
display: inline-flex;
|
||||||
|
place-content: flex-start;
|
||||||
|
place-items: flex-end;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
.val-12356 {
|
||||||
|
top: 335px;
|
||||||
|
left: 975px;
|
||||||
|
width: fit-content;
|
||||||
|
height: fit-content;
|
||||||
|
display: inline-flex;
|
||||||
|
place-content: flex-start;
|
||||||
|
place-items: flex-end;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="screen-container">
|
||||||
|
<div class="val-6040">6040</div>
|
||||||
|
<div class="val-4197">4197</div>
|
||||||
|
<div class="val-12356">12356</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
335
src/main/webapp/jsp/bigScreen2.jsp
Normal file
@ -0,0 +1,335 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>区域管线大屏展示</title>
|
||||||
|
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/jquery/dist/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="<%=request.getContextPath()%>/JS/echarts3.0.js"></script>
|
||||||
|
<style>
|
||||||
|
body, html {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
background-color: #030829;
|
||||||
|
font-family: "Microsoft YaHei", sans-serif;
|
||||||
|
}
|
||||||
|
.screen-container {
|
||||||
|
width: 6500px;
|
||||||
|
height: 1800px;
|
||||||
|
background-image: url('<%=request.getContextPath()%>/IMG/screen2.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Module Container */
|
||||||
|
.rank-module-container {
|
||||||
|
position: absolute;
|
||||||
|
top: 356px;
|
||||||
|
left: 198px;
|
||||||
|
width: 1900px;
|
||||||
|
height: 1400px;
|
||||||
|
/* background: rgba(255, 0, 0, 0.1); Debugging background */
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Statistics Header */
|
||||||
|
.stats-header {
|
||||||
|
width: 100%;
|
||||||
|
height: 180px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
background: rgba(0, 20, 50, 0.3);
|
||||||
|
border: 1px solid rgba(0, 234, 255, 0.2);
|
||||||
|
border-radius: 12px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-item {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-label {
|
||||||
|
font-size: 32px;
|
||||||
|
color: #00eaff;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-value {
|
||||||
|
font-size: 64px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #ffffff;
|
||||||
|
font-family: 'DIN Alternate', 'Arial Narrow', sans-serif;
|
||||||
|
text-shadow: 0 0 20px rgba(0, 234, 255, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-unit {
|
||||||
|
font-size: 24px;
|
||||||
|
color: #aaaaaa;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Charts Area */
|
||||||
|
.charts-wrapper {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
gap: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-box {
|
||||||
|
flex: 1;
|
||||||
|
background: rgba(0, 20, 50, 0.3);
|
||||||
|
border: 1px solid rgba(0, 234, 255, 0.2);
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 20px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-title {
|
||||||
|
font-size: 36px;
|
||||||
|
color: #ffffff;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
border-bottom: 1px solid rgba(0, 234, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-content {
|
||||||
|
flex: 1;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="screen-container">
|
||||||
|
<div class="rank-module-container">
|
||||||
|
<!-- Statistics -->
|
||||||
|
<div class="stats-header">
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-label">辖区排污企业总数</div>
|
||||||
|
<div class="stat-value" id="totalCount">0<span class="stat-unit">家</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-label">已接入监控</div>
|
||||||
|
<div class="stat-value" style="color: #00ff00;" id="connectedCount">0<span class="stat-unit">家</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-label">正在接入中</div>
|
||||||
|
<div class="stat-value" style="color: #ffaa00;" id="connectingCount">0<span class="stat-unit">家</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Charts -->
|
||||||
|
<div class="charts-wrapper">
|
||||||
|
<div class="chart-box">
|
||||||
|
<div class="chart-title">近30日排污量 TOP 10 (最大)</div>
|
||||||
|
<div id="chartMax" class="chart-content"></div>
|
||||||
|
</div>
|
||||||
|
<div class="chart-box">
|
||||||
|
<div class="chart-title">近30日排污量 TOP 10 (最小)</div>
|
||||||
|
<div id="chartMin" class="chart-content"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
initData();
|
||||||
|
});
|
||||||
|
|
||||||
|
function initData() {
|
||||||
|
// Mock Data Generation
|
||||||
|
var enterprises = [];
|
||||||
|
var total = 158;
|
||||||
|
var connected = 124;
|
||||||
|
var connecting = 34;
|
||||||
|
|
||||||
|
// Update Stats
|
||||||
|
$('#totalCount').html(total + '<span class="stat-unit">家</span>');
|
||||||
|
$('#connectedCount').html(connected + '<span class="stat-unit">家</span>');
|
||||||
|
$('#connectingCount').html(connecting + '<span class="stat-unit">家</span>');
|
||||||
|
|
||||||
|
// Generate random enterprise data
|
||||||
|
for (var i = 1; i <= 50; i++) {
|
||||||
|
enterprises.push({
|
||||||
|
name: '企业-' + i,
|
||||||
|
value: Math.floor(Math.random() * 10000) + 500
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort for Max
|
||||||
|
var sortedMax = [...enterprises].sort((a, b) => b.value - a.value).slice(0, 10);
|
||||||
|
|
||||||
|
// Sort for Min
|
||||||
|
var sortedMin = [...enterprises].sort((a, b) => a.value - b.value).slice(0, 10);
|
||||||
|
|
||||||
|
renderCharts(sortedMax, sortedMin);
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderCharts(maxData, minData) {
|
||||||
|
var chartMax = echarts.init(document.getElementById('chartMax'));
|
||||||
|
var chartMin = echarts.init(document.getElementById('chartMin'));
|
||||||
|
|
||||||
|
// Max Option
|
||||||
|
var optionMax = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: { type: 'shadow' }
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '3%',
|
||||||
|
right: '4%',
|
||||||
|
bottom: '3%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'value',
|
||||||
|
axisLabel: { color: '#fff', fontSize: 16 },
|
||||||
|
splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)' } }
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: maxData.map(item => item.name).reverse(),
|
||||||
|
axisLabel: { color: '#fff', fontSize: 18 },
|
||||||
|
axisLine: { lineStyle: { color: '#00eaff' } }
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
name: '排污量',
|
||||||
|
type: 'bar',
|
||||||
|
data: maxData.map(item => item.value).reverse(),
|
||||||
|
label: { show: true, position: 'right', color: '#fff', fontSize: 16 },
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
|
||||||
|
offset: 0, color: '#ff5500'
|
||||||
|
}, {
|
||||||
|
offset: 1, color: '#ffbb00'
|
||||||
|
}]),
|
||||||
|
barBorderRadius: [0, 10, 10, 0]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
barWidth: 40,
|
||||||
|
animationDuration: 2000,
|
||||||
|
animationEasing: 'cubicOut'
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
// Min Option
|
||||||
|
var optionMin = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: { type: 'shadow' }
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '3%',
|
||||||
|
right: '4%',
|
||||||
|
bottom: '3%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'value',
|
||||||
|
axisLabel: { color: '#fff', fontSize: 16 },
|
||||||
|
splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)' } }
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: minData.map(item => item.name).reverse(),
|
||||||
|
axisLabel: { color: '#fff', fontSize: 18 },
|
||||||
|
axisLine: { lineStyle: { color: '#00eaff' } }
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
name: '排污量',
|
||||||
|
type: 'bar',
|
||||||
|
data: minData.map(item => item.value).reverse(),
|
||||||
|
label: { show: true, position: 'right', color: '#fff', fontSize: 16 },
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
|
||||||
|
offset: 0, color: '#00aa00'
|
||||||
|
}, {
|
||||||
|
offset: 1, color: '#00ff00'
|
||||||
|
}]),
|
||||||
|
barBorderRadius: [0, 10, 10, 0]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
barWidth: 40,
|
||||||
|
animationDuration: 2000,
|
||||||
|
animationEasing: 'cubicOut'
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
chartMax.setOption(optionMax);
|
||||||
|
chartMin.setOption(optionMin);
|
||||||
|
|
||||||
|
// Dynamic Sort Simulation (Update every 3 seconds)
|
||||||
|
setInterval(function() {
|
||||||
|
// Randomly change values slightly
|
||||||
|
maxData.forEach(item => {
|
||||||
|
item.value += Math.floor(Math.random() * 200) - 100;
|
||||||
|
if(item.value < 0) item.value = 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Re-sort
|
||||||
|
maxData.sort((a, b) => a.value - b.value); // For horizontal bar, small index is bottom. ECharts draws category 0 at bottom.
|
||||||
|
// Actually in my code I used reverse() so data is Top to Bottom visually if array is Descending.
|
||||||
|
// Let's keep data array as Ascending (Small -> Large) so index 0 is at bottom (or top depending on axis inverse).
|
||||||
|
// Default category axis: index 0 at bottom.
|
||||||
|
// If I want Top 1 at top, I need index 0 to be the smallest value (if not inverse) or configure axis.
|
||||||
|
// In previous code: data: maxData.map(item => item.name).reverse()
|
||||||
|
// If maxData was sorted Descending (Large -> Small), then reverse makes it Small -> Large.
|
||||||
|
// So index 0 (bottom) is Smallest of the top 10. Index 9 (top) is Largest. Correct.
|
||||||
|
|
||||||
|
// Let's just re-sort the source array Descending
|
||||||
|
maxData.sort((a, b) => b.value - a.value);
|
||||||
|
|
||||||
|
// Update chart
|
||||||
|
chartMax.setOption({
|
||||||
|
yAxis: {
|
||||||
|
data: maxData.map(item => item.name).reverse()
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
data: maxData.map(item => item.value).reverse()
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
|
||||||
|
// Do same for Min? Min usually doesn't fluctuate as much to swap "Top Min", but let's simulate.
|
||||||
|
minData.forEach(item => {
|
||||||
|
item.value += Math.floor(Math.random() * 50) - 25;
|
||||||
|
if(item.value < 0) item.value = 0;
|
||||||
|
});
|
||||||
|
minData.sort((a, b) => a.value - b.value); // Small -> Large.
|
||||||
|
// Display: I want Smallest at Top? Or Largest of the Smallest at Top?
|
||||||
|
// Usually "Top 10 Min" means the 10 smallest values.
|
||||||
|
// Visualizing: Smallest bar at Top.
|
||||||
|
// If data is [1, 2, 3...], and I reverse it -> [..., 3, 2, 1].
|
||||||
|
// Index 0 (bottom) = 10. Index 9 (top) = 1.
|
||||||
|
// So I need the array to be sorted Small -> Large.
|
||||||
|
// Then reverse it -> Large -> Small.
|
||||||
|
// Then bottom (index 0) is Large. Top (index 9) is Small.
|
||||||
|
// Correct.
|
||||||
|
|
||||||
|
chartMin.setOption({
|
||||||
|
yAxis: {
|
||||||
|
data: minData.map(item => item.name).reverse()
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
data: minData.map(item => item.value).reverse()
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
|
||||||
|
}, 3000);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
29
src/main/webapp/jsp/bigScreen3.jsp
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>排污户大屏展示</title>
|
||||||
|
<style>
|
||||||
|
body, html {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
.screen-container {
|
||||||
|
width: 6500px;
|
||||||
|
height: 1800px;
|
||||||
|
background-image: url('<%=request.getContextPath()%>/IMG/screen3.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="screen-container">
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -197,6 +197,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
<p class="text-center no-margin" style="font-size: 12px">黄白</p>
|
<p class="text-center no-margin" style="font-size: 12px">黄白</p>
|
||||||
|
</li>
|
||||||
|
<li style="float:left; width: 25%; padding: 5px;">
|
||||||
|
<a onclick="doSaveTheme('skin-app-style');" data-skin="skin-app-style" style="cursor: pointer;display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||||
|
<div>
|
||||||
|
<span style="display:block; width: 20%; float: left; height: 11px; background: #78d363"></span>
|
||||||
|
<span style="display:block; width: 80%; float: left; height: 11px; background: linear-gradient(90deg, #78d363 0%, #2ea7e0 100%);"></span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span style="display:block; width: 20%; float: left; height: 24px; background: #f9fafc"></span>
|
||||||
|
<span style="display:block; width: 80%; float: left; height: 24px; background: #f4f5f7"></span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<p class="text-center no-margin" style="font-size: 12px">App风格</p>
|
||||||
</li>
|
</li>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@ -60,7 +60,7 @@
|
|||||||
<link rel="stylesheet" href="<%=contextPath%>/node_modules/iconfont/iconfont.css"></link>
|
<link rel="stylesheet" href="<%=contextPath%>/node_modules/iconfont/iconfont.css"></link>
|
||||||
<!-- AdminLTE样式 -->
|
<!-- AdminLTE样式 -->
|
||||||
<link rel="stylesheet" href="<%=contextPath%>/plugins/AdminLTE/css/AdminLTE.min.css"></link>
|
<link rel="stylesheet" href="<%=contextPath%>/plugins/AdminLTE/css/AdminLTE.min.css"></link>
|
||||||
<link rel="stylesheet" href="<%=contextPath%>/plugins/AdminLTE/css/skins/_all-skins.min.css"></link>
|
<link rel="stylesheet" href="<%=contextPath%>/plugins/AdminLTE/css/skins/_all-skins.css"></link>
|
||||||
<!-- Google Font -->
|
<!-- Google Font -->
|
||||||
<!-- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic"/> -->
|
<!-- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic"/> -->
|
||||||
<!-- select2 -->
|
<!-- select2 -->
|
||||||
@ -84,6 +84,7 @@
|
|||||||
<!-- BEGIN 布局样式 -->
|
<!-- BEGIN 布局样式 -->
|
||||||
<%-- 自定义Bootstrap主题样式 --%>
|
<%-- 自定义Bootstrap主题样式 --%>
|
||||||
<%-- <link rel="stylesheet" href="<%=contextPath%>/CSS/bootstrap-override.css" type="text/css"> --%>
|
<%-- <link rel="stylesheet" href="<%=contextPath%>/CSS/bootstrap-override.css" type="text/css"> --%>
|
||||||
|
<link rel="stylesheet" href="<%=contextPath%>/CSS/comm.css" type="text/css">
|
||||||
<%-- 引入js --%>
|
<%-- 引入js --%>
|
||||||
<%-- 引入jQuery --%>
|
<%-- 引入jQuery --%>
|
||||||
<script type="text/javascript" src="<%=contextPath%>/node_modules/jquery/dist/jquery.min.js" charset="utf-8"></script>
|
<script type="text/javascript" src="<%=contextPath%>/node_modules/jquery/dist/jquery.min.js" charset="utf-8"></script>
|
||||||
|
|||||||
@ -4,6 +4,20 @@
|
|||||||
function searchMenu(){
|
function searchMenu(){
|
||||||
var search_name = $('#search_name_menu').val();
|
var search_name = $('#search_name_menu').val();
|
||||||
$.post(ext.contextPath+"/user/showMenuListByCu.do" , {search_name:search_name}, function(result) {
|
$.post(ext.contextPath+"/user/showMenuListByCu.do" , {search_name:search_name}, function(result) {
|
||||||
|
var bigScreenHtml = '<li class="treeview">' +
|
||||||
|
'<a href="#">' +
|
||||||
|
'<i class="fa fa-desktop"></i> <span>大屏展示</span>' +
|
||||||
|
'<span class="pull-right-container">' +
|
||||||
|
'<i class="fa fa-angle-left pull-right"></i>' +
|
||||||
|
'</span>' +
|
||||||
|
'</a>' +
|
||||||
|
'<ul class="treeview-menu">' +
|
||||||
|
'<li><a href="javascript:void(0);" onclick="window.open(\'' + ext.contextPath + '/jsp/bigScreen.jsp\', \'_blank\');"><i class="fa fa-circle-o"></i> 水厂大屏</a></li>' +
|
||||||
|
'<li><a href="javascript:void(0);" onclick="window.open(\'' + ext.contextPath + '/jsp/bigScreen2.jsp\', \'_blank\');"><i class="fa fa-circle-o"></i> 区域管线大屏</a></li>' +
|
||||||
|
'<li><a href="javascript:void(0);" onclick="window.open(\'' + ext.contextPath + '/jsp/bigScreen3.jsp\', \'_blank\');"><i class="fa fa-circle-o"></i> 排污户大屏</a></li>' +
|
||||||
|
'</ul>' +
|
||||||
|
'</li>';
|
||||||
|
result = result + bigScreenHtml;
|
||||||
$('#menu').html(result);
|
$('#menu').html(result);
|
||||||
sessionStorage.setItem("menu",result);
|
sessionStorage.setItem("menu",result);
|
||||||
var $li=$('#menu').find("li:first");
|
var $li=$('#menu').find("li:first");
|
||||||
|
|||||||
@ -4,33 +4,203 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD
|
|||||||
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
|
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
|
||||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.select2-container .select2-selection--single {
|
/* 覆盖Bootstrap Modal样式以匹配APP风格 */
|
||||||
height: 34px;
|
.modal-dialog {
|
||||||
line-height: 34px;
|
width: 46%;
|
||||||
|
margin: 30px auto;
|
||||||
|
}
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.modal-dialog {
|
||||||
|
width: 94%;
|
||||||
|
margin: 10px auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.select2-selection__arrow {
|
.modal-content {
|
||||||
margin-top: 3px;
|
border-radius: 16px;
|
||||||
|
border: none;
|
||||||
|
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
|
||||||
|
overflow: hidden;
|
||||||
|
font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*.layout{*/
|
.modal-header {
|
||||||
/* display: flex;*/
|
/* 截图中的蓝绿渐变背景 */
|
||||||
/* padding-left: 15px;*/
|
background: linear-gradient(135deg, #4CD964 0%, #20E2D7 50%, #12B7F5 100%);
|
||||||
/*}*/
|
color: white;
|
||||||
|
padding: 20px 25px;
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 18px;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close {
|
||||||
|
color: white;
|
||||||
|
opacity: 0.8;
|
||||||
|
text-shadow: none;
|
||||||
|
font-size: 28px;
|
||||||
|
margin-top: -5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close:hover {
|
||||||
|
color: #fff;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-body {
|
||||||
|
padding: 25px 30px;
|
||||||
|
background-color: #f9fbfd; /* 极淡的背景色 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 表单样式优化 */
|
||||||
.form-horizontal {
|
.form-horizontal {
|
||||||
padding-top: 20px;
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group label {
|
||||||
|
font-weight: 500;
|
||||||
|
color: #555;
|
||||||
|
font-size: 14px;
|
||||||
|
padding-top: 10px !important; /* 垂直居中 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid #e0e0e0;
|
||||||
|
box-shadow: none;
|
||||||
|
height: 40px;
|
||||||
|
background-color: #fff;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control:focus {
|
||||||
|
border-color: #20E2D7;
|
||||||
|
box-shadow: 0 0 0 3px rgba(32, 226, 215, 0.1);
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 只读输入框样式 */
|
||||||
|
.form-control[readonly] {
|
||||||
|
background-color: #f5f7fa;
|
||||||
|
color: #777;
|
||||||
|
cursor: pointer; /* 如果有点击事件 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Select2 样式覆盖 */
|
||||||
|
.select2-container .select2-selection--single {
|
||||||
|
height: 40px !important;
|
||||||
|
border: 1px solid #e0e0e0 !important;
|
||||||
|
border-radius: 8px !important;
|
||||||
|
line-height: 40px !important;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__rendered {
|
||||||
|
line-height: 40px !important;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__arrow {
|
||||||
|
height: 38px !important;
|
||||||
|
right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
background-color: white;
|
background-color: #e3f2fd;
|
||||||
|
border: 1px solid #bbdefb;
|
||||||
|
color: #1e88e5;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-top: 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.select2-container .select2-selection--multiple {
|
||||||
|
min-height: 40px !important;
|
||||||
|
border: 1px solid #e0e0e0 !important;
|
||||||
|
border-radius: 8px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 底部按钮区 */
|
||||||
|
.modal-footer {
|
||||||
|
border-top: none;
|
||||||
|
padding: 20px 30px 30px;
|
||||||
|
background-color: #f9fbfd;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
border-radius: 25px; /* 圆角胶囊按钮 */
|
||||||
|
padding: 8px 30px;
|
||||||
|
font-size: 14px;
|
||||||
|
border: none;
|
||||||
|
font-weight: 500;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
transition: transform 0.2s, box-shadow 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn:active {
|
||||||
|
transform: scale(0.98);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-default {
|
||||||
|
background-color: #edf2f7;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-default:hover {
|
||||||
|
background-color: #e2e8f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-primary {
|
||||||
|
/* 按钮也使用渐变 */
|
||||||
|
background: linear-gradient(90deg, #20E2D7 0%, #12B7F5 100%);
|
||||||
|
color: white;
|
||||||
|
box-shadow: 0 4px 12px rgba(18, 183, 245, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-primary:hover {
|
||||||
|
background: linear-gradient(90deg, #1CD1C7 0%, #10A6DF 100%);
|
||||||
|
box-shadow: 0 6px 15px rgba(18, 183, 245, 0.4);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 日期选择器图标 */
|
||||||
|
.input-group-addon {
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #e0e0e0;
|
||||||
|
border-left: none;
|
||||||
|
border-top-right-radius: 8px;
|
||||||
|
border-bottom-right-radius: 8px;
|
||||||
|
color: #12B7F5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group .form-control {
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 其他 */
|
||||||
.right {
|
.right {
|
||||||
margin-left: 50px;
|
margin-left: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 必填项星号颜色 */
|
||||||
|
.control-label:before {
|
||||||
|
/*content: "*";*/
|
||||||
|
/*color: #f56c6c;*/
|
||||||
|
/*margin-right: 4px;*/
|
||||||
|
}
|
||||||
|
/* 针对现有HTML中写在label里的*号进行颜色处理,如果有的话 */
|
||||||
|
.control-label {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
@ -71,7 +241,7 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD
|
|||||||
return repo.text;
|
return repo.text;
|
||||||
} // 函数用于呈现当前的选择
|
} // 函数用于呈现当前的选择
|
||||||
});
|
});
|
||||||
$(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'});
|
/* $(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'}); */
|
||||||
select_3.val('${bean.jobType}'.split(",")).trigger("change");
|
select_3.val('${bean.jobType}'.split(",")).trigger("change");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -305,7 +475,7 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD
|
|||||||
|
|
||||||
</script>
|
</script>
|
||||||
<div class="modal fade" id="subModal">
|
<div class="modal fade" id="subModal">
|
||||||
<div class="modal-dialog" style="width: 46%">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
@ -314,7 +484,7 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12 col-xs-13">
|
<div class="col-md-12 col-xs-12">
|
||||||
<!-- 新增界面formid强制为editForm -->
|
<!-- 新增界面formid强制为editForm -->
|
||||||
<form class="form-horizontal" id="editForm" enctype="multipart/form-data">
|
<form class="form-horizontal" id="editForm" enctype="multipart/form-data">
|
||||||
<div id="alertDiv"></div>
|
<div id="alertDiv"></div>
|
||||||
|
|||||||
@ -1051,7 +1051,7 @@
|
|||||||
var topRightWidth=$('#topRight').outerWidth();
|
var topRightWidth=$('#topRight').outerWidth();
|
||||||
var titleWidth=topWidth-topRightWidth-50;
|
var titleWidth=topWidth-topRightWidth-50;
|
||||||
$("#topTitle").css('width',titleWidth);
|
$("#topTitle").css('width',titleWidth);
|
||||||
$("#topTitle").text("智慧水务云平台");
|
$("#topTitle").text("碳谷绿湾云平台");
|
||||||
});*/
|
});*/
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@ -1061,9 +1061,14 @@
|
|||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<a onclick="goToMainTab();" style="cursor:pointer " class="logo">
|
<a onclick="goToMainTab();" style="cursor:pointer " class="logo">
|
||||||
<!-- mini logo for sidebar mini 50x50 pixels -->
|
<!-- mini logo for sidebar mini 50x50 pixels -->
|
||||||
<span class="logo-mini"><b id="logo-mini">平台</b></span>
|
<span class="logo-mini">
|
||||||
|
<img src="<%=request.getContextPath()%>/IMG/logo.png" style="height: 30px; margin-top: 10px;" alt="Logo"/>
|
||||||
|
</span>
|
||||||
<!-- logo for regular state and mobile devices -->
|
<!-- logo for regular state and mobile devices -->
|
||||||
<span class="logo-lg"><b id="logo-lg"><%-- ${cu._pname} --%></b></span>
|
<span class="logo-lg">
|
||||||
|
<img src="<%=request.getContextPath()%>/IMG/logo.png" style="height: 30px; margin-right: 5px; vertical-align: middle;" alt="Logo"/>
|
||||||
|
<b id="logo-lg" style="vertical-align: middle; font-size: 18px;">上海金山卫污水厂</b>
|
||||||
|
</span>
|
||||||
</a>
|
</a>
|
||||||
<!-- Navbar Right Menu -->
|
<!-- Navbar Right Menu -->
|
||||||
<div id="logo-top-title" class="pull-left hidden-xs hidden-sm"
|
<div id="logo-top-title" class="pull-left hidden-xs hidden-sm"
|
||||||
|
|||||||
@ -1779,3 +1779,172 @@
|
|||||||
border-left: 1px solid #d2d6de;
|
border-left: 1px solid #d2d6de;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Skin: App Style
|
||||||
|
* -----------
|
||||||
|
*/
|
||||||
|
.skin-app-style .main-header .navbar {
|
||||||
|
background: linear-gradient(90deg, #78d363 0%, #2ea7e0 100%) !important;
|
||||||
|
background-color: #2ea7e0 !important; /* Fallback */
|
||||||
|
}
|
||||||
|
.skin-app-style .main-header .logo {
|
||||||
|
background-color: #78d363 !important;
|
||||||
|
color: #ffffff;
|
||||||
|
border-bottom: 0 solid transparent;
|
||||||
|
}
|
||||||
|
.skin-app-style .main-header .logo:hover {
|
||||||
|
background-color: #6ec35b !important;
|
||||||
|
}
|
||||||
|
.skin-app-style .main-header .navbar .nav > li > a {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.skin-app-style .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-app-style .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-app-style .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-app-style .main-header .navbar .nav .open > a,
|
||||||
|
.skin-app-style .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-app-style .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-app-style .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-app-style .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.skin-app-style .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-app-style .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-app-style .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-app-style .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-app-style .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-app-style .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-app-style .main-header li.user-header {
|
||||||
|
background-color: #2ea7e0;
|
||||||
|
}
|
||||||
|
.skin-app-style .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-app-style .wrapper,
|
||||||
|
.skin-app-style .main-sidebar,
|
||||||
|
.skin-app-style .left-side {
|
||||||
|
background-color: #f9fafc;
|
||||||
|
}
|
||||||
|
.skin-app-style .main-sidebar {
|
||||||
|
border-right: 1px solid #d2d6de;
|
||||||
|
}
|
||||||
|
.skin-app-style .user-panel > .info,
|
||||||
|
.skin-app-style .user-panel > .info > a {
|
||||||
|
color: #444444;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-menu > li {
|
||||||
|
-webkit-transition: border-left-color 0.3s ease;
|
||||||
|
-o-transition: border-left-color 0.3s ease;
|
||||||
|
transition: border-left-color 0.3s ease;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-menu > li.header {
|
||||||
|
color: #848484;
|
||||||
|
background: #f9fafc;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-menu > li:hover > a,
|
||||||
|
.skin-app-style .sidebar-menu > li.active > a {
|
||||||
|
color: #000000;
|
||||||
|
background: #f4f4f5;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-menu > li.active {
|
||||||
|
border-left-color: #2ea7e0;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-menu > li.active > a {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-menu > li > .treeview-menu {
|
||||||
|
background: #f4f4f5;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar a {
|
||||||
|
color: #444444;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-menu .treeview-menu > li > a {
|
||||||
|
color: #777777;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-menu .treeview-menu > li.active > a,
|
||||||
|
.skin-app-style .sidebar-menu .treeview-menu > li > a:hover {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-menu .treeview-menu > li.active > a {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #d2d6de;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-form input[type="text"],
|
||||||
|
.skin-app-style .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-app-style .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-app-style .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.skin-app-style.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||||
|
border-left: 1px solid #d2d6de;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-app-style .main-footer {
|
||||||
|
border-top-color: #d2d6de;
|
||||||
|
}
|
||||||
|
.skin-app-style.layout-top-nav .main-header > .logo {
|
||||||
|
background-color: #78d363;
|
||||||
|
color: #ffffff;
|
||||||
|
border-bottom: 0 solid transparent;
|
||||||
|
}
|
||||||
|
.skin-app-style.layout-top-nav .main-header > .logo:hover {
|
||||||
|
background-color: #6ec35b;
|
||||||
|
}
|
||||||
|
.skin-app-style .content-wrapper,
|
||||||
|
.skin-app-style .right-side {
|
||||||
|
background-color: #f7f8fa;
|
||||||
|
}
|
||||||
|
|||||||
@ -40,7 +40,8 @@ $(function () {
|
|||||||
'skin-red-light',
|
'skin-red-light',
|
||||||
'skin-yellow-light',
|
'skin-yellow-light',
|
||||||
'skin-purple-light',
|
'skin-purple-light',
|
||||||
'skin-green-light'
|
'skin-green-light',
|
||||||
|
'skin-app-style'
|
||||||
]
|
]
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||