Remove supervisor.log and update uWSGI configuration paths to reflect new directory structure; enhance filtering options in work order views and improve CSS styles for better UI responsiveness.
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 5.2 KiB |
@@ -2,31 +2,274 @@
|
||||
.receive_filter {
|
||||
margin: 20px 0;
|
||||
padding: 20px;
|
||||
background: #fff;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||
background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.07);
|
||||
border: 1px solid #e2e8f0;
|
||||
}
|
||||
|
||||
.filter_header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
padding-bottom: 12px;
|
||||
border-bottom: 2px solid #e2e8f0;
|
||||
}
|
||||
|
||||
.filter_title {
|
||||
margin: 0;
|
||||
font-size: 1.2em;
|
||||
color: #1e293b;
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.filter_title::before {
|
||||
content: "🔍";
|
||||
margin-right: 8px;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.filter_actions {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.filter_form {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||
gap: 20px;
|
||||
align-items: end;
|
||||
}
|
||||
|
||||
.filter_group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 15px;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.filter_label {
|
||||
font-size: 0.9em;
|
||||
font-weight: 500;
|
||||
color: #374151;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.filter_select {
|
||||
padding: 8px 12px;
|
||||
border: 1px solid #e2e8f0;
|
||||
border-radius: 6px;
|
||||
padding: 12px 16px;
|
||||
border: 2px solid #e2e8f0;
|
||||
border-radius: 8px;
|
||||
font-size: 14px;
|
||||
background: white;
|
||||
min-width: 150px;
|
||||
color: #374151;
|
||||
outline: none;
|
||||
transition: border-color 0.3s;
|
||||
transition: all 0.3s ease;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.filter_select:hover {
|
||||
border-color: #cbd5e1;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.filter_select:focus {
|
||||
border-color: #4f46e5;
|
||||
box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
|
||||
}
|
||||
|
||||
.receive_btn_clear {
|
||||
background: linear-gradient(135deg, #f59e0b, #d97706);
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 8px 16px;
|
||||
border-radius: 6px;
|
||||
font-size: 0.9em;
|
||||
text-decoration: none;
|
||||
transition: all 0.3s ease;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.receive_btn_clear::before {
|
||||
content: "✕";
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.receive_btn_clear:hover {
|
||||
background: linear-gradient(135deg, #d97706, #b45309);
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.receive_btn_primary {
|
||||
background: linear-gradient(135deg, #4f46e5, #3b82f6);
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 12px 24px;
|
||||
border-radius: 8px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.receive_btn_primary::before {
|
||||
content: "✓";
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.receive_btn_primary:hover {
|
||||
background: linear-gradient(135deg, #3b82f6, #2563eb);
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 6px 12px rgba(79, 70, 229, 0.3);
|
||||
}
|
||||
|
||||
.receive_btn_warning {
|
||||
background: linear-gradient(135deg, #ef4444, #dc2626);
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 8px 16px;
|
||||
border-radius: 6px;
|
||||
font-size: 0.9em;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.receive_btn_warning::before {
|
||||
content: "⚠";
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.receive_btn_warning:hover {
|
||||
background: linear-gradient(135deg, #dc2626, #b91c1c);
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 8px rgba(239, 68, 68, 0.3);
|
||||
}
|
||||
|
||||
/* 统计卡片网格布局 */
|
||||
.stats_section {
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
.stats_section_title {
|
||||
font-size: 1.1em;
|
||||
color: #374151;
|
||||
margin-bottom: 15px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.stats_grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
||||
gap: 12px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.stats_card {
|
||||
background: linear-gradient(135deg, #f8fafc, #e2e8f0);
|
||||
padding: 12px 16px;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
transition: all 0.3s ease;
|
||||
border: 2px solid transparent;
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.stats_card:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.stats_card.active {
|
||||
border-color: currentColor;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.stats_card_label {
|
||||
font-size: 0.9em;
|
||||
color: #6b7280;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.stats_card_value {
|
||||
font-size: 1.4em;
|
||||
font-weight: bold;
|
||||
color: #1f2937;
|
||||
}
|
||||
|
||||
/* 设备类型颜色 */
|
||||
.stats_card.device-type-摄像头 {
|
||||
background: linear-gradient(135deg, #dbeafe, #bfdbfe);
|
||||
border-color: #3b82f6;
|
||||
}
|
||||
|
||||
.stats_card.device-type-摄像头 .stats_card_value {
|
||||
color: #1d4ed8;
|
||||
}
|
||||
|
||||
.stats_card.device-type-一键报警 {
|
||||
background: linear-gradient(135deg, #fed7aa, #fdba74);
|
||||
border-color: #f59e0b;
|
||||
}
|
||||
|
||||
.stats_card.device-type-一键报警 .stats_card_value {
|
||||
color: #d97706;
|
||||
}
|
||||
|
||||
.stats_card.device-type-紫色 {
|
||||
background: linear-gradient(135deg, #e9d5ff, #c4b5fd);
|
||||
border-color: #8b5cf6;
|
||||
}
|
||||
|
||||
.stats_card.device-type-紫色 .stats_card_value {
|
||||
color: #7c3aed;
|
||||
}
|
||||
|
||||
.stats_card.device-type-绿色 {
|
||||
background: linear-gradient(135deg, #dcfce7, #bbf7d0);
|
||||
border-color: #22c55e;
|
||||
}
|
||||
|
||||
.stats_card.device-type-绿色 .stats_card_value {
|
||||
color: #16a34a;
|
||||
}
|
||||
|
||||
.stats_card.device-type-灰色 {
|
||||
background: linear-gradient(135deg, #f3f4f6, #e5e7eb);
|
||||
border-color: #6b7280;
|
||||
}
|
||||
|
||||
.stats_card.device-type-灰色 .stats_card_value {
|
||||
color: #4b5563;
|
||||
}
|
||||
|
||||
/* 项目类型颜色 */
|
||||
.stats_card[class*="project-type-"] {
|
||||
background: linear-gradient(135deg, #fef3c7, #fde68a);
|
||||
border-color: #f59e0b;
|
||||
}
|
||||
|
||||
.stats_card[class*="project-type-"] .stats_card_value {
|
||||
color: #d97706;
|
||||
}
|
||||
|
||||
/* 统计卡片样式 */
|
||||
@@ -59,77 +302,6 @@
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.stats_branches {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
||||
gap: 15px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.stats_branches_row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
margin: 15px 0;
|
||||
}
|
||||
|
||||
.branch_stat {
|
||||
background: #f8fafc;
|
||||
padding: 8px 15px;
|
||||
border-radius: 6px;
|
||||
border: 2px solid #e2e8f0;
|
||||
transition: all 0.2s;
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.branch_stat:hover {
|
||||
background: #f1f5f9;
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.branch_stat.active {
|
||||
background: #7eb6ff3b;
|
||||
color: white;
|
||||
border-color: #2563eb;
|
||||
}
|
||||
|
||||
.branch_name {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.branch_count {
|
||||
font-weight: bold;
|
||||
color: currentColor;
|
||||
}
|
||||
|
||||
.branch_stat:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.branch_name {
|
||||
color: #64748b;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.branch_count {
|
||||
display: block;
|
||||
color: #1e293b;
|
||||
font-size: 1.2em;
|
||||
font-weight: bold;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.receive_actions {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.receive_btn {
|
||||
padding: 8px 16px;
|
||||
border: none;
|
||||
@@ -363,11 +535,6 @@
|
||||
|
||||
/* 移动端适配 */
|
||||
@media (max-width: 768px) {
|
||||
.receive_actions {
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.receive_btn {
|
||||
width: 100%;
|
||||
padding: 12px 16px;
|
||||
@@ -377,6 +544,7 @@
|
||||
margin: 10vh auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.receive_card {
|
||||
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
||||
padding: 20px;
|
||||
@@ -397,4 +565,63 @@
|
||||
.receive_card_item {
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
/* 筛选区域在移动端的适配 */
|
||||
.filter_header {
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.filter_title {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.filter_form {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.filter_group {
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.filter_select {
|
||||
padding: 10px 14px;
|
||||
font-size: 16px; /* 防止移动端自动缩放 */
|
||||
}
|
||||
|
||||
.receive_btn_primary {
|
||||
padding: 14px 20px;
|
||||
font-size: 16px;
|
||||
width: 100%;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.receive_btn_clear {
|
||||
padding: 10px 16px;
|
||||
font-size: 0.9em;
|
||||
align-self: stretch;
|
||||
}
|
||||
.stats_grid {
|
||||
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.stats_card {
|
||||
padding: 10px 12px;
|
||||
}
|
||||
|
||||
.stats_card_label {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.stats_card_value {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.stats_section_title {
|
||||
font-size: 1em;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |