feat:部分项目中心

This commit is contained in:
李伊帆
2026-09-14 17:09:25 +08:00
parent f5d634bbaf
commit 2c7a115dd7
131 changed files with 7476 additions and 4589 deletions

View File

@@ -0,0 +1,87 @@
@import '@/styles/variables.scss';
.case-card {
padding: 0 0 28rpx;
margin-bottom: 24rpx;
background: $color-bg-page;
border-radius: 20rpx;
overflow: hidden;
}
.case-card__cover-wrap {
position: relative;
height: 320rpx;
overflow: hidden;
}
.case-card__cover {
width: 100%;
height: 100%;
}
.case-card__tag {
position: absolute;
top: 20rpx;
left: 20rpx;
padding: 6rpx 16rpx;
font-size: 22rpx;
color: #ffffff;
background: $color-primary;
border-radius: 8rpx;
}
.case-card__favorite {
position: absolute;
top: 20rpx;
right: 20rpx;
display: flex;
align-items: center;
justify-content: center;
width: 56rpx;
height: 56rpx;
background: rgba(255, 255, 255, 0.92);
border-radius: 50%;
}
.case-card__favorite-icon {
width: 32rpx;
height: 32rpx;
}
.case-card__title {
display: block;
padding: 24rpx 24rpx 0;
font-size: 32rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-card__meta {
padding: 20rpx 24rpx 0;
}
.case-card__meta-row {
display: flex;
margin-bottom: 16rpx;
&:last-child {
margin-bottom: 0;
}
}
.case-card__meta-item {
display: flex;
flex: 1;
flex-direction: column;
}
.case-card__meta-label {
font-size: 22rpx;
color: $color-text-secondary;
}
.case-card__meta-value {
margin-top: 8rpx;
font-size: 24rpx;
color: $color-text-primary;
}

View File

@@ -95,91 +95,5 @@ const emit = defineEmits<{
</template>
<style scoped lang="scss">
@import '@/styles/variables.scss';
.case-card {
padding: 0 0 28rpx;
margin-bottom: 24rpx;
background: $color-bg-page;
border-radius: 20rpx;
overflow: hidden;
}
.case-card__cover-wrap {
position: relative;
height: 320rpx;
overflow: hidden;
}
.case-card__cover {
width: 100%;
height: 100%;
}
.case-card__tag {
position: absolute;
top: 20rpx;
left: 20rpx;
padding: 6rpx 16rpx;
font-size: 22rpx;
color: #ffffff;
background: $color-primary;
border-radius: 8rpx;
}
.case-card__favorite {
position: absolute;
top: 20rpx;
right: 20rpx;
display: flex;
align-items: center;
justify-content: center;
width: 56rpx;
height: 56rpx;
background: rgba(255, 255, 255, 0.92);
border-radius: 50%;
}
.case-card__favorite-icon {
width: 32rpx;
height: 32rpx;
}
.case-card__title {
display: block;
padding: 24rpx 24rpx 0;
font-size: 32rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-card__meta {
padding: 20rpx 24rpx 0;
}
.case-card__meta-row {
display: flex;
margin-bottom: 16rpx;
&:last-child {
margin-bottom: 0;
}
}
.case-card__meta-item {
display: flex;
flex: 1;
flex-direction: column;
}
.case-card__meta-label {
font-size: 22rpx;
color: $color-text-secondary;
}
.case-card__meta-value {
margin-top: 8rpx;
font-size: 24rpx;
color: $color-text-primary;
}
@import './CaseCard.scss';
</style>

View File

@@ -0,0 +1,213 @@
@import '@/styles/variables.scss';
.case-filter-panel {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 300;
}
.case-filter-panel__mask {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0, 0, 0, 0.45);
}
.case-filter-panel__sheet {
position: absolute;
right: 0;
bottom: 0;
left: 0;
display: flex;
flex-direction: column;
max-height: 78vh;
background: $color-bg-page;
border-radius: 24rpx 24rpx 0 0;
}
.case-filter-panel__header {
display: flex;
align-items: center;
justify-content: space-between;
flex-shrink: 0;
padding: 28rpx 32rpx 20rpx;
}
.case-filter-panel__title-wrap,
.case-filter-panel__reset {
display: flex;
align-items: center;
}
.case-filter-panel__title-icon {
width: 28rpx;
height: 28rpx;
margin-right: 10rpx;
}
.case-filter-panel__title {
font-size: 32rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-filter-panel__reset-icon {
margin-right: 6rpx;
font-size: 28rpx;
color: $color-primary;
}
.case-filter-panel__reset-text {
font-size: 26rpx;
color: $color-primary;
}
.case-filter-panel__body {
flex: 1;
min-height: 0;
padding: 0 32rpx;
box-sizing: border-box;
}
.case-filter-panel__section {
margin-bottom: 28rpx;
}
.case-filter-panel__section-title {
display: block;
margin-bottom: 20rpx;
font-size: 28rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-filter-panel__chips {
display: flex;
flex-wrap: wrap;
gap: 16rpx;
}
.case-filter-panel__chip {
padding: 14rpx 24rpx;
font-size: 24rpx;
color: $color-text-primary;
background: $color-bg-section;
border-radius: 999rpx;
&--active {
color: $color-primary;
background: $color-primary-light;
}
}
.case-filter-panel__date-row {
display: flex;
align-items: center;
margin-top: 20rpx;
}
.case-filter-panel__date-field {
display: flex;
align-items: center;
justify-content: center;
min-width: 220rpx;
height: 72rpx;
padding: 0 20rpx;
background: $color-bg-section;
border-radius: 999rpx;
}
.case-filter-panel__date-placeholder {
color: $color-text-placeholder;
}
.case-filter-panel__date-separator {
margin: 0 16rpx;
font-size: 24rpx;
color: $color-text-secondary;
}
.case-filter-panel__selected {
flex-shrink: 0;
margin: 0 32rpx 20rpx;
padding: 20rpx 24rpx;
background: $color-bg-section;
border-radius: 16rpx;
}
.case-filter-panel__selected-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16rpx;
}
.case-filter-panel__selected-title {
font-size: 24rpx;
color: $color-text-secondary;
}
.case-filter-panel__selected-clear {
font-size: 24rpx;
color: $color-primary;
}
.case-filter-panel__selected-tags {
display: flex;
flex-wrap: wrap;
gap: 12rpx;
}
.case-filter-panel__tag {
display: flex;
align-items: center;
padding: 8rpx 16rpx;
background: $color-primary-light;
border-radius: 999rpx;
}
.case-filter-panel__tag-text {
font-size: 22rpx;
color: $color-primary;
}
.case-filter-panel__tag-close {
margin-left: 8rpx;
font-size: 24rpx;
line-height: 1;
color: $color-primary;
}
.case-filter-panel__footer {
display: flex;
gap: 20rpx;
flex-shrink: 0;
padding: 16rpx 32rpx calc(24rpx + env(safe-area-inset-bottom));
}
.case-filter-panel__btn {
display: flex;
flex: 1;
align-items: center;
justify-content: center;
height: 88rpx;
font-size: 30rpx;
font-weight: 600;
border-radius: 44rpx;
&--cancel {
color: $color-primary;
background: #ffffff;
border: 2rpx solid $color-primary;
}
&--confirm {
color: #ffffff;
background: $color-primary;
}
}

View File

@@ -312,217 +312,5 @@ function handleConfirm() {
</template>
<style scoped lang="scss">
@import '@/styles/variables.scss';
.case-filter-panel {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 300;
}
.case-filter-panel__mask {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0, 0, 0, 0.45);
}
.case-filter-panel__sheet {
position: absolute;
right: 0;
bottom: 0;
left: 0;
display: flex;
flex-direction: column;
max-height: 78vh;
background: $color-bg-page;
border-radius: 24rpx 24rpx 0 0;
}
.case-filter-panel__header {
display: flex;
align-items: center;
justify-content: space-between;
flex-shrink: 0;
padding: 28rpx 32rpx 20rpx;
}
.case-filter-panel__title-wrap,
.case-filter-panel__reset {
display: flex;
align-items: center;
}
.case-filter-panel__title-icon {
width: 28rpx;
height: 28rpx;
margin-right: 10rpx;
}
.case-filter-panel__title {
font-size: 32rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-filter-panel__reset-icon {
margin-right: 6rpx;
font-size: 28rpx;
color: $color-primary;
}
.case-filter-panel__reset-text {
font-size: 26rpx;
color: $color-primary;
}
.case-filter-panel__body {
flex: 1;
min-height: 0;
padding: 0 32rpx;
box-sizing: border-box;
}
.case-filter-panel__section {
margin-bottom: 28rpx;
}
.case-filter-panel__section-title {
display: block;
margin-bottom: 20rpx;
font-size: 28rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-filter-panel__chips {
display: flex;
flex-wrap: wrap;
gap: 16rpx;
}
.case-filter-panel__chip {
padding: 14rpx 24rpx;
font-size: 24rpx;
color: $color-text-primary;
background: $color-bg-section;
border-radius: 999rpx;
&--active {
color: $color-primary;
background: $color-primary-light;
}
}
.case-filter-panel__date-row {
display: flex;
align-items: center;
margin-top: 20rpx;
}
.case-filter-panel__date-field {
display: flex;
align-items: center;
justify-content: center;
min-width: 220rpx;
height: 72rpx;
padding: 0 20rpx;
background: $color-bg-section;
border-radius: 999rpx;
}
.case-filter-panel__date-placeholder {
color: $color-text-placeholder;
}
.case-filter-panel__date-separator {
margin: 0 16rpx;
font-size: 24rpx;
color: $color-text-secondary;
}
.case-filter-panel__selected {
flex-shrink: 0;
margin: 0 32rpx 20rpx;
padding: 20rpx 24rpx;
background: $color-bg-section;
border-radius: 16rpx;
}
.case-filter-panel__selected-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16rpx;
}
.case-filter-panel__selected-title {
font-size: 24rpx;
color: $color-text-secondary;
}
.case-filter-panel__selected-clear {
font-size: 24rpx;
color: $color-primary;
}
.case-filter-panel__selected-tags {
display: flex;
flex-wrap: wrap;
gap: 12rpx;
}
.case-filter-panel__tag {
display: flex;
align-items: center;
padding: 8rpx 16rpx;
background: $color-primary-light;
border-radius: 999rpx;
}
.case-filter-panel__tag-text {
font-size: 22rpx;
color: $color-primary;
}
.case-filter-panel__tag-close {
margin-left: 8rpx;
font-size: 24rpx;
line-height: 1;
color: $color-primary;
}
.case-filter-panel__footer {
display: flex;
gap: 20rpx;
flex-shrink: 0;
padding: 16rpx 32rpx calc(24rpx + env(safe-area-inset-bottom));
}
.case-filter-panel__btn {
display: flex;
flex: 1;
align-items: center;
justify-content: center;
height: 88rpx;
font-size: 30rpx;
font-weight: 600;
border-radius: 44rpx;
&--cancel {
color: $color-primary;
background: #ffffff;
border: 2rpx solid $color-primary;
}
&--confirm {
color: #ffffff;
background: $color-primary;
}
}
@import './CaseFilterPanel.scss';
</style>

View File

@@ -0,0 +1,39 @@
@import '@/styles/variables.scss';
.load-more-footer {
display: flex;
align-items: center;
justify-content: center;
padding: 32rpx 0 16rpx;
}
.load-more-footer__loading {
display: flex;
align-items: center;
}
.load-more-footer__spinner {
width: 32rpx;
height: 32rpx;
margin-right: 12rpx;
border: 4rpx solid #d6e4ff;
border-top-color: $color-primary;
border-radius: 50%;
animation: load-more-spin 0.8s linear infinite;
}
.load-more-footer__text,
.load-more-footer__finished {
font-size: 24rpx;
color: $color-text-secondary;
}
@keyframes load-more-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}

View File

@@ -41,43 +41,5 @@ const emit = defineEmits<{
</template>
<style scoped lang="scss">
@import '@/styles/variables.scss';
.load-more-footer {
display: flex;
align-items: center;
justify-content: center;
padding: 32rpx 0 16rpx;
}
.load-more-footer__loading {
display: flex;
align-items: center;
}
.load-more-footer__spinner {
width: 32rpx;
height: 32rpx;
margin-right: 12rpx;
border: 4rpx solid #d6e4ff;
border-top-color: $color-primary;
border-radius: 50%;
animation: load-more-spin 0.8s linear infinite;
}
.load-more-footer__text,
.load-more-footer__finished {
font-size: 24rpx;
color: $color-text-secondary;
}
@keyframes load-more-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@import './LoadMoreFooter.scss';
</style>

View File

@@ -0,0 +1,181 @@
@import '@/styles/variables.scss';
.case-detail {
display: flex;
flex-direction: column;
min-height: 100vh;
background: $color-bg-section;
}
.case-detail__navbar {
display: flex;
align-items: center;
justify-content: space-between;
flex-shrink: 0;
padding: calc(var(--status-bar-height, 44px) + 12rpx) 24rpx 20rpx;
background: $color-bg-page;
}
.case-detail__back {
display: flex;
align-items: center;
justify-content: center;
width: 64rpx;
height: 64rpx;
}
.case-detail__back-icon {
width: 40rpx;
height: 40rpx;
}
.case-detail__navbar-title {
font-size: 34rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-detail__navbar-placeholder {
width: 64rpx;
height: 64rpx;
}
.case-detail__scroll {
flex: 1;
height: 0;
}
.case-detail__content {
padding: 24rpx 24rpx calc(32rpx + env(safe-area-inset-bottom));
}
.case-detail__hero {
padding: 32rpx 28rpx;
background: linear-gradient(135deg, #eef4ff 0%, #ffffff 60%);
border-radius: 20rpx;
}
.case-detail__tag {
display: inline-block;
padding: 6rpx 16rpx;
font-size: 22rpx;
color: #ffffff;
background: $color-primary;
border-radius: 8rpx;
}
.case-detail__title {
display: block;
margin-top: 20rpx;
font-size: 36rpx;
font-weight: 600;
line-height: 1.4;
color: $color-text-primary;
}
.case-detail__section {
margin-top: 24rpx;
padding: 28rpx 24rpx;
background: $color-bg-page;
border-radius: 20rpx;
&--last {
margin-bottom: 0;
}
}
.case-detail__section-title {
display: block;
margin-bottom: 24rpx;
font-size: 32rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-detail__overview {
display: flex;
flex-wrap: wrap;
}
.case-detail__overview-item {
display: flex;
flex-direction: column;
width: 33.33%;
margin-bottom: 24rpx;
}
.case-detail__overview-label {
font-size: 22rpx;
color: $color-text-secondary;
}
.case-detail__overview-value {
margin-top: 8rpx;
font-size: 26rpx;
color: $color-text-primary;
}
.case-detail__image-placeholder {
height: 280rpx;
margin-bottom: 24rpx;
background: #e8eaed;
border-radius: 12rpx;
}
.case-detail__paragraph {
display: block;
font-size: 28rpx;
line-height: 1.8;
color: $color-text-primary;
}
.case-detail__attachments {
margin-top: 24rpx;
white-space: nowrap;
}
.case-detail__attachments-inner {
display: inline-flex;
gap: 20rpx;
padding: 10rpx 10rpx 0 0;
}
.case-detail__attachment {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
width: 160rpx;
padding: 20rpx 16rpx;
background: $color-bg-section;
border-radius: 12rpx;
}
.case-detail__attachment-remove {
position: absolute;
top: -10rpx;
right: -10rpx;
display: flex;
align-items: center;
justify-content: center;
width: 32rpx;
height: 32rpx;
}
.case-detail__attachment-remove-icon {
width: 32rpx;
height: 32rpx;
}
.case-detail__attachment-icon {
width: 64rpx;
height: 64rpx;
}
.case-detail__attachment-name {
margin-top: 12rpx;
font-size: 22rpx;
color: $color-text-primary;
text-align: center;
word-break: break-all;
}

View File

@@ -161,185 +161,5 @@ function handleBack() {
</template>
<style scoped lang="scss">
@import '@/styles/variables.scss';
.case-detail {
display: flex;
flex-direction: column;
min-height: 100vh;
background: $color-bg-section;
}
.case-detail__navbar {
display: flex;
align-items: center;
justify-content: space-between;
flex-shrink: 0;
padding: calc(var(--status-bar-height, 44px) + 12rpx) 24rpx 20rpx;
background: $color-bg-page;
}
.case-detail__back {
display: flex;
align-items: center;
justify-content: center;
width: 64rpx;
height: 64rpx;
}
.case-detail__back-icon {
width: 40rpx;
height: 40rpx;
}
.case-detail__navbar-title {
font-size: 34rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-detail__navbar-placeholder {
width: 64rpx;
height: 64rpx;
}
.case-detail__scroll {
flex: 1;
height: 0;
}
.case-detail__content {
padding: 24rpx 24rpx calc(32rpx + env(safe-area-inset-bottom));
}
.case-detail__hero {
padding: 32rpx 28rpx;
background: linear-gradient(135deg, #eef4ff 0%, #ffffff 60%);
border-radius: 20rpx;
}
.case-detail__tag {
display: inline-block;
padding: 6rpx 16rpx;
font-size: 22rpx;
color: #ffffff;
background: $color-primary;
border-radius: 8rpx;
}
.case-detail__title {
display: block;
margin-top: 20rpx;
font-size: 36rpx;
font-weight: 600;
line-height: 1.4;
color: $color-text-primary;
}
.case-detail__section {
margin-top: 24rpx;
padding: 28rpx 24rpx;
background: $color-bg-page;
border-radius: 20rpx;
&--last {
margin-bottom: 0;
}
}
.case-detail__section-title {
display: block;
margin-bottom: 24rpx;
font-size: 32rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-detail__overview {
display: flex;
flex-wrap: wrap;
}
.case-detail__overview-item {
display: flex;
flex-direction: column;
width: 33.33%;
margin-bottom: 24rpx;
}
.case-detail__overview-label {
font-size: 22rpx;
color: $color-text-secondary;
}
.case-detail__overview-value {
margin-top: 8rpx;
font-size: 26rpx;
color: $color-text-primary;
}
.case-detail__image-placeholder {
height: 280rpx;
margin-bottom: 24rpx;
background: #e8eaed;
border-radius: 12rpx;
}
.case-detail__paragraph {
display: block;
font-size: 28rpx;
line-height: 1.8;
color: $color-text-primary;
}
.case-detail__attachments {
margin-top: 24rpx;
white-space: nowrap;
}
.case-detail__attachments-inner {
display: inline-flex;
gap: 20rpx;
padding: 10rpx 10rpx 0 0;
}
.case-detail__attachment {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
width: 160rpx;
padding: 20rpx 16rpx;
background: $color-bg-section;
border-radius: 12rpx;
}
.case-detail__attachment-remove {
position: absolute;
top: -10rpx;
right: -10rpx;
display: flex;
align-items: center;
justify-content: center;
width: 32rpx;
height: 32rpx;
}
.case-detail__attachment-remove-icon {
width: 32rpx;
height: 32rpx;
}
.case-detail__attachment-icon {
width: 64rpx;
height: 64rpx;
}
.case-detail__attachment-name {
margin-top: 12rpx;
font-size: 22rpx;
color: $color-text-primary;
text-align: center;
word-break: break-all;
}
@import './index.scss';
</style>

View File

@@ -0,0 +1,172 @@
@import '@/styles/variables.scss';
.case-favorites {
display: flex;
flex-direction: column;
height: 100vh;
overflow: hidden;
background: $color-bg-section;
}
.case-favorites__header {
flex-shrink: 0;
padding: calc(var(--status-bar-height, 44px) + 60rpx) 24rpx 0;
background: $color-bg-page;
}
.case-favorites__navbar {
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: 28rpx;
}
.case-favorites__back {
display: flex;
align-items: center;
justify-content: center;
width: 64rpx;
height: 64rpx;
}
.case-favorites__back-icon {
width: 40rpx;
height: 40rpx;
}
.case-favorites__title {
font-size: 36rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-favorites__navbar-placeholder {
width: 64rpx;
height: 64rpx;
}
.case-favorites__search-row {
display: flex;
align-items: center;
}
.case-favorites__search {
display: flex;
flex: 1;
align-items: center;
height: 72rpx;
padding: 0 24rpx;
background: $color-bg-section;
border-radius: 36rpx;
}
.case-favorites__search-icon {
flex-shrink: 0;
width: 32rpx;
height: 32rpx;
margin-right: 12rpx;
}
.case-favorites__search-input {
flex: 1;
font-size: 26rpx;
color: $color-text-primary;
}
.case-favorites__search-placeholder {
color: $color-text-placeholder;
}
.case-favorites__favorite-btn {
display: flex;
flex-shrink: 0;
align-items: center;
justify-content: center;
width: 72rpx;
height: 72rpx;
margin-left: 16rpx;
}
.case-favorites__favorite-btn-icon {
width: 40rpx;
height: 40rpx;
}
.case-favorites__tabs {
margin-top: 24rpx;
white-space: nowrap;
}
.case-favorites__tabs-inner {
display: inline-flex;
gap: 32rpx;
padding-right: 24rpx;
}
.case-favorites__tab {
flex-shrink: 0;
padding-bottom: 12rpx;
font-size: 28rpx;
color: $color-text-secondary;
&--active {
font-weight: 600;
color: $color-text-primary;
border-bottom: 4rpx solid $color-primary;
}
}
.case-favorites__quick-filters {
display: flex;
align-items: center;
gap: 24rpx;
margin-top: 20rpx;
}
.case-favorites__quick-filter {
display: flex;
align-items: center;
gap: 4rpx;
font-size: 26rpx;
color: $color-text-primary;
}
.case-favorites__quick-filter-arrow {
font-size: 20rpx;
color: $color-text-secondary;
}
.case-favorites__filter {
display: flex;
align-items: center;
margin-left: auto;
}
.case-favorites__filter-icon {
width: 28rpx;
height: 28rpx;
margin-left: 8rpx;
}
.case-favorites__filter-text {
font-size: 26rpx;
color: #666666;
}
.case-favorites__toolbar {
padding: 20rpx 0 24rpx;
}
.case-favorites__count {
font-size: 24rpx;
color: $color-text-secondary;
}
.case-favorites__scroll {
flex: 1;
min-height: 0;
}
.case-favorites__list {
padding: 0 24rpx calc(32rpx + env(safe-area-inset-bottom));
}

View File

@@ -291,176 +291,5 @@ function showTimePicker() {
</template>
<style scoped lang="scss">
@import '@/styles/variables.scss';
.case-favorites {
display: flex;
flex-direction: column;
height: 100vh;
overflow: hidden;
background: $color-bg-section;
}
.case-favorites__header {
flex-shrink: 0;
padding: calc(var(--status-bar-height, 44px) + 60rpx) 24rpx 0;
background: $color-bg-page;
}
.case-favorites__navbar {
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: 28rpx;
}
.case-favorites__back {
display: flex;
align-items: center;
justify-content: center;
width: 64rpx;
height: 64rpx;
}
.case-favorites__back-icon {
width: 40rpx;
height: 40rpx;
}
.case-favorites__title {
font-size: 36rpx;
font-weight: 600;
color: $color-text-primary;
}
.case-favorites__navbar-placeholder {
width: 64rpx;
height: 64rpx;
}
.case-favorites__search-row {
display: flex;
align-items: center;
}
.case-favorites__search {
display: flex;
flex: 1;
align-items: center;
height: 72rpx;
padding: 0 24rpx;
background: $color-bg-section;
border-radius: 36rpx;
}
.case-favorites__search-icon {
flex-shrink: 0;
width: 32rpx;
height: 32rpx;
margin-right: 12rpx;
}
.case-favorites__search-input {
flex: 1;
font-size: 26rpx;
color: $color-text-primary;
}
.case-favorites__search-placeholder {
color: $color-text-placeholder;
}
.case-favorites__favorite-btn {
display: flex;
flex-shrink: 0;
align-items: center;
justify-content: center;
width: 72rpx;
height: 72rpx;
margin-left: 16rpx;
}
.case-favorites__favorite-btn-icon {
width: 40rpx;
height: 40rpx;
}
.case-favorites__tabs {
margin-top: 24rpx;
white-space: nowrap;
}
.case-favorites__tabs-inner {
display: inline-flex;
gap: 32rpx;
padding-right: 24rpx;
}
.case-favorites__tab {
flex-shrink: 0;
padding-bottom: 12rpx;
font-size: 28rpx;
color: $color-text-secondary;
&--active {
font-weight: 600;
color: $color-text-primary;
border-bottom: 4rpx solid $color-primary;
}
}
.case-favorites__quick-filters {
display: flex;
align-items: center;
gap: 24rpx;
margin-top: 20rpx;
}
.case-favorites__quick-filter {
display: flex;
align-items: center;
gap: 4rpx;
font-size: 26rpx;
color: $color-text-primary;
}
.case-favorites__quick-filter-arrow {
font-size: 20rpx;
color: $color-text-secondary;
}
.case-favorites__filter {
display: flex;
align-items: center;
margin-left: auto;
}
.case-favorites__filter-icon {
width: 28rpx;
height: 28rpx;
margin-left: 8rpx;
}
.case-favorites__filter-text {
font-size: 26rpx;
color: #666666;
}
.case-favorites__toolbar {
padding: 20rpx 0 24rpx;
}
.case-favorites__count {
font-size: 24rpx;
color: $color-text-secondary;
}
.case-favorites__scroll {
flex: 1;
min-height: 0;
}
.case-favorites__list {
padding: 0 24rpx calc(32rpx + env(safe-area-inset-bottom));
}
@import './index.scss';
</style>

View File

@@ -0,0 +1,132 @@
@import '@/styles/variables.scss';
.case-library {
display: flex;
flex-direction: column;
height: 100vh;
overflow: hidden;
background: $color-bg-section;
}
.case-library__header {
flex-shrink: 0;
padding: calc(var(--status-bar-height, 44px) + 60rpx) 24rpx 0;
background: $color-bg-page;
}
.case-library__title {
display: block;
font-size: 36rpx;
font-weight: 600;
color: $color-text-primary;
text-align: center;
}
.case-library__search-row {
display: flex;
align-items: center;
margin-top: 24rpx;
}
.case-library__search {
display: flex;
flex: 1;
align-items: center;
height: 72rpx;
padding: 0 24rpx;
background: $color-bg-section;
border-radius: 36rpx;
}
.case-library__search-icon {
flex-shrink: 0;
width: 32rpx;
height: 32rpx;
margin-right: 12rpx;
}
.case-library__search-input {
flex: 1;
font-size: 26rpx;
color: $color-text-primary;
}
.case-library__search-placeholder {
color: $color-text-placeholder;
}
.case-library__favorite-btn {
display: flex;
flex-shrink: 0;
align-items: center;
justify-content: center;
width: 72rpx;
height: 72rpx;
margin-left: 16rpx;
}
.case-library__favorite-btn-icon {
width: 40rpx;
height: 40rpx;
}
.case-library__tabs {
margin-top: 24rpx;
white-space: nowrap;
}
.case-library__tabs-inner {
display: inline-flex;
gap: 32rpx;
padding-right: 24rpx;
}
.case-library__tab {
flex-shrink: 0;
padding-bottom: 12rpx;
font-size: 28rpx;
color: $color-text-secondary;
&--active {
font-weight: 600;
color: $color-text-primary;
border-bottom: 4rpx solid $color-primary;
}
}
.case-library__toolbar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20rpx 0 24rpx;
}
.case-library__count {
font-size: 24rpx;
color: $color-text-secondary;
}
.case-library__filter {
display: flex;
align-items: center;
}
.case-library__filter-icon {
width: 28rpx;
height: 28rpx;
margin-right: 8rpx;
}
.case-library__filter-text {
font-size: 26rpx;
color: #666666;
}
.case-library__scroll {
flex: 1;
min-height: 0;
}
.case-library__list {
padding: 0 24rpx calc(140rpx + env(safe-area-inset-bottom));
}

View File

@@ -209,136 +209,5 @@ function handleCaseTap(id: string) {
</template>
<style scoped lang="scss">
@import '@/styles/variables.scss';
.case-library {
display: flex;
flex-direction: column;
height: 100vh;
overflow: hidden;
background: $color-bg-section;
}
.case-library__header {
flex-shrink: 0;
padding: calc(var(--status-bar-height, 44px) + 60rpx) 24rpx 0;
background: $color-bg-page;
}
.case-library__title {
display: block;
font-size: 36rpx;
font-weight: 600;
color: $color-text-primary;
text-align: center;
}
.case-library__search-row {
display: flex;
align-items: center;
margin-top: 24rpx;
}
.case-library__search {
display: flex;
flex: 1;
align-items: center;
height: 72rpx;
padding: 0 24rpx;
background: $color-bg-section;
border-radius: 36rpx;
}
.case-library__search-icon {
flex-shrink: 0;
width: 32rpx;
height: 32rpx;
margin-right: 12rpx;
}
.case-library__search-input {
flex: 1;
font-size: 26rpx;
color: $color-text-primary;
}
.case-library__search-placeholder {
color: $color-text-placeholder;
}
.case-library__favorite-btn {
display: flex;
flex-shrink: 0;
align-items: center;
justify-content: center;
width: 72rpx;
height: 72rpx;
margin-left: 16rpx;
}
.case-library__favorite-btn-icon {
width: 40rpx;
height: 40rpx;
}
.case-library__tabs {
margin-top: 24rpx;
white-space: nowrap;
}
.case-library__tabs-inner {
display: inline-flex;
gap: 32rpx;
padding-right: 24rpx;
}
.case-library__tab {
flex-shrink: 0;
padding-bottom: 12rpx;
font-size: 28rpx;
color: $color-text-secondary;
&--active {
font-weight: 600;
color: $color-text-primary;
border-bottom: 4rpx solid $color-primary;
}
}
.case-library__toolbar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20rpx 0 24rpx;
}
.case-library__count {
font-size: 24rpx;
color: $color-text-secondary;
}
.case-library__filter {
display: flex;
align-items: center;
}
.case-library__filter-icon {
width: 28rpx;
height: 28rpx;
margin-right: 8rpx;
}
.case-library__filter-text {
font-size: 26rpx;
color: #666666;
}
.case-library__scroll {
flex: 1;
min-height: 0;
}
.case-library__list {
padding: 0 24rpx calc(140rpx + env(safe-area-inset-bottom));
}
@import './index.scss';
</style>