375 lines
6.1 KiB
CSS
375 lines
6.1 KiB
CSS
/* 详情弹窗通用样式 */
|
|
/* 详情卡片样式 */
|
|
.detail-card {
|
|
margin-bottom: 20px;
|
|
padding: 20px;
|
|
background-color: #fafafa;
|
|
border-radius: 8px;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
|
|
}
|
|
|
|
.card-title {
|
|
margin: 0 0 16px 0;
|
|
padding-bottom: 12px;
|
|
border-bottom: 2px solid #409eff;
|
|
font-size: 16px;
|
|
font-weight: 600;
|
|
color: #303133;
|
|
}
|
|
|
|
.card-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
}
|
|
|
|
/* 信息行和信息项样式 */
|
|
.info-row {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 20px;
|
|
}
|
|
|
|
.info-item {
|
|
flex: 1;
|
|
min-width: 280px;
|
|
}
|
|
|
|
.info-item.full-width {
|
|
min-width: 100%;
|
|
}
|
|
|
|
.info-label {
|
|
display: inline-block;
|
|
width: 100px;
|
|
color: #606266;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.info-value {
|
|
color: #303133;
|
|
word-break: break-word;
|
|
}
|
|
|
|
/* 步骤相关样式 - 详情弹窗专用 - 使用外部CSS样式 */
|
|
.task-detail-container .steps-container {
|
|
width: 100%;
|
|
padding: 20px;
|
|
border: 1px solid #ebeef5;
|
|
border-radius: 8px;
|
|
background-color: #fff;
|
|
}
|
|
|
|
.task-detail-container .step-item {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-bottom: 15px;
|
|
padding: 15px;
|
|
background-color: #fafafa;
|
|
border-radius: 6px;
|
|
position: relative;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.task-detail-container .step-item:hover {
|
|
background-color: #f5f7fa;
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
}
|
|
|
|
.task-detail-container .step-number {
|
|
width: 32px;
|
|
height: 32px;
|
|
background-color: #409eff;
|
|
color: white;
|
|
border-radius: 50%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-right: 16px;
|
|
font-size: 14px;
|
|
font-weight: bold;
|
|
flex-shrink: 0;
|
|
z-index: 1;
|
|
}
|
|
|
|
.task-detail-container .step-item:not(:last-child)::after {
|
|
content: '';
|
|
position: absolute;
|
|
top: 50px;
|
|
left: 16px;
|
|
width: 2px;
|
|
height: calc(100% + 5px);
|
|
background-color: #e4e7ed;
|
|
z-index: 0;
|
|
}
|
|
|
|
.task-detail-container .step-info {
|
|
flex: 1;
|
|
}
|
|
|
|
.task-detail-container .step-name {
|
|
font-weight: 500;
|
|
color: #1d2129;
|
|
margin-bottom: 4px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.task-detail-container .step-purpose {
|
|
color: #606266;
|
|
margin-bottom: 4px;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.task-detail-container .step-time,
|
|
.task-detail-container .step-finish-time,
|
|
.task-detail-container .step-remark {
|
|
color: #909399;
|
|
font-size: 12px;
|
|
margin-bottom: 2px;
|
|
}
|
|
|
|
.task-detail-container .step-status {
|
|
padding: 4px 12px;
|
|
border-radius: 4px;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
flex-shrink: 0;
|
|
margin-top: 4px;
|
|
}
|
|
|
|
.step-info {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
}
|
|
|
|
.step-name {
|
|
font-weight: 500;
|
|
color: #1d2129;
|
|
margin-bottom: 4px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.step-purpose {
|
|
color: #606266;
|
|
margin-bottom: 4px;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.step-time,
|
|
.step-finish-time,
|
|
.step-remark {
|
|
color: #909399;
|
|
font-size: 12px;
|
|
margin-bottom: 2px;
|
|
}
|
|
|
|
/* 步骤状态样式 - 详情弹窗专用 */
|
|
.task-detail-container .step-status {
|
|
padding: 4px 12px;
|
|
border-radius: 4px;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
flex-shrink: 0;
|
|
margin-top: 4px;
|
|
}
|
|
|
|
/* 步骤状态样式 - 待执行 */
|
|
.task-detail-container .step-status.status-pending {
|
|
background-color: #e6f7ff;
|
|
color: #1677ff;
|
|
border: 1px solid #91d5ff;
|
|
}
|
|
|
|
/* 步骤状态样式 - 执行中 */
|
|
.task-detail-container .step-status.status-executing {
|
|
background-color: #fffbe6;
|
|
color: #fa8c16;
|
|
border: 1px solid #ffe58f;
|
|
}
|
|
|
|
/* 步骤状态样式 - 已完成 */
|
|
.task-detail-container .step-status.status-completed {
|
|
background-color: #f6ffed;
|
|
color: #52c41a;
|
|
border: 1px solid #b7eb8f;
|
|
}
|
|
|
|
/* 步骤状态样式 - 已延期 */
|
|
.task-detail-container .step-status.status-delayed {
|
|
background-color: #fff2f0;
|
|
color: #ff4d4f;
|
|
border: 1px solid #ffccc7;
|
|
}
|
|
|
|
/* 通用状态颜色样式 */
|
|
.status-pending {
|
|
color: #e6a23c;
|
|
}
|
|
|
|
.status-executing {
|
|
color: #409eff;
|
|
}
|
|
|
|
.status-completed {
|
|
color: #67c23a;
|
|
}
|
|
|
|
.status-delayed {
|
|
color: #f56c6c;
|
|
}
|
|
|
|
.status-unknown {
|
|
color: #909399;
|
|
}
|
|
|
|
/* 加载状态样式 */
|
|
.loading-details {
|
|
padding: 20px 0;
|
|
}
|
|
|
|
/* 骨架屏加载 */
|
|
.skeleton-loading {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 20px;
|
|
}
|
|
|
|
.skeleton-card {
|
|
background-color: #f2f2f2;
|
|
border-radius: 8px;
|
|
padding: 20px;
|
|
animation: skeleton-loading 1.5s infinite;
|
|
}
|
|
|
|
.skeleton-header {
|
|
height: 24px;
|
|
width: 140px;
|
|
background-color: #e0e0e0;
|
|
border-radius: 4px;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.skeleton-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
}
|
|
|
|
.skeleton-row {
|
|
height: 20px;
|
|
background-color: #e0e0e0;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.skeleton-row:nth-child(1) {
|
|
width: 70%;
|
|
}
|
|
|
|
.skeleton-row:nth-child(2) {
|
|
width: 90%;
|
|
}
|
|
|
|
.skeleton-row:nth-child(3) {
|
|
width: 60%;
|
|
}
|
|
|
|
@keyframes skeleton-loading {
|
|
0% {
|
|
opacity: 0.6;
|
|
}
|
|
50% {
|
|
opacity: 0.3;
|
|
}
|
|
100% {
|
|
opacity: 0.6;
|
|
}
|
|
}
|
|
|
|
/* 响应式设计 */
|
|
@media (max-width: 768px) {
|
|
.info-item {
|
|
min-width: 100%;
|
|
}
|
|
|
|
.info-row {
|
|
gap: 12px;
|
|
}
|
|
|
|
/* 步骤条响应式设计 */
|
|
.task-detail-container .steps-container {
|
|
padding: 10px;
|
|
}
|
|
|
|
.task-detail-container .step-item {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
padding: 10px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.task-detail-container .step-item > * {
|
|
width: 100%;
|
|
margin-bottom: 10px;
|
|
margin-right: 0 !important;
|
|
}
|
|
|
|
.task-detail-container .step-number {
|
|
margin-bottom: 10px;
|
|
width: 24px;
|
|
height: 24px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.task-detail-container .step-item:not(:last-child)::after {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
/* 弹窗按钮样式 */
|
|
.dialog-footer .el-button {
|
|
padding: 10px 24px;
|
|
border-radius: 6px;
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.dialog-footer .el-button:hover {
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
|
|
}
|
|
|
|
/* 其他相关样式 */
|
|
.fail-reason {
|
|
color: #f56c6c;
|
|
}
|
|
|
|
.no-info {
|
|
color: #909399;
|
|
font-style: italic;
|
|
padding: 10px 0;
|
|
}
|
|
|
|
.loading-state {
|
|
text-align: center;
|
|
padding: 80px 20px;
|
|
color: #6c757d;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.loading-state i {
|
|
display: block;
|
|
font-size: 48px;
|
|
margin-bottom: 16px;
|
|
color: #1677ff;
|
|
}
|
|
|
|
.step-content {
|
|
padding: 30px 20px;
|
|
background-color: #fafafa;
|
|
border-radius: 8px;
|
|
margin-top: 20px;
|
|
}
|