This commit is contained in:
2025-12-03 14:10:30 +08:00
5 changed files with 66 additions and 44 deletions

View File

@@ -496,7 +496,9 @@
"valueAddedServices": "Value-added services", "valueAddedServices": "Value-added services",
"readAgree": "I have read and agreed", "readAgree": "I have read and agreed",
"readAgreeServices": "Please read and agree to the value-added services first", "readAgreeServices": "Please read and agree to the value-added services first",
"orderDetails": "Order Details" "orderDetails": "Order Details",
"pointsRecord": "Points consumption record",
"unusable": "The billing service cannot be used on the device"
}, },
"vip": { "vip": {
"courseVip": "Course VIP", "courseVip": "Course VIP",

View File

@@ -497,7 +497,8 @@
"readAgree": "我已阅读并同意", "readAgree": "我已阅读并同意",
"readAgreeServices": "请先阅读并同意增值服务", "readAgreeServices": "请先阅读并同意增值服务",
"orderDetails": "订单详情", "orderDetails": "订单详情",
"pointsRecord": "积分消费记录" "pointsRecord": "积分消费记录",
"unusable": "设备上无法使用计费服务"
}, },
"vip": { "vip": {
"courseVip": "课程VIP", "courseVip": "课程VIP",

View File

@@ -1,5 +1,6 @@
<template> <template>
<z-paging ref="paging" v-model="bookList" auto-show-back-to-top class="my-book-page" @query="pointsList" :default-page-size="10"> <z-paging ref="paging" v-model="bookList" auto-show-back-to-top class="my-book-page" @query="pointsList"
:default-page-size="10">
<template #top> <template #top>
<!-- 自定义导航栏 --> <!-- 自定义导航栏 -->
<nav-bar :title="$t('user.consumptionRecord')"></nav-bar> <nav-bar :title="$t('user.consumptionRecord')"></nav-bar>
@@ -7,13 +8,16 @@
<view class="recharge-record" v-if="(bookList && bookList.length > 0)"> <view class="recharge-record" v-if="(bookList && bookList.length > 0)">
<view class="go-gecharge" @click="goRecharge"> <view class="go-gecharge" @click="goRecharge">
<view>{{$t('order.recharge')}}</view> <view>{{$t('order.recharge')}}</view>
<view><wd-icon name="arrow-right" size="16px" color="#fff"/></view> <view><wd-icon name="arrow-right" size="16px" color="#fff" /></view>
</view> </view>
<view class="title">{{$t('order.pointsRecord')}}</view> <view class="title">{{$t('order.pointsRecord')}}</view>
<view class="recharge-record-block" v-for="(item, index) in bookList" :key="index"> <view class="recharge-record-block" v-for="(item, index) in bookList" :key="index">
<view class="recharge-record-block-row">{{item.remark.slice(0, (item.remark.indexOf(',')))}}<text :class="item.actType === 1 ? 'text1' : 'text2'" >{{item.actType === 1 ? '' : '+'}}{{item.changeAmount}}</text></view> <view class="recharge-record-block-row">{{item.remark.slice(0, (item.remark.indexOf('')))}}<text
:class="item.actType === 1 ? 'text1' : 'text2'">{{item.actType === 1 ? '' : '+'}}{{item.changeAmount}}</text>
</view>
<view class="time">{{item.createTime}}</view> <view class="time">{{item.createTime}}</view>
<view style="font-size: 20rpx;">{{item.remark.slice((item.remark.indexOf(','))+1)}}</view> <view style="font-size: 24rpx;">{{item.remark.slice((item.remark.indexOf(','))+1)}}<wd-icon name="file-copy"
size="14px" color="#65A1FA" style="margin-left: 10rpx;" @click="copyToClipboard()"></wd-icon></view>
</view> </view>
</view> </view>
</z-paging> </z-paging>
@@ -24,6 +28,7 @@
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useUserStore } from '@/stores/user' import { useUserStore } from '@/stores/user'
import { getPointsData } from '@/api/modules/user' import { getPointsData } from '@/api/modules/user'
import { copyToClipboard } from '@/utils/index'
const { t } = useI18n() const { t } = useI18n()
const paging = ref<any>() const paging = ref<any>()
@@ -74,7 +79,7 @@
// padding: 20rpx; // padding: 20rpx;
margin: 20rpx; margin: 20rpx;
.go-gecharge{ .go-gecharge {
//height: 100rpx; //height: 100rpx;
background: linear-gradient(to right, #007bff, #17a2b8); background: linear-gradient(to right, #007bff, #17a2b8);
font-size: 30rpx; font-size: 30rpx;
@@ -82,12 +87,14 @@
color: #fff; color: #fff;
padding: 20rpx; padding: 20rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
display: flex;justify-content:space-between;align-items:center display: flex;
justify-content: space-between;
align-items: center
} }
.title { .title {
font-size: 30rpx; font-size: 30rpx;
padding-left:20rpx; padding-left: 20rpx;
margin-bottom: 30rpx; margin-bottom: 30rpx;
color: #007bff; color: #007bff;
font-weight: bold; font-weight: bold;
@@ -97,8 +104,8 @@
border-bottom: 1px solid #e0e0e0; border-bottom: 1px solid #e0e0e0;
padding: 20rpx; padding: 20rpx;
.time{ .time {
font-size: 20rpx; font-size: 24rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
@@ -106,35 +113,36 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-bottom: 20rpx; margin-bottom: 20rpx;
font-weight: 700;
.text1{ .text1 {
color: #ff0000; color: #ff0000;
} }
.text2{
.text2 {
color: #228B22; color: #228B22;
} }
} }
} }
} }
} }
.empty-state { .empty-state {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
padding-top: 200rpx; padding-top: 200rpx;
image { image {
width: 400rpx; width: 400rpx;
height: 300rpx; height: 300rpx;
margin-bottom: 40rpx; margin-bottom: 40rpx;
} }
.empty-text { .empty-text {
font-size: 28rpx; font-size: 28rpx;
color: #999; color: #999;
margin-bottom: 50rpx; margin-bottom: 50rpx;
} }
} }
</style> </style>

