Browse Source

Merge pull request 'Swt' (#17) from Swt into Main

Reviewed-on: http://8.137.125.67:4000/SwtTt29/Program-mini/pulls/17
pull/1/head
SwtTt29 3 months ago
parent
commit
d2762c3b83
  1. 2
      .gitignore
  2. 1584
      pages/seller/index.js
  3. 107
      pages/seller/index.wxml
  4. 182
      pages/seller/index.wxss

2
.gitignore

@ -1 +1,3 @@
node_modules
pages/test/
pages/test-tools/

1584
pages/seller/index.js

File diff suppressed because it is too large

107
pages/seller/index.wxml

@ -534,15 +534,12 @@
<view style="font-size: 28rpx; font-weight: 500; color: #333; margin-bottom: 12rpx; margin-left: 10rpx;">地区</view>
<picker
mode="region"
value="{{newSupplyRegionArray}}"
bindchange="onNewSupplyRegionChange"
class="region-picker input"
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;"
>
<view bindtap="openCreateRegionModal" 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>{{newSupply.region || '请选择省市区'}}</text>
</picker>
<text style="color: #999;">▼</text>
</view>
</view>
<view style="display: flex; justify-content: space-between; margin-top: 20rpx; margin-bottom: 20rpx; gap: 20rpx;">
<button bindtap="hideModal" style="flex: 1; height: 90rpx; line-height: 90rpx; background-color: #f5f5f5; color: #666; font-size: 30rpx; border-radius: 12rpx; margin: 0; display: flex; align-items: center; justify-content: center;">取消</button>
@ -617,15 +614,13 @@
<view style="font-size: 28rpx; font-weight: 500; color: #333; margin-bottom: 12rpx; margin-left: 10rpx;">地区</view>
<picker
mode="region"
value="{{editSupplyRegionArray}}"
bindchange="onEditSupplyRegionChange"
<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>{{editSupply.region || '请选择省市区'}}</text>
</picker>
</view>
<view style="display: flex; justify-content: space-between; margin-top: 20rpx; margin-bottom: 20rpx; gap: 20rpx;">
<button bindtap="hideEditModal" style="flex: 1; height: 90rpx; line-height: 90rpx; background-color: #f5f5f5; color: #666; font-size: 30rpx; border-radius: 12rpx; margin: 0; display: flex; align-items: center; justify-content: center;">取消</button>
@ -860,4 +855,90 @@
</view>
</view>
<!-- 地区选择弹窗 -->
<view class="region-select-modal" wx:if="{{showRegionSelectModal}}" 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;">
<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="closeRegionModal" style="font-size: 32rpx; color: #333; padding: 10rpx 20rpx;">取消</view>
<view bindtap="confirmRegionSelection" style="font-size: 32rpx; color: #07c160; padding: 10rpx 20rpx;">确定</view>
</view>
<!-- 搜索框 -->
<view style="padding: 12rpx 20rpx; border-bottom: 1rpx solid #eee;">
<view class="search-box-compact">
<text class="search-icon-text">🔍</text>
<input
class="search-input-compact"
placeholder="搜索地区"
value="{{currentRegionMode === 'create' ? regionSearchKeyword : editRegionSearchKeyword}}"
bindinput="onRegionSearchInput"
bindfocus="onRegionSearchFocus"
/>
<image
class="clear-icon-compact"
wx:if="{{(currentRegionMode === 'create' && regionSearchKeyword) || (currentRegionMode === 'edit' && editRegionSearchKeyword)}}"
src="/images/close.png"
mode="aspectFit"
bindtap="clearRegionSearch"
></image>
</view>
</view>
<!-- 显示当前选择的地区 -->
<view style="padding: 20rpx; text-align: center; color: #666; font-size: 28rpx; border-bottom: 1rpx solid #f0f0f0;">
当前选择: {{regionOptions[selectedProvinceIndex].name}} {{currentCities[selectedCityIndex].name}} {{currentDistricts[selectedDistrictIndex]}}
</view>
<!-- 搜索结果区域 -->
<scroll-view
wx:if="{{showSearchResults}}"
style="max-height: 200rpx; border-bottom: 1rpx solid #eee;"
scroll-y
>
<view
wx:for="{{filteredRegionOptions}}"
wx:key="item"
class="search-result-item"
bindtap="selectSearchRegion"
data-region="{{item.region}}"
data-province-index="{{item.provinceIndex}}"
data-city-index="{{item.cityIndex}}"
data-district-index="{{item.districtIndex}}"
>
{{item.region}}
</view>
<view wx:if="{{filteredRegionOptions.length === 0}}" style="padding: 20rpx; text-align: center; color: #999;">
未找到匹配的地区
</view>
</scroll-view>
<!-- 三级联动地区选择器 -->
<view style="height: 400rpx; padding: 20rpx 0;">
<picker-view
indicator-style="height: 60rpx; background-color: rgba(245, 245, 245, 0.8);"
style="width: 100%; height: 100%;"
value="{{[selectedProvinceIndex, selectedCityIndex, selectedDistrictIndex]}}"
bindchange="onRegionChange"
>
<picker-view-column>
<view wx:for="{{regionOptions}}" wx:key="index" style="line-height: 60rpx; text-align: center; font-size: 32rpx;">
{{item.name}}
</view>
</picker-view-column>
<picker-view-column>
<view wx:for="{{currentCities}}" wx:key="index" style="line-height: 60rpx; text-align: center; font-size: 32rpx;">
{{item.name}}
</view>
</picker-view-column>
<picker-view-column>
<view wx:for="{{currentDistricts}}" wx:key="index" style="line-height: 60rpx; text-align: center; font-size: 32rpx;">
{{item}}
</view>
</picker-view-column>
</picker-view>
</view>
</view>
</view>
</view>

182
pages/seller/index.wxss

@ -49,12 +49,37 @@ button {
background-color: white;
}
/* 紧凑搜索框样式 */
.search-box-compact {
width: 100%;
display: flex;
align-items: center;
background-color: #f8f9fa;
border: 2rpx solid #e9ecef;
border-radius: 40rpx;
padding: 0 16rpx;
transition: all 0.3s ease;
}
.search-box-compact:focus-within {
border-color: #07c160;
box-shadow: 0 0 0 3rpx rgba(7, 193, 96, 0.1);
background-color: white;
}
.search-icon {
font-size: 28rpx;
color: #999;
margin-right: 16rpx;
}
/* 搜索图标文字 */
.search-icon-text {
font-size: 24rpx;
color: #999;
margin-right: 12rpx;
}
.search-input {
flex: 1;
padding: 24rpx 0;
@ -65,8 +90,20 @@ button {
outline: none;
}
.search-input::placeholder {
/* 紧凑搜索输入框 */
.search-input-compact {
flex: 1;
padding: 16rpx 0;
font-size: 26rpx;
color: #333;
background-color: transparent;
border: none;
outline: none;
}
.search-input-compact::placeholder {
color: #ccc;
font-size: 24rpx;
}
.clear-icon {
@ -79,11 +116,38 @@ button {
transition: all 0.2s ease;
}
/* 紧凑清除图标 */
.clear-icon-compact {
width: 28rpx;
height: 28rpx;
margin-left: 8rpx;
cursor: pointer;
transition: all 0.2s ease;
}
.clear-icon:hover {
background-color: transparent;
color: #666;
}
/* 地区搜索结果项样式 */
.search-result-item {
padding: 24rpx 32rpx;
font-size: 28rpx;
color: #333;
background-color: white;
border-bottom: 1rpx solid #f0f0f0;
transition: background-color 0.2s ease;
}
.search-result-item:hover {
background-color: #f5f5f5;
}
.search-result-item:last-child {
border-bottom: none;
}
/* 页面标题栏 */
.title-bar {
display: flex;
@ -826,3 +890,119 @@ button {
transform: translateZ(0);
will-change: transform;
}
/* 地区选择弹窗样式 */
.region-select-modal {
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;
overflow: hidden;
}
.region-select-modal .modal-content {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background: white;
border-radius: 20rpx 20rpx 0 0;
max-height: 80vh;
will-change: transform;
-webkit-transition: transform 0.3s ease;
transition: transform 0.3s ease;
}
.region-select-modal .modal-header {
padding: 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1rpx solid #eee;
background-color: white;
border-radius: 20rpx 20rpx 0 0;
}
.region-select-modal .modal-title {
font-size: 32rpx;
font-weight: 500;
color: #333;
}
.region-select-modal .modal-btn {
font-size: 32rpx;
padding: 10rpx 20rpx;
}
.region-select-modal .modal-btn.cancel {
color: #333;
}
.region-select-modal .modal-btn.confirm {
color: #07c160;
}
.region-select-modal .search-area {
padding: 20rpx;
background-color: white;
border-bottom: 1rpx solid #f0f0f0;
}
.region-select-modal .search-box {
position: relative;
background: #f5f5f5;
border-radius: 40rpx;
padding: 0 30rpx;
}
.region-select-modal .search-input {
width: 100%;
height: 70rpx;
line-height: 70rpx;
font-size: 28rpx;
background: transparent;
-webkit-appearance: none;
appearance: none;
border: none;
outline: none;
}
.region-select-modal .search-clear {
position: absolute;
right: 30rpx;
top: 50%;
transform: translateY(-50%);
color: #999;
font-size: 32rpx;
cursor: pointer;
}
.region-select-modal .region-list {
max-height: 60vh;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.region-select-modal .region-item {
padding: 32rpx 40rpx;
border-bottom: 1rpx solid #f0f0f0;
font-size: 32rpx;
color: #131413;
text-align: center;
cursor: pointer;
transition: background-color 0.2s ease;
}
.region-select-modal .region-item:hover {
background-color: #f5f5f5;
}
.region-select-modal .region-item.selected {
color: #07c160;
background-color: #f0f8f3;
}
Loading…
Cancel
Save