| | |
| | | <div class="historyData flex justify-between py-40 border-b-grey textColor" v-for="item in loanOrderList" |
| | | :key="item.id"> |
| | | <div class="left"> |
| | | <!-- <div class="mb-30">{{ $t('借贷人') }}: 张三</div>--> |
| | | <div class="mb-30"> |
| | | <div class="mb-30 row-line"> |
| | | <span>{{ $t('借款金额') }}: </span> |
| | | <span :class="item.status === 5 ? 'text-red' : 'text-green'">{{ item.status === 5 ? '-' : '+' + item.quota |
| | | }} {{ |
| | | item.symbol }}</span> |
| | | <span :class="orderState(item) === 5 ? 'text-red' : 'text-green'"> |
| | | {{ orderState(item) === 5 ? '-' : '+' + item.quota }} {{ item.symbol }} |
| | | </span> |
| | | </div> |
| | | <div class="mb-30">{{ $t('备注') }}: {{ item.reason }}</div> |
| | | <div v-if="item.state === 2">{{ $t('剩余天数') }}: {{ item.remainQuota }}</div> |
| | | <div class="mb-30 row-line" v-if="item.reason">{{ $t('备注') }}: {{ item.reason }}</div> |
| | | <div class="row-line" v-if="orderState(item) === 2">{{ $t('剩余天数') }}: {{ item.remainQuota }}</div> |
| | | </div> |
| | | <div class="right text-center text-white"> |
| | | <div class="loanBtn mb-20" @click="$router.push('customerService')" v-if="item.state === 2">{{ $t('申请还款') }} |
| | | <div class="loanBtn loanBtn--status mb-20" :style="{ background: loanBgText(orderState(item)) }"> |
| | | {{ loanText(orderState(item)) }} |
| | | </div> |
| | | <div class="loanBtn mb-20" :style="{ background: loanBgText(item.state) }" v-else>{{ loanText(item.state) }} |
| | | </div> |
| | | <div class="loanBtn" style="background: #00a7ee;" @click="getLoanDetail(item.id)">{{ $t('详情') }}</div> |
| | | <div |
| | | class="loanBtn mb-20" |
| | | v-if="orderState(item) === 2" |
| | | @click="goRepay" |
| | | >{{ $t('还款') }}</div> |
| | | <div class="loanBtn loanBtn--detail" @click="getLoanDetail(item)">{{ $t('详情') }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <van-popup v-model:show="isDetail" class="w-full rounded-2xl" style="width: 94%"> |
| | | <div class="px-32 bg-white py-40"> |
| | | <div class="text-center font-36 font-700 py-20"> |
| | | {{ $t('订单详情') }} |
| | | <van-popup v-model:show="isDetail" class="loan-detail-popup" round> |
| | | <div class="loan-detail-body"> |
| | | <div class="loan-detail-title">{{ $t('订单详情') }}</div> |
| | | <div class="loan-detail-list"> |
| | | <div class="loan-detail-row"> |
| | | <span class="loan-detail-label">{{ $t('期望借款金额') }}</span> |
| | | <span class="loan-detail-value">{{ loanData.quota || 0 }} USDT</span> |
| | | </div> |
| | | <div class="loanList"> |
| | | <div class="flex justify-between py-30 border-b-grey"> |
| | | <div> |
| | | <span class="grayText">{{ $t('期望借款金额') }}</span> |
| | | <div class="loan-detail-row"> |
| | | <span class="loan-detail-label">{{ $t('还款周期') }}</span> |
| | | <span class="loan-detail-value">{{ loanData.term }} {{ $t('Day') }}</span> |
| | | </div> |
| | | <div class="flex align-center"> |
| | | <!-- <input class="font-600 textColor border-none text-right mr-14 mainBackground" v-model="loanAmount" disabled="disabled" @input="inputAmunt" />--> |
| | | <span class="mr-14 font-600 ">{{ loanData.quota || 0 }}</span> |
| | | <span class="font-600 ">USDT</span> |
| | | <div class="loan-detail-row"> |
| | | <span class="loan-detail-label">{{ $t('日利率') }}</span> |
| | | <span class="loan-detail-value">{{ loanData.dailyRate * 1 * 100 || 0 }}%</span> |
| | | </div> |
| | | <div class="loan-detail-row"> |
| | | <span class="loan-detail-label">{{ $t('还款方式') }}</span> |
| | | <span class="loan-detail-value">{{ $t('到期一次还款') }}</span> |
| | | </div> |
| | | <div class="flex justify-between py-30 border-b-grey"> |
| | | <div> |
| | | <span class="grayText">{{ $t('还款周期') }}</span> |
| | | <div class="loan-detail-row"> |
| | | <span class="loan-detail-label">{{ $t('利息') }}</span> |
| | | <span class="loan-detail-value">{{ loanData.totalInterest || 0 }} USDT</span> |
| | | </div> |
| | | <div class="flex align-center text-right"> |
| | | <div class="font-600 "> |
| | | <span>{{ loanData.term }} {{ $t('Day') }}</span> |
| | | <div class="loan-detail-row"> |
| | | <span class="loan-detail-label">{{ $t('放款机构') }}</span> |
| | | <span class="loan-detail-value">{{ loanData.lendingName }}</span> |
| | | </div> |
| | | <div class="loan-detail-row"> |
| | | <span class="loan-detail-label">{{ $t('状态') }}</span> |
| | | <span class="loan-detail-value" :style="{ color: loanBgText(Number(loanData.state)) }"> |
| | | {{ loanText(Number(loanData.state)) }} |
| | | </span> |
| | | </div> |
| | | <div class="loan-detail-row" v-if="Number(loanData.state) === 2"> |
| | | <span class="loan-detail-label">{{ $t('剩余天数') }}</span> |
| | | <span class="loan-detail-value">{{ loanData.remainQuota }}</span> |
| | | </div> |
| | | <div class="flex justify-between py-30 border-b-grey"> |
| | | <div> |
| | | <span class="grayText">{{ $t('日利率') }}</span> |
| | | </div> |
| | | <div class="flex align-center"> |
| | | <span class="font-600">{{ loanData.dailyRate * 1 * 100 || 0 }}%</span> |
| | | </div> |
| | | </div> |
| | | <div class="flex justify-between py-30 border-b-grey"> |
| | | <div> |
| | | <span class="grayText">{{ $t('还款方式') }}</span> |
| | | </div> |
| | | <div class="flex align-center"> |
| | | <span class="font-600 text-right">{{ $t('到期一次还款') }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="flex justify-between py-30 border-b-grey"> |
| | | <div> |
| | | <span class="grayText">{{ $t('利息') }}</span> |
| | | </div> |
| | | <div class="flex align-center"> |
| | | <span class="font-600">{{ loanData.totalInterest || 0 }} USDT</span> |
| | | </div> |
| | | </div> |
| | | <div class="flex justify-between py-30 border-b-grey"> |
| | | <div> |
| | | <span class="grayText">{{ $t('放款机构') }}</span> |
| | | </div> |
| | | <div class="flex align-center"> |
| | | <span class="font-600">{{ loanData.lendingName }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="flex justify-between py-30 border-b-grey"> |
| | | <div> |
| | | <span class="grayText">{{ $t('状态') }}</span> |
| | | </div> |
| | | <div class="flex align-center"> |
| | | <span class="font-600" :style="{ color: loanBgText(loanData.state) }">{{ loanText(loanData.state) |
| | | }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="flex justify-between py-30 border-b-grey" v-if="loanData.state === 2"> |
| | | <div> |
| | | <span class="grayText">{{ $t('剩余天数') }}</span> |
| | | </div> |
| | | <div class="flex align-center"> |
| | | <span class="font-600">{{ loanData.remainQuota }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="flex justify-between py-30"> |
| | | <div> |
| | | <span class="grayText">{{ $t('订单时间') }}</span> |
| | | </div> |
| | | <div class="flex align-center"> |
| | | <span class="font-600">{{ dataTimeEx(loanData.createTime) }}</span> |
| | | </div> |
| | | <div class="loan-detail-row loan-detail-row--last"> |
| | | <span class="loan-detail-label">{{ $t('订单时间') }}</span> |
| | | <span class="loan-detail-value">{{ formatOrderTime(loanData.createTime) }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import AssetsHead from "@/components/Transform/assets-head/index.vue";; |
| | | import AssetsHead from "@/components/Transform/assets-head/index.vue"; |
| | | import { _loanOrderList, _loanOrderDetail } from "@/service/fund.api" |
| | | import { Popup } from "vant"; |
| | | import { dataTimeEx } from '@/utils/utis' |
| | | import { dataTime } from '@/utils/utis' |
| | | import { customerServiceUrl } from '@/config' |
| | | export default { |
| | | name: "loanHistory", |
| | | mounted() { |
| | | this.getLoanOrderList() |
| | | }, |
| | | methods: { |
| | | //订单详情 |
| | | getLoanDetail(orderNo) { |
| | | _loanOrderDetail(orderNo).then(res => { |
| | | orderState(item) { |
| | | return Number(item.state ?? item.status) |
| | | }, |
| | | formatOrderTime(ts) { |
| | | if (ts == null || ts === '') return '--' |
| | | if (typeof ts === 'string' && /\d{4}-\d{2}-\d{2}/.test(ts)) { |
| | | return ts.length > 16 ? ts : ts.trim() |
| | | } |
| | | const n = Number(ts) |
| | | if (!Number.isFinite(n) || n <= 0) return '--' |
| | | return dataTime(n, true) |
| | | }, |
| | | goRepay() { |
| | | if (customerServiceUrl()) { |
| | | window.location.href = customerServiceUrl() |
| | | } else { |
| | | this.$router.push('/customerService') |
| | | } |
| | | }, |
| | | //订单详情(按 orderNo 或 uuid 查询) |
| | | getLoanDetail(item) { |
| | | _loanOrderDetail({ |
| | | orderNo: item.orderNo, |
| | | id: item.uuid || item.id, |
| | | }).then(res => { |
| | | this.loanData = res |
| | | this.isDetail = true |
| | | }) |
| | |
| | | if (item.id === 0) { |
| | | this.loanOrderList = this.loanAllOrderList |
| | | } else { |
| | | this.loanOrderList = this.loanAllOrderList.filter(data => data.state === item.id) |
| | | this.loanOrderList = this.loanAllOrderList.filter(data => this.orderState(data) === item.id) |
| | | } |
| | | } |
| | | }, |
| | |
| | | loanAllOrderList: [], |
| | | isDetail: false, //详情弹窗 |
| | | loanData: {}, |
| | | dataTimeEx,//时间戳格式化 |
| | | } |
| | | }, |
| | | components: { |
| | |
| | | -webkit-backface-visibility: hidden; |
| | | backface-visibility: hidden; |
| | | border: 1px solid transparent; |
| | | font-size: 28px; |
| | | |
| | | &.ani { |
| | | transform: translate3d(0, 0, 0); |
| | |
| | | } |
| | | } |
| | | |
| | | .historyData { |
| | | font-size: 28px; |
| | | align-items: flex-start; |
| | | |
| | | .row-line { |
| | | font-size: 28px; |
| | | line-height: 1.4; |
| | | } |
| | | } |
| | | |
| | | .right { |
| | | flex-shrink: 0; |
| | | min-width: 220px; |
| | | } |
| | | |
| | | .loanBtn { |
| | | padding: 14px 30px; |
| | | padding: 16px 32px; |
| | | background: #004aee; |
| | | border-radius: 10px; |
| | | font-size: 28px; |
| | | font-weight: 600; |
| | | line-height: 1.35; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | .loanBtn--status { |
| | | min-width: 180px; |
| | | font-size: 30px; |
| | | font-weight: 700; |
| | | padding: 18px 32px; |
| | | } |
| | | |
| | | .loanBtn--detail { |
| | | background: #00a7ee; |
| | | } |
| | | } |
| | | |
| | | /* 弹窗挂到 body,需独立字号(不依赖 #cryptos 工具类) */ |
| | | :deep(.loan-detail-popup) { |
| | | width: 94%; |
| | | max-width: 680px; |
| | | } |
| | | |
| | | .loan-detail-body { |
| | | padding: 40px 32px 48px; |
| | | background: #fff; |
| | | border-radius: 24px; |
| | | color: #1a1a1a; |
| | | } |
| | | |
| | | .loan-detail-title { |
| | | text-align: center; |
| | | font-size: 36px; |
| | | font-weight: 700; |
| | | line-height: 1.3; |
| | | margin-bottom: 32px; |
| | | } |
| | | |
| | | .loan-detail-list { |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .loan-detail-row { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | gap: 24px; |
| | | padding: 28px 0; |
| | | border-bottom: 1px solid rgba(134, 142, 155, 0.2); |
| | | font-size: 28px; |
| | | line-height: 1.4; |
| | | } |
| | | |
| | | .loan-detail-row--last { |
| | | border-bottom: none; |
| | | padding-bottom: 0; |
| | | } |
| | | |
| | | .loan-detail-label { |
| | | flex-shrink: 0; |
| | | color: #868e9b; |
| | | font-size: 28px; |
| | | } |
| | | |
| | | .loan-detail-value { |
| | | text-align: right; |
| | | font-size: 28px; |
| | | font-weight: 600; |
| | | word-break: break-all; |
| | | } |
| | | </style> |