20251128修改前端界面

This commit is contained in:
wxlong
2025-11-28 12:58:45 +08:00
parent caf243f14e
commit d3e0678ef0
17 changed files with 3065 additions and 568 deletions

View File

@@ -1,20 +1,164 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html lang="zh-CN">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<title></title> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content="天津市林草资源专项调查管理平台 - 专业的林业资源管理与调查系统">
<meta name="keywords" content="林草资源,林业管理,资源调查,天津林业">
<meta name="author" content="天津市林草资源专项调查管理平台">
<title>天津市林草资源专项调查管理平台</title>
<!-- 预加载字体 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<!-- Favicon -->
<link rel="icon" type="image/png" href="/static/img/favicon.png">
<!-- 地图API -->
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=eT72K2voLkPnlDLUBzeRroxMW5vIrbH1"></script> <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=eT72K2voLkPnlDLUBzeRroxMW5vIrbH1"></script>
<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.4&key=9355e88d3f4f88925d8b6a8ba53d19c6&plugin=AMap.MouseTool&plugin=AMap.Autocomplete&plugin=AMap.PolyEditor"></script> <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.4&key=9355e88d3f4f88925d8b6a8ba53d19c6&plugin=AMap.MouseTool&plugin=AMap.Autocomplete&plugin=AMap.PolyEditor"></script>
<!--<link href="//unpkg.com/progressive-image/dist/index.css" rel="stylesheet" type="text/css">-->
<!-- 页面加载样式 -->
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html, body {
width: 100%;
height: 100%;
overflow: hidden;
font-family: 'PingFang SC', 'Microsoft YaHei', 'SimHei', 'STHeiti', 'Helvetica Neue', Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background: #F1F8F4;
}
#app {
width: 100%;
height: 100%;
position: relative;
}
/* 加载动画 */
.loading-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #F1F8F4;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 9999;
transition: opacity 0.3s ease;
}
.loading-container.hidden {
opacity: 0;
pointer-events: none;
}
.loading-logo {
width: 80px;
height: 80px;
margin-bottom: 20px;
animation: pulse 2s ease-in-out infinite;
}
.loading-spinner {
width: 50px;
height: 50px;
border: 4px solid rgba(76, 175, 80, 0.2);
border-top-color: #4CAF50;
border-radius: 50%;
animation: spin 1s linear infinite;
margin-bottom: 20px;
}
.loading-text {
color: #2E7D32;
font-size: 16px;
font-weight: 500;
letter-spacing: 2px;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
@keyframes pulse {
0%, 100% { transform: scale(1); opacity: 1; }
50% { transform: scale(1.1); opacity: 0.8; }
}
/* 滚动条样式 */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: #E8F5E9;
border-radius: 4px;
}
::-webkit-scrollbar-thumb {
background: #81C784;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #66BB6A;
}
</style>
</head> </head>
<body> <body>
<!-- 加载动画 -->
<div id="loading" class="loading-container">
<div class="loading-spinner"></div>
<div class="loading-text">加载中...</div>
</div>
<div id="app"></div> <div id="app"></div>
<!-- built files will be auto injected --> <!-- built files will be auto injected -->
<script type="text/javascript" src="/static/js/sockjs.min.js"></script> <script type="text/javascript" src="/static/js/sockjs.min.js"></script>
<script> <script>
const myname = 'Collection System v20250902beta'; // 平台名称配置
const myname = '天津市林草资源专项调查管理平台 v20251126beta';
document.getElementsByTagName('title')[0].innerText = myname; document.getElementsByTagName('title')[0].innerText = myname;
// 页面加载完成后隐藏加载动画
window.addEventListener('load', function() {
setTimeout(function() {
const loading = document.getElementById('loading');
if (loading) {
loading.classList.add('hidden');
setTimeout(function() {
loading.style.display = 'none';
}, 300);
}
}, 500);
});
// 如果 Vue 应用已经加载,也隐藏加载动画
if (document.readyState === 'complete') {
setTimeout(function() {
const loading = document.getElementById('loading');
if (loading) {
loading.classList.add('hidden');
setTimeout(function() {
loading.style.display = 'none';
}, 300);
}
}, 500);
}
</script> </script>
</body> </body>
</html> </html>

View File

@@ -16,6 +16,8 @@ export default {
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
text-align: center; text-align: center;
color: #2c3e50; color: #2E7D32;
background: #F1F8F4;
min-height: 100vh;
} }
</style> </style>

View File

@@ -37,14 +37,14 @@
.el-button:focus, .el-button:focus,
.el-button:hover { .el-button:hover {
color: #9dbbe7; color: #4CAF50;
border-color: rgb(193, 198, 204); border-color: #81C784;
background-color: rgb(234, 236, 238) background-color: #E8F5E9
} }
.el-button:active { .el-button:active {
color: #9dbbe7; color: #2E7D32;
border-color: rgb(43, 59, 77); border-color: #4CAF50;
outline: 0 outline: 0
} }
@@ -59,14 +59,14 @@
.el-button.is-plain:focus, .el-button.is-plain:focus,
.el-button.is-plain:hover { .el-button.is-plain:hover {
background: #FFF; background: #FFF;
border-color: #264672; border-color: #4CAF50;
color: #264672 color: #2E7D32
} }
.el-button.is-active, .el-button.is-active,
.el-button.is-plain:active { .el-button.is-plain:active {
color: rgb(43, 59, 77); color: #1B5E20;
border-color: rgb(43, 59, 77) border-color: #4CAF50
} }
.el-button.is-plain:active { .el-button.is-plain:active {
@@ -125,21 +125,21 @@
.el-button--primary { .el-button--primary {
color: #FFF; color: #FFF;
background-color: #9dbbe7; background-color: #4CAF50;
border-color: #9dbbe7 border-color: #4CAF50
} }
.el-button--primary:focus, .el-button--primary:focus,
.el-button--primary:hover { .el-button--primary:hover {
background: rgb(89, 103, 120); background: #66BB6A;
border-color: rgb(89, 103, 120); border-color: #66BB6A;
color: #FFF color: #FFF
} }
.el-button--primary.is-active, .el-button--primary.is-active,
.el-button--primary:active { .el-button--primary:active {
background: rgb(43, 59, 77); background: #388E3C;
border-color: rgb(43, 59, 77); border-color: #388E3C;
color: #FFF color: #FFF
} }
@@ -157,21 +157,21 @@
} }
.el-button--primary.is-plain { .el-button--primary.is-plain {
color: #264672; color: #2E7D32;
background: rgb(234, 236, 238); background: #E8F5E9;
border-color: rgb(172, 179, 187) border-color: #81C784
} }
.el-button--primary.is-plain:focus, .el-button--primary.is-plain:focus,
.el-button--primary.is-plain:hover { .el-button--primary.is-plain:hover {
background: #264672; background: #4CAF50;
border-color: #264672; border-color: #4CAF50;
color: #FFF color: #FFF
} }
.el-button--primary.is-plain:active { .el-button--primary.is-plain:active {
background: rgb(43, 59, 77); background: #388E3C;
border-color: rgb(43, 59, 77); border-color: #388E3C;
color: #FFF; color: #FFF;
outline: 0 outline: 0
} }
@@ -480,7 +480,7 @@
} }
.el-button--text { .el-button--text {
color: #264672; color: #2E7D32;
background: 0 0; background: 0 0;
padding-left: 0; padding-left: 0;
padding-right: 0 padding-right: 0
@@ -488,13 +488,13 @@
.el-button--text:focus, .el-button--text:focus,
.el-button--text:hover { .el-button--text:hover {
color: rgb(89, 103, 120); color: #4CAF50;
border-color: transparent; border-color: transparent;
background-color: transparent background-color: transparent
} }
.el-button--text:active { .el-button--text:active {
color: rgb(43, 59, 77); color: #1B5E20;
background-color: transparent background-color: transparent
} }

View File

@@ -246,6 +246,9 @@
top: 70px; top: 70px;
width: 100%; width: 100%;
height: calc(100% - 50px); height: calc(100% - 50px);
background: linear-gradient(160deg, #E8F5E9 0%, #F5FBF6 45%, #FFFFFF 100%);
box-shadow: inset 0 20px 40px rgba(76, 175, 80, 0.08);
border-top: 1px solid rgba(76, 175, 80, 0.15);
} }
#tablecontainer { #tablecontainer {
@@ -380,9 +383,6 @@
#leftPanelScroll { #leftPanelScroll {
overflow: hidden; overflow: hidden;
height: calc(100% - 210px); height: calc(100% - 210px);
}
.left-content {
margin-left: 0px !important; margin-left: 0px !important;
width: 355px !important; width: 355px !important;
} }
@@ -448,6 +448,8 @@
#leftPanelScroll { #leftPanelScroll {
overflow: hidden; overflow: hidden;
height: calc(100% - 280px); height: calc(100% - 280px);
margin-left: 0px !important;
width: 355px !important;
} }
.container .topbar-wrap .topbar-title { .container .topbar-wrap .topbar-title {
@@ -459,11 +461,6 @@
top: 280px !important; top: 280px !important;
} }
.left-content {
margin-left: 0px !important;
width: 355px !important;
}
#toLeft { #toLeft {
left: 355px !important; left: 355px !important;
} }
@@ -554,32 +551,66 @@
} }
#leftPanelScroll { #leftPanelScroll {
overflow: hidden; overflow-y: scroll;
height: calc(100% - 70px); height: calc(100% - 70px);
padding: 20px 24px;
width: 420px;
box-shadow: 0 15px 35px rgba(76, 175, 80, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.6);
backdrop-filter: blur(4px);
&::-webkit-scrollbar {
/* 滚动条整体样式 */
width: 7px;
/* 高宽分别对应横竖滚动条的尺寸 */
height: 1px;
}
&::-webkit-scrollbar-thumb {
/* 滚动条里面小方块 */
background: linear-gradient(180deg, #81C784, #43A047);
border-radius: 10px;
}
&::-webkit-scrollbar-track {
/* 滚动条里面轨道 */
background: rgba(232, 245, 233, 0.9);
border-radius: 10px;
}
} }
#leftPanel { #leftPanel {
//opacity: 0.9;
width: 450px; width: 450px;
position: absolute; position: absolute;
top: 70px; top: 70px;
bottom: 0px; bottom: 0px;
left: 0px; left: 0px;
z-index: 98; z-index: 98;
padding-left: 10px; padding: 0 16px 16px 16px;
background-color: rgba(247, 248, 241, 0.9); background: linear-gradient(180deg, rgba(232, 245, 233, 0.98) 0%, rgba(241, 248, 244, 0.98) 100%);
box-shadow: 0 2px 40px 0 rgba(157, 187, 231, 0.50); border-right: 1px solid rgba(76, 175, 80, 0.2);
border-radius: 0 0 4px 4px 4px 4px 0 0; box-shadow: 2px 0 16px rgba(46, 125, 50, 0.12);
box-shadow: 1px 0 5px rgba(0, 0, 0, 0.5); backdrop-filter: blur(6px);
height: 100%; height: 100%;
} }
.el-collapse-item__wrap { .el-collapse-item__wrap {
background-color: #F7F8F1 !important; background: rgba(241, 248, 244, 0.95) !important;
border: 1px solid rgba(129, 199, 132, 0.35) !important;
border-radius: 16px !important;
margin-bottom: 12px;
box-shadow: 0 6px 18px rgba(76, 175, 80, 0.12);
} }
.el-collapse-item__header { .el-collapse-item__header {
background-color: #F7F8F1 !important; background: linear-gradient(90deg, rgba(224, 242, 229, 0.95), rgba(248, 253, 249, 0.95)) !important;
color: #1B5E20 !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif;
font-size: 15px !important;
font-weight: 600;
border-bottom: 1px solid rgba(129, 199, 132, 0.35);
border-radius: 16px 16px 0 0 !important;
padding: 14px 18px;
} }
.el-breadcrumb__inner { .el-breadcrumb__inner {
@@ -599,32 +630,6 @@
// } // }
.left-content {
overflow-y: scroll;
height: 100%;
background-color: #F7F8F1;
margin-left: 20px;
width: 435px;
&::-webkit-scrollbar {
/* 滚动条整体样式 */
width: 5px;
/* 高宽分别对应横竖滚动条的尺寸 */
height: 1px;
}
&::-webkit-scrollbar-thumb {
/* 滚动条里面小方块 */
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.2);
background: #535353;
}
&::-webkit-scrollbar-track {
/* 滚动条里面轨道 */
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.2);
background: #ededed;
}
}

View File

