This commit is contained in:
Your Name
2026-03-01 14:17:59 +08:00
parent 65aa12f146
commit a07e844c47
6071 changed files with 777651 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
<template>
<page-meta :page-style="$theme.pageStyle">
<!-- #ifndef H5 -->
<navigation-bar
:front-color="$theme.navColor"
:background-color="$theme.navBgColor"
/>
<!-- #endif -->
</page-meta>
<view class="h-screen flex flex-col justify-center items-center">
<view>
<u-empty text="对不起,您访问的页面不存在" mode="data"></u-empty>
</view>
<view class="w-full px-[100rpx] mt-[40rpx]">
<router-navigate
class="bg-primary rounded-full text-btn-text leading-[80rpx] text-center"
to="/"
nav-type="reLaunch"
>
返回首页
</router-navigate>
</view>
</view>
</template>
@@ -0,0 +1,109 @@
<template>
<page-meta :page-style="$theme.pageStyle">
<!-- #ifndef H5 -->
<navigation-bar
:front-color="$theme.navColor"
:background-color="$theme.navBgColor"
/>
<!-- #endif -->
</page-meta>
<view class="recharge p-[20rpx]">
<view class="bg-white rounded-[14rpx] p-[40rpx]">
<view class="text-content">充值金额</view>
<view class="border-0 border-b border-solid border-light">
<input
v-model="money"
class="text-[60rpx] h-[60rpx] py-[24rpx]"
placeholder="0.00"
type="digit"
/>
</view>
<view class="mt-[20rpx] text-xs text-muted">
当前可用余额
<text class="text-primary"> {{ wallet.user_money }}</text>
</view>
</view>
<view class="mt-[40rpx]">
<u-button :loading="isLock" type="primary" shape="circle" @click="rechargeLock">
立即充值
</u-button>
</view>
<view class="flex justify-center m-[60rpx]">
<navigator url="/packages/pages/recharge_record/recharge_record" hover-class="none">
<text class="text-content text-sm">充值记录</text>
</navigator>
</view>
<payment
v-model:show="payState.showPay"
v-model:show-check="payState.showCheck"
:order-id="payState.orderId"
:from="payState.from"
:redirect="payState.redirect"
@success="handlePaySuccess"
@fail="handlePayFail"
/>
</view>
</template>
<script lang="ts" setup>
import { recharge, rechargeConfig } from '@/api/recharge'
import { useLockFn } from '@/hooks/useLockFn'
import { onLoad, onShow } from '@dcloudio/uni-app'
import { reactive, ref } from 'vue'
const money = ref('')
const payState = reactive({
orderId: '',
from: '',
showPay: false,
showCheck: false,
redirect: '/packages/pages/recharge/recharge'
})
const wallet = reactive({
user_money: '',
min_amount: 0
})
const { isLock, lockFn: rechargeLock } = useLockFn(async () => {
const minNum = wallet.min_amount
if (!money.value) return uni.$u.toast('请输入充值金额')
if (minNum == 0 && Number(money.value) == minNum) {
return uni.$u.toast(`充值金额必须大于0`)
}
if (Number(money.value) < minNum) return uni.$u.toast(`最低充值金额${minNum}`)
const data = await recharge({
money: money.value
})
payState.orderId = data.order_id
payState.from = data.from
payState.showPay = true
})
const handlePaySuccess = async () => {
payState.showPay = false
payState.showCheck = false
uni.navigateTo({
url: `/pages/payment_result/payment_result?id=${payState.orderId}&from=${payState.from}`
})
}
const handlePayFail = async () => {
uni.$u.toast('支付失败')
}
const getWallet = async () => {
const data = await rechargeConfig()
Object.assign(wallet, data)
}
onLoad((options: any) => {
// h5支付用于弹起手动确认支付弹窗
if (options?.checkPay) {
payState.orderId = options.id
payState.from = options.from
payState.showCheck = true
}
})
onShow(() => {
getWallet()
})
</script>
@@ -0,0 +1,52 @@
<template>
<page-meta :page-style="$theme.pageStyle">
<!-- #ifndef H5 -->
<navigation-bar
:front-color="$theme.navColor"
:background-color="$theme.navBgColor"
/>
<!-- #endif -->
</page-meta>
<z-paging
ref="paging"
v-model="dataList"
@query="queryList"
:show-loading-more-when-reload="true"
>
<view class="pt-2.5">
<view
v-for="item in dataList"
:key="item.id"
class="bg-white border-solid border-b border-0 border-light px-[26rpx] py-[24rpx]"
>
<view class="flex justify-between">
<view class="mr-2">{{ item.tips }}</view>
<view class="text-lg text-primary"> +{{ item.order_amount }} </view>
</view>
<view class="text-sm text-muted mr-1">{{ item.create_time }}</view>
</view>
</view>
</z-paging>
</template>
<script lang="ts" setup>
import { ref, shallowRef } from 'vue'
import { rechargeRecord } from '@/api/recharge'
const paging = shallowRef()
const dataList = ref<any[]>([])
const queryList = async (pageNo: number, pageSize: number) => {
try {
const data = await rechargeRecord({
page_no: pageNo,
page_size: pageSize
})
paging.value.complete(data.lists)
} catch (error) {
paging.value.complete(false)
}
}
</script>
<style lang="scss" scoped></style>
@@ -0,0 +1,120 @@
<template>
<page-meta :page-style="$theme.pageStyle">
<!-- #ifndef H5 -->
<navigation-bar
:front-color="$theme.navColor"
:background-color="$theme.navBgColor"
/>
<!-- #endif -->
</page-meta>
<z-paging
ref="paging"
v-model="dataList"
@query="queryList"
:show-loading-more-when-reload="true"
>
<view class="user-wallet">
<view class="p-[20rpx]">
<view
class="bg-primary rounded-[14rpx] flex items-center justify-between pl-[44rpx] py-[54rpx] text-white"
>
<view>
<view class="text-sm">钱包余额</view>
<view class="text-[60rpx]">{{ wallet.user_money }}</view>
</view>
<navigator
v-if="wallet.status"
url="/packages/pages/recharge/recharge"
hover-class="none"
>
<view class="text-primary px-[30rpx] py-[15rpx] bg-white rounded-l-full">
去充值
</view>
</navigator>
</view>
</view>
<u-tabs
:list="tabList"
:is-scroll="false"
v-model="current"
activeColor="var(--color-primary)"
@change="changeType"
></u-tabs>
<view class="pt-2.5">
<view
v-for="item in dataList"
:key="item.id"
class="bg-white border-solid border-b border-0 border-light px-[26rpx] py-[24rpx]"
>
<view class="flex justify-between">
<view class="mr-2">{{ item.type_desc }}</view>
<view
class="text-lg"
:class="{
'text-primary': item.action == 1
}"
>
{{ item.change_amount_desc }}
</view>
</view>
<view class="text-sm text-muted mr-1">{{ item.create_time }}</view>
</view>
</view>
</view>
</z-paging>
</template>
<script lang="ts" setup>
import { ref, shallowRef } from 'vue'
import { accountLog } from '@/api/user'
import { rechargeConfig } from '@/api/recharge'
import { onShow } from '@dcloudio/uni-app'
const tabList = ref([
{
name: '全部',
type: ''
},
{
name: '收入',
type: 1
},
{
name: '支出',
type: 2
}
])
const paging = shallowRef()
const dataList = ref<any[]>([])
const current = ref(0)
const changeType = (index: number) => {
current.value = index
paging.value.reload()
}
const queryList = async (pageNo: number, pageSize: number) => {
try {
const action = tabList.value[current.value].type
const data = await accountLog({
action,
type: 'um',
page_no: pageNo,
page_size: pageSize
})
paging.value.complete(data.lists)
} catch (error) {
paging.value.complete(false)
}
}
const wallet = ref<any>({})
const getWallet = async () => {
wallet.value = await rechargeConfig()
}
onShow(() => {
getWallet()
})
</script>
<style lang="scss" scoped></style>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB