|
@@ -10,6 +10,18 @@
|
|
|
<button class="refund-nav-btn" @click="navigateToRefund">退款处理</button>
|
|
<button class="refund-nav-btn" @click="navigateToRefund">退款处理</button>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
|
|
+ <!-- 锁定状态筛选 -->
|
|
|
|
|
+ <view class="filter-bar">
|
|
|
|
|
+ <view
|
|
|
|
|
+ v-for="option in lockOptions"
|
|
|
|
|
+ :key="option.label"
|
|
|
|
|
+ class="filter-item"
|
|
|
|
|
+ :class="{ active: lockFilter === option.value }"
|
|
|
|
|
+ @click="handleLockFilterChange(option.value)">
|
|
|
|
|
+ <text>{{ option.label }}</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
<!-- 用户列表 -->
|
|
<!-- 用户列表 -->
|
|
|
<view class="user-list" v-if="list.length > 0">
|
|
<view class="user-list" v-if="list.length > 0">
|
|
|
<view class="user-item" v-for="(item, index) in list" :key="index">
|
|
<view class="user-item" v-for="(item, index) in list" :key="index">
|
|
@@ -234,6 +246,12 @@ const pageSize = ref(10)
|
|
|
const hasMore = ref(true)
|
|
const hasMore = ref(true)
|
|
|
const loadMoreStatus = ref('more')
|
|
const loadMoreStatus = ref('more')
|
|
|
const searchKeyword = ref('')
|
|
const searchKeyword = ref('')
|
|
|
|
|
+const lockFilter = ref('')
|
|
|
|
|
+const lockOptions = [
|
|
|
|
|
+ { label: '全部', value: '' },
|
|
|
|
|
+ { label: '已锁定', value: 1 },
|
|
|
|
|
+ { label: '未锁定', value: 0 }
|
|
|
|
|
+]
|
|
|
const showRefundModal = ref(false)
|
|
const showRefundModal = ref(false)
|
|
|
const refundUser = ref(null)
|
|
const refundUser = ref(null)
|
|
|
const refundReason = ref('')
|
|
const refundReason = ref('')
|
|
@@ -269,6 +287,7 @@ const loadData = async (isLoadMore = false) => {
|
|
|
pageSize: pageSize.value
|
|
pageSize: pageSize.value
|
|
|
}
|
|
}
|
|
|
if (searchKeyword.value) params.mobilePhone = searchKeyword.value
|
|
if (searchKeyword.value) params.mobilePhone = searchKeyword.value
|
|
|
|
|
+ if (lockFilter.value !== '') params.locked = lockFilter.value
|
|
|
|
|
|
|
|
const res = await getAppUserList(params)
|
|
const res = await getAppUserList(params)
|
|
|
if (res && res.code === 200) {
|
|
if (res && res.code === 200) {
|
|
@@ -309,6 +328,12 @@ const handleSearch = () => {
|
|
|
loadData()
|
|
loadData()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const handleLockFilterChange = (value) => {
|
|
|
|
|
+ if (lockFilter.value === value) return
|
|
|
|
|
+ lockFilter.value = value
|
|
|
|
|
+ loadData()
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const navigateToRefund = () => {
|
|
const navigateToRefund = () => {
|
|
|
uni.navigateTo({ url: '/pages/finance/refund' })
|
|
uni.navigateTo({ url: '/pages/finance/refund' })
|
|
|
}
|
|
}
|
|
@@ -491,6 +516,29 @@ onMounted(async () => {
|
|
|
transform: scale(0.97);
|
|
transform: scale(0.97);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+.filter-bar {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 16rpx;
|
|
|
|
|
+ padding: 12rpx 20rpx;
|
|
|
|
|
+ background-color: #FFFFFF;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.filter-item {
|
|
|
|
|
+ padding: 8rpx 24rpx;
|
|
|
|
|
+ background-color: #F5F5F5;
|
|
|
|
|
+ border-radius: 100rpx;
|
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
|
+ color: #666666;
|
|
|
|
|
+ flex-shrink: 0;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.filter-item.active {
|
|
|
|
|
+ background: #C6171E;
|
|
|
|
|
+ color: #FFFFFF;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
.user-list {
|
|
.user-list {
|
|
|
padding: 20rpx;
|
|
padding: 20rpx;
|
|
|
}
|
|
}
|