@@ -23,6 +23,7 @@ body {
height: 100%; height: 100%;
width: 100%; width: 100%;
overflow: hidden; overflow: hidden;
background: #F1F8F4;
} }
a { a {
@@ -48,30 +49,32 @@ ul {
.el-form-item__label { .el-form-item__label {
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
color: #264672 !important; color: #2E7D32 !important;
} }
.el-pager li { .el-pager li {
background: rgb(247, 248, 241) !important; background: #E8F5E9 !important;
color: #2E7D32 !important;
} }
.el-pagination button { .el-pagination button {
background: rgb(247, 248, 241) !important; background: #E8F5E9 !important;
color: #2E7D32 !important;
} }
#searchList { #searchList {
text-align: left; text-align: left;
width: 91%; width: 91%;
margin-left: 4%; margin-left: 4%;
border: 1px solid #9DBBE7 !important; border: 1px solid #81C784 !important;
border-radius: 4px; border-radius: 4px;
color: rgb(38, 70, 114); color: #2E7D32;
font-size: 14px !important; font-size: 14px !important;
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
} }
.backcolor { .backcolor {
background: rgba(157, 187, 231, 0.3); background: rgba(129, 199, 132, 0.3);
margin-left: 10px; margin-left: 10px;
} }
@@ -80,10 +83,12 @@ ul {
} }
.dateBtn { .dateBtn {
background-color: #264672 !important; background-color: #4CAF50 !important;
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
color: #FFFFFF !important; color: #FFFFFF !important;
margin-bottom: 15px; margin-bottom: 15px;
border: none !important;
box-shadow: 0 2px 4px rgba(46, 125, 50, 0.2);
} }
.el-tabs__nav-scroll { .el-tabs__nav-scroll {
@@ -96,9 +101,9 @@ ul {
height: 70px; height: 70px;
line-height: 70px; line-height: 70px;
padding: 0px; padding: 0px;
opacity: 0.9; background: #E8F5E9;
background: #F7F8F1; box-shadow: 0 2px 8px 0 rgba(46, 125, 50, 0.15);
box-shadow: 0 2px 40px 0 rgba(157, 187, 231, 0.50); border-bottom: 1px solid rgba(76, 175, 80, 0.2);
} }
.container .topbar-wrap .topbar-btn { .container .topbar-wrap .topbar-btn {
@@ -113,9 +118,10 @@ ul {
.container .topbar-wrap .topbar-logos { .container .topbar-wrap .topbar-logos {
float: left; float: left;
width: 400px; width: 600px;
min-width: 500px;
line-height: 50px; line-height: 50px;
font-size: 17px; font-size: 20px;
text-align: left; text-align: left;
} }
@@ -150,6 +156,8 @@ ul {
line-height: 70px !important; line-height: 70px !important;
width: 140px; width: 140px;
text-align: center; text-align: center;
color: #2E7D32 !important;
transition: all 0.3s ease;
} }
.el-menu--horizontal>.el-submenu .el-submenu__title { .el-menu--horizontal>.el-submenu .el-submenu__title {
@@ -160,12 +168,13 @@ ul {
.el-checkbox__inner { .el-checkbox__inner {
border: 1px solid #9DBBE7 !important; border: 1px solid #81C784 !important;
} }
.el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner { .el-checkbox__input.is-indeterminate .el-checkbox__inner {
background-color: #9DBBE7 !important; background-color: #4CAF50 !important;
border-color: #4CAF50 !important;
color: #fff !important; color: #fff !important;
} }
@@ -250,7 +259,7 @@ ul {
} }
.container .content-container { .container .content-container {
background: #fff; background: #F1F8F4;
-ms-flex: 1; -ms-flex: 1;
flex: 1; flex: 1;
overflow-y: auto; overflow-y: auto;
@@ -259,13 +268,14 @@ ul {
} }
.container .content-container .content-wrapper { .container .content-container .content-wrapper {
background-color: #fff; background-color: #F1F8F4;
box-sizing: border-box; box-sizing: border-box;
} }
.el-menu--horizontal>.el-menu-item.is-active { .el-menu--horizontal>.el-menu-item.is-active {
color: #fff !important; color: #1B5E20 !important;
border-bottom: 4px solid #409EFF !important; border-bottom: 4px solid #4CAF50 !important;
background: rgba(76, 175, 80, 0.1) !important;
} }
.myInfoWindow { .myInfoWindow {
@@ -322,7 +332,7 @@ input:-ms-input-placeholder {
width: 250px !important; width: 250px !important;
text-align: start; text-align: start;
height: 100%; height: 100%;
background-color: #fff; background-color: #F1F8F4;
} }
.el-aside.tac .el-submenu__title, .el-aside.tac .el-submenu__title,
@@ -330,29 +340,30 @@ el-aside.tac.el-menu-item,
.el-aside.tac .el-submenu .el-menu-item { .el-aside.tac .el-submenu .el-menu-item {
height: 40px !important; height: 40px !important;
line-height: 40px !important; line-height: 40px !important;
background-color: white; background-color: #F1F8F4;
color: black; color: #2E7D32;
} }
.el-aside.tac .el-menu-item-group__title { .el-aside.tac .el-menu-item-group__title {
color: black; color: #2E7D32;
background-color: white; background-color: #F1F8F4;
padding: 0px !important; padding: 0px !important;
} }
.el-aside.tac .el-submenu .el-menu-item:hover { .el-aside.tac .el-submenu .el-menu-item:hover {
background-color: #E8E8E8; background-color: #C8E6C9;
color: black; color: #2E7D32;
} }
.el-menu--horizontal>.el-menu-item:hover { .el-menu--horizontal>.el-menu-item:hover {
border-bottom: 4px solid #409EFF; border-bottom: 4px solid #66BB6A;
border-bottom-color: #409EFF !important; border-bottom-color: #66BB6A !important;
background: rgba(76, 175, 80, 0.15) !important;
color: #1B5E20 !important;
} }
.el-aside.tac .el-menu-item.is-active { .el-aside.tac .el-menu-item.is-active {
background-color: #304156; background-color: #4CAF50;
color: white; color: white;
} }
@@ -362,18 +373,18 @@ el-aside.tac.el-menu-item,
} }
#bread_container { #bread_container {
background-color: white !important; background-color: #F1F8F4 !important;
color: black; color: #2E7D32;
width: 100%; width: 100%;
height: 30px; height: 30px;
line-height: 30px; line-height: 30px;
text-align: center; text-align: center;
border-bottom: 1px solid #D3D3D3; border-bottom: 1px solid #C8E6C9;
} }
.el-breadcrumb { .el-breadcrumb {
font-size: 14px; font-size: 14px;
color: black; color: #2E7D32;
line-height: 30px !important; line-height: 30px !important;
padding-left: 10px; padding-left: 10px;
} }
@@ -394,7 +405,7 @@ el-aside.tac.el-menu-item,
.dragdiv-header { .dragdiv-header {
color: black; color: #2E7D32;
font-size: 16px; font-size: 16px;
line-height: 40px; line-height: 40px;
text-align: center; text-align: center;
@@ -406,7 +417,7 @@ el-aside.tac.el-menu-item,
} }
.esriPopup .titlePane { .esriPopup .titlePane {
background-color: #304156 !important; background-color: #4CAF50 !important;
} }
.esriPopup .contentPane { .esriPopup .contentPane {
@@ -421,10 +432,19 @@ el-aside.tac.el-menu-item,
.el-collapse-item__header { .el-collapse-item__header {
font-size: 15px !important; font-size: 15px !important;
color: #1B5E20 !important;
background: linear-gradient(90deg, rgba(232, 245, 233, 0.95), rgba(248, 253, 249, 0.95)) !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
border-radius: 14px 14px 0 0 !important;
padding: 12px 18px !important;
} }
.el-collapse-item__content { .el-collapse-item__content {
padding-bottom: 10px !important; padding: 12px 18px 16px 18px !important;
background: rgba(241, 248, 244, 0.9) !important;
border: 1px solid rgba(129, 199, 132, 0.2) !important;
border-top: none !important;
border-radius: 0 0 14px 14px !important;
} }
.el-input__inner { .el-input__inner {
@@ -444,8 +464,8 @@ el-aside.tac.el-menu-item,
.el-button--primary:focus, .el-button--primary:focus,
.el-button--primary:hover { .el-button--primary:hover {
color: #FFF !important; color: #FFF !important;
background-color: #304156 !important; background-color: #66BB6A !important;
border-color: #304156 !important; border-color: #66BB6A !important;
} }
@@ -457,7 +477,7 @@ el-aside.tac.el-menu-item,
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width: 100%; width: 100%;
color: #000; color: #2E7D32;
} }
.v-table-body-cell { .v-table-body-cell {
@@ -467,12 +487,12 @@ el-aside.tac.el-menu-item,
} }
.table-title { .table-title {
color: #000; color: #2E7D32;
} }
.el-dialog__header { .el-dialog__header {
padding: 8px !important; padding: 8px !important;
background-color: #9dbbe7; background-color: #4CAF50;
color: #fff !important; color: #fff !important;
border-radius: 5px 5px 0px 0px; border-radius: 5px 5px 0px 0px;
} }
@@ -517,9 +537,10 @@ el-aside.tac.el-menu-item,
@media screen and (max-width: 1500px) { @media screen and (max-width: 1500px) {
.container .topbar-wrap .topbar-logos { .container .topbar-wrap .topbar-logos {
float: left; float: left;
width: 300px; width: 500px;
min-width: 400px;
line-height: 50px; line-height: 50px;
font-size: 17px; font-size: 18px;
text-align: left; text-align: left;
} }
} }
@@ -538,44 +559,44 @@ el-aside.tac.el-menu-item,
} }
.el-menu--horizontal>.el-submenu.is-active .el-submenu__title { .el-menu--horizontal>.el-submenu.is-active .el-submenu__title {
color: #fff !important; color: #1B5E20 !important;
} }
.el-menu--horizontal .el-menu .el-menu-item.is-active, .el-menu--horizontal .el-menu .el-menu-item.is-active,
.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title { .el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title {
color: #fff !important; color: #1B5E20 !important;
} }
.el-step__head.is-process, .el-step__head.is-process,
.el-step__title.is-process { .el-step__title.is-process {
color: #1296db !important; color: #4CAF50 !important;
} }
.el-step__head.is-wait { .el-step__head.is-wait {
color: #304156 !important; color: #81C784 !important;
} }
.el-step__title.is-success { .el-step__title.is-success {
color: #304156 !important; color: #2E7D32 !important;
} }
.el-step__head.is-success { .el-step__head.is-success {
color: #304156 !important; color: #4CAF50 !important;
} }
.el-step__line { .el-step__line {
background-color: #304156 !important; background-color: #81C784 !important;
} }
.el-step__line-inner { .el-step__line-inner {
border-color: #304156 !important; border-color: #81C784 !important;
} }
.el-step__title.is-wait { .el-step__title.is-wait {
color: #304156 !important; color: #81C784 !important;
border-color: #304156 !important; border-color: #81C784 !important;
} }
.el-icon-check:before { .el-icon-check:before {

View File

@@ -36,8 +36,7 @@
</div> </div>
</div> </div>
<div id="leftPanelScroll"> <div id="leftPanelScroll">
<div class="left-content"> <el-tabs v-model="activeName">
<el-tabs v-model="activeName">
<el-tab-pane label="任务进度" name="first"> <el-tab-pane label="任务进度" name="first">
<el-select <el-select
v-model="task" v-model="task"
@@ -300,7 +299,6 @@
> >
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div>
</div> </div>
</div> </div>
</transition> </transition>

View File

@@ -26,12 +26,11 @@
</div> </div>
</div> </div>
<div id="leftPanelScroll"> <div id="leftPanelScroll">
<div class="left-content"> <el-tabs v-model="activeName">
<el-tabs v-model="activeName">
<el-tab-pane label="数据查看" name="second"> <el-tab-pane label="数据查看" name="second">
<div> <div>
<p id="mylabel"> <p class="mylabel">
任务 <span class="label-text">任务</span>
<el-select <el-select
v-model="task" v-model="task"
size="small" size="small"
@@ -50,8 +49,8 @@
></el-option> ></el-option>
</el-select> </el-select>
</p> </p>
<p id="mylabel"> <p class="mylabel">
<span class="label-text"></span>
<el-select <el-select
id="sTable" id="sTable"
v-model="table" v-model="table"
@@ -70,8 +69,8 @@
></el-option> ></el-option>
</el-select> </el-select>
</p> </p>
<p id="mylabel"> <p class="mylabel">
人员 <span class="label-text">人员</span>
<el-select <el-select
id="sUser" id="sUser"
v-model="userId" v-model="userId"
@@ -100,10 +99,13 @@
>确定 >确定
</el-button </el-button
> >
<!-- 显示要素信息属性照片和视频
<div v-if="Info && Object.keys(Info).length > 0" style="margin-top: 20px">
<featureInfo :data="Info" style="margin: 0 auto"/>
</div>-->
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<el-divider></el-divider>
<div id="editionContainer"> <div id="editionContainer">
<el-tabs v-model="activeName1"> <el-tabs v-model="activeName1">
<el-tab-pane label="版本回退" name="first1"> <el-tab-pane label="版本回退" name="first1">
@@ -235,7 +237,6 @@
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
</div>
</div> </div>
</div> </div>
</transition> </transition>
@@ -870,10 +871,8 @@ export default {
} }
} }
// 确保在子表模式下也获取并显示要素属性 // 获取并显示要素属性(无论哪个标签页都获取)
if (that.ifsub && that.activeName1 === 'first1') { that.getFeatureData()
that.getFeatureData()
}
} }
}) })
this.map.addInteraction(this.selectclick) this.map.addInteraction(this.selectclick)
@@ -1160,19 +1159,28 @@ export default {
var jsondata = response.data.data var jsondata = response.data.data
var imagedata = [] var imagedata = []
var videodata = [] var videodata = []
for (var i = 0; i < jsondata.mediaFileURLs.length; i++) { // 处理媒体文件URL
if ( if (jsondata.mediaFileURLs && Array.isArray(jsondata.mediaFileURLs)) {
jsondata.mediaFileURLs[i].substring( for (var i = 0; i < jsondata.mediaFileURLs.length; i++) {
jsondata.mediaFileURLs[i].length - 3 var url = jsondata.mediaFileURLs[i]
) === 'jpg' if (!url) continue
) {
imagedata.push(jsondata.mediaFileURLs[i]) // 获取文件扩展名(支持多种格式)
} else if ( var urlLower = url.toLowerCase()
jsondata.mediaFileURLs[i].substring( var ext = ''
jsondata.mediaFileURLs[i].length - 3 var lastDot = urlLower.lastIndexOf('.')
) === 'avi' if (lastDot > 0) {
) { ext = urlLower.substring(lastDot + 1)
videodata.push(jsondata.mediaFileURLs[i]) }
// 图片格式jpg, jpeg, png, gif, bmp, webp
if (['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'].includes(ext)) {
imagedata.push(url)
}
// 视频格式avi, mp4, mov, wmv, flv, mkv, webm
else if (['avi', 'mp4', 'mov', 'wmv', 'flv', 'mkv', 'webm'].includes(ext)) {
videodata.push(url)
}
} }
} }
jsondata.imagedata = imagedata jsondata.imagedata = imagedata
@@ -1740,6 +1748,10 @@ export default {
if (this.pageLayer && this.activeName1 === 'second1') { if (this.pageLayer && this.activeName1 === 'second1') {
this.setCurrentStyle1(1) this.setCurrentStyle1(1)
} }
// 在"数据查看"标签页中,当选择要素时获取要素数据
if (this.activeName === 'second' && this.currentFeatureId && this.task && this.table) {
this.getFeatureData()
}
} }
}, },
vectorSource: { vectorSource: {
@@ -1890,9 +1902,33 @@ export default {
} }
.mylabel { .mylabel {
font-family: PingFangSC-Medium; display: flex;
align-items: center;
flex-wrap: wrap;
margin: 0 0 8px 0;
padding: 4px 14px;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif;
font-size: 14px; font-size: 14px;
color: #264672; font-weight: 600;
color: #1B5E20;
background: rgba(232, 245, 233, 0.85);
border: 1px solid rgba(129, 199, 132, 0.4);
border-radius: 12px;
letter-spacing: 0.5px;
line-height: 1.4;
}
.mylabel .label-text {
display: inline-block;
min-width: 60px;
flex-shrink: 0;
text-align: right;
}
.mylabel ::v-deep .el-select,
.mylabel ::v-deep .el-input {
flex: 1;
min-width: 220px;
} }
.el-icon-circle-close { .el-icon-circle-close {

File diff suppressed because it is too large Load Diff

View File

@@ -15,11 +15,13 @@
<a <a
href href
style=" style="
font-family: PingFangSC-Regular; font-family: 'Microsoft YaHei', 'SimHei', 'STHeiti', 'PingFang SC', 'Helvetica Neue', Arial, sans-serif;
font-size: 18px; font-size: 20px;
line-height: 70px; line-height: 70px;
color: #264672; color: #2E7D32;
margin-left: 10px; margin-left: 10px;
font-weight: 600;
letter-spacing: 1px;
" "
>{{ myname }}</a >{{ myname }}</a
> >
@@ -29,7 +31,9 @@
:default-active="$route.path" :default-active="$route.path"
class="el-menu" class="el-menu"
mode="horizontal" mode="horizontal"
background-color="#F7F8F1" background-color="#E8F5E9"
text-color="#2E7D32"
active-text-color="#1B5E20"
router router
> >
<template v-for="item in menu"> <template v-for="item in menu">
@@ -131,28 +135,34 @@ export default {
text-align: center; text-align: center;
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
font-size: 16px; font-size: 16px;
color: #264672; color: #2E7D32;
letter-spacing: 0; letter-spacing: 0;
transition: all 0.3s ease;
border-bottom: 3px solid transparent;
} }
.el-menu--horizontal > .el-menu-item.is-active { .el-menu--horizontal > .el-menu-item.is-active {
color: #3a87f9 !important; color: #1B5E20 !important;
font-family: PingFangSC-Semibold; font-family: PingFangSC-Semibold;
font-size: 16px; font-size: 16px;
letter-spacing: 0; letter-spacing: 0;
border-bottom: 3px solid #409eff !important; border-bottom: 3px solid #4CAF50 !important;
background: rgba(76, 175, 80, 0.1) !important;
} }
.el-menu--horizontal .el-menu-item:not(.is-disabled):focus, .el-menu--horizontal .el-menu-item:not(.is-disabled):focus,
.el-menu--horizontal .el-menu-item:not(.is-disabled):hover { .el-menu--horizontal .el-menu-item:not(.is-disabled):hover {
outline: 0; outline: 0;
background: #f7f8f1 !important; background: rgba(76, 175, 80, 0.15) !important;
color: #1B5E20 !important;
} }
.el-main { .el-main {
padding: 0; padding: 0;
height: 100%; height: 100%;
background: #F1F8F4;
} }
.content { .content {
height: 100%; height: 100%;
background: #F1F8F4;
} }
</style> </style>

View File

@@ -24,8 +24,7 @@
></i> ></i>
</div> </div>
<div id="leftPanelScroll"> <div id="leftPanelScroll">
<div class="left-content"> <el-tabs v-model="activeName">
<el-tabs v-model="activeName">
<el-tab-pane label="统计分析" name="second"> <el-tab-pane label="统计分析" name="second">
<div> <div>
<el-select <el-select
@@ -104,7 +103,6 @@
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div>
</div> </div>
</div> </div>
</transition> </transition>

View File

@@ -39,8 +39,7 @@
</div> </div>
</div> </div>
<div id="leftPanelScroll"> <div id="leftPanelScroll">
<div class="left-content"> <el-collapse v-model="activeItem" accordion>
<el-collapse v-model="activeItem" accordion>
<el-collapse-item name="1"> <el-collapse-item name="1">
<template slot="title"> <template slot="title">
<img <img
@@ -61,10 +60,10 @@
> >
</el-breadcrumb> </el-breadcrumb>
</template> </template>
<div style="margin: 15px 0px 15px 0px"> <div style="margin: 4px 0px 4px 0px">
<div class="taskChoser"> <div class="taskChoser">
<span id="mylabel"> <span class="mylabel">
任务 <span class="label-text">任务</span>
<el-select <el-select
v-model="taskValue" v-model="taskValue"
style="width: 80%; margin-bottom: 10px" style="width: 80%; margin-bottom: 10px"
@@ -83,15 +82,11 @@
</span> </span>
</div> </div>
<div class="taskChoser"> <div class="taskChoser">
<span id="mylabel"> <span class="mylabel">
<span class="label-text"></span>
<el-select <el-select
v-model="ctaskValue" v-model="ctaskValue"
style=" style="width: 80%; margin-bottom: 10px"
width: 80%;
margin-bottom: 10px;
margin-left: 14px;
"
placeholder="请选择表" placeholder="请选择表"
clearable clearable
@change="ctaskChange" @change="ctaskChange"
@@ -120,8 +115,8 @@
</p> </p>
</div> </div>
<div class="taskChoser"> <div class="taskChoser">
<span id="mylabel"> <span class="mylabel">
字段 <span class="label-text">字段</span>
<el-select <el-select
v-model="FieldValue" v-model="FieldValue"
placeholder="请选择字段" placeholder="请选择字段"
@@ -140,8 +135,8 @@
</span> </span>
</div> </div>
<div class="taskChoser"> <div class="taskChoser">
<span id="mylabel"> <span class="mylabel">
内容 <span class="label-text">内容</span>
<el-input <el-input
:disabled="taskInput" :disabled="taskInput"
style="width: 80%; margin-bottom: 10px" style="width: 80%; margin-bottom: 10px"
@@ -474,7 +469,7 @@
<el-breadcrumb-item>路线优化</el-breadcrumb-item> <el-breadcrumb-item>路线优化</el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
</template> </template>
<div style="margin: 15px 0px 15px 0px; height: 100%"> <div style="margin: 4px 0px 4px 0px; height: 100%">
<div class="taskChoser"> <div class="taskChoser">
<label>起点</label> <label>起点</label>
<el-select <el-select
@@ -968,7 +963,6 @@
</el-tabs> </el-tabs>
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
</div>
</div> </div>
</div> </div>
</transition> </transition>
@@ -4989,7 +4983,7 @@ export default {
// } // }
.taskChoser { .taskChoser {
margin: 15px 0px 5px 0px; margin: 2px 0px 2px 0px;
} }
.searchInput { .searchInput {
width: 220px !important; width: 220px !important;
@@ -5093,8 +5087,57 @@ export default {
line-height: 13px; line-height: 13px;
} }
.mylabel { .mylabel {
font-family: PingFangSC-Medium; display: flex;
align-items: center;
flex-wrap: wrap;
margin: 0 0 8px 0;
padding: 4px 14px;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif;
font-size: 14px; font-size: 14px;
color: #264672; font-weight: 600;
color: #1B5E20;
border-radius: 12px;
letter-spacing: 0.5px;
line-height: 1.4;
}
.mylabel .label-text {
display: inline-block;
min-width: 60px;
flex-shrink: 0;
text-align: right;
}
.mylabel ::v-deep .el-select,
.mylabel ::v-deep .el-input {
flex: 1;
min-width: 220px;
}
#leftPanelScroll :deep(.el-collapse-item__content) {
padding: 0 !important;
}
#leftPanelScroll :deep(.el-collapse .el-collapse-item__content) {
padding: 0 !important;
}
#leftPanelScroll :deep(.el-collapse-item__wrap .el-collapse-item__content) {
padding: 0 !important;
}
</style>
<style lang="scss">
/* 全局样式:覆盖 ViewTask 页面中的 collapse content padding */
#leftPanelScroll .el-collapse-item__content {
padding: 0 !important;
}
#leftPanelScroll .el-collapse .el-collapse-item__wrap .el-collapse-item__content {
padding: 0 !important;
}
#leftPanelScroll .el-collapse-item__wrap .el-collapse-item__content {
padding: 0 !important;
} }
</style> </style>

