fix: 功能完善修改。

This commit is contained in:
tianyongbao
2026-02-23 22:29:36 +08:00
parent d0f3bb8286
commit dc062f8f6f
5 changed files with 1065 additions and 503 deletions

View File

@@ -1,9 +1,7 @@
<template>
<view class="container">
<uni-navbar :statusBar="true" title="纪念钞查询" />
<!-- 查询条件区域 -->
<u-sticky offsetTop="0rpx" customNavHeight="0rpx">
<u-sticky offsetTop="0" customNavHeight="0">
<view class="search-view">
<view class="search-input-wrapper">
<u--input
@@ -35,42 +33,43 @@
<uni-icons type="list" size="18" color="#667eea"></uni-icons>
<text>筛选</text>
</view>
<u-transition :show="filterPanel" mode="fade">
<view class="filter-panel" :style="{ height: `${windowHeight - 42}px` }">
<view class="filter-panel-content">
<view class="filter-title">材质选择</view>
<view class="state-list">
<view
v-for="item in compositionOptions"
:key="item.dictValue"
class="state-item"
:class="queryParams.composition === item.dictValue ? 'active' : ''"
@click="selectComposition(item)">
{{ item.dictLabel }}
</view>
</view>
</view>
<view class="btn-box">
<view class="btn-reset" @click="handleReset()">
<uni-icons type="reload" size="16" color="#909399"></uni-icons>
<text>重置</text>
</view>
<view class="btn-confirm" @click="searchSubmit()">
<uni-icons type="checkmarkempty" size="16" color="#ffffff"></uni-icons>
<text>确定</text>
</view>
</view>
</view>
</u-transition>
</view>
</u-sticky>
<!-- 筛选面板 -->
<u-transition :show="filterPanel" mode="slide-down">
<view class="filter-panel">
<view class="filter-panel-content">
<view class="filter-title">材质选择</view>
<view class="state-list">
<view
v-for="item in compositionOptions"
:key="item.dictValue"
class="state-item"
:class="queryParams.composition === item.dictValue ? 'active' : ''"
@click="selectComposition(item)">
{{ item.dictLabel }}
</view>
</view>
</view>
<view class="btn-box">
<view class="btn-reset" @click="handleReset()">
<uni-icons type="reload" size="16" color="#909399"></uni-icons>
<text>重置</text>
</view>
<view class="btn-confirm" @click="searchSubmit()">
<uni-icons type="checkmarkempty" size="16" color="#ffffff"></uni-icons>
<text>确定</text>
</view>
</view>
</view>
</u-transition>
<!-- 数据列表 -->
<u-list @scrolltolower="loadmore" :spaceHeight="116" lowerThreshold="100">
<u-list @scrolltolower="loadmore" lowerThreshold="100">
<u-list-item v-for="(item, index) in dataList" :key="index">
<view class="list-item" @click="handleViewDetail(item)">
<view class="list-item" >
<view class="item-header">
<view class="card-name-section">
<view class="card-icon">
@@ -366,7 +365,7 @@ onMounted(() => {
<style lang="scss" scoped>
page {
height: 100%;
overflow: auto;
background: #f5f7fa;
}
.container {
@@ -471,122 +470,127 @@ page {
}
}
.filter-panel {
width: 100%;
position: absolute;
left: 0;
top: 96rpx;
background-color: rgba(0, 0, 0, 0.5);
z-index: 999;
}
.filter-panel-content {
background-color: #ffffff;
padding: 0 30rpx 30rpx;
border-radius: 16rpx 16rpx 0 0;
.filter-panel {
width: 100%;
position: fixed;
left: 0;
top: 90rpx;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 10000;
display: flex;
flex-direction: column;
justify-content: flex-start;
.filter-title {
color: #2c3e50;
font-size: 32rpx;
font-weight: 600;
padding: 32rpx 0 24rpx 20rpx;
position: relative;
display: flex;
align-items: center;
&::before {
content: '';
width: 6rpx;
height: 32rpx;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border-radius: 3rpx;
margin-right: 12rpx;
flex-shrink: 0;
}
}
.filter-panel-content {
background-color: #ffffff;
padding: 0 30rpx 30rpx;
border-radius: 0 0 16rpx 16rpx;
.state-list {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
gap: 16rpx;
margin-bottom: 24rpx;
.state-item {
padding: 0 32rpx;
height: 68rpx;
border: 2rpx solid #e8edf3;
border-radius: 34rpx;
text-align: center;
line-height: 68rpx;
font-size: 28rpx;
color: #666666;
transition: all 0.3s ease;
background: #ffffff;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
&:active {
transform: scale(0.95);
}
}
.active {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border: 2rpx solid transparent;
color: #ffffff;
box-shadow: 0 4rpx 12rpx rgba(102, 126, 234, 0.3);
font-weight: 600;
}
.filter-title {
color: #2c3e50;
font-size: 32rpx;
font-weight: 600;
padding: 32rpx 0 24rpx 20rpx;
position: relative;
display: flex;
align-items: center;
&::before {
content: '';
width: 6rpx;
height: 32rpx;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border-radius: 3rpx;
margin-right: 12rpx;
flex-shrink: 0;
}
}
.btn-box {
.state-list {
display: flex;
gap: 20rpx;
padding: 24rpx 30rpx;
background-color: #fff;
box-shadow: 0rpx -10rpx 20rpx #EEEEEE;
.btn-reset,
.btn-confirm {
display: flex;
align-items: center;
justify-content: center;
gap: 8rpx;
height: 88rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-weight: 600;
flex-wrap: wrap;
justify-content: flex-start;
gap: 16rpx;
margin-bottom: 24rpx;
.state-item {
padding: 0 32rpx;
height: 68rpx;
border: 2rpx solid #e8edf3;
border-radius: 34rpx;
text-align: center;
line-height: 68rpx;
font-size: 28rpx;
color: #666666;
transition: all 0.3s ease;
background: #ffffff;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
&:active {
transform: scale(0.98);
opacity: 0.9;
}
text {
line-height: 1;
transform: scale(0.95);
}
}
.active {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border: 2rpx solid transparent;
color: #ffffff;
box-shadow: 0 4rpx 12rpx rgba(102, 126, 234, 0.3);
font-weight: 600;
}
}
}
.btn-box {
display: flex;
gap: 20rpx;
padding: 24rpx 30rpx;
background-color: #fff;
box-shadow: 0rpx -10rpx 20rpx #EEEEEE;
.btn-reset,
.btn-confirm {
display: flex;
align-items: center;
justify-content: center;
gap: 8rpx;
height: 88rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-weight: 600;
transition: all 0.3s ease;
.btn-reset {
flex: 1;
background: #f5f7fa;
border: 2rpx solid #dcdfe6;
text {
color: #606266;
}
&:active {
transform: scale(0.98);
opacity: 0.9;
}
.btn-confirm {
flex: 1;
background: #667eea;
box-shadow: 0 2rpx 8rpx rgba(102, 126, 234, 0.2);
border: none;
text {
color: #ffffff;
}
text {
line-height: 1;
}
}
.btn-reset {
flex: 1;
background: #f5f7fa;
border: 2rpx solid #dcdfe6;
text {
color: #606266;
}
}
.btn-confirm {
flex: 1;
background: #667eea;
box-shadow: 0 2rpx 8rpx rgba(102, 126, 234, 0.2);
border: none;
text {
color: #ffffff;
}
}
}