// 质量管理页面样式 // 导入iOS主题变量 - 使用新的Sass @use语法以避免弃用警告 @use '../ios-theme' as *; // 全局样式重置 .quality-management-main { width: 100%; height: 100vh; background-color: $ios-background; color: $ios-text-primary; font-family: $ios-font-family; padding: $ios-spacing-xl; overflow-y: auto; // 应用iOS风格滚动条 scrollbar-width: $ios-scrollbar-width; &::-webkit-scrollbar { width: $ios-scrollbar-width; } &::-webkit-scrollbar-track { background: $ios-scrollbar-track; } &::-webkit-scrollbar-thumb { background: $ios-scrollbar-thumb; border-radius: $ios-radius-full; } &::-webkit-scrollbar-thumb:hover { background: $ios-scrollbar-thumb-hover; } } // 页面标题 .quality-management-header { margin-bottom: $ios-spacing-xl; h1 { font-size: $ios-font-size-xl + 4px; font-weight: $ios-font-weight-semibold; color: $ios-text-primary; margin: 0; padding-bottom: $ios-spacing-lg; border-bottom: 1px solid $ios-border; display: flex; align-items: center; .header-icon { width: 32px; height: 32px; background-color: $ios-primary; border-radius: $ios-radius-lg; display: flex; align-items: center; justify-content: center; margin-right: $ios-spacing-md; color: white; } } } // 内容区域 .quality-management-content { display: flex; flex-direction: column; gap: $ios-spacing-xxl; } // 通用Section样式 .section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: $ios-spacing-lg; h2 { font-size: $ios-font-size-xl; font-weight: $ios-font-weight-medium; color: $ios-text-primary; margin: 0; display: flex; align-items: center; &::before { content: ''; display: inline-block; width: 4px; height: 24px; background-color: $ios-primary; border-radius: $ios-radius-full; margin-right: $ios-spacing-md; } } } // 筛选区域 .filter-section { background-color: $ios-background-secondary; border-radius: $ios-radius-lg; padding: $ios-spacing-lg; margin-bottom: $ios-spacing-lg; border: 1px solid $ios-border; .search-filter { display: flex; align-items: center; gap: $ios-spacing-md; margin-bottom: $ios-spacing-md; .search-input { flex: 1; position: relative; input { width: 100%; padding: $ios-spacing-md $ios-spacing-lg $ios-spacing-md $ios-spacing-xxl; border: 1px solid $ios-border; border-radius: $ios-radius-md; background-color: $ios-background; color: $ios-text-primary; font-size: $ios-font-size-base; font-family: $ios-font-family; transition: border-color 0.2s ease; &:focus { outline: none; border-color: $ios-primary; box-shadow: 0 0 0 3px rgba(0, 71, 171, 0.1); } &::placeholder { color: $ios-text-tertiary; } } .search-icon { position: absolute; left: $ios-spacing-md; top: 50%; transform: translateY(-50%); color: $ios-text-tertiary; } } .filter-select { select { padding: $ios-spacing-md $ios-spacing-lg; border: 1px solid $ios-border; border-radius: $ios-radius-md; background-color: $ios-background; color: $ios-text-primary; font-size: $ios-font-size-base; font-family: $ios-font-family; cursor: pointer; transition: border-color 0.2s ease; &:focus { outline: none; border-color: $ios-primary; box-shadow: 0 0 0 3px rgba(0, 71, 171, 0.1); } option { background-color: $ios-background; color: $ios-text-primary; } } } } } // 任务列表样式 .task-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: $ios-spacing-lg; .task-card { background-color: $ios-background; border-radius: $ios-radius-lg; padding: $ios-spacing-lg; border: 1px solid $ios-border; box-shadow: $ios-shadow-sm; transition: all 0.2s ease; cursor: pointer; &:hover { box-shadow: $ios-shadow-md; transform: translateY(-2px); } .card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: $ios-spacing-md; .task-title { font-size: $ios-font-size-base; font-weight: $ios-font-weight-medium; color: $ios-text-primary; margin: 0; flex: 1; margin-right: $ios-spacing-md; line-height: 1.4; } .task-status { font-size: $ios-font-size-xs; padding: 4px $ios-spacing-sm; border-radius: $ios-radius-full; font-weight: $ios-font-weight-medium; white-space: nowrap; } .status-pending { background-color: rgba(255, 149, 0, 0.1); color: $ios-warning; } .status-completed { background-color: rgba(52, 199, 89, 0.1); color: $ios-success; } .status-rejected { background-color: rgba(255, 59, 48, 0.1); color: $ios-danger; } } .card-body { font-size: $ios-font-size-sm; color: $ios-text-secondary; margin-bottom: $ios-spacing-md; .task-info { display: flex; justify-content: space-between; margin-bottom: $ios-spacing-xs; .info-label { color: $ios-text-tertiary; } .info-value { font-weight: $ios-font-weight-medium; color: $ios-text-primary; } } } .card-footer { display: flex; justify-content: space-between; align-items: center; padding-top: $ios-spacing-md; border-top: 1px solid $ios-border; .task-date { font-size: $ios-font-size-xs; color: $ios-text-tertiary; } .task-priority { font-size: $ios-font-size-xs; padding: 2px $ios-spacing-xs; border-radius: $ios-radius-sm; font-weight: $ios-font-weight-medium; &.high { background-color: rgba(255, 59, 48, 0.1); color: $ios-danger; } &.medium { background-color: rgba(255, 149, 0, 0.1); color: $ios-warning; } &.low { background-color: rgba(52, 199, 89, 0.1); color: $ios-success; } } } } } // 操作按钮样式 - iOS风格设计 .action-buttons { display: flex; gap: $ios-spacing-md; margin-bottom: $ios-spacing-lg; .btn { padding: $ios-spacing-sm $ios-spacing-md; border-radius: $ios-radius-md; font-size: $ios-font-size-sm; font-weight: $ios-font-weight-medium; cursor: pointer; font-family: $ios-font-family; transition: $ios-feedback-tap; // 添加iOS风格的按钮背景模糊效果 backdrop-filter: blur(8px); // 添加iOS风格的点击反馈效果 -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1); &.btn-primary { // 克莱因蓝主色调,添加微妙的渐变效果 background: linear-gradient(145deg, $ios-primary, #003D99); color: white; border: none; // 添加iOS风格的光泽效果 position: relative; overflow: hidden; &::before { content: ''; position: absolute; top: 0; left: -100%; width: 50%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: all 0.3s ease; } &:hover { // 悬停时轻微变亮并上移 background: linear-gradient(145deg, #0052CC, $ios-primary); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 71, 171, 0.3); } &:active { // 点击时轻微压缩 transform: translateY(0); box-shadow: 0 2px 6px rgba(0, 71, 171, 0.2); } } &.btn-secondary { background-color: $ios-background-secondary; color: $ios-text-primary; border: 1px solid $ios-border; &:hover { background-color: $ios-background; transform: translateY(-1px); } } } } // 分页控件样式 .pagination { display: flex; justify-content: center; align-items: center; gap: $ios-spacing-sm; margin-top: $ios-spacing-xl; .page-item { .page-link { padding: $ios-spacing-xs $ios-spacing-md; border: 1px solid $ios-border; border-radius: $ios-radius-md; background-color: $ios-background; color: $ios-text-primary; cursor: pointer; transition: $ios-feedback-tap; &:hover:not(:disabled) { background-color: $ios-background-secondary; transform: translateY(-1px); } &.active { background-color: $ios-primary; color: white; border-color: $ios-primary; } &:disabled { opacity: 0.5; cursor: not-allowed; } } } } // 质量验收标准表格样式 .quality-table { width: 100%; border-collapse: collapse; background-color: $ios-background; border-radius: $ios-radius-lg; overflow: hidden; box-shadow: $ios-shadow-sm; border: 1px solid $ios-border; thead { background-color: $ios-background-secondary; th { padding: $ios-spacing-md; text-align: left; font-weight: $ios-font-weight-medium; color: $ios-text-secondary; font-size: $ios-font-size-sm; border-bottom: 1px solid $ios-border; } } tbody { td { padding: $ios-spacing-md; color: $ios-text-primary; font-size: $ios-font-size-base; border-bottom: 1px solid $ios-border; &:last-child { text-align: center; } } tr:last-child td { border-bottom: none; } tr:hover { background-color: $ios-background-secondary; } } } // 培训资源区域样式 .training-section { margin-top: $ios-spacing-xxl; .training-content { display: flex; gap: $ios-spacing-lg; flex-wrap: wrap; } .video-list { flex: 1; min-width: 300px; .video-item { display: flex; gap: $ios-spacing-md; padding: $ios-spacing-md; border-radius: $ios-radius-lg; background-color: $ios-background; border: 1px solid $ios-border; margin-bottom: $ios-spacing-md; transition: all 0.2s ease; cursor: pointer; &:hover { box-shadow: $ios-shadow-sm; transform: translateY(-2px); } .video-thumbnail { width: 120px; height: 70px; border-radius: $ios-radius-md; overflow: hidden; flex-shrink: 0; position: relative; img { width: 100%; height: 100%; object-fit: cover; } .play-icon { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 30px; height: 30px; background-color: rgba(0, 0, 0, 0.7); border-radius: $ios-radius-full; display: flex; align-items: center; justify-content: center; color: white; } } .video-info { flex: 1; .video-title { font-size: $ios-font-size-base; font-weight: $ios-font-weight-medium; color: $ios-text-primary; margin: 0 0 $ios-spacing-xs 0; } .video-meta { font-size: $ios-font-size-xs; color: $ios-text-tertiary; } } } } } // 质量整改跟踪 - iOS风格美化 .rectification-section { margin-top: $ios-spacing-xxl; .rectification-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: $ios-spacing-lg; .rectification-item { // iOS风格卡片设计 padding: $ios-spacing-lg; border-radius: $ios-radius-xl; // 更大的圆角 background-color: $ios-background; border: 1px solid $ios-border; box-shadow: $ios-shadow-card; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; // iOS风格卡片悬停效果 &:hover { box-shadow: $ios-shadow-lg; transform: translateY(-2px); } // 添加iOS风格的顶部装饰线 &::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 4px; background: linear-gradient(90deg, $ios-primary, $ios-info); } .rectification-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: $ios-spacing-md; h4 { font-size: $ios-font-size-base; font-weight: $ios-font-weight-medium; color: $ios-text-primary; margin: 0; flex: 1; margin-right: $ios-spacing-md; } .rectification-status { font-size: $ios-font-size-xs; padding: 4px $ios-spacing-sm; border-radius: $ios-radius-full; font-weight: $ios-font-weight-medium; white-space: nowrap; } .status-pending { background-color: rgba(255, 149, 0, 0.1); color: $ios-warning; } .status-processing { background-color: rgba(0, 122, 255, 0.1); color: $ios-primary; } .status-review { background-color: rgba(175, 82, 222, 0.1); color: $ios-info; } .status-completed { background-color: rgba(52, 199, 89, 0.1); color: $ios-success; } .status-rejected { background-color: rgba(255, 59, 48, 0.1); color: $ios-danger; } } .rectification-details { font-size: $ios-font-size-sm; color: $ios-text-secondary; margin-bottom: $ios-spacing-md; .detail-item { display: flex; margin-bottom: $ios-spacing-xs; .detail-label { width: 80px; color: $ios-text-tertiary; flex-shrink: 0; } .detail-value { flex: 1; &.priority-high { color: $ios-danger; font-weight: $ios-font-weight-medium; } &.priority-medium { color: $ios-warning; font-weight: $ios-font-weight-medium; } &.priority-low { color: $ios-success; font-weight: $ios-font-weight-medium; } &.score { color: $ios-primary; font-weight: $ios-font-weight-semibold; } } } } } } } .rectification-actions { display: flex; justify-content: flex-end; gap: $ios-spacing-sm; padding-top: $ios-spacing-md; border-top: 1px solid $ios-border; // iOS风格按钮组间距调整 .btn { padding: $ios-spacing-xs $ios-spacing-lg; font-size: $ios-font-size-sm; } } .btn { padding: $ios-spacing-xs $ios-spacing-md; border-radius: $ios-radius-md; font-size: $ios-font-size-sm; border: 1px solid $ios-border; background-color: transparent; color: $ios-text-primary; cursor: pointer; font-family: $ios-font-family; transition: $ios-feedback-tap; &.btn-primary { background-color: $ios-primary; color: white; border-color: $ios-primary; } &:hover { opacity: 0.9; transform: translateY(-1px); } } // 任务详情样式 .task-details-modal { background-color: $ios-background; border-radius: $ios-radius-xl; padding: $ios-spacing-xl; max-width: 600px; width: 90%; max-height: 80vh; overflow-y: auto; position: relative; .modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: $ios-spacing-lg; padding-bottom: $ios-spacing-md; border-bottom: 1px solid $ios-border; h3 { font-size: $ios-font-size-xl; font-weight: $ios-font-weight-medium; color: $ios-text-primary; margin: 0; } .close-button { background: none; border: none; font-size: $ios-font-size-xl; color: $ios-text-tertiary; cursor: pointer; padding: $ios-spacing-xs; border-radius: $ios-radius-full; transition: $ios-feedback-tap; &:hover { background-color: $ios-background-secondary; } } } .task-info-section { margin-bottom: $ios-spacing-lg; .info-item { display: flex; margin-bottom: $ios-spacing-sm; .info-label { width: 120px; color: $ios-text-tertiary; font-weight: $ios-font-weight-medium; flex-shrink: 0; } .info-value { flex: 1; color: $ios-text-primary; } } } .task-description { margin-bottom: $ios-spacing-lg; h4 { font-size: $ios-font-size-base; font-weight: $ios-font-weight-medium; color: $ios-text-primary; margin: 0 0 $ios-spacing-md 0; } p { color: $ios-text-secondary; line-height: 1.5; margin: 0; } } } // 任务页脚 .task-footer { display: flex; justify-content: flex-end; gap: $ios-spacing-md; margin-top: $ios-spacing-lg; padding-top: $ios-spacing-lg; border-top: 1px solid $ios-border; .btn { padding: $ios-spacing-sm $ios-spacing-lg; border-radius: $ios-radius-md; font-size: $ios-font-size-sm; font-weight: $ios-font-weight-medium; cursor: pointer; font-family: $ios-font-family; transition: $ios-feedback-tap; &.btn-primary { background-color: $ios-primary; color: white; border: none; &:hover { background-color: $ios-primary-light; transform: translateY(-1px); } } &.btn-secondary { background-color: $ios-background-secondary; color: $ios-text-primary; border: 1px solid $ios-border; &:hover { background-color: $ios-background; transform: translateY(-1px); } } &.btn-danger { background-color: $ios-danger; color: white; border: none; &:hover { background-color: #FF453A; // 稍微浅一点的红色 transform: translateY(-1px); } } } } // 任务操作按钮 .task-operation-buttons { display: flex; gap: $ios-spacing-sm; .btn { padding: $ios-spacing-xs $ios-spacing-md; border-radius: $ios-radius-md; font-size: $ios-font-size-sm; font-weight: $ios-font-weight-medium; cursor: pointer; font-family: $ios-font-family; transition: $ios-feedback-tap; &.btn-small { padding: $ios-spacing-xs $ios-spacing-sm; font-size: $ios-font-size-xs; } } } // SOP标签页 - 重写为白色底色蓝色切换效果 .sop-tabs { margin-bottom: $ios-spacing-lg; .tab-buttons { display: flex; background-color: #ffffff; // 设置底色为白色 border-radius: 12px; // 圆角效果 padding: 4px; // 内边距 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); // 轻微阴影 border: 1px solid #f0f0f0; // 细微边框 margin-bottom: $ios-spacing-lg; button { flex: 1; // 按钮平均分配宽度 padding: 12px 16px; // 内边距 background-color: transparent; border: none; color: #666666; // 默认文字颜色 font-size: 15px; // 字体大小 font-weight: 500; // 字重 cursor: pointer; font-family: $ios-font-family; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; text-align: center; border-radius: 8px; // 按钮圆角 // 文字容器 - 确保文字在最上层 span { position: relative; z-index: 10; // 文字层级最高 display: inline-block; } // 左侧矩形色块修饰 &::before { content: ''; position: absolute; top: 0; left: 0; width: 4px; height: 100%; background-color: transparent; transition: background-color 0.3s ease; z-index: 5; } &.active { color: #ffffff; // 活动状态文字为白色 font-weight: 600; // 活动状态字重 // 左侧蓝色色块 &::before { background-color: #007aff; // 左侧蓝色色块 } // 蓝色背景填充 - 直接设置背景色,不使用伪元素和动画 background-color: #007aff; } &:hover:not(.active) { background-color: rgba(0, 122, 255, 0.05); // 轻微蓝色背景 color: #007aff; // 文字变为蓝色 } // 点击效果 &:active { transform: scale(0.98); } } } } // 标签切换动画 @keyframes tabSlideIn { 0% { transform: translateX(100%); opacity: 0; } 100% { transform: translateX(0); opacity: 1; } } // SOP内容样式 - 修改为三栏布局 .phase-content { display: flex; // 使用flex布局 gap: $ios-spacing-lg; // 卡片间距 background-color: transparent; // 移除背景色 padding: 0; // 移除内边距 box-shadow: none; // 移除阴影 border: none; // 移除边框 transform: translateY(0); transition: all 0.3s ease; .sop-section { flex: 1; // 每个卡片占三分之一宽度 background-color: #ffffff; // 白色背景 border-radius: 12px; // 圆角效果 padding: $ios-spacing-lg; // 内边距 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); // 轻微阴影 border: 1px solid #f0f0f0; // 细微边框 margin-bottom: 0; // 移除底部间距 &:hover { box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08); // 悬停时加深阴影 transform: translateY(-2px); // 轻微上浮效果 transition: all 0.3s ease; } h3 { font-size: $ios-font-size-lg; font-weight: $ios-font-weight-semibold; color: $ios-text-primary; margin: 0 0 $ios-spacing-lg 0; padding-bottom: $ios-spacing-md; border-bottom: 1px solid $ios-border; display: flex; align-items: center; span { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; background-color: $ios-primary; color: white; border-radius: $ios-radius-full; font-size: $ios-font-size-sm; margin-right: $ios-spacing-md; font-weight: $ios-font-weight-semibold; } } .requirement-list, .rule-list { list-style: none; padding: $ios-spacing-md; margin: 0 0 $ios-spacing-lg 0; background-color: rgba(0, 71, 171, 0.03); border-radius: $ios-radius-lg; border-left: 3px solid $ios-primary; li { position: relative; padding-left: $ios-spacing-lg; margin-bottom: $ios-spacing-md; color: $ios-text-primary; line-height: 1.6; &:before { content: '✓'; position: absolute; left: 0; color: $ios-primary; font-size: $ios-font-size-base; font-weight: $ios-font-weight-semibold; line-height: 1; } &:last-child { margin-bottom: 0; } } } .quality-table { width: 100%; border-collapse: collapse; background-color: $ios-background; border-radius: $ios-radius-xl; overflow: hidden; box-shadow: $ios-shadow-sm; border: 1px solid $ios-border; thead { // iOS风格表格头部 background-color: $ios-background-secondary; th { padding: $ios-spacing-lg $ios-spacing-lg; text-align: left; font-weight: $ios-font-weight-semibold; color: $ios-text-secondary; font-size: $ios-font-size-sm; border-bottom: 1px solid $ios-border; letter-spacing: 0.5px; text-transform: uppercase; } } tbody { tr { transition: background-color 0.2s ease; &:hover { background-color: rgba(0, 71, 171, 0.03); } td { padding: $ios-spacing-lg $ios-spacing-lg; border-bottom: 1px solid $ios-border; color: $ios-text-primary; // iOS风格表格数据对齐和间距 &:first-child { font-weight: $ios-font-weight-medium; } &:last-child { font-weight: $ios-font-weight-semibold; color: $ios-primary; } } &:last-child td { border-bottom: none; } } } tbody { td { padding: $ios-spacing-lg $ios-spacing-md; color: $ios-text-primary; font-size: $ios-font-size-base; border-bottom: 1px solid $ios-border; transition: all 0.2s ease; &:last-child { text-align: center; } } tr:last-child td { border-bottom: none; } tr { transition: all 0.3s ease; &:hover { background-color: $ios-background-secondary; transform: translateX(4px); } } } } .table-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: $ios-spacing-md; h4 { font-size: $ios-font-size-base; font-weight: $ios-font-weight-medium; color: $ios-text-primary; margin: 0; } } } } // 审核任务列表 .audit-task-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: $ios-spacing-xl; .audit-task-item { padding: $ios-spacing-lg; border-radius: $ios-radius-xl; background-color: $ios-background; border: 1px solid $ios-border; box-shadow: $ios-shadow-md; transition: all 0.3s ease; overflow: hidden; position: relative; &:hover { box-shadow: $ios-shadow-lg; transform: translateY(-4px); } &.priority-high { border-left: 4px solid $ios-danger; } &.priority-medium { border-left: 4px solid $ios-warning; } &.priority-low { border-left: 4px solid $ios-success; } .task-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: $ios-spacing-md; h4 { font-size: $ios-font-size-base; font-weight: $ios-font-weight-semibold; color: $ios-text-primary; margin: 0 0 $ios-spacing-xs 0; flex: 1; margin-right: $ios-spacing-md; line-height: 1.4; } .task-meta { display: flex; flex-direction: column; align-items: flex-end; gap: $ios-spacing-xs; } .task-status { font-size: $ios-font-size-xs; padding: 4px $ios-spacing-sm; border-radius: $ios-radius-full; font-weight: $ios-font-weight-medium; white-space: nowrap; text-transform: uppercase; letter-spacing: 0.5px; } .status-pending { background-color: rgba(255, 149, 0, 0.15); color: $ios-warning; } .status-completed { background-color: rgba(52, 199, 89, 0.15); color: $ios-success; } .status-rejected { background-color: rgba(255, 59, 48, 0.15); color: $ios-danger; } .priority-badge { font-size: $ios-font-size-xs; padding: 2px $ios-spacing-xs; border-radius: $ios-radius-sm; font-weight: $ios-font-weight-medium; white-space: nowrap; &.high { background-color: rgba(255, 59, 48, 0.1); color: $ios-danger; } &.medium { background-color: rgba(255, 149, 0, 0.1); color: $ios-warning; } &.low { background-color: rgba(52, 199, 89, 0.1); color: $ios-success; } } } .task-details { font-size: $ios-font-size-sm; color: $ios-text-secondary; margin-bottom: $ios-spacing-lg; padding: $ios-spacing-md; background-color: $ios-background-secondary; border-radius: $ios-radius-md; .detail-item { display: flex; justify-content: space-between; align-items: center; margin-bottom: $ios-spacing-sm; padding-bottom: $ios-spacing-sm; border-bottom: 1px solid $ios-border; &:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: none; } .detail-label { font-weight: $ios-font-weight-medium; color: $ios-text-tertiary; flex-shrink: 0; } .detail-value { font-weight: $ios-font-weight-medium; color: $ios-text-primary; text-align: right; } .score { font-size: $ios-font-size-base; font-weight: $ios-font-weight-semibold; color: $ios-primary; } } } .task-comments { margin-bottom: $ios-spacing-lg; padding: $ios-spacing-md; background-color: rgba(0, 71, 171, 0.03); border-radius: $ios-radius-md; border-left: 3px solid $ios-primary; .comments-label { font-size: $ios-font-size-sm; font-weight: $ios-font-weight-medium; color: $ios-text-secondary; margin-bottom: $ios-spacing-xs; } .comment-text { font-size: $ios-font-size-sm; color: $ios-text-primary; line-height: 1.5; } } .task-actions { display: flex; justify-content: flex-end; gap: $ios-spacing-sm; padding-top: $ios-spacing-md; border-top: 1px solid $ios-border; } .btn { padding: $ios-spacing-sm $ios-spacing-lg; border-radius: $ios-radius-md; font-size: $ios-font-size-sm; border: 1px solid $ios-border; background-color: transparent; color: $ios-text-primary; cursor: pointer; font-family: $ios-font-family; font-weight: $ios-font-weight-medium; transition: all 0.3s ease; position: relative; overflow: hidden; &::before { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; border-radius: $ios-radius-full; background-color: rgba(0, 0, 0, 0.1); transform: translate(-50%, -50%); transition: all 0.3s ease; } &:hover::before { width: 100px; height: 100px; } &.btn-primary { background-color: $ios-primary; color: white; border-color: $ios-primary; &::before { background-color: rgba(255, 255, 255, 0.2); } } &.btn-success { background-color: $ios-success; color: white; border-color: $ios-success; &::before { background-color: rgba(255, 255, 255, 0.2); } } &.btn-warning { background-color: $ios-warning; color: white; border-color: $ios-warning; &::before { background-color: rgba(255, 255, 255, 0.2); } } &:hover { opacity: 0.9; transform: translateY(-2px); } } } } // 导出按钮样式 .btn-export { padding: $ios-spacing-sm $ios-spacing-lg; background-color: $ios-primary; color: white; border: none; border-radius: $ios-radius-md; font-size: $ios-font-size-sm; font-weight: $ios-font-weight-semibold; cursor: pointer; font-family: $ios-font-family; transition: all 0.3s ease; display: inline-flex; align-items: center; gap: $ios-spacing-xs; position: relative; overflow: hidden; &::before { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; border-radius: $ios-radius-full; background-color: rgba(255, 255, 255, 0.2); transform: translate(-50%, -50%); transition: all 0.3s ease; } &:hover { background-color: $ios-primary-light; transform: translateY(-2px); } &:hover::before { width: 100px; height: 100px; } } // 状态徽章优化 .status-badge { display: inline-flex; align-items: center; padding: 4px $ios-spacing-sm; border-radius: $ios-radius-full; font-size: $ios-font-size-xs; font-weight: $ios-font-weight-medium; text-transform: uppercase; letter-spacing: 0.5px; transition: all 0.3s ease; &.status-approved { background-color: rgba(52, 199, 89, 0.15); color: $ios-success; } &.status-pending { background-color: rgba(255, 149, 0, 0.15); color: $ios-warning; } &.status-rejected { background-color: rgba(255, 59, 48, 0.15); color: $ios-danger; } &.status-processing { background-color: rgba(0, 71, 171, 0.15); color: $ios-primary; } &:hover { transform: scale(1.05); } } // 进度条样式 .progress-bar { height: 8px; background-color: $ios-background-secondary; border-radius: $ios-radius-full; overflow: hidden; margin: $ios-spacing-md 0; position: relative; .progress-fill { height: 100%; background: linear-gradient(90deg, $ios-primary 0%, $ios-primary-light 100%); border-radius: $ios-radius-full; transition: width 0.5s ease; position: relative; overflow: hidden; &::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.2) 50%, transparent 100%); animation: shimmer 2s infinite; } } } // 动画效果 @keyframes shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } // 卡片悬停效果增强 .card-hover { transition: all 0.3s ease; &:hover { transform: translateY(-4px); box-shadow: $ios-shadow-lg; } } // 列表项增强 .list-item-enhanced { transition: all 0.2s ease; &:hover { background-color: $ios-background-secondary; transform: translateX(4px); } } /* 响应式设计 */ @media (max-width: 768px) { .quality-management-main { padding: $ios-spacing-md; } .section-header { flex-direction: column; align-items: flex-start; gap: $ios-spacing-md; h2 { &::before { display: none; } } } .search-filter { width: 100%; flex-direction: column; input, select { flex: 1; width: 100%; } } .sop-tabs .tab-buttons { overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; &::-webkit-scrollbar { display: none; } } .task-details .detail-item { flex-direction: column; .label { width: auto; margin-bottom: $ios-spacing-xs; } } .training-content { flex-direction: column; } .video-item { flex-direction: column; .video-thumbnail { width: 100%; height: auto; aspect-ratio: 16/9; } } .rectification-list { grid-template-columns: 1fr; } .quality-table { display: block; overflow-x: auto; thead { white-space: nowrap; } tbody { td { white-space: nowrap; } } } } // 质量整改跟踪板块 - 搜索和筛选样式 .rectification-section { .section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: $ios-spacing-xl; } .search-filter { display: flex; align-items: center; gap: $ios-spacing-md; padding: $ios-spacing-sm $ios-spacing-md; background-color: $ios-background; border: 1px solid $ios-border; border-radius: $ios-radius-lg; box-shadow: $ios-shadow-sm; } .search-filter input { flex: 1; padding: $ios-spacing-sm $ios-spacing-md; border: 1px solid $ios-border; border-radius: $ios-radius-md; font-size: $ios-font-size-sm; color: $ios-text-primary; background-color: $ios-background-secondary; font-family: $ios-font-family; transition: all 0.2s ease; min-width: 200px; } .search-filter input:focus { outline: none; border-color: $ios-primary; background-color: white; box-shadow: 0 0 0 2px rgba(0, 71, 171, 0.1); } .search-filter select { padding: $ios-spacing-sm $ios-spacing-md; border: 1px solid $ios-border; border-radius: $ios-radius-md; font-size: $ios-font-size-sm; color: $ios-text-primary; background-color: $ios-background-secondary; font-family: $ios-font-family; cursor: pointer; transition: all 0.2s ease; min-width: 120px; -webkit-appearance: none; -moz-appearance: none; appearance: none; background-image: url('data:image/svg+xml;utf8,'); background-repeat: no-repeat; background-position: right $ios-spacing-md center; background-size: 16px; padding-right: $ios-spacing-lg; } .search-filter select:focus { outline: none; border-color: $ios-primary; background-color: white; box-shadow: 0 0 0 2px rgba(0, 71, 171, 0.1); } .search-filter select::-ms-expand { display: none; } // 整改任务列表样式 .rectification-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: $ios-spacing-xl; } // 整改任务卡片样式 - 现代感边缘优化 .rectification-item { padding: $ios-spacing-lg; border-radius: $ios-radius-xl; background-color: $ios-background; border: 1px solid $ios-border; box-shadow: $ios-shadow-md; transition: all 0.3s ease; overflow: hidden; position: relative; // 添加现代感边缘光晕效果 box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05), 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 71, 171, 0.03); // 悬停效果增强 &:hover { box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -2px rgba(0, 0, 0, 0.04), 0 0 0 2px rgba(0, 71, 171, 0.07); transform: translateY(-2px); } // 高优先级任务特殊边缘样式 &.priority-high { border-left: 4px solid $ios-danger; // 添加红色边缘发光效果 box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05), 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(255, 59, 48, 0.05), inset 0 0 0 1px rgba(255, 59, 48, 0.1); } &.priority-medium { border-left: 4px solid $ios-warning; // 添加黄色边缘发光效果 box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05), 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(255, 149, 0, 0.05), inset 0 0 0 1px rgba(255, 149, 0, 0.1); } &.priority-low { border-left: 4px solid $ios-success; // 添加绿色边缘发光效果 box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05), 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(52, 199, 89, 0.05), inset 0 0 0 1px rgba(52, 199, 89, 0.1); } } // 卡片头部样式 .rectification-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: $ios-spacing-md; h4 { font-size: $ios-font-size-base; font-weight: $ios-font-weight-semibold; color: $ios-text-primary; margin: 0; line-height: 1.4; } } // 状态标签样式 .rectification-status { font-size: $ios-font-size-xs; padding: 4px $ios-spacing-sm; border-radius: $ios-radius-full; font-weight: $ios-font-weight-medium; white-space: nowrap; text-transform: uppercase; letter-spacing: 0.5px; } } // iOS风格滚动条 ::-webkit-scrollbar { width: $ios-scrollbar-width; } ::-webkit-scrollbar-track { background: $ios-scrollbar-track; } ::-webkit-scrollbar-thumb { background: $ios-scrollbar-thumb; border-radius: $ios-radius-full; } ::-webkit-scrollbar-thumb:hover { background: $ios-scrollbar-thumb-hover; } // 能力提升工具板块样式 - 优化版 .section-description { font-size: $ios-font-size-sm; color: $ios-text-secondary; margin-top: $ios-spacing-xs; margin-bottom: 0; } .section-subheader { display: flex; justify-content: space-between; align-items: center; margin-bottom: $ios-spacing-lg; h3 { font-size: $ios-font-size-lg; font-weight: $ios-font-weight-medium; color: $ios-text-primary; margin: 0; } .btn-view-all { padding: $ios-spacing-xs $ios-spacing-md; font-size: $ios-font-size-sm; color: $ios-primary; background-color: transparent; border: 1px solid $ios-border; border-radius: $ios-radius-md; cursor: pointer; transition: all 0.2s ease; &:hover { background-color: $ios-primary-light; } } } // 视频教程样式 .video-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: $ios-spacing-lg; } .video-card { background-color: $ios-background; border-radius: $ios-radius-lg; overflow: hidden; border: 1px solid $ios-border; box-shadow: $ios-shadow-sm; transition: all 0.3s ease; cursor: pointer; &:hover { box-shadow: $ios-shadow-md; transform: translateY(-2px); } } .video-thumbnail-container { position: relative; overflow: hidden; } .video-thumbnail { position: relative; width: 100%; aspect-ratio: 16/9; overflow: hidden; .thumbnail-img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; } &:hover .thumbnail-img { transform: scale(1.05); } } .video-duration { position: absolute; bottom: $ios-spacing-sm; right: $ios-spacing-sm; background-color: rgba(0, 0, 0, 0.7); color: white; padding: $ios-spacing-xs $ios-spacing-sm; border-radius: $ios-radius-full; font-size: $ios-font-size-xs; } .play-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.2); display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity 0.2s ease; &.visible { opacity: 1; } } .play-button { background: transparent; border: none; cursor: pointer; transition: transform 0.2s ease; &:hover { transform: scale(1.1); } } .video-info { padding: $ios-spacing-md; } .category-badge { display: inline-block; background-color: $ios-primary-light; color: $ios-primary; padding: 2px $ios-spacing-sm; border-radius: $ios-radius-full; font-size: $ios-font-size-xs; margin-bottom: $ios-spacing-sm; } .video-title { font-size: $ios-font-size-base; font-weight: $ios-font-weight-medium; color: $ios-text-primary; margin: 0 0 $ios-spacing-sm 0; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-clamp: 2; overflow: hidden; } .video-description { font-size: $ios-font-size-sm; color: $ios-text-secondary; margin: 0 0 $ios-spacing-sm 0; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-clamp: 2; overflow: hidden; } .video-meta { display: flex; justify-content: space-between; align-items: center; font-size: $ios-font-size-xs; color: $ios-text-tertiary; } // 实践作业样式 .assignment-stats { display: flex; gap: $ios-spacing-md; .stat { font-size: $ios-font-size-sm; color: $ios-text-secondary; background-color: $ios-background-secondary; padding: $ios-spacing-xs $ios-spacing-sm; border-radius: $ios-radius-full; } } .assignment-card { background-color: $ios-background; border-radius: $ios-radius-lg; padding: $ios-spacing-lg; border: 1px solid $ios-border; box-shadow: $ios-shadow-sm; margin-bottom: $ios-spacing-md; transition: all 0.2s ease; &:hover { box-shadow: $ios-shadow-md; } } .assignment-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: $ios-spacing-md; } .assignment-title-section { flex: 1; margin-right: $ios-spacing-md; h4 { font-size: $ios-font-size-base; font-weight: $ios-font-weight-medium; color: $ios-text-primary; margin: 0 0 $ios-spacing-xs 0; } .assignment-badges { display: flex; gap: $ios-spacing-xs; .badge { font-size: $ios-font-size-xs; padding: 2px $ios-spacing-xs; border-radius: $ios-radius-sm; &.related-sop { background-color: $ios-background-secondary; color: $ios-text-secondary; } } } } .status-badge { font-size: $ios-font-size-xs; padding: $ios-spacing-xs $ios-spacing-sm; border-radius: $ios-radius-full; font-weight: $ios-font-weight-medium; white-space: nowrap; &.status-pending { background-color: rgba($ios-warning, 0.1); color: $ios-warning; } &.status-processing { background-color: rgba($ios-info, 0.1); color: $ios-info; } &.status-review { background-color: $ios-primary-light; color: $ios-primary; } &.status-completed { background-color: rgba($ios-success, 0.1); color: $ios-success; } } .assignment-details { margin-bottom: $ios-spacing-md; } .assignment-meta { display: flex; gap: $ios-spacing-lg; margin-top: $ios-spacing-sm; } .meta-item { display: flex; align-items: center; gap: $ios-spacing-xs; font-size: $ios-font-size-sm; color: $ios-text-secondary; &.score-item { color: $ios-primary; } } .assignment-actions { display: flex; justify-content: flex-end; gap: $ios-spacing-md; .btn-primary, .btn-secondary { display: flex; align-items: center; gap: $ios-spacing-xs; padding: $ios-spacing-sm $ios-spacing-md; border-radius: $ios-radius-md; font-size: $ios-font-size-sm; font-weight: $ios-font-weight-medium; cursor: pointer; transition: all 0.2s ease; border: none; } .btn-primary { background-color: $ios-primary; color: white; &:hover { background-color: #003A8C; // 比$ios-primary稍深的蓝色 } } .btn-secondary { background-color: $ios-background-secondary; color: $ios-text-primary; &:hover { background-color: $ios-border; } } }