View File

@@ -1,24 +1,23 @@
<template> <template>
<div> <div class="task-manage-page">
<div id="buttomContain"> <div class="toolbar-container">
<div class="search-container"> <div class="search-box">
<el-input <el-input
v-model="searchKeyword" v-model="searchKeyword"
placeholder="请输入关键词进行搜索" placeholder="请输入关键词进行搜索"
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
clearable clearable
size="small" size="small"
style="width: 450px; margin-right: 15px;"
@input="handleSearch" @input="handleSearch"
></el-input> ></el-input>
</div> </div>
<div class="button-container"> <div class="toolbar-actions">
<el-button id="buttonStyle" size="small" @click="openBatchDownloadDialog"> <el-button class="forest-btn" size="medium" icon="el-icon-download" @click="openBatchDownloadDialog">
批量数据下载 批量数据下载
</el-button>
<el-button class="forest-btn ghost" size="medium" icon="el-icon-copy-document" @click="ExchangeData()">
任务数据复制
</el-button> </el-button>
<el-button id="buttonStyle" size="small" @click="ExchangeData()"
>任务数据复制</el-button
>
</div> </div>
</div> </div>
<el-table <el-table
@@ -1558,36 +1557,136 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
>>> .el-pagination button { .task-manage-page {
background-color: #fff !important; padding: 24px 28px 40px;
background: linear-gradient(135deg, #edf7ef 0%, #fdfefe 100%);
min-height: calc(100vh - 120px);
box-sizing: border-box;
border-radius: 20px;
box-shadow: 0 14px 32px rgba(76, 175, 80, 0.12);
border: 1px solid rgba(129, 199, 132, 0.25);
} }
>>> .el-pager li {
background: #fff !important; .toolbar-container {
}
#buttomContain {
right: 25px;
position: absolute;
display: flex; display: flex;
align-items: center;
justify-content: space-between; justify-content: space-between;
width: calc(100% - 50px); align-items: center;
margin-bottom: 20px;
} }
.search-container { .search-box {
/* 搜索容器靠左 */ flex: 0 0 auto;
width: 450px;
} }
.button-container { :deep(.search-box .el-input) {
/* 按钮容器靠右 */ width: 100%;
}
.toolbar-actions {
display: flex;
gap: 16px;
flex: 0 0 auto;
}
.forest-btn {
background: linear-gradient(135deg, #4caf50 0%, #2e7d32 100%);
border: none;
color: #fff;
border-radius: 12px;
padding: 0 26px;
min-height: 38px;
font-weight: 600;
letter-spacing: 0.5px;
font-size: 15px;
box-shadow: 0 8px 18px rgba(76, 175, 80, 0.35);
}
.forest-btn.ghost {
background: rgba(255, 255, 255, 0.95);
color: #2e7d32;
border: 1px solid #66bb6a;
box-shadow: 0 5px 14px rgba(76, 175, 80, 0.2);
}
.forest-btn:hover {
filter: brightness(1.05);
} }
#tableStyle { #tableStyle {
top: 40px;
margin-bottom: 30px; margin-bottom: 30px;
background: rgba(255, 255, 255, 0.92);
border-radius: 16px;
overflow: hidden;
border: 1px solid rgba(129, 199, 132, 0.3);
box-shadow: 0 14px 28px rgba(76, 175, 80, 0.12);
} }
:deep(#tableStyle .el-table__header-wrapper th) {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
font-size: 14px !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
:deep(#tableStyle .el-table__body-wrapper td) {
color: #2e4b31;
border-bottom: 1px solid rgba(76, 175, 80, 0.08);
}
:deep(#tableStyle .el-table__body tr:hover > td) {
background: rgba(129, 199, 132, 0.15) !important;
color: #1b5e20;
}
:deep(#tableStyle .el-table__row--striped td) {
background: rgba(233, 247, 235, 0.65);
}
:deep(#tableStyle .el-table__row.current-row > td) {
background: rgba(76, 175, 80, 0.18) !important;
color: #1b5e20;
}
:deep(#tableStyle .el-table__body tr) {
transition: transform 0.15s ease, box-shadow 0.15s ease;
}
:deep(#tableStyle .el-table__body tr:hover) {
transform: translateY(-1px);
box-shadow: inset 0 2px 0 rgba(76, 175, 80, 0.15);
}
:deep(#tableStyle .el-button--text) {
color: #2e7d32;
font-weight: 500;
padding: 6px 12px;
border-radius: 8px;
transition: all 0.3s ease;
}
:deep(#tableStyle .el-button--text:hover) {
color: #1b5e20;
background: rgba(129, 199, 132, 0.2);
transform: translateY(-1px);
}
>>> .el-pagination button {
background-color: #E8F5E9 !important;
color: #2E7D32 !important;
}
>>> .el-pager li {
background: #E8F5E9 !important;
color: #2E7D32 !important;
}
.text { .text {
font-size: 17px; font-size: 17px;
text-align: left; text-align: left;
color: #2e7d32;
} }
.clearfix:before, .clearfix:before,
@@ -1607,5 +1706,176 @@ export default {
right: 0; right: 0;
left: 0; left: 0;
z-index: 999; z-index: 999;
border-radius: 16px;
border: 1px solid rgba(129, 199, 132, 0.3);
box-shadow: 0 12px 28px rgba(76, 175, 80, 0.15);
}
:deep(.box-card .el-card__header) {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3);
color: #1b5e20;
border-bottom: 1px solid rgba(129, 199, 132, 0.25);
border-radius: 16px 16px 0 0;
}
.taskDialog :deep(.el-dialog) {
border-radius: 18px;
border: 1px solid rgba(129, 199, 132, 0.35);
box-shadow: 0 12px 30px rgba(76, 175, 80, 0.18);
}
.taskDialog :deep(.el-dialog__header) {
background: linear-gradient(135deg, #4caf50, #2e7d32);
color: #fff;
border-radius: 18px 18px 0 0;
}
.taskDialog :deep(.el-form-item__label) {
color: #1b5e20;
font-weight: 600;
}
.taskDialog :deep(.el-button--primary) {
background-color: #4caf50 !important;
border-color: #4caf50 !important;
}
.taskDialog :deep(.el-button--primary:hover) {
background-color: #66bb6a !important;
border-color: #66bb6a !important;
}
</style>
<style>
/* 全局表格样式覆盖 - 确保主题样式生效 */
#tableStyle.el-table {
border: 1px solid rgba(129, 199, 132, 0.3) !important;
border-radius: 16px !important;
overflow: hidden !important;
}
#tableStyle.el-table.el-table--border {
border: 1px solid rgba(129, 199, 132, 0.3) !important;
}
#tableStyle.el-table.el-table--border::after,
#tableStyle.el-table.el-table--border::before {
background-color: rgba(129, 199, 132, 0.3) !important;
}
#tableStyle.el-table.el-table--border th {
border-right: 1px solid rgba(129, 199, 132, 0.25) !important;
}
#tableStyle.el-table.el-table--border th:last-child {
border-right: none !important;
}
#tableStyle.el-table.el-table--border td {
border-right: 1px solid rgba(76, 175, 80, 0.08) !important;
}
#tableStyle.el-table.el-table--border td:last-child {
border-right: none !important;
}
#tableStyle.el-table.el-table--striped .el-table__body tr.el-table__row--striped td {
background: rgba(233, 247, 235, 0.65) !important;
}
#tableStyle.el-table.el-table--striped .el-table__body tr.el-table__row--striped:hover td {
background: rgba(200, 230, 201, 0.5) !important;
}
/* 表头样式全局覆盖 */
#tableStyle.el-table .el-table__header-wrapper th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
font-size: 14px !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
padding: 12px 0 !important;
text-align: center !important;
}
#tableStyle.el-table .el-table__header-wrapper thead th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
}
#tableStyle.el-table .el-table__header th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
}
#tableStyle.el-table .el-table__header th .cell {
color: #1b5e20 !important;
font-weight: 600 !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
/* 覆盖自定义表头类名 sinCl */
#tableStyle.el-table .el-table__header th.sinCl {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
font-size: 14px !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
#tableStyle.el-table .el-table__header th.sinCl .cell {
color: #1b5e20 !important;
font-weight: 600 !important;
}
/* 滚动条全局样式 */
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper {
scrollbar-width: thin !important;
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
}
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar {
height: 8px !important;
}
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-track {
background: rgba(232, 245, 233, 0.5) !important;
border-radius: 4px !important;
}
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb {
background: linear-gradient(90deg, #81c784, #66bb6a) !important;
border-radius: 4px !important;
}
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb:hover {
background: linear-gradient(90deg, #66bb6a, #4caf50) !important;
}
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper {
scrollbar-width: thin !important;
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
}
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar {
width: 8px !important;
}
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-track {
background: rgba(232, 245, 233, 0.5) !important;
border-radius: 4px !important;
}
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb {
background: linear-gradient(180deg, #81c784, #66bb6a) !important;
border-radius: 4px !important;
}
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb:hover {
background: linear-gradient(180deg, #66bb6a, #4caf50) !important;
} }
</style> </style>

View File

@@ -2,10 +2,14 @@
<div id="TPcontainer"> <div id="TPcontainer">
<el-container style="height: 100%"> <el-container style="height: 100%">
<el-aside class="MyAside"> <el-aside class="MyAside">
<div class="aside-header">
<h2>任务中心</h2>
<p>Task Management Console</p>
</div>
<el-menu <el-menu
background-color="#F7F8F1" background-color="#E8F5E9"
text-color="rgb(38,70,114)" text-color="#2E7D32"
active-text-color="#3A87F9" active-text-color="#1B5E20"
:default-active="this.$route.path" :default-active="this.$route.path"
router router
> >
@@ -29,7 +33,7 @@
</el-aside> </el-aside>
<el-container> <el-container>
<el-main class="tpcontent"> <el-main class="tpcontent">
<router-view class="view" style="padding: 20px"></router-view> <router-view class="view"></router-view>
</el-main> </el-main>
</el-container> </el-container>
</el-container> </el-container>
@@ -46,33 +50,117 @@ export default {
<style scoped> <style scoped>
.MyAside { .MyAside {
width: 255px !important; width: 255px !important;
opacity: 0.9; opacity: 0.95;
background-color: #f7f8f1; background: linear-gradient(180deg, #e8f5e9 0%, #d0ebd4 100%);
color: #333; color: #1b5e20;
text-align: left; text-align: left;
line-height: 200px; line-height: normal;
z-index: 10; z-index: 10;
bottom: 0; bottom: 0;
position: absolute; position: absolute;
top: 0; top: 0;
border-right: 1px solid rgba(76, 175, 80, 0.25);
box-shadow: 4px 0 18px rgba(52, 133, 78, 0.14);
padding: 24px 12px;
display: flex;
flex-direction: column;
}
.aside-header {
text-align: left;
padding: 0 12px 16px 12px;
border-bottom: 1px solid rgba(76, 175, 80, 0.2);
margin-bottom: 12px;
}
:deep(.MyAside .el-menu) {
background: transparent !important;
border-right: none !important;
flex: 1;
overflow-y: auto;
}
:deep(.MyAside .el-menu::-webkit-scrollbar) {
width: 6px;
}
:deep(.MyAside .el-menu::-webkit-scrollbar-thumb) {
background: rgba(76, 175, 80, 0.3);
border-radius: 3px;
}
:deep(.MyAside .el-menu::-webkit-scrollbar-track) {
background: rgba(232, 245, 233, 0.6);
}
.aside-header h2 {
font-size: 20px;
color: #1b5e20;
margin: 0;
font-weight: 700;
letter-spacing: 1px;
}
.aside-header p {
margin: 6px 0 0 0;
font-size: 12px;
color: #4f7e50;
letter-spacing: 0.5px;
} }
.tpcontent { .tpcontent {
position: absolute; position: absolute;
left: 255px; left: 255px;
right: 0px; right: 0px;
width: calc(100% - 255px); width: calc(100% - 255px);
padding: 0px; padding: 8px;
background: #fff; background: linear-gradient(135deg, #edf7ef 0%, #fdfefe 100%);
}
.tpcontent .view {
background: rgba(255, 255, 255, 0.96);
border-radius: 20px;
box-shadow: 0 12px 28px rgba(76, 175, 80, 0.12);
border: 1px solid rgba(129, 199, 132, 0.25);
min-height: calc(100vh - 120px);
padding: 24px;
box-sizing: border-box;
display: block;
} }
.MyAside .usermp { .MyAside .usermp {
padding-left: 10px !important; padding-left: 10px !important;
} }
:deep(.MyAside .el-menu) {
background: transparent !important;
border-right: none !important;
}
:deep(.MyAside .el-menu-item),
:deep(.MyAside .el-submenu__title) {
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif;
font-weight: 600;
color: #2e7d32 !important;
letter-spacing: 0.5px;
padding: 14px 20px !important;
transition: background 0.3s ease, color 0.3s ease;
}
:deep(.MyAside .el-menu-item:hover),
:deep(.MyAside .el-submenu__title:hover) {
background: rgba(129, 199, 132, 0.25) !important;
color: #1b5e20 !important;
}
:deep(.MyAside .el-menu-item.is-active) {
background: linear-gradient(90deg, rgba(76, 175, 80, 0.2), rgba(129, 199, 132, 0.3)) !important;
color: #1b5e20 !important;
border-radius: 12px;
margin: 4px 12px;
}
:deep(.MyAside .el-icon-folder-opened),
:deep(.MyAside .el-icon-user-solid) {
color: #43a047;
}
@media screen and (min-width: 840px) and (max-width: 1401px) { @media screen and (min-width: 840px) and (max-width: 1401px) {
.tpcontent { .tpcontent {
position: absolute; position: absolute;
left: 255px; left: 255px;
width: calc(100% - 255px); width: calc(100% - 255px);
padding: 24px;
} }
} }
@@ -84,6 +172,7 @@ export default {
position: absolute; position: absolute;
left: 160px; left: 160px;
width: calc(100% - 160px); width: calc(100% - 160px);
padding: 20px;
} }
} }
@media all and (max-width: 420px) { @media all and (max-width: 420px) {
@@ -94,6 +183,7 @@ export default {
position: absolute; position: absolute;
left: 120px; left: 120px;
width: calc(100% - 120px); width: calc(100% - 120px);
padding: 16px 12px;
} }
} }
</style> </style>