View File

@@ -224,6 +224,10 @@
// 初始化成功 // 初始化成功
} else { } else {
console.log('init失败了'); console.log('init失败了');
uni.showToast({
title: '设备上无法使用计费服务',
icon: 'fail'
})
// 初始化失败 // 初始化失败
isConnected.value = false; isConnected.value = false;
} }
@@ -424,13 +428,13 @@
} }
.recharge-button { .recharge-button {
width: 100%; width: 60%;
height: 50rpx; height: 50rpx;
line-height: 50rpx; line-height: 50rpx;
background-color: #007bff; background-color: #007bff;
color: #ffffff; color: #ffffff;
font-size: 18rpx; font-size: 30rpx;
border-radius: 25rpx; border-radius: 30rpx;
border: none; border: none;
} }
@@ -460,7 +464,7 @@
} }
.cha_fangsh { .cha_fangsh {
padding: 20rpx 20rpx 60rpx 20rpx; padding: 20rpx;
.cf_title { .cf_title {
font-size: 30rpx; font-size: 30rpx;
@@ -506,7 +510,7 @@
display: flex; display: flex;
padding: 20rpx 20rpx 160rpx 20rpx; padding: 20rpx 20rpx 160rpx 20rpx;
color: #aaa; color: #aaa;
font-size: 18rpx; font-size: 26rpx;
align-items: center; align-items: center;
.highlight { .highlight {

View File

@@ -5,6 +5,9 @@
<!-- 自定义导航栏 --> <!-- 自定义导航栏 -->
<nav-bar :title="$t('user.consumptionRecord')"></nav-bar> <nav-bar :title="$t('user.consumptionRecord')"></nav-bar>
</template> </template>
<view style="padding: 20rpx;background-color:#FFF3CD">
<text style="font-size: 26rpx; color: #FFA500;">{{goBuyTitle}}</text>
</view>
<view class="recharge-record" v-if="(bookList && bookList.length > 0)"> <view class="recharge-record" v-if="(bookList && bookList.length > 0)">
<view class="go-gecharge" @click="goRecharge"> <view class="go-gecharge" @click="goRecharge">
<view>{{$t('order.recharge')}}</view> <view>{{$t('order.recharge')}}</view>
@@ -16,7 +19,9 @@
:class="item.orderType !== '充值' ? 'text1' : 'text2'">{{item.orderType !== '充值' ? '' : '+'}}{{item.changeAmount}}</text> :class="item.orderType !== '充值' ? 'text1' : 'text2'">{{item.orderType !== '充值' ? '' : '+'}}{{item.changeAmount}}</text>
</view> </view>
<view class="recharge-record-block-row_">{{item.productName}}</view> <view class="recharge-record-block-row_">{{item.productName}}</view>
<view class="recharge-record-block-row_">{{$t('user.orderSn')}}{{item.payNo}}</view> <view class="recharge-record-block-row_">{{$t('user.orderSn')}}{{item.payNo}}<wd-icon name="file-copy"
size="14px" color="#65A1FA" style="margin-left: 10rpx;" @click="copyToClipboard()"></wd-icon>
</view>
<view class="time">{{item.createTime}}</view> <view class="time">{{item.createTime}}</view>
</view> </view>
</view> </view>
@@ -28,6 +33,7 @@
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useUserStore } from '@/stores/user' import { useUserStore } from '@/stores/user'
import { getTransactionDetailsList } from '@/api/modules/user' import { getTransactionDetailsList } from '@/api/modules/user'
import { copyToClipboard } from '@/utils/index'
const { t } = useI18n() const { t } = useI18n()
const paging = ref<any>() const paging = ref<any>()
@@ -37,6 +43,7 @@
const bookList = ref([]) const bookList = ref([])
const loading = ref(false) const loading = ref(false)
const firstLoad = ref(true) const firstLoad = ref(true)
const goBuyTitle = ref('【天医币】仅为我平台支付使用币种,仅为了方便用户支付使用。【天医币】可以用于在我平台支付书籍或课程使用。【天医币】这个名称是为适应我们平台的定位属性,所起名称。与区块链虚拟货币无任何关系。')
// 充值记录列表 // 充值记录列表
async function rechargeList(pageNo : number, pageSize : number) { async function rechargeList(pageNo : number, pageSize : number) {
@@ -109,14 +116,14 @@
} }
.time { .time {
font-size: 20rpx; font-size: 22rpx;
} }
.recharge-record-block-row { .recharge-record-block-row {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-bottom: 20rpx; margin-bottom: 20rpx;
font-weight: 700;
.text1 { .text1 {
color: #ff0000; color: #ff0000;
} }