|
|
|
|
<!-- pages/goods-update/goods-update.wxml -->
|
|
|
|
|
<view class="goods-update-page">
|
|
|
|
|
<!-- 商品详情内容 -->
|
|
|
|
|
<view class="goods-detail-content">
|
|
|
|
|
<!-- 商品媒体轮播(支持图片和视频) -->
|
|
|
|
|
<view class="goods-image-slider">
|
|
|
|
|
<swiper
|
|
|
|
|
indicator-dots="{{true}}"
|
|
|
|
|
autoplay="{{true}}"
|
|
|
|
|
interval="3000"
|
|
|
|
|
duration="500"
|
|
|
|
|
indicator-color="rgba(255, 255, 255, 0.5)"
|
|
|
|
|
indicator-active-color="#ffffff"
|
|
|
|
|
circular="{{true}}"
|
|
|
|
|
>
|
|
|
|
|
<block wx:for="{{goodsDetail.mediaItems}}" wx:key="index">
|
|
|
|
|
<swiper-item>
|
|
|
|
|
<!-- 视频处理:根据类型字段判断 -->
|
|
|
|
|
<video
|
|
|
|
|
wx:if="{{item.type === 'video'}}"
|
|
|
|
|
src="{{item.url}}"
|
|
|
|
|
class="slider-media"
|
|
|
|
|
mode="aspectFill"
|
|
|
|
|
show-center-play-btn="{{true}}"
|
|
|
|
|
show-play-btn="{{false}}"
|
|
|
|
|
controls="{{true}}"
|
|
|
|
|
autoplay="{{true}}"
|
|
|
|
|
loop="{{true}}"
|
|
|
|
|
muted="{{true}}"
|
|
|
|
|
initial-time="0"
|
|
|
|
|
show-mute-btn="{{true}}"
|
|
|
|
|
enable-progress-gesture="{{true}}"
|
|
|
|
|
enable-play-gesture="{{true}}"
|
|
|
|
|
object-fit="fill"
|
|
|
|
|
poster="" >
|
|
|
|
|
</video>
|
|
|
|
|
<!-- 图片处理 -->
|
|
|
|
|
<image
|
|
|
|
|
wx:else
|
|
|
|
|
src="{{item.url}}"
|
|
|
|
|
mode="aspectFill"
|
|
|
|
|
class="slider-media"
|
|
|
|
|
bindtap="previewImage"
|
|
|
|
|
data-urls="{{goodsDetail.imageUrls}}"
|
|
|
|
|
data-index="{{index}}"
|
|
|
|
|
loading="lazy"
|
|
|
|
|
/>
|
|
|
|
|
</swiper-item>
|
|
|
|
|
</block>
|
|
|
|
|
</swiper>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 商品基本信息 -->
|
|
|
|
|
<view class="goods-info">
|
|
|
|
|
<view style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 10rpx;">
|
|
|
|
|
<view style="display: flex; align-items: center; flex: 1;">
|
|
|
|
|
<view style="display: inline-block; margin-right: 10rpx; font-size: 18rpx; color: #fff; background: rgba(218, 165, 32, 0.8); padding: 4rpx 10rpx; border-radius: 15rpx; vertical-align: middle; backdrop-filter: blur(10rpx); border: 1rpx solid rgba(255, 255, 255, 0.3); box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15), inset 0 1rpx 0 rgba(255, 255, 255, 0.5); text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.2); font-weight: bold; margin-top: -20rpx;">{{goodsDetail.supplyStatus || '暂无状态'}}</view>
|
|
|
|
|
<text class="goods-name">{{goodsDetail.name}}</text>
|
|
|
|
|
<span style="vertical-align: middle; font-size: 20rpx; color: white; background: linear-gradient(135deg, #4a90e2 0%, #2b66f0 50%, #1a4bbd 100%); padding: 4rpx 8rpx; clip-path: polygon(50% 0%, 70% 10%, 100% 30%, 100% 70%, 70% 90%, 50% 100%, 30% 90%, 0% 70%, 0% 30%, 30% 10%); margin-left: 8rpx; box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.3), inset 0 1rpx 2rpx rgba(255, 255, 255, 0.5); text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.5); font-weight: bold; margin-top: -20rpx;">V</span>
|
|
|
|
|
</view>
|
|
|
|
|
<view style="display: flex; align-items: flex-start;">
|
|
|
|
|
<view class="source-type-badge" style="display: flex; align-items: center; justify-content: center; margin-right: 10rpx;">
|
|
|
|
|
<text style="color: {{goodsDetail.sourceTypeColor}}; font-weight: bold;">{{goodsDetail.sourceType || '暂无'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="goods-price" style="position: relative; display: flex; align-items: center; justify-content: space-between;">
|
|
|
|
|
<view style="display: flex; align-items: center;">
|
|
|
|
|
<text class="price-symbol">销售价格:</text>
|
|
|
|
|
<text class="price-value">{{goodsDetail.price || '暂无'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view style="display: flex; align-items: center;">
|
|
|
|
|
<text class="price-symbol">采购价格:</text>
|
|
|
|
|
<text class="price-value">{{goodsDetail.costprice || '暂无'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 商品详细信息网格 -->
|
|
|
|
|
<view class="info-grid">
|
|
|
|
|
<view class="info-row">
|
|
|
|
|
<view class="info-item">
|
|
|
|
|
<view class="info-label-container">
|
|
|
|
|
<text class="info-label">地区</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info-value-container">
|
|
|
|
|
<text class="info-value">{{goodsDetail.region || '暂无'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<view class="info-item">
|
|
|
|
|
<view class="info-label-container">
|
|
|
|
|
<text class="info-label">新鲜程度</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info-value-container">
|
|
|
|
|
<text class="info-value">{{goodsDetail.freshness || '暂无'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info-row">
|
|
|
|
|
<view class="info-item">
|
|
|
|
|
<view class="info-label-container">
|
|
|
|
|
<text class="info-label">蛋黄</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info-value-container">
|
|
|
|
|
<text class="info-value">{{goodsDetail.yolk || '暂无'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info-item">
|
|
|
|
|
<view class="info-label-container">
|
|
|
|
|
<text class="info-label">产品包装</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info-value-container">
|
|
|
|
|
<text class="info-value">{{goodsDetail.producting || '暂无'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 规格信息 -->
|
|
|
|
|
<view class="weight-quantity-info" wx:if="{{(goodsDetail.weightQuantityData && goodsDetail.weightQuantityData.length > 0) || goodsDetail.specInfo || goodsDetail.spec}}">
|
|
|
|
|
<view class="wq-title">规格信息</view>
|
|
|
|
|
<view class="wq-list">
|
|
|
|
|
<block wx:if="{{goodsDetail.weightQuantityData && goodsDetail.weightQuantityData.length > 0}}">
|
|
|
|
|
<view class="wq-item" wx:for="{{goodsDetail.weightQuantityData}}" wx:key="index">
|
|
|
|
|
<text class="wq-text">{{item.display}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</block>
|
|
|
|
|
<block wx:elif="{{goodsDetail.specInfo && goodsDetail.specInfo.length > 0}}">
|
|
|
|
|
<view class="wq-item" wx:for="{{goodsDetail.specInfo}}" wx:key="index">
|
|
|
|
|
<text class="wq-text">{{item}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</block>
|
|
|
|
|
<block wx:else>
|
|
|
|
|
<view class="wq-item">
|
|
|
|
|
<text class="wq-text">{{goodsDetail.spec || '暂无规格信息'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</block>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 货源描述 -->
|
|
|
|
|
<view class="goods-description product-description" wx:if="{{goodsDetail.description || goodsDetail.remark || true}}">
|
|
|
|
|
<view class="gd-label-container">
|
|
|
|
|
<text class="gd-label">货源描述</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="gd-content">
|
|
|
|
|
<text class="gd-value">{{goodsDetail.description || goodsDetail.remark || '暂无描述'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 创建人信息 -->
|
|
|
|
|
<view class="creator-info">
|
|
|
|
|
<view class="creator-item">
|
|
|
|
|
<text class="creator-label">创建人:</text>
|
|
|
|
|
<text class="creator-name">{{goodsDetail.creatorName || '暂无'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="creator-item">
|
|
|
|
|
<text class="creator-label">创建时间:</text>
|
|
|
|
|
<text class="create-time">{{goodsDetail.formattedCreatedAt || '暂无'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 操作按钮区域 -->
|
|
|
|
|
<view class="action-buttons">
|
|
|
|
|
<button
|
|
|
|
|
class="edit-button bottom-button"
|
|
|
|
|
bindtap="showEditModal"
|
|
|
|
|
>
|
|
|
|
|
编辑货源
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
class="publish-button bottom-button"
|
|
|
|
|
bindtap="unpublishSupply"
|
|
|
|
|
>
|
|
|
|
|
下架
|
|
|
|
|
</button>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 编辑货源弹窗(全屏) -->
|
|
|
|
|
<view class="modal" wx:if="{{showEditModal}}" style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: white; z-index: 999;">
|
|
|
|
|
<!-- 顶部导航栏 -->
|
|
|
|
|
<view style="display: flex; justify-content: space-between; align-items: center; padding: 30rpx; border-bottom: 1rpx solid #eee; background-color: #fafafa; position: sticky; top: 0; z-index: 10;">
|
|
|
|
|
<view bindtap="hideEditModal" style="font-size: 32rpx; color: #666;">取消</view>
|
|
|
|
|
<view style="font-size: 32rpx; font-weight: bold; color: #333;">编辑货源</view>
|
|
|
|
|
<view bindtap="saveEdit" style="font-size: 32rpx; color: #07c160;">提交</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<scroll-view scroll-y="true" style="height: calc(100vh - 90rpx); overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 40rpx 60rpx; box-sizing: border-box;">
|
|
|
|
|
<view>
|
|
|
|
|
|
|
|
|
|
<!-- 照片上传区域 -->
|
|
|
|
|
<view style="font-size: 28rpx; font-weight: 500; color: #333; margin-bottom: 12rpx; margin-top: 10rpx;">商品图片</view>
|
|
|
|
|
<view class="upload-area" style="width: 100%; margin: 0 auto; margin-bottom: 30rpx; border: 1rpx dashed #ddd; border-radius: 12rpx; padding: 24rpx;">
|
|
|
|
|
<view style="display: flex; flex-wrap: wrap;">
|
|
|
|
|
<!-- 已上传的图片 -->
|
|
|
|
|
<view wx:for="{{editSupply.imageUrls}}" wx:key="index" style="position: relative; width: 160rpx; height: 160rpx; margin: 10rpx; border-radius: 12rpx; overflow: hidden; box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.1);">
|
|
|
|
|
<image src="{{item}}" mode="aspectFill" style="width: 100%; height: 100%;" bindtap="previewImage" data-urls="{{editSupply.imageUrls}}" data-index="{{index}}"></image>
|
|
|
|
|
<view class="delete-icon" style="position: absolute; top: 8rpx; right: 8rpx; background-color: rgba(0,0,0,0.6); color: white; width: 44rpx; height: 44rpx; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 28rpx;" bindtap="deleteImage" data-index="{{index}}" data-type="edit">×</view>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 上传按钮 -->
|
|
|
|
|
<view wx:if="{{editSupply.imageUrls.length < 5}}" style="width: 160rpx; height: 160rpx; margin: 10rpx; border: 2rpx dashed #1677ff; border-radius: 12rpx; display: flex; align-items: center; justify-content: center; background-color: #f0f8ff;" bindtap="chooseImage" data-type="edit">
|
|
|
|
|
<text style="font-size: 60rpx; color: #1677ff;">+</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view style="font-size: 22rpx; color: #999; margin-top: 16rpx; text-align: center;">最多上传5张图片</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<view style="font-size: 28rpx; font-weight: 500; color: #333; margin-bottom: 12rpx; margin-left: 10rpx;">商品名称</view>
|
|
|
|
|
<view
|
|
|
|
|
bindtap="openNameSelectModal"
|
|
|
|
|
style="width: 100%; height: 90rpx; line-height: 90rpx; padding: 0 24rpx; font-size: 30rpx; border: 2rpx solid #eee; border-radius: 12rpx; box-sizing: border-box; margin: 0 auto 30rpx; display: block; background: white; position: relative;">
|
|
|
|
|
<view style="display: flex; justify-content: space-between; align-items: center;">
|
|
|
|
|
<text style="text-align: left;">{{editSupply.productName || editSupply.name || '请选择商品名称'}}</text>
|
|
|
|
|
<text style="color: #999;">▼</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view style="font-size: 28rpx; font-weight: 500; color: #333; margin-bottom: 12rpx; margin-left: 10rpx;">蛋黄</view>
|
|
|
|
|
<view bindtap="openYolkSelectModal" style="width: 100%; height: 90rpx; line-height: 90rpx; padding: 0 24rpx; font-size: 30rpx; border: 2rpx solid #eee; border-radius: 12rpx; box-sizing: border-box; margin: 0 auto 30rpx; display: block; background: white; position: relative;">
|
|
|
|
|
<view style="display: flex; justify-content: space-between; align-items: center;">
|
|
|
|
|
<text style="text-align: left;">{{editSupply.yolk || '请选择蛋黄类型'}}</text>
|
|
|
|
|
<text style="color: #999;">▼</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<view style="font-size: 28rpx; font-weight: 500; color: #333; margin-bottom: 12rpx; margin-left: 10rpx;">规格</view>
|
|
|
|
|
<!-- 修改为可点击的视图,点击后打开自定义弹窗 -->
|
|
|
|
|
<view bindtap="onEditSpecChange" style="width: 100%; height: 90rpx; line-height: 90rpx; padding: 0 24rpx; font-size: 30rpx; border: 2rpx solid #eee; border-radius: 12rpx; box-sizing: border-box; margin: 0 auto 30rpx; display: block; background: white; position: relative; z-index: 1;">
|
|
|
|
|
<view style="display: flex; justify-content: space-between; align-items: center;">
|
|
|
|
|
<text style="text-align: left;">{{editSupply.spec || '请选择规格'}}</text>
|
|
|
|
|
<text style="color: #999;">▼</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view style="font-size: 28rpx; font-weight: 500; color: #333; margin-bottom: 12rpx; margin-left: 10rpx;">地区</view>
|
|
|
|
|
<view
|
|
|
|
|
class="region-picker input"
|
|
|
|
|
bindtap="openEditRegionModal"
|
|
|
|
|
style="width: 100%; height: 90rpx; line-height: 90rpx; padding: 0 24rpx; font-size: 30rpx; border: 2rpx solid #eee; border-radius: 12rpx; box-sizing: border-box; margin: 0 auto 30rpx; display: block;"
|
|
|
|
|
>
|
|
|
|
|
<text style="text-align: left;">{{editSupply.region || '请选择省市区'}}</text>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<view style="font-size: 28rpx; font-weight: 500; color: #333; margin-bottom: 12rpx; margin-left: 10rpx;">价格</view>
|
|
|
|
|
<input class="input" type="text" placeholder="请输入价格" bindinput="onEditInput" data-field="price" value="{{editSupply.price}}" style="width: 100%; height: 90rpx; line-height: 90rpx; padding: 0 24rpx; font-size: 30rpx; border: 2rpx solid #eee; border-radius: 12rpx; box-sizing: border-box; margin: 0 auto 30rpx; display: block;" placeholder-style="font-size: 24rpx; color: #999; text-align: left;"></input>
|
|
|
|
|
|
|
|
|
|
<view style="font-size: 28rpx; font-weight: 500; color: #333; margin-bottom: 12rpx; margin-left: 10rpx;">件数</view>
|
|
|
|
|
<input class="input" type="number" placeholder="请输入件数" bindinput="onEditInput" data-field="minOrder" value="{{editSupply.minOrder}}" style="width: 100%; height: 90rpx; line-height: 90rpx; padding: 0 24rpx; font-size: 30rpx; border: 2rpx solid #eee; border-radius: 12rpx; box-sizing: border-box; margin: 0 auto 30rpx; display: block;" placeholder-style="font-size: 24rpx; color: #999; text-align: left;"></input>
|
|
|
|
|
|
|
|
|
|
<view style="font-size: 28rpx; font-weight: 500; color: #333; margin-bottom: 12rpx; margin-left: 10rpx;">斤重</view>
|
|
|
|
|
<input class="input" type="text" placeholder="请输入斤重" bindinput="onEditInput" data-field="grossWeight" value="{{editSupply.grossWeight || ''}}" style="width: 100%; height: 90rpx; line-height: 90rpx; padding: 0 24rpx; font-size: 30rpx; border: 2rpx solid #eee; border-radius: 12rpx; box-sizing: border-box; margin: 0 auto 30rpx; display: block;" placeholder-style="font-size: 24rpx; color: #999; text-align: left;"></input>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 添加底部空白区域 -->
|
|
|
|
|
<view style="height: 20vh; background: transparent;"></view>
|
|
|
|
|
</view>
|
|
|
|
|
</scroll-view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 图片预览弹窗 -->
|
|
|
|
|
<view class="image-preview-mask" wx:if="{{showImagePreview}}" style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.9); display: flex; justify-content: center; align-items: center; z-index: 9999;" catchtouchmove="true" bindtap="closeImagePreview">
|
|
|
|
|
<view style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center;">
|
|
|
|
|
<swiper
|
|
|
|
|
style="width: 100%; height: 100%;"
|
|
|
|
|
current="{{previewImageIndex}}"
|
|
|
|
|
bindchange="onPreviewImageChange"
|
|
|
|
|
indicator-dots="true"
|
|
|
|
|
indicator-color="rgba(255,255,255,0.5)"
|
|
|
|
|
indicator-active-color="#fff">
|
|
|
|
|
<block wx:for="{{previewImageUrls}}" wx:key="*this">
|
|
|
|
|
<swiper-item>
|
|
|
|
|
<image
|
|
|
|
|
src="{{item}}"
|
|
|
|
|
mode="aspectFit"
|
|
|
|
|
style="width: 100%; height: 100%; transform: scale({{scale}}) translate({{offsetX}}px, {{offsetY}}px); transform-origin: center; transition: transform 0.1s;"
|
|
|
|
|
bindtap="handleImageTap"
|
|
|
|
|
bindtouchstart="handleTouchStart"
|
|
|
|
|
bindtouchmove="handleTouchMove"
|
|
|
|
|
bindtouchend="handleTouchEnd"
|
|
|
|
|
bindload="onPreviewImageLoad"
|
|
|
|
|
></image>
|
|
|
|
|
</swiper-item>
|
|
|
|
|
</block>
|
|
|
|
|
</swiper>
|
|
|
|
|
<view style="position: absolute; top: 40rpx; right: 40rpx; color: white; font-size: 40rpx;">
|
|
|
|
|
<text bindtap="closeImagePreview" style="background: rgba(0,0,0,0.5); padding: 10rpx 20rpx; border-radius: 50%;">×</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 自定义规格选择弹窗 - 适配原生风格 -->
|
|
|
|
|
<view class="spec-select-modal" wx:if="{{showSpecSelectModal}}" style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.5); display: flex; justify-content: center; z-index: 9999;" catchtouchmove="true">
|
|
|
|
|
<view style="position: fixed; bottom: 0; left: 0; right: 0; background: white; border-radius: 20rpx 20rpx 0 0; max-height: 80vh;">
|
|
|
|
|
<!-- 顶部操作栏:取消和确定按钮 -->
|
|
|
|
|
<view style="padding: 20rpx; display: flex; justify-content: space-between; align-items: center; border-bottom: 1rpx solid #eee;">
|
|
|
|
|
<view bindtap="closeSpecSelectModal" style="font-size: 32rpx; color: #333; padding: 10rpx 20rpx;">取消</view>
|
|
|
|
|
<view bindtap="confirmSpecSelection" style="font-size: 32rpx; color: #07c160; padding: 10rpx 20rpx;">确定</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 搜索框区域 -->
|
|
|
|
|
<view style="padding: 20rpx;">
|
|
|
|
|
<view style="position: relative; background: #f5f5f5; border-radius: 40rpx; padding: 0 30rpx;">
|
|
|
|
|
<input
|
|
|
|
|
type="text"
|
|
|
|
|
placeholder="搜索规格"
|
|
|
|
|
value="{{modalSpecSearchKeyword}}"
|
|
|
|
|
bindinput="onModalSpecSearchInput"
|
|
|
|
|
confirm-type="search"
|
|
|
|
|
style="width: 100%; height: 70rpx; line-height: 70rpx; font-size: 28rpx; background: transparent;"
|
|
|
|
|
/>
|
|
|
|
|
<view
|
|
|
|
|
wx:if="{{modalSpecSearchKeyword}}"
|
|
|
|
|
bindtap="clearModalSpecSearch"
|
|
|
|
|
style="position: absolute; right: 30rpx; top: 50%; transform: translateY(-50%); color: #999;"
|
|
|
|
|
>
|
|
|
|
|
✕
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 规格列表 -->
|
|
|
|
|
<scroll-view
|
|
|
|
|
scroll-y="true"
|
|
|
|
|
style="max-height: 60vh; padding: 0; -webkit-overflow-scrolling: touch;"
|
|
|
|
|
enable-back-to-top="false"
|
|
|
|
|
>
|
|
|
|
|
<view
|
|
|
|
|
wx:for="{{filteredModalSpecOptions}}"
|
|
|
|
|
wx:key="index"
|
|
|
|
|
class="spec-item {{selectedModalSpecIndex === index ? 'selected' : ''}}"
|
|
|
|
|
bindtap="onModalSpecSelect"
|
|
|
|
|
data-index="{{index}}"
|
|
|
|
|
style="padding: 30rpx 40rpx; border-bottom: 1rpx solid #f0f0f0; font-size: 28rpx; color: {{selectedModalSpecIndex === index ? '#07c160' : '#333'}}; text-align: left;"
|
|
|
|
|
>
|
|
|
|
|
{{item}}
|
|
|
|
|
</view>
|
|
|
|
|
</scroll-view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 商品名称选择弹窗 - 白色样式 -->
|
|
|
|
|
<view class="custom-select-modal" wx:if="{{showNameSelectModal}}" style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.5); display: flex; justify-content: center; z-index: 9999;" catchtouchmove="true">
|
|
|
|
|
<view style="position: fixed; bottom: 0; left: 0; right: 0; background: white; border-radius: 20rpx 20rpx 0 0; max-height: 80vh;">
|
|
|
|
|
<!-- 顶部操作栏:取消和确定按钮 -->
|
|
|
|
|
<view style="padding: 20rpx; display: flex; justify-content: space-between; align-items: center; border-bottom: 1rpx solid #eee;">
|
|
|
|
|
<view bindtap="closeNameSelectModal" style="font-size: 32rpx; color: #333; padding: 10rpx 20rpx;">取消</view>
|
|
|
|
|
<view bindtap="confirmNameSelection" style="font-size: 32rpx; color: #07c160; padding: 10rpx 20rpx;">确定</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 商品名称列表 -->
|
|
|
|
|
<scroll-view
|
|
|
|
|
scroll-y="true"
|
|
|
|
|
style="max-height: 60vh; padding: 0; -webkit-overflow-scrolling: touch;"
|
|
|
|
|
enable-back-to-top="false"
|
|
|
|
|
>
|
|
|
|
|
<view
|
|
|
|
|
wx:for="{{productNameOptions}}"
|
|
|
|
|
wx:key="index"
|
|
|
|
|
class="select-item {{selectedNameIndex === index ? 'selected' : ''}}"
|
|
|
|
|
bindtap="onNameSelect"
|
|
|
|
|
data-index="{{index}}"
|
|
|
|
|
style="padding: 32rpx 40rpx; border-bottom: 1rpx solid #f0f0f0; font-size: 32rpx; color: {{selectedNameIndex === index ? '#07c160' : '#131413'}}; text-align: center;"
|
|
|
|
|
>
|
|
|
|
|
{{item}}
|
|
|
|
|
</view>
|
|
|
|
|
</scroll-view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 蛋黄选择弹窗 - 白色样式 -->
|
|
|
|
|
<view class="custom-select-modal" wx:if="{{showYolkSelectModal}}" style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.5); display: flex; justify-content: center; z-index: 9999;" catchtouchmove="true">
|
|
|
|
|
<view style="position: fixed; bottom: 0; left: 0; right: 0; background: white; border-radius: 20rpx 20rpx 0 0; max-height: 80vh;">
|
|
|
|
|
<!-- 顶部操作栏:取消和确定按钮 -->
|
|
|
|
|
<view style="padding: 20rpx; display: flex; justify-content: space-between; align-items: center; border-bottom: 1rpx solid #eee;">
|
|
|
|
|
<view bindtap="closeYolkSelectModal" style="font-size: 32rpx; color: #333; padding: 10rpx 20rpx;">取消</view>
|
|
|
|
|
<view bindtap="confirmYolkSelection" style="font-size: 32rpx; color: #07c160; padding: 10rpx 20rpx;">确定</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 蛋黄列表 -->
|
|
|
|
|
<scroll-view
|
|
|
|
|
scroll-y="true"
|
|
|
|
|
style="max-height: 60vh; padding: 0; -webkit-overflow-scrolling: touch; -webkit-scrollbar: none; scrollbar-width: none;"
|
|
|
|
|
enable-back-to-top="false"
|
|
|
|
|
>
|
|
|
|
|
<view
|
|
|
|
|
wx:for="{{yolkOptions}}"
|
|
|
|
|
wx:key="index"
|
|
|
|
|
class="select-item {{selectedYolkIndex === index ? 'selected' : ''}}"
|
|
|
|
|
bindtap="onYolkSelect"
|
|
|
|
|
data-index="{{index}}"
|
|
|
|
|
style="padding: 32rpx 40rpx; border-bottom: 1rpx solid #f0f0f0; font-size: 32rpx; color: {{selectedYolkIndex === index ? '#07c160' : '#131413'}}; text-align: center;"
|
|
|
|
|
>
|
|
|
|
|
{{item}}
|
|
|
|
|
</view>
|
|
|
|
|
</scroll-view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|