View File

@@ -1,24 +1,24 @@
<template> <template>
<div> <div class="task-manage-page">
<!-- 添加搜索区域 --> <!-- 添加搜索区域 -->
<div class="search-container"> <div class="search-box">
<el-input <el-input
v-model="searchKeyword" v-model="searchKeyword"
placeholder="请输入关键词进行搜索" placeholder="请输入关键词进行搜索"
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
clearable clearable
size="small" size="small"
style="width: 300px; margin-bottom: 20px;"
@input="handleSearch" @input="handleSearch"
></el-input> ></el-input>
</div> </div>
<!-- <h2 style="text-align: left">任务</h2>
<h5 style="text-align: left">管理任务人员</h5> -->
<el-table <el-table
id="tableStyle"
:data="filteredData" :data="filteredData"
max-height="720px" max-height="720"
style="width: 100%;" stripe
border
highlight-current-row
:header-cell-class-name="sinClo" :header-cell-class-name="sinClo"
> >
<el-table-column <el-table-column
@@ -85,8 +85,7 @@
> >
<el-button <el-button
size="small" size="small"
type="primary" class="forest-btn-small"
plain
:disabled="!scope.row.isAllocationOptional" :disabled="!scope.row.isAllocationOptional"
>上传shp数据</el-button >上传shp数据</el-button
> >
@@ -96,8 +95,7 @@
<el-table-column min-width="120" filterable label="任务人员"> <el-table-column min-width="120" filterable label="任务人员">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
type="primary" class="forest-btn-small ghost"
plain
size="small" size="small"
@click.native="selectWorkers(scope.row.id)" @click.native="selectWorkers(scope.row.id)"
:disabled="!scope.row.isAllocationOptional" :disabled="!scope.row.isAllocationOptional"
@@ -125,7 +123,7 @@
<el-table-column min-width="100" label="操作"> <el-table-column min-width="100" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
type="primary" class="forest-btn-small"
size="small" size="small"
@click.native="submitUploadShp(scope.row.id)" @click.native="submitUploadShp(scope.row.id)"
:disabled="!scope.row.isAllocationOptional" :disabled="!scope.row.isAllocationOptional"
@@ -137,8 +135,7 @@
<el-table-column min-width="100" label="手动分配"> <el-table-column min-width="100" label="手动分配">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
type="primary" class="forest-btn-small ghost"
style="margin-left: 10px !important"
size="small" size="small"
@click.native="manualAllocate(scope.row.id, false)" @click.native="manualAllocate(scope.row.id, false)"
:disabled="!scope.row.isAllocationOptional" :disabled="!scope.row.isAllocationOptional"
@@ -197,7 +194,7 @@
</el-table-column> </el-table-column>
<el-table-column fixed="right" min-width="80"> <el-table-column fixed="right" min-width="80">
<template slot="header"> <template slot="header">
<el-button @click="addWorker()" type="primary" class="allomapBtn" <el-button @click="addWorker()" class="forest-btn-small"
>添加人员</el-button >添加人员</el-button
> >
</template> </template>
@@ -211,7 +208,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-button type="primary" @click="UploadWorkers()" class="allomapBtn" <el-button class="forest-btn-small" @click="UploadWorkers()"
>确认</el-button >确认</el-button
> >
</el-dialog> </el-dialog>
@@ -612,21 +609,342 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { .task-manage-page {
background-color: rgb(89, 103, 120) !important; padding: 24px 28px 40px;
border-color: #304156 !important; background: linear-gradient(135deg, #edf7ef 0%, #fdfefe 100%);
min-height: calc(100vh - 120px);
box-sizing: border-box;
border-radius: 20px;
box-shadow: 0 14px 32px rgba(76, 175, 80, 0.12);
border: 1px solid rgba(129, 199, 132, 0.25);
}
.search-box {
flex: 0 0 auto;
width: 450px;
margin-bottom: 20px;
}
:deep(.search-box .el-input) {
width: 100%;
}
.forest-btn-small {
background: linear-gradient(135deg, #4caf50 0%, #2e7d32 100%);
border: none;
color: #fff;
border-radius: 10px;
padding: 8px 20px;
font-weight: 600;
font-size: 14px;
box-shadow: 0 4px 12px rgba(76, 175, 80, 0.3);
transition: all 0.3s ease;
}
.forest-btn-small.ghost {
background: rgba(255, 255, 255, 0.95);
color: #2e7d32;
border: 1px solid #66bb6a;
box-shadow: 0 3px 10px rgba(76, 175, 80, 0.2);
}
.forest-btn-small:hover:not(:disabled) {
filter: brightness(1.05);
transform: translateY(-1px);
}
.forest-btn-small:disabled {
opacity: 0.5;
cursor: not-allowed;
}
#tableStyle {
margin-bottom: 30px;
background: rgba(255, 255, 255, 0.92);
border-radius: 16px;
overflow: hidden;
border: 1px solid rgba(129, 199, 132, 0.3);
box-shadow: 0 14px 28px rgba(76, 175, 80, 0.12);
}
:deep(#tableStyle .el-table__header-wrapper th) {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
font-size: 14px !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
:deep(#tableStyle .el-table__body-wrapper td) {
color: #2e4b31;
border-bottom: 1px solid rgba(76, 175, 80, 0.08);
}
:deep(#tableStyle .el-table__body tr:hover > td) {
background: rgba(129, 199, 132, 0.15) !important;
color: #1b5e20;
}
:deep(#tableStyle .el-table__row--striped td) {
background: rgba(233, 247, 235, 0.65);
}
:deep(#tableStyle .el-table__row.current-row > td) {
background: rgba(76, 175, 80, 0.18) !important;
color: #1b5e20;
}
:deep(#tableStyle .el-table__body tr) {
transition: transform 0.15s ease, box-shadow 0.15s ease;
}
:deep(#tableStyle .el-table__body tr:hover) {
transform: translateY(-1px);
box-shadow: inset 0 2px 0 rgba(76, 175, 80, 0.15);
}
:deep(#tableStyle .el-button--text) {
color: #2e7d32;
font-weight: 500;
padding: 6px 12px;
border-radius: 8px;
transition: all 0.3s ease;
}
:deep(#tableStyle .el-button--text:hover) {
color: #1b5e20;
background: rgba(129, 199, 132, 0.2);
transform: translateY(-1px);
}
:deep(#tableStyle .el-checkbox__input.is-checked .el-checkbox__inner) {
background-color: #4caf50 !important;
border-color: #4caf50 !important;
}
:deep(#tableStyle .el-checkbox__inner) {
border-color: rgba(129, 199, 132, 0.5) !important;
}
:deep(#tableStyle .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner) {
background-color: rgba(76, 175, 80, 0.5) !important;
border-color: rgba(76, 175, 80, 0.5) !important;
} }
.el-dropdown-link { .el-dropdown-link {
cursor: pointer; cursor: pointer;
color: #409EFF; color: #4caf50;
transition: color 0.3s ease;
} }
.el-dropdown-link:hover { .el-dropdown-link:hover {
color: #66b1ff; color: #2e7d32;
} }
.search-container { .taskDialog :deep(.el-dialog) {
text-align: left; border-radius: 18px;
border: 1px solid rgba(129, 199, 132, 0.35);
box-shadow: 0 12px 30px rgba(76, 175, 80, 0.18);
}
.taskDialog :deep(.el-dialog__header) {
background: linear-gradient(135deg, #4caf50, #2e7d32);
color: #fff;
border-radius: 18px 18px 0 0;
}
.taskDialog :deep(.el-form-item__label) {
color: #1b5e20;
font-weight: 600;
}
.taskDialog :deep(.el-button--primary) {
background-color: #4caf50 !important;
border-color: #4caf50 !important;
}
.taskDialog :deep(.el-button--primary:hover) {
background-color: #66bb6a !important;
border-color: #66bb6a !important;
}
:deep(.tb-edit .el-table__header-wrapper th) {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
}
:deep(.tb-edit .el-table__body-wrapper td) {
color: #2e4b31;
border-bottom: 1px solid rgba(76, 175, 80, 0.08);
}
:deep(.tb-edit .el-table__body tr:hover > td) {
background: rgba(129, 199, 132, 0.15) !important;
}
/* 滚动条样式 */
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper) {
scrollbar-width: thin !important;
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar) {
height: 8px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-track) {
background: rgba(232, 245, 233, 0.5) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb) {
background: linear-gradient(90deg, #81c784, #66bb6a) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb:hover) {
background: linear-gradient(90deg, #66bb6a, #4caf50) !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper) {
scrollbar-width: thin !important;
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar) {
width: 8px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-track) {
background: rgba(232, 245, 233, 0.5) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb) {
background: linear-gradient(180deg, #81c784, #66bb6a) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb:hover) {
background: linear-gradient(180deg, #66bb6a, #4caf50) !important;
}
/* 下拉选择框样式 */
:deep(#tableStyle .el-select .el-input__inner) {
border-color: rgba(129, 199, 132, 0.4) !important;
color: #1b5e20 !important;
}
:deep(#tableStyle .el-select .el-input__inner:focus) {
border-color: #4caf50 !important;
}
:deep(#tableStyle .el-select .el-input__suffix .el-input__suffix-inner .el-select__caret) {
color: #4caf50 !important;
}
:deep(.el-select-dropdown) {
border: 1px solid rgba(129, 199, 132, 0.3) !important;
border-radius: 10px !important;
box-shadow: 0 8px 20px rgba(76, 175, 80, 0.15) !important;
}
:deep(.el-select-dropdown .el-select-dropdown__item) {
color: #2e4b31 !important;
}
:deep(.el-select-dropdown .el-select-dropdown__item:hover) {
background: rgba(129, 199, 132, 0.2) !important;
color: #1b5e20 !important;
}
:deep(.el-select-dropdown .el-select-dropdown__item.selected) {
background: rgba(76, 175, 80, 0.25) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
}
</style>
<style>
/* 全局表格样式覆盖 */
#tableStyle.el-table {
border: 1px solid rgba(129, 199, 132, 0.3) !important;
border-radius: 16px !important;
overflow: hidden !important;
}
#tableStyle.el-table.el-table--border {
border: 1px solid rgba(129, 199, 132, 0.3) !important;
}
#tableStyle.el-table.el-table--border::after,
#tableStyle.el-table.el-table--border::before {
background-color: rgba(129, 199, 132, 0.3) !important;
}
#tableStyle.el-table.el-table--border th {
border-right: 1px solid rgba(129, 199, 132, 0.25) !important;
}
#tableStyle.el-table.el-table--border th:last-child {
border-right: none !important;
}
#tableStyle.el-table.el-table--border td {
border-right: 1px solid rgba(76, 175, 80, 0.08) !important;
}
#tableStyle.el-table.el-table--border td:last-child {
border-right: none !important;
}
#tableStyle.el-table.el-table--striped .el-table__body tr.el-table__row--striped td {
background: rgba(233, 247, 235, 0.65) !important;
}
#tableStyle.el-table.el-table--striped .el-table__body tr.el-table__row--striped:hover td {
background: rgba(200, 230, 201, 0.5) !important;
}
/* 表头样式全局覆盖 */
#tableStyle.el-table .el-table__header-wrapper th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
font-size: 14px !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
#tableStyle.el-table .el-table__header-wrapper thead th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
}
#tableStyle.el-table .el-table__header th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
}
#tableStyle.el-table .el-table__header th .cell {
color: #1b5e20 !important;
font-weight: 600 !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
#tableStyle.el-table .el-table__header th.sinCl {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
}
#tableStyle.el-table .el-table__header th.sinCl .cell {
color: #1b5e20 !important;
font-weight: 600 !important;
} }
</style> </style>

