From 584860d11b454774b60c71b63d221b5481c0f3bd Mon Sep 17 00:00:00 2001
From: 李 <344137771@qq.com>
Date: Wed, 29 Apr 2026 14:21:48 +0800
Subject: [PATCH] 更新为3.29
---
src/page/user/compontents/cash-list.vue | 410 ++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 272 insertions(+), 138 deletions(-)
diff --git a/src/page/user/compontents/cash-list.vue b/src/page/user/compontents/cash-list.vue
index 3f4e6ed..82f207c 100644
--- a/src/page/user/compontents/cash-list.vue
+++ b/src/page/user/compontents/cash-list.vue
@@ -1,191 +1,325 @@
<template>
<div class="wrapper">
- <div v-if="list.length<=0" class="empty text-center">
- 暂无提现信息!
+ <div v-if="list.length <= 0" class="empty text-center">
+ {{ $t("hj162e") }}!
</div>
<div v-else>
- <ul
- class="table-list"
- v-infinite-scroll="loadMore"
- infinite-scroll-disabled="loading"
+ <ul class="table-list" v-infinite-scroll="loadMore" infinite-scroll-disabled="loading"
infinite-scroll-distance="10">
- <li class="list-body" v-for="(item) in list" :key="item.key">
+ <li class="list-body" v-for="(item, index) in list" :key="index">
<div class="order-info-box">
- <div class="order-title">
- <span class="main">
- 提现至银行卡
- </span>
- <span class="payNumber">¥{{item.withAmt}}</span>
- <span class="red pull-right">
- {{item.withStatus == 1?'提现成功':item.withStatus == 2?'提现失败':item.withStatus == 3?'订单取消':'审核中'}}
- <i v-if="item.withStatus == 1" class="iconfont icon-tongguo4 animated bounceIn"></i>
- <i v-if="item.withStatus==0" class="iconfont icon-dengdai animated bounceInDown"></i>
- <i v-if="item.withStatus == 2" class="iconfont icon-failure animated bounceInDown"></i>
- <i v-if="item.withStatus == 3"
- class="iconfont icon-iconfontweitongguo animated bounceInDown"></i>
- </span>
- <!-- <span class="secondary ">123456789</span> -->
+ <div class="order-title" @click="openDetail(item)">
+ <span class="main"> {{ $t("hjtxyhk") }} </span>
+ <span class="payNumber">
+ {{ item.withAmt | _toLocaleString }}
+ </span>
+ <span class="pull-right" :class="getWithdrawStatusClass(item.withStatus)">
+ {{ getWithdrawStatusText(item.withStatus) }}
+ <i class="iconfont animated" :class="getWithdrawStatusIconClass(item.withStatus)"></i>
+ </span>
</div>
- <div class="order-info">
- <p class="clearfix">
- <span class="col-xs-6">手续费:<b class="space">¥{{item.withFee}}</b></span>
- <!-- <span class="col-xs-6">实际到账金额:<b class="space" style="font-size:0.26rem">{{item.withAmt - item.withFee}}</b>元</span> -->
- </p>
- <p class="clearfix">
- <span class="col-xs-12">银行卡:<b class="space">{{item.bankName}}-{{item.bankAddress}}</b></span>
- </p>
- <p class="clearfix">
- <span class="col-xs-12">卡号:<b class="space">{{item.bankNo}}</b></span>
- </p>
- <p v-if="item.withStatus == 3" class="clearfix">
- <span class="col-xs-12">取消原因:<b class="space">{{item.withMsg}}</b></span>
- </p>
- <p v-if="item.withStatus == 2" class="clearfix">
- <span class="col-xs-12">失败原因:<b class="space">{{item.withMsg}}</b></span>
- </p>
- <p class="clearfix">
- <span class="secondary col-xs-6">时间:
- <b v-if="item.applyTime">{{new Date(item.applyTime) | timeFormat}}</b>
- <b v-else></b>
- </span>
- </p>
- </div>
- <div v-if="item.withStatus == 0" class="order-foot clearfix">
- <div @click="cancle(item.id)" class="foot-btn">
- <i class='font-icon'></i>
- 取消提现
- </div>
- </div>
-
</div>
- <!-- <div class="capital">
- <div class="pro">
- 股票:300092/开山股份 <span class="pull-right">金额:50.241</span>
- </div>
- <div class=" clearfix">
- <div class="col-xs-8">01-21 13:22</div>
- <div class="col-xs-4 ">
- <span class="pull-right">交易状态</span>
- </div>
- </div>
- </div> -->
</li>
</ul>
<div v-show="loading" class="load-all text-center">
<mt-spinner type="fading-circle"></mt-spinner>
- 加载中...
+ loading...
</div>
<div v-show="!loading" class="load-all text-center">
- 已全部加载
+ {{ $t("hj236") }}
</div>
</div>
+
+ <van-popup v-model="detailVisible" position="bottom" round closeable :style="{ maxHeight: '75%' }"
+ class="withdraw-detail-popup">
+ <div class="detail-popup-inner">
+ <div class="detail-popup-title">{{ $t("hj238") }}</div>
+ <div class="detail-popup-body">
+ <div v-for="row in detailRows" :key="row.key" class="detail-row">
+ <span class="detail-label">{{ row.label }}</span>
+ <span class="detail-value">{{ row.value }}</span>
+ </div>
+ </div>
+ </div>
+ </van-popup>
</div>
</template>
<script>
-import { Toast } from 'mint-ui'
-import * as api from '@/axios/api'
+import { Toast } from "mint-ui";
+import * as api from "@/axios/api";
+import { _toLocaleString } from "@/utils/filter";
export default {
components: {},
props: {},
- data () {
+ data() {
return {
loading: false,
list: [],
pageNum: 1,
- pageSize: 15
+ pageSize: 15,
+ detailVisible: false,
+ detailItem: null
+ };
+ },
+ computed: {
+ detailRows() {
+ return this.buildDetailRows(this.detailItem);
}
},
watch: {},
- computed: {},
- created () {},
- mounted () {
- this.getListDetail()
+ created() { },
+ mounted() {
+ this.getListDetail();
},
methods: {
- async getListDetail () {
+ getWithdrawStatusClass(status) {
+ return status == 1 ? "green" : "red";
+ },
+ getWithdrawStatusIconClass(status) {
+ if (status == 1) return "icon-tongguo4 bounceIn";
+ if (status == 2) return "icon-failure bounceInDown";
+ if (status == 3) return "icon-iconfontweitongguo bounceInDown";
+ return "icon-dengdai bounceInDown";
+ },
+ getWithdrawStatusText(status) {
+ if (status == 1) return this.$t("hjtxcg");
+ if (status == 2) return this.$t("hjtxsb");
+ if (status == 3) return this.$t("hjddqx");
+ return this.$t("hjshz");
+ },
+ openDetail(item) {
+ this.detailItem = item ? { ...item } : null;
+ this.detailVisible = true;
+ },
+ /** 与精简前列表展示字段一致,不包含其它接口字段 */
+ buildDetailRows(item) {
+ if (!item || typeof item !== "object") return [];
+ const dash = "—";
+ const amt =
+ item.withAmt !== undefined && item.withAmt !== null && item.withAmt !== ""
+ ? _toLocaleString(item.withAmt)
+ : dash;
+ const fee =
+ item.withFee !== undefined && item.withFee !== null && item.withFee !== ""
+ ? _toLocaleString(item.withFee)
+ : dash;
+ const bankParts = [item.bankName, item.bankAddress].filter(
+ v => v !== undefined && v !== null && String(v).trim() !== ""
+ );
+ const bankLine = bankParts.length ? bankParts.join("-") : dash;
+ const bankNo =
+ item.bankNo !== undefined &&
+ item.bankNo !== null &&
+ String(item.bankNo).trim() !== ""
+ ? String(item.bankNo)
+ : dash;
+ let timeStr = dash;
+ if (item.applyTime) {
+ timeStr = this.$moment(item.applyTime).format("DD-MM-YYYY hh:mm:ss A");
+ }
+ const rows = [
+ {
+ key: "withAmt",
+ label: this.$t("hjtxyhk"),
+ value: amt
+ },
+ {
+ key: "withStatus",
+ label: this.$t("状态"),
+ value: this.getWithdrawStatusText(item.withStatus)
+ },
+ {
+ key: "withFee",
+ label: this.$t("hj44"),
+ value: fee
+ },
+ {
+ key: "bank",
+ label: this.$t("hj247"),
+ value: bankLine
+ },
+ {
+ key: "bankNo",
+ label: this.$t("hjkh"),
+ value: bankNo
+ }
+ ];
+ if (item.withStatus == 3) {
+ rows.push({
+ key: "withMsg-cancel",
+ label: this.$t("hjqxyy"),
+ value:
+ item.withMsg !== undefined &&
+ item.withMsg !== null &&
+ String(item.withMsg).trim() !== ""
+ ? String(item.withMsg)
+ : dash
+ });
+ }
+ if (item.withStatus == 2) {
+ rows.push({
+ key: "withMsg-fail",
+ label: this.$t("hj201"),
+ value:
+ item.withMsg !== undefined &&
+ item.withMsg !== null &&
+ String(item.withMsg).trim() !== ""
+ ? String(item.withMsg)
+ : dash
+ });
+ }
+ rows.push({
+ key: "applyTime",
+ label: this.$t("sj"),
+ value: timeStr
+ });
+ return rows;
+ },
+ async getListDetail() {
let opt = {
- withStatus: '', // 提现状态 0已提交,1转账成功,2转账失败
+ withStatus: "",
pageNum: this.pageNum,
pageSize: 15
- }
- let data = await api.withdrawList(opt)
+ };
+ let data = await api.withdrawList(opt);
if (data.status === 0) {
data.data.list.forEach(element => {
- this.list.push(element)
- })
+ this.list.push(element);
+ });
} else {
- Toast(data.msg)
+ Toast(data.msg);
}
},
- async loadMore () {
+ async loadMore() {
if (this.list.length < 10) {
- return
+ return;
}
- this.loading = true
- // 加载下一页
- this.pageNum++
- await this.getListDetail()
- this.loading = false
+ this.loading = true;
+ this.pageNum++;
+ await this.getListDetail();
+ this.loading = false;
},
- async cancle (val) {
- // 取消提现
- // MessageBox.confirm('您确定要平仓吗?').then(async action => {
+ async cancle(val) {
let opt = {
withId: val
- }
- let data = await api.canceloutMoney(opt)
+ };
+ let data = await api.canceloutMoney(opt);
if (data.status === 0) {
- this.list = []
- Toast(data.msg)
- this.getListDetail()
+ this.list = [];
+ Toast(data.msg);
+ this.getListDetail();
} else {
- Toast(data.msg)
+ Toast(data.msg);
}
- // });
+ }
+ }
+};
+</script>
+<style lang="less" scoped>
+.wrapper {
+ background-color: #fff !important;
+ height: 95vh;
+}
+
+.payNumber {
+ font-size: 0.3rem;
+ color: #ff8000;
+}
+
+.order-info--compact {
+ padding-bottom: 0;
+}
+
+.detail-btn-wrap {
+ padding: 0.12rem 0.2rem 0.2rem;
+}
+
+.detail-btn {
+ font-size: 0.26rem;
+}
+
+/deep/ .withdraw-detail-popup .van-popup__close-icon {
+ color: #666;
+}
+
+.detail-popup-inner {
+ padding: 0.36rem 0.32rem 0.48rem;
+ max-height: 70vh;
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+}
+
+.detail-popup-title {
+ font-size: 0.34rem;
+ font-weight: 600;
+ text-align: center;
+ margin-bottom: 0.28rem;
+ color: #14181f;
+}
+
+.detail-popup-body {
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+.detail-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+ padding: 0.22rem 0;
+ border-bottom: 1px solid #f0f0f0;
+ font-size: 0.28rem;
+ line-height: 1.45;
+}
+
+.detail-row:last-child {
+ border-bottom: none;
+}
+
+.detail-label {
+ color: #888;
+ flex: 0 0 38%;
+ padding-right: 0.2rem;
+ word-break: break-word;
+}
+
+.detail-value {
+ color: #333;
+ flex: 1;
+ text-align: right;
+ word-break: break-word;
+}
+
+.table-list {
+ padding: 0.2rem 0;
+
+ .list-body {
+ padding: 0.1rem 0.2rem;
+
+ .capital:nth-child(1) {
+ border-top: 0.01rem solid #3f444a;
+ }
+
+ .capital {
+ padding: 0.2rem;
+ border-bottom: 0.01rem solid #3f444a;
+
+ div {
+ line-height: 0.4rem;
+ }
+
+ .col-xs-4 {
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+ .pro {
+ color: #999;
+ }
}
}
}
-</script>
-<style lang="less" scoped>
- .wrapper {
- // padding-top: 0.9rem;
- }
-
- .payNumber {
- font-size: 0.3rem;
- color: #ff8000;
- }
-
- .table-list {
- padding: 0.2rem 0;
-
- .list-body {
- padding: 0.1rem 0.2rem;
-
- .capital:nth-child(1) {
- border-top: 0.01rem solid #3f444a;
- }
-
- .capital {
- padding: 0.2rem;
- // border-radius: 0.2rem;
- border-bottom: 0.01rem solid #3f444a;
-
- div {
- line-height: 0.4rem;
- }
-
- .col-xs-4 {
- padding-left: 0;
- padding-right: 0;
- }
-
- .pro {
- color: #999;
- }
- }
- }
- }
</style>
--
Gitblit v1.9.3