common-styles.scss 4.44 KB
// KPI穿透组件公共样式

.billing-wrapper {
  width: 100%;
  overflow: hidden;
  // background: red;
  // height: 50vh;
  // overflow-y: scroll;
  border-radius: 32px;
  .billing-layout {
    display: flex;
    align-items: stretch;
    justify-content: space-between;
    gap: 16px;
    width: 100%;
  }

  .billing-left {
    flex: 0 0 75%;
    max-width: 75%;
    display: flex;
    flex-direction: column;
    gap: 12px;
    min-width: 0;
  }

  .billing-right {
    flex: 0 0 25%;
    max-width: 23.5%;
    display: flex;
    flex-direction: column;
    gap: 12px;
    min-width: 0;
  }

  .chart-card {
    background: #fff;
    border: 1px solid #ebeef5;
    border-radius: 10px;
    padding: 10px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
    flex-shrink: 0;

    .chart-title {
      font-size: 13px;
      color: #606266;
      margin-bottom: 6px;
      display: flex;
      align-items: center;
      gap: 6px;

      i {
        color: #409EFF;
      }
    }

    .chart-mini {
      height: 220px;
      width: 100%;
    }
  }

  .table-card {
    background: #fff;
    border: 1px solid #ebeef5;
    border-radius: 10px;
    padding: 10px 12px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
    flex: 1;
    // min-height: 700px;
    display: flex;
    flex-direction: column;

    .table-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 8px;
      flex-shrink: 0;
    }

    .table-title {
      font-size: 14px;
      font-weight: 600;
      color: #303133;
      display: flex;
      align-items: center;
      gap: 6px;

      i {
        color: #409EFF;
      }
    }

    .el-table {
      flex: 1;
      min-height: 0;
    }

    .pagination-bar {
      flex-shrink: 0;
      margin-top: 8px;
    }
  }

  .stat-card {
    background: #fff;
    border: 1px solid #ebeef5;
    border-radius: 10px;
    padding: 10px 12px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
    flex-shrink: 0;
    position: relative;
    overflow: hidden;

    &.compact {
      display: flex;
      align-items: center;
      gap: 10px;
      min-height: 70px;
    }

    .stat-icon-circle {
      width: 32px;
      height: 32px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #fff;
      flex-shrink: 0;

      i {
        font-size: 16px;
      }
    }

    &.neon-green {
      border-left: 4px solid #67C23A;
      border-color: #e1f3d8;
      border-left-color: #67C23A;

      .stat-icon-circle {
        background: #67C23A;
      }
    }

    &.neon-orange {
      border-left: 4px solid #E6A23C;
      border-color: #fde3c9;
      border-left-color: #E6A23C;

      .stat-icon-circle {
        background: #E6A23C;
      }
    }

    &.neon-red {
      border-left: 4px solid #F56C6C;
      border-color: #fde2e2;
      border-left-color: #F56C6C;

      .stat-icon-circle {
        background: #F56C6C;
      }
    }

    &.neon-blue {
      border-left: 4px solid #409EFF;
      border-left-color: #409EFF;

      .stat-icon-circle {
        background: #409EFF;
      }
    }

    &.neon-purple {
      border-left: 4px solid #9C27B0;
      border-left-color: #9C27B0;

      .stat-icon-circle {
        background: #9C27B0;
      }
    }

    &.neon-cyan {
      border-left: 4px solid #17A2B8;
      border-color: #d1ecf1;
      border-left-color: #17A2B8;

      .stat-icon-circle {
        background: #17A2B8;
      }
    }

    .stat-content {
      flex: 1;
      min-width: 0;
    }

    .stat-title {
      font-size: 13px;
      color: #606266;
      margin-bottom: 4px;
      line-height: 1.3;
    }

    .stat-body {
      color: #303133;

      .value-lg {
        font-size: 18px;
        font-weight: 700;
        margin-top: 4px;
      }

      .highlight {
        font-size: 14px;
        font-weight: 600;
        line-height: 1.3;
        display: flex;
        align-items: center;
        gap: 8px;
        flex-wrap: wrap;

        .value-inline {
          font-size: 16px;
          font-weight: 700;
          color: #409EFF;
          white-space: nowrap;
        }
      }
    }
  }
}

.pagination-bar {
  display: flex;
  justify-content: flex-end;
  padding: 10px 0 4px 0;
}

.list-filters {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  margin: 8px 0;

  &.inline {
    margin: 0;
  }
}

.text-ellipsis-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}