View File

@@ -1,29 +1,29 @@
<template> <template>
<div style="height: (screenHeight-300)+'px'"> <div class="task-manage-page">
<div id="buttomContain"> <div class="toolbar-container">
<div class="search-container"> <div class="search-box">
<el-input <el-input
style="width: 300px; margin-right: 15px;"
placeholder="请输入用户名搜索" placeholder="请输入用户名搜索"
v-model="inputUsername" v-model="inputUsername"
prefix-icon="el-icon-search"
clearable
size="small"
@clear="cancelSearch()"
@keyup.enter.native="searchUser()"
> >
<i <i
slot="suffix" slot="suffix"
class="el-input__icon el-icon-search" class="el-input__icon el-icon-search"
@click="searchUser()" @click="searchUser()"
></i> style="cursor: pointer;"
<i
slot="suffix"
class="el-input__icon el-icon-circle-close"
@click="cancelSearch()"
></i> ></i>
</el-input> </el-input>
</div> </div>
<div class="button-container"> <div class="toolbar-actions">
<el-button <el-button
id="buttonStyle" class="forest-btn-small"
size="small" size="medium"
style="margin-top: 20px" icon="el-icon-plus"
@click="adduser1()" @click="adduser1()"
>添加用户</el-button >添加用户</el-button
> >
@@ -33,7 +33,10 @@
<el-table <el-table
id="tableStyle" id="tableStyle"
:data="usersData" :data="usersData"
style="width: 100%" :max-height="600"
stripe
border
highlight-current-row
header-cell-class-name="sinCl" header-cell-class-name="sinCl"
> >
<el-table-column <el-table-column
@@ -65,25 +68,28 @@
<el-button <el-button
type="text" type="text"
size="small" size="small"
class="action-btn"
@click.native="EditField(scope.$index)" @click.native="EditField(scope.$index)"
>确认</el-button >确认</el-button
> >
<el-button <el-button
type="text" type="text"
size="small" size="small"
class="action-btn"
@click.native="deleteField(scope.$index)" @click.native="deleteField(scope.$index)"
>删除</el-button >删除</el-button
> >
<el-button <el-button
type="text" type="text"
size="small" size="small"
class="action-btn"
@click.native="resetPassword(scope.$index)" @click.native="resetPassword(scope.$index)"
>重置密码</el-button >重置密码</el-button
> >
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="margin-top: 50px"> <div class="pagination-container">
<el-pagination <el-pagination
layout="prev, pager, next" layout="prev, pager, next"
:page-count="dataPageNum" :page-count="dataPageNum"
@@ -163,9 +169,11 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<el-button id="buttonStyle" size="small" @click="addUser()" <div class="dialog-footer">
<el-button class="forest-btn-small" @click="addUser()"
>确认</el-button >确认</el-button
> >
</div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@@ -506,42 +514,385 @@ export default {
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.el-input__inner { .task-manage-page {
>>> &::placeholder { padding: 24px 28px 40px;
font-family: PingFangSC-Regular; background: linear-gradient(135deg, #edf7ef 0%, #fdfefe 100%);
font-size: 14px; min-height: calc(100vh - 120px);
color: #c0c4cc; box-sizing: border-box;
} border-radius: 20px;
box-shadow: 0 14px 32px rgba(76, 175, 80, 0.12);
border: 1px solid rgba(129, 199, 132, 0.25);
} }
#buttomContain { .toolbar-container {
top: 5px;
right: 25px;
position: absolute;
display: flex; display: flex;
align-items: center;
justify-content: space-between; justify-content: space-between;
width: calc(100% - 50px); align-items: center;
margin-bottom: 20px;
} }
.search-container { .search-box {
/* 搜索容器靠左 */ flex: 0 0 auto;
width: 450px;
} }
.button-container { :deep(.search-box .el-input) {
/* 按钮容器靠右 */ width: 100%;
}
.toolbar-actions {
display: flex;
gap: 16px;
flex: 0 0 auto;
}
.forest-btn-small {
background: linear-gradient(135deg, #4caf50 0%, #2e7d32 100%);
border: none;
color: #fff;
border-radius: 10px;
padding: 8px 20px;
font-weight: 600;
font-size: 14px;
box-shadow: 0 4px 12px rgba(76, 175, 80, 0.3);
transition: all 0.3s ease;
}
.forest-btn-small:hover:not(:disabled) {
filter: brightness(1.05);
transform: translateY(-1px);
}
.forest-btn-small:disabled {
opacity: 0.5;
cursor: not-allowed;
} }
#tableStyle { #tableStyle {
top: 50px;
margin-bottom: 30px; margin-bottom: 30px;
height: 600px; background: rgba(255, 255, 255, 0.92);
} border-radius: 16px;
>>> .el-pager li { overflow: hidden;
background: #fff !important; border: 1px solid rgba(129, 199, 132, 0.3);
box-shadow: 0 14px 28px rgba(76, 175, 80, 0.12);
} }
>>> .el-pagination button { :deep(#tableStyle .el-table__header-wrapper th) {
background: #fff !important; background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
font-size: 14px !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
:deep(#tableStyle .el-table__body-wrapper td) {
color: #2e4b31;
border-bottom: 1px solid rgba(76, 175, 80, 0.08);
}
:deep(#tableStyle .el-table__body tr:hover > td) {
background: rgba(129, 199, 132, 0.15) !important;
color: #1b5e20;
}
:deep(#tableStyle .el-table__row--striped td) {
background: rgba(233, 247, 235, 0.65);
}
:deep(#tableStyle .el-table__row.current-row > td) {
background: rgba(76, 175, 80, 0.18) !important;
color: #1b5e20;
}
:deep(#tableStyle .el-table__body tr) {
transition: transform 0.15s ease, box-shadow 0.15s ease;
}
:deep(#tableStyle .el-table__body tr:hover) {
transform: translateY(-1px);
box-shadow: inset 0 2px 0 rgba(76, 175, 80, 0.15);
}
:deep(#tableStyle .el-button--text) {
color: #2e7d32;
font-weight: 500;
padding: 6px 12px;
border-radius: 8px;
transition: all 0.3s ease;
}
:deep(#tableStyle .el-button--text:hover) {
color: #1b5e20;
background: rgba(129, 199, 132, 0.2);
transform: translateY(-1px);
}
.action-btn {
color: #2e7d32 !important;
font-weight: 500 !important;
padding: 6px 12px !important;
border-radius: 8px !important;
transition: all 0.3s ease !important;
}
.action-btn:hover {
color: #1b5e20 !important;
background: rgba(129, 199, 132, 0.2) !important;
transform: translateY(-1px) !important;
}
/* 下拉选择框样式 */
:deep(#tableStyle .el-select .el-input__inner) {
border-color: rgba(129, 199, 132, 0.4) !important;
color: #1b5e20 !important;
}
:deep(#tableStyle .el-select .el-input__inner:focus) {
border-color: #4caf50 !important;
}
:deep(#tableStyle .el-select .el-input__suffix .el-input__suffix-inner .el-select__caret) {
color: #4caf50 !important;
}
/* 滚动条样式 */
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper) {
scrollbar-width: thin !important;
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar) {
height: 8px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-track) {
background: rgba(232, 245, 233, 0.5) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb) {
background: linear-gradient(90deg, #81c784, #66bb6a) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb:hover) {
background: linear-gradient(90deg, #66bb6a, #4caf50) !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper) {
scrollbar-width: thin !important;
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar) {
width: 8px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-track) {
background: rgba(232, 245, 233, 0.5) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb) {
background: linear-gradient(180deg, #81c784, #66bb6a) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb:hover) {
background: linear-gradient(180deg, #66bb6a, #4caf50) !important;
}
.pagination-container {
margin-top: 30px;
display: flex;
justify-content: center;
}
:deep(.pagination-container .el-pagination) {
.el-pager li {
background: rgba(255, 255, 255, 0.9) !important;
color: #2e7d32 !important;
border: 1px solid rgba(129, 199, 132, 0.3) !important;
border-radius: 6px !important;
margin: 0 4px !important;
transition: all 0.3s ease !important;
}
.el-pager li:hover {
background: rgba(129, 199, 132, 0.2) !important;
color: #1b5e20 !important;
transform: translateY(-2px) !important;
}
.el-pager li.active {
background: linear-gradient(135deg, #4caf50, #2e7d32) !important;
color: #fff !important;
border-color: #4caf50 !important;
font-weight: 600 !important;
}
.btn-prev,
.btn-next {
background: rgba(255, 255, 255, 0.9) !important;
color: #2e7d32 !important;
border: 1px solid rgba(129, 199, 132, 0.3) !important;
border-radius: 6px !important;
transition: all 0.3s ease !important;
}
.btn-prev:hover,
.btn-next:hover {
background: rgba(129, 199, 132, 0.2) !important;
color: #1b5e20 !important;
transform: translateY(-2px) !important;
}
.btn-prev:disabled,
.btn-next:disabled {
opacity: 0.5 !important;
cursor: not-allowed !important;
}
}
.taskDialog :deep(.el-dialog) {
border-radius: 18px;
border: 1px solid rgba(129, 199, 132, 0.35);
box-shadow: 0 12px 30px rgba(76, 175, 80, 0.18);
}
.taskDialog :deep(.el-dialog__header) {
background: linear-gradient(135deg, #4caf50, #2e7d32);
color: #fff;
border-radius: 18px 18px 0 0;
}
.taskDialog :deep(.el-form-item__label) {
color: #1b5e20;
font-weight: 600;
}
.taskDialog :deep(.el-input__inner) {
border-color: rgba(129, 199, 132, 0.4) !important;
}
.taskDialog :deep(.el-input__inner:focus) {
border-color: #4caf50 !important;
}
.taskDialog :deep(.el-select .el-input__inner) {
border-color: rgba(129, 199, 132, 0.4) !important;
}
.taskDialog :deep(.el-select .el-input__inner:focus) {
border-color: #4caf50 !important;
}
.dialog-footer {
text-align: right;
margin-top: 20px;
}
:deep(.el-select-dropdown) {
border: 1px solid rgba(129, 199, 132, 0.3) !important;
border-radius: 10px !important;
box-shadow: 0 8px 20px rgba(76, 175, 80, 0.15) !important;
}
:deep(.el-select-dropdown .el-select-dropdown__item) {
color: #2e4b31 !important;
}
:deep(.el-select-dropdown .el-select-dropdown__item:hover) {
background: rgba(129, 199, 132, 0.2) !important;
color: #1b5e20 !important;
}
:deep(.el-select-dropdown .el-select-dropdown__item.selected) {
background: rgba(76, 175, 80, 0.25) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
}
</style>
<style>
/* 全局表格样式覆盖 */
#tableStyle.el-table {
border: 1px solid rgba(129, 199, 132, 0.3) !important;
border-radius: 16px !important;
overflow: hidden !important;
}
#tableStyle.el-table.el-table--border {
border: 1px solid rgba(129, 199, 132, 0.3) !important;
}
#tableStyle.el-table.el-table--border::after,
#tableStyle.el-table.el-table--border::before {
background-color: rgba(129, 199, 132, 0.3) !important;
}
#tableStyle.el-table.el-table--border th {
border-right: 1px solid rgba(129, 199, 132, 0.25) !important;
}
#tableStyle.el-table.el-table--border th:last-child {
border-right: none !important;
}
#tableStyle.el-table.el-table--border td {
border-right: 1px solid rgba(76, 175, 80, 0.08) !important;
}
#tableStyle.el-table.el-table--border td:last-child {
border-right: none !important;
}
#tableStyle.el-table.el-table--striped .el-table__body tr.el-table__row--striped td {
background: rgba(233, 247, 235, 0.65) !important;
}
#tableStyle.el-table.el-table--striped .el-table__body tr.el-table__row--striped:hover td {
background: rgba(200, 230, 201, 0.5) !important;
}
/* 表头样式全局覆盖 */
#tableStyle.el-table .el-table__header-wrapper th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
font-size: 14px !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
#tableStyle.el-table .el-table__header-wrapper thead th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
}
#tableStyle.el-table .el-table__header th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
}
#tableStyle.el-table .el-table__header th .cell {
color: #1b5e20 !important;
font-weight: 600 !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
#tableStyle.el-table .el-table__header th.sinCl {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
}
#tableStyle.el-table .el-table__header th.sinCl .cell {
color: #1b5e20 !important;
font-weight: 600 !important;
} }
</style> </style>

