242 lines
6.0 KiB
Vue
242 lines
6.0 KiB
Vue
<script setup>
|
|
import { ref, reactive, computed } from 'vue'
|
|
import {
|
|
getUserWithdrawList,
|
|
getUserTradeRecordList
|
|
} from '@/api/my-index'
|
|
|
|
const props = defineProps({
|
|
// 0 积分记录 1 提现记录
|
|
type: {
|
|
type: String,
|
|
default: '0'
|
|
}
|
|
})
|
|
|
|
const topNav = computed(() => {
|
|
const list =
|
|
props.type === '0'
|
|
? [
|
|
{ name: '全部', id: '' },
|
|
{ name: '拼单获得', id: '1', state: '+', color: '#2ecc71' },
|
|
{ name: '消费', id: '2', state: '-', color: '#e74c3c' },
|
|
{ name: '退款', id: '3', state: '-', color: '#f39c12' },
|
|
{ name: '系统赠送', id: '4', state: '+', color: '#2ecc71' },
|
|
{ name: '系统扣除', id: '5', state: '-', color: '#e74c3c' },
|
|
{ name: '签到', id: '6', state: '+', color: '#2ecc71' },
|
|
{ name: '提现', id: '7', state: '-', color: '#e74c3c' },
|
|
{ name: '提现冻结', id: '8', state: '-', color: '#f39c12' },
|
|
{
|
|
name: '提现拒绝释放',
|
|
id: '9',
|
|
state: '-',
|
|
color: '#e74c3c'
|
|
},
|
|
{
|
|
name: '提现成功扣除',
|
|
id: '10',
|
|
state: '-',
|
|
color: '#e74c3c'
|
|
}
|
|
]
|
|
: [
|
|
{ name: '全部', id: '' },
|
|
{ name: '待处理', id: '0', state: '', color: '#95a5a6' },
|
|
{ name: '处理中', id: '1', state: '', color: '#3498db' },
|
|
{ name: '提现成功', id: '2', state: '-', color: '#2ecc71' },
|
|
{ name: '提现失败', id: '3', state: '', color: '#e74c3c' },
|
|
{ name: '已取消', id: '4', state: '', color: '#95a5a6' }
|
|
]
|
|
return list
|
|
})
|
|
|
|
const paging = ref(null)
|
|
const dataList = ref([])
|
|
const formData = reactive({
|
|
type: '',
|
|
pageSize: 15
|
|
})
|
|
|
|
const getData = async (pageNum, pageSize) => {
|
|
try {
|
|
const isShow = props.type === '0'
|
|
const api = isShow ? getUserTradeRecordList : getUserWithdrawList
|
|
const res = await api({
|
|
pageNum,
|
|
pageSize,
|
|
[isShow ? 'changeType' : 'status']: formData.type
|
|
})
|
|
paging.value.complete(res.rows)
|
|
} catch (error) {
|
|
paging.value.complete(false)
|
|
}
|
|
}
|
|
|
|
const onTop = id => {
|
|
formData.type = id
|
|
getData(1, formData.pageSize)
|
|
}
|
|
|
|
// onLoad(() => {
|
|
// getData()
|
|
// })
|
|
</script>
|
|
|
|
<template>
|
|
<z-paging
|
|
ref="paging"
|
|
v-model="dataList"
|
|
:default-page-size="formData.pageSize"
|
|
safe-area-inset-bottom
|
|
use-safe-area-placeholder
|
|
@query="getData"
|
|
>
|
|
<template #top>
|
|
<view class="top-options">
|
|
<view
|
|
v-for="(item, index) in topNav"
|
|
:key="index"
|
|
:class="{ active: item.id === formData.type }"
|
|
class="text"
|
|
@click="onTop(item.id)"
|
|
>
|
|
{{ item.name }}
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<view class="card-box">
|
|
<view
|
|
v-for="item in dataList"
|
|
:key="item.withdrawalId"
|
|
class="item-row"
|
|
>
|
|
<image
|
|
v-if="props.type === '0'"
|
|
src="/static/images/my-index/shangjia.png"
|
|
mode="heightFix"
|
|
class="left-icon"
|
|
></image>
|
|
<image
|
|
v-else
|
|
src="/static/images/my-index/shangjia1.png"
|
|
mode="heightFix"
|
|
class="left-icon"
|
|
></image>
|
|
<view class="right-box">
|
|
<view class="name-box">
|
|
<text>
|
|
{{
|
|
props.type === '0' ? item.description : item.withdrawalNo
|
|
}}
|
|
</text>
|
|
<text>
|
|
{{ props.type === '0' ? item.createTime : item.updateTime }}
|
|
</text>
|
|
</view>
|
|
<view class="state-box">
|
|
<text
|
|
:style="{
|
|
color:
|
|
topNav[
|
|
props.type === '0' ? item.changeType : item.status + 1
|
|
].color
|
|
}"
|
|
>
|
|
{{
|
|
topNav[
|
|
props.type === '0' ? item.changeType : item.status + 1
|
|
].name
|
|
}}
|
|
</text>
|
|
<text>
|
|
{{
|
|
topNav[
|
|
props.type === '0' ? item.changeType : item.status + 1
|
|
].state
|
|
}}{{
|
|
props.type === '0' ? item.changeAmount : item.actualAmount
|
|
}}
|
|
</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</z-paging>
|
|
</template>
|
|
|
|
<style lang="scss" scoped>
|
|
@import '@/styles/top-selector.scss';
|
|
// 全屏背景色
|
|
page {
|
|
background: #f9f9f9;
|
|
}
|
|
|
|
.top-options {
|
|
margin: 0;
|
|
background: #ffffff;
|
|
padding: 32rpx 24rpx;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.card-box {
|
|
padding: 32rpx 24rpx;
|
|
|
|
.item-row + .item-row {
|
|
margin-top: 16rpx;
|
|
}
|
|
|
|
.item-row {
|
|
display: flex;
|
|
align-items: center;
|
|
background: #ffffff;
|
|
border-radius: 16rpx;
|
|
padding: 16rpx 32rpx;
|
|
.left-icon {
|
|
height: 96rpx;
|
|
margin-right: 16rpx;
|
|
flex-shrink: 0;
|
|
}
|
|
.right-box {
|
|
width: 100%;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
font-family: PingFang SC, PingFang SC;
|
|
font-style: normal;
|
|
text-transform: none;
|
|
.name-box,
|
|
.state-box {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
}
|
|
.name-box {
|
|
text {
|
|
font-weight: 500;
|
|
font-size: 28rpx;
|
|
color: #000000;
|
|
&:last-child {
|
|
font-size: 24rpx;
|
|
color: #999999;
|
|
}
|
|
}
|
|
}
|
|
.state-box {
|
|
margin-left: 16rpx;
|
|
flex-shrink: 0;
|
|
text-align: right;
|
|
text {
|
|
font-weight: 400;
|
|
font-size: 24rpx;
|
|
&:last-child {
|
|
font-weight: 500;
|
|
font-size: 32rpx;
|
|
color: #333333;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|