View File

@@ -1,24 +1,24 @@
<template> <template>
<div> <div class="task-manage-page">
<div id="buttomContain"> <div class="toolbar-container">
<div class="search-container"> <div class="search-box">
<el-input <el-input
v-model="searchKeyword" v-model="searchKeyword"
placeholder="请输入关键词进行搜索" placeholder="请输入关键词进行搜索"
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
clearable clearable
size="small" size="small"
style="width: 450px; margin-right: 15px;"
@input="handleSearch" @input="handleSearch"
></el-input> ></el-input>
</div> </div>
<div class="search-container"> <div class="toolbar-actions">
<el-button id="buttonStyle" size="small" @click="addRow()" <el-button class="forest-btn" size="medium" icon="el-icon-plus" @click="addRow()"
>添加任务</el-button >添加任务</el-button
> >
<el-button id="buttonStyle" size="small" @click="addXml()" <el-button class="forest-btn ghost" size="medium" icon="el-icon-upload" @click="addXml()"
>导入xml文件</el-button >导入xml文件</el-button
></div> >
</div>
</div> </div>
<el-table <el-table
id="tableStyle" id="tableStyle"
@@ -65,7 +65,8 @@
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch <el-switch
v-model="scope.row.isReviewerRestricted" v-model="scope.row.isReviewerRestricted"
active-color="#9DBBE7" active-color="#4CAF50"
inactive-color="#E0E0E0"
@change=" @change="
changeRestricted(scope.row.id, scope.row.isReviewerRestricted) changeRestricted(scope.row.id, scope.row.isReviewerRestricted)
" "
@@ -192,7 +193,9 @@
<el-input v-model="form.introduction"></el-input> <el-input v-model="form.introduction"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-button type="primary" size="small" @click="Upload()">确认</el-button> <div class="dialog-footer">
<el-button class="forest-btn" size="medium" @click="Upload()">确认</el-button>
</div>
</el-dialog> </el-dialog>
<el-dialog <el-dialog
v-dialogDrag v-dialogDrag
@@ -239,9 +242,11 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<el-button type="primary" size="small" @click="UploadXml()" <div class="dialog-footer">
>确认</el-button <el-button class="forest-btn" size="medium" @click="UploadXml()"
> >确认</el-button
>
</div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@@ -707,21 +712,461 @@ export default {
</script> </script>
<style scoped> <style scoped>
#buttomContain { .task-manage-page {
right: 25px; padding: 24px 28px 40px;
position: absolute; background: linear-gradient(135deg, #edf7ef 0%, #fdfefe 100%);
display: flex; min-height: calc(100vh - 120px);
align-items: center; box-sizing: border-box;
justify-content: space-between; /* 让搜索容器和按钮分别靠左和靠右 */ border-radius: 20px;
width: calc(100% - 50px); /* 设置容器宽度,减去左右边距 */ box-shadow: 0 14px 32px rgba(76, 175, 80, 0.12);
border: 1px solid rgba(129, 199, 132, 0.25);
} }
.search-container { .toolbar-container {
/* 移除右边距,让搜索容器靠左 */ display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.search-box {
flex: 0 0 auto;
width: 450px;
}
:deep(.search-box .el-input) {
width: 100%;
}
.toolbar-actions {
display: flex;
gap: 16px;
flex: 0 0 auto;
}
.forest-btn {
background: linear-gradient(135deg, #4caf50 0%, #2e7d32 100%);
border: none;
color: #fff;
border-radius: 12px;
padding: 0 26px;
min-height: 38px;
font-weight: 600;
letter-spacing: 0.5px;
font-size: 15px;
box-shadow: 0 8px 18px rgba(76, 175, 80, 0.35);
}
.forest-btn.ghost {
background: rgba(255, 255, 255, 0.95);
color: #2e7d32;
border: 1px solid #66bb6a;
box-shadow: 0 5px 14px rgba(76, 175, 80, 0.2);
}
.forest-btn:hover {
filter: brightness(1.05);
} }
#tableStyle { #tableStyle {
top: 40px;
margin-bottom: 30px; margin-bottom: 30px;
background: rgba(255, 255, 255, 0.92);
border-radius: 16px;
overflow: hidden;
border: 1px solid rgba(129, 199, 132, 0.3);
box-shadow: 0 14px 28px rgba(76, 175, 80, 0.12);
}
:deep(#tableStyle .el-table__header-wrapper th) {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
font-size: 14px !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
:deep(#tableStyle .el-table__body-wrapper td) {
color: #2e4b31;
border-bottom: 1px solid rgba(76, 175, 80, 0.08);
}
:deep(#tableStyle .el-table__body tr:hover > td) {
background: rgba(129, 199, 132, 0.15) !important;
color: #1b5e20;
}
:deep(#tableStyle .el-table__row--striped td) {
background: rgba(233, 247, 235, 0.65);
}
:deep(#tableStyle .el-table__row.current-row > td) {
background: rgba(76, 175, 80, 0.18) !important;
color: #1b5e20;
}
:deep(#tableStyle .el-table__body tr) {
transition: transform 0.15s ease, box-shadow 0.15s ease;
}
:deep(#tableStyle .el-table__body tr:hover) {
transform: translateY(-1px);
box-shadow: inset 0 2px 0 rgba(76, 175, 80, 0.15);
}
/* Element UI 表格默认类名主题化 */
:deep(#tableStyle .el-table) {
background: transparent !important;
border: none !important;
}
:deep(#tableStyle .el-table.el-table--fit) {
border: none !important;
}
:deep(#tableStyle .el-table.el-table--border) {
border: 1px solid rgba(129, 199, 132, 0.3) !important;
border-radius: 16px !important;
overflow: hidden !important;
}
:deep(#tableStyle .el-table.el-table--border::after) {
background-color: rgba(129, 199, 132, 0.3) !important;
}
:deep(#tableStyle .el-table.el-table--border::before) {
background-color: rgba(129, 199, 132, 0.3) !important;
}
:deep(#tableStyle .el-table.el-table--border th) {
border-right: 1px solid rgba(129, 199, 132, 0.25) !important;
}
:deep(#tableStyle .el-table.el-table--border th:last-child) {
border-right: none !important;
}
:deep(#tableStyle .el-table.el-table--border td) {
border-right: 1px solid rgba(76, 175, 80, 0.08) !important;
}
:deep(#tableStyle .el-table.el-table--border td:last-child) {
border-right: none !important;
}
:deep(#tableStyle .el-table.el-table--striped .el-table__body tr.el-table__row--striped) {
background: rgba(233, 247, 235, 0.65) !important;
}
:deep(#tableStyle .el-table.el-table--striped .el-table__body tr.el-table__row--striped:hover) {
background: rgba(200, 230, 201, 0.5) !important;
}
:deep(#tableStyle .el-table.el-table--striped .el-table__body tr.el-table__row--striped td) {
background: rgba(233, 247, 235, 0.65) !important;
}
:deep(#tableStyle .el-table.el-table--striped .el-table__body tr.el-table__row--striped:hover td) {
background: rgba(200, 230, 201, 0.5) !important;
}
/* 滚动条样式 */
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper) {
scrollbar-width: thin !important;
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar) {
height: 8px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-track) {
background: rgba(232, 245, 233, 0.5) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb) {
background: linear-gradient(90deg, #81c784, #66bb6a) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb:hover) {
background: linear-gradient(90deg, #66bb6a, #4caf50) !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper) {
scrollbar-width: thin !important;
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar) {
width: 8px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-track) {
background: rgba(232, 245, 233, 0.5) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb) {
background: linear-gradient(180deg, #81c784, #66bb6a) !important;
border-radius: 4px !important;
}
:deep(#tableStyle .el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb:hover) {
background: linear-gradient(180deg, #66bb6a, #4caf50) !important;
}
/* 表格内按钮和开关样式 */
:deep(#tableStyle .el-button--text) {
color: #2e7d32;
font-weight: 500;
padding: 6px 12px;
border-radius: 8px;
transition: all 0.3s ease;
}
:deep(#tableStyle .el-button--text:hover) {
color: #1b5e20;
background: rgba(129, 199, 132, 0.2);
transform: translateY(-1px);
}
:deep(#tableStyle .el-switch.is-checked .el-switch__core) {
background-color: #4caf50 !important;
border-color: #4caf50 !important;
}
:deep(#tableStyle .el-switch__core) {
border-color: rgba(129, 199, 132, 0.5) !important;
background-color: #e0e0e0 !important;
transition: all 0.3s ease !important;
}
:deep(#tableStyle .el-switch.is-checked .el-switch__core::after) {
background-color: #ffffff !important;
}
:deep(#tableStyle .el-switch__core::after) {
background-color: #ffffff !important;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15) !important;
}
:deep(#tableStyle .el-switch:hover .el-switch__core) {
border-color: rgba(76, 175, 80, 0.8) !important;
}
:deep(#tableStyle .el-switch.is-checked:hover .el-switch__core) {
background-color: #66bb6a !important;
border-color: #66bb6a !important;
}
.taskDialog :deep(.el-dialog) {
border-radius: 18px;
border: 1px solid rgba(129, 199, 132, 0.35);
box-shadow: 0 12px 30px rgba(76, 175, 80, 0.18);
}
.taskDialog :deep(.el-dialog__header) {
background: linear-gradient(135deg, #4caf50, #2e7d32);
color: #fff;
border-radius: 18px 18px 0 0;
}
.taskDialog :deep(.el-form-item__label) {
color: #1b5e20;
font-weight: 600;
}
.dialog-footer {
text-align: right;
margin-top: 12px;
}
</style>
<style>
/* 全局表格样式覆盖 - 确保主题样式生效 */
#tableStyle.el-table {
border: 1px solid rgba(129, 199, 132, 0.3) !important;
border-radius: 16px !important;
overflow: hidden !important;
}
#tableStyle.el-table.el-table--border {
border: 1px solid rgba(129, 199, 132, 0.3) !important;
}
#tableStyle.el-table.el-table--border::after,
#tableStyle.el-table.el-table--border::before {
background-color: rgba(129, 199, 132, 0.3) !important;
}
#tableStyle.el-table.el-table--border th {
border-right: 1px solid rgba(129, 199, 132, 0.25) !important;
}
#tableStyle.el-table.el-table--border th:last-child {
border-right: none !important;
}
#tableStyle.el-table.el-table--border td {
border-right: 1px solid rgba(76, 175, 80, 0.08) !important;
}
#tableStyle.el-table.el-table--border td:last-child {
border-right: none !important;
}
#tableStyle.el-table.el-table--striped .el-table__body tr.el-table__row--striped td {
background: rgba(233, 247, 235, 0.65) !important;
}
#tableStyle.el-table.el-table--striped .el-table__body tr.el-table__row--striped:hover td {
background: rgba(200, 230, 201, 0.5) !important;
}
/* 滚动条全局样式 */
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper {
scrollbar-width: thin !important;
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
}
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar {
height: 8px !important;
}
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-track {
background: rgba(232, 245, 233, 0.5) !important;
border-radius: 4px !important;
}
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb {
background: linear-gradient(90deg, #81c784, #66bb6a) !important;
border-radius: 4px !important;
}
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb:hover {
background: linear-gradient(90deg, #66bb6a, #4caf50) !important;
}
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper {
scrollbar-width: thin !important;
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
}
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar {
width: 8px !important;
}
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-track {
background: rgba(232, 245, 233, 0.5) !important;
border-radius: 4px !important;
}
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb {
background: linear-gradient(180deg, #81c784, #66bb6a) !important;
border-radius: 4px !important;
}
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb:hover {
background: linear-gradient(180deg, #66bb6a, #4caf50) !important;
}
/* 表头样式全局覆盖 */
#tableStyle.el-table .el-table__header-wrapper th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
font-size: 14px !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
padding: 12px 0 !important;
text-align: center !important;
}
#tableStyle.el-table .el-table__header-wrapper thead th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
}
#tableStyle.el-table .el-table__header th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
}
#tableStyle.el-table .el-table__header th .cell {
color: #1b5e20 !important;
font-weight: 600 !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
/* 覆盖自定义表头类名 sinCl */
#tableStyle.el-table .el-table__header th.sinCl {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
font-size: 14px !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
#tableStyle.el-table .el-table__header th.sinCl .cell {
color: #1b5e20 !important;
font-weight: 600 !important;
}
/* 更通用的表头选择器 */
#tableStyle.el-table th,
#tableStyle.el-table thead th,
#tableStyle.el-table .el-table__header th,
#tableStyle.el-table .el-table__header-wrapper th {
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
color: #1b5e20 !important;
font-weight: 600 !important;
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
}
#tableStyle.el-table th .cell,
#tableStyle.el-table thead th .cell,
#tableStyle.el-table .el-table__header th .cell {
color: #1b5e20 !important;
font-weight: 600 !important;
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
}
/* Switch 组件全局样式 */
#tableStyle .el-switch {
display: inline-block;
}
#tableStyle .el-switch.is-checked .el-switch__core {
background-color: #4caf50 !important;
border-color: #4caf50 !important;
}
#tableStyle .el-switch__core {
border-color: rgba(129, 199, 132, 0.5) !important;
background-color: #e0e0e0 !important;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
#tableStyle .el-switch.is-checked .el-switch__core::after {
background-color: #ffffff !important;
}
#tableStyle .el-switch__core::after {
background-color: #ffffff !important;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15) !important;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
#tableStyle .el-switch:hover .el-switch__core {
border-color: rgba(76, 175, 80, 0.8) !important;
}
#tableStyle .el-switch.is-checked:hover .el-switch__core {
background-color: #66bb6a !important;
border-color: #66bb6a !important;
}
#tableStyle .el-switch.is-disabled .el-switch__core {
background-color: #f5f5f5 !important;
border-color: #e0e0e0 !important;
opacity: 0.6 !important;
}
#tableStyle .el-switch.is-disabled.is-checked .el-switch__core {
background-color: rgba(76, 175, 80, 0.4) !important;
border-color: rgba(76, 175, 80, 0.4) !important;
} }
</style> </style>

View File

@@ -206,20 +206,24 @@ body {
position: fixed; position: fixed;
height: 100%; height: 100%;
width: 100%; width: 100%;
/*background: url(../../assets/images/background.jpg) no-repeat; background: linear-gradient(160deg, rgba(232, 245, 233, 0.95), rgba(248, 253, 249, 0.9));
background-size:100% 100%; display: flex;
background-attachment:fixed;*/ flex-direction: column;
justify-content: flex-start;
align-items: center;
padding: 80px 20px 40px;
overflow-y: auto;
.tips { .tips {
font-size: 14px; font-size: 14px;
color: #fff; color: #fff;
margin-bottom: 10px; margin-bottom: 10px;
} }
.title { .title {
font-family: PingFangSC-Regular; font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif;
font-size: 24px; font-size: 24px;
font-weight: 600; font-weight: 650;
color: #2c3e50; color: #1b5e20;
background: linear-gradient(135deg, rgba(157, 187, 231, 0.15) 0%, rgba(157, 187, 231, 0.05) 100%); background: linear-gradient(135deg, rgba(129, 199, 132, 0.2) 0%, rgba(200, 230, 201, 0.2) 100%);
width: 100%; width: 100%;
height: 70px; height: 70px;
line-height: 70px; line-height: 70px;
@@ -227,7 +231,7 @@ body {
padding: 0; padding: 0;
text-align: center; text-align: center;
border-radius: 16px 16px 0 0; border-radius: 16px 16px 0 0;
border-bottom: 1px solid rgba(157, 187, 231, 0.2); border-bottom: 1px solid rgba(129, 199, 132, 0.25);
} }
.el-form-item { .el-form-item {
margin-left: 30px; margin-left: 30px;
@@ -277,12 +281,13 @@ body {
min-width: 0; min-width: 0;
} }
input { input {
background: transparent !important; background: rgba(255, 255, 255, 0.85) !important;
border: 0px !important; border: 1px solid rgba(129, 199, 132, 0.4) !important;
padding: 14px 0px 14px 12px; padding: 14px 12px;
font-family: PingFangSC-Regular; font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif;
font-size: 15px; font-size: 15px;
color: #2c3e50; color: #1b5e20;
border-radius: 12px;
transition: all 0.3s ease; transition: all 0.3s ease;
height: 50px; height: 50px;
line-height: 50px; line-height: 50px;
@@ -291,8 +296,8 @@ body {
background: transparent !important; background: transparent !important;
border: none !important; border: none !important;
&::placeholder { &::placeholder {
color: #889aa4; color: #4e7d4f;
font-family: PingFangSC-Regular; font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif;
font-size: 15px; font-size: 15px;
opacity: 0.7; opacity: 0.7;
} }
@@ -301,43 +306,31 @@ body {
} }
} }
.main-title { .main-title {
position: absolute; margin: 0 0 32px 0;
left: 0;
right: 0;
top: 45px;
margin: 0 auto;
font-family: "PingFang SC", "Microsoft YaHei", "SimHei", "STHeiti", "Helvetica Neue", Arial, sans-serif; font-family: "PingFang SC", "Microsoft YaHei", "SimHei", "STHeiti", "Helvetica Neue", Arial, sans-serif;
font-size: 48px; font-size: 60px;
font-weight: 700; font-weight: 700;
color: #264672; color: #1b5e20;
text-align: center; text-align: center;
width: 100%; width: 100%;
z-index: 1; z-index: 1;
text-shadow: 0 2px 8px rgba(38, 70, 114, 0.2), text-shadow: 0 8px 30px rgba(27, 94, 32, 0.2);
0 4px 16px rgba(38, 70, 114, 0.15), letter-spacing: 4px;
0 8px 32px rgba(38, 70, 114, 0.1);
letter-spacing: 5px;
line-height: 1.4; line-height: 1.4;
padding: 0 30px 25px 30px; padding: 0 30px 120px 30px;
box-sizing: border-box; box-sizing: border-box;
animation: titleFadeIn 0.8s ease-out; animation: titleFadeIn 0.8s ease-out;
position: relative;
&::after { &::after {
content: ''; content: '';
position: absolute; position: absolute;
left: 50%; left: 50%;
bottom: 0; bottom: -6px;
transform: translateX(-50%); transform: translateX(-50%);
width: 150px; width: 150px;
height: 4px; height: 4px;
background: linear-gradient(90deg, background: linear-gradient(90deg, transparent 0%, rgba(129, 199, 132, 0.6) 20%, #4caf50 50%, rgba(129, 199, 132, 0.6) 80%, transparent 100%);
transparent 0%,
rgba(91, 141, 239, 0.3) 20%,
#5b8def 50%,
rgba(91, 141, 239, 0.3) 80%,
transparent 100%);
border-radius: 2px; border-radius: 2px;
box-shadow: 0 2px 8px rgba(91, 141, 239, 0.4); box-shadow: 0 2px 8px rgba(76, 175, 80, 0.35);
} }
} }
@keyframes titleFadeIn { @keyframes titleFadeIn {
@@ -351,18 +344,15 @@ body {
} }
} }
.login-form { .login-form {
position: absolute; margin: 0 auto 40px;
left: 0; background: rgba(255, 255, 255, 0.9);
right: 0; backdrop-filter: blur(18px);
margin: 120px auto; -webkit-backdrop-filter: blur(18px);
background: rgba(255, 255, 255, 0.85); box-shadow: 0 12px 36px rgba(76, 175, 80, 0.18),
backdrop-filter: blur(20px); 0 4px 12px rgba(0, 0, 0, 0.08),
-webkit-backdrop-filter: blur(20px); inset 0 1px 0 rgba(255, 255, 255, 0.7);
box-shadow: 0 8px 32px rgba(38, 70, 114, 0.15), border-radius: 24px;
0 2px 8px rgba(0, 0, 0, 0.1), border: 1px solid rgba(129, 199, 132, 0.35);
inset 0 1px 0 rgba(255, 255, 255, 0.6);
border-radius: 20px;
border: 1px solid rgba(255, 255, 255, 0.3);
width: 420px; width: 420px;
min-height: 450px; min-height: 450px;
padding-bottom: 20px; padding-bottom: 20px;
@@ -390,7 +380,7 @@ body {
width: 100%; width: 100%;
height: 46px; height: 46px;
margin: 0; margin: 0;
background: linear-gradient(135deg, #5b8def 0%, #4a7dd8 100%) !important; background: linear-gradient(135deg, #4caf50 0%, #2e7d32 100%) !important;
border: none !important; border: none !important;
border-radius: 12px !important; border-radius: 12px !important;
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
@@ -399,22 +389,22 @@ body {
color: #ffffff !important; color: #ffffff !important;
letter-spacing: 1px; letter-spacing: 1px;
text-align: center; text-align: center;
box-shadow: 0 4px 14px rgba(91, 141, 239, 0.4), box-shadow: 0 4px 14px rgba(76, 175, 80, 0.35),
0 2px 4px rgba(91, 141, 239, 0.2); 0 2px 4px rgba(76, 175, 80, 0.2);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
cursor: pointer; cursor: pointer;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
&:hover { &:hover {
transform: translateY(-2px); transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(91, 141, 239, 0.5), box-shadow: 0 6px 20px rgba(76, 175, 80, 0.45),
0 4px 8px rgba(91, 141, 239, 0.3); 0 4px 8px rgba(76, 175, 80, 0.25);
background: linear-gradient(135deg, #6b9dff 0%, #5a8de8 100%) !important; background: linear-gradient(135deg, #66bb6a 0%, #43a047 100%) !important;
} }
&:active { &:active {
transform: translateY(0); transform: translateY(0);
box-shadow: 0 3px 10px rgba(91, 141, 239, 0.35), box-shadow: 0 3px 10px rgba(76, 175, 80, 0.35),
0 1px 3px rgba(91, 141, 239, 0.2); 0 1px 3px rgba(76, 175, 80, 0.18);
} }
} }
.register-button { .register-button {
@@ -422,43 +412,43 @@ body {
height: 46px; height: 46px;
margin: 0; margin: 0;
background: rgba(255, 255, 255, 0.95) !important; background: rgba(255, 255, 255, 0.95) !important;
border: 1.5px solid #5b8def !important; border: 1.5px solid #4caf50 !important;
border-radius: 12px !important; border-radius: 12px !important;
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
color: #5b8def !important; color: #2e7d32 !important;
letter-spacing: 1px; letter-spacing: 1px;
text-align: center; text-align: center;
box-shadow: 0 2px 8px rgba(91, 141, 239, 0.2), box-shadow: 0 2px 8px rgba(76, 175, 80, 0.25),
0 1px 3px rgba(91, 141, 239, 0.1); 0 1px 3px rgba(76, 175, 80, 0.12);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
cursor: pointer; cursor: pointer;
&:hover { &:hover {
transform: translateY(-2px); transform: translateY(-2px);
background: rgba(91, 141, 239, 0.08) !important; background: rgba(76, 175, 80, 0.08) !important;
border-color: #6b9dff !important; border-color: #66bb6a !important;
border-width: 1.5px !important; border-width: 1.5px !important;
box-shadow: 0 4px 14px rgba(91, 141, 239, 0.3), box-shadow: 0 4px 14px rgba(76, 175, 80, 0.3),
0 2px 6px rgba(91, 141, 239, 0.15); 0 2px 6px rgba(76, 175, 80, 0.15);
color: #6b9dff !important; color: #2e7d32 !important;
} }
&:active { &:active {
transform: translateY(0); transform: translateY(0);
box-shadow: 0 2px 6px rgba(91, 141, 239, 0.25), box-shadow: 0 2px 6px rgba(76, 175, 80, 0.25),
0 1px 2px rgba(91, 141, 239, 0.15); 0 1px 2px rgba(76, 175, 80, 0.15);
} }
} }
.login-text1 { .login-text1 {
position: absolute; position: absolute;
left: 30px; left: 30px;
font-size: 13px; font-size: 13px;
color: #7a8ba3; color: #4e7d4f;
font-family: PingFangSC-Regular; font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif;
text-decoration: none; text-decoration: none;
transition: all 0.3s ease; transition: all 0.3s ease;
&:hover { &:hover {
color: #264672; color: #1b5e20;
text-decoration: underline; text-decoration: underline;
} }
} }
@@ -466,29 +456,29 @@ body {
position: absolute; position: absolute;
right: 30px; right: 30px;
font-size: 13px; font-size: 13px;
color: #7a8ba3; color: #4e7d4f;
font-family: PingFangSC-Regular; font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif;
text-decoration: none; text-decoration: none;
transition: all 0.3s ease; transition: all 0.3s ease;
&:hover { &:hover {
color: #264672; color: #1b5e20;
text-decoration: underline; text-decoration: underline;
} }
} }
// Element UI 输入框图标样式 // Element UI 输入框图标样式
.el-input__prefix, .el-input__prefix,
.el-input__suffix { .el-input__suffix {
color: #7a8ba3; color: #6f946f;
transition: all 0.3s ease; transition: all 0.3s ease;
} }
.el-form-item:focus-within .el-input__prefix, .el-form-item:focus-within .el-input__prefix,
.el-form-item:focus-within .el-input__suffix { .el-form-item:focus-within .el-input__suffix {
color: #264672; color: #1b5e20;
} }
.el-input__suffix { .el-input__suffix {
cursor: pointer; cursor: pointer;
&:hover { &:hover {
color: #264672; color: #1b5e20;
} }
} }
.extra-text { .extra-text {
@@ -501,19 +491,14 @@ body {
@media all and (max-width: 480px) { @media all and (max-width: 480px) {
.main-title { .main-title {
font-size: 28px; font-size: 28px;
top: 40px;
letter-spacing: 2px; letter-spacing: 2px;
padding: 0 20px; padding: 0 20px 12px 20px;
line-height: 1.4; line-height: 1.4;
&::before {
width: 80px;
height: 2px;
}
} }
.login-form { .login-form {
width: 90% !important; width: 90% !important;
max-width: 340px !important; max-width: 340px !important;
margin: 180px auto; margin: 0 auto 40px;
border-radius: 16px; border-radius: 16px;
} }
.login-container .login-button, .login-container .login-button,