Compare commits
No commits in common. "85656c48b846063e9a553a67281c9e03a28d6a02" and "fc6e864a4ac1c9991b40592e5783388b8fc73987" have entirely different histories.
85656c48b8
...
fc6e864a4a
|
|
@ -1859,18 +1859,6 @@ async function fetchTransferBmtrBalanceData(requestOptions) {
|
|||
);
|
||||
}
|
||||
|
||||
async function fetchBmtrExchangePercentData(requestOptions) {
|
||||
return fetchPayload(
|
||||
createRequestOptions(
|
||||
{
|
||||
url: serviceConfig.ENDPOINTS.bmtrExchangePercent,
|
||||
},
|
||||
requestOptions,
|
||||
),
|
||||
"BMTR兑换手续费比例加载失败",
|
||||
);
|
||||
}
|
||||
|
||||
async function fetchWithdrawRateData(requestOptions) {
|
||||
return fetchPayload(
|
||||
createRequestOptions(
|
||||
|
|
@ -1893,7 +1881,6 @@ function resolvePercentRate(data) {
|
|||
"feeRate",
|
||||
"withdraw_rate",
|
||||
"withdrawRate",
|
||||
"percent",
|
||||
"prop",
|
||||
"value",
|
||||
"num",
|
||||
|
|
@ -2522,18 +2509,9 @@ export async function fetchBmtFlashExchangeDetail(requestOptions) {
|
|||
const result = await Promise.all([
|
||||
fetchPriceData(requestOptions),
|
||||
fetchHomeBalanceData(requestOptions),
|
||||
fetchUserData(requestOptions).catch(function () {
|
||||
return null;
|
||||
}),
|
||||
fetchBmtrExchangePercentData(requestOptions).catch(function () {
|
||||
return null;
|
||||
}),
|
||||
]);
|
||||
const ticker = normalizeTicker(result[0]);
|
||||
const balances = normalizeBalances(result[1]);
|
||||
const bmtr = pickFirstValue(result[2], ["bmtr"]);
|
||||
const bmtrPercent = result[3] ? resolvePercentRate(result[3]) : "";
|
||||
const bmtrRatio = result[3] ? pickFirstValue(result[3], ["bl"]) : "";
|
||||
|
||||
setHomeTickerCache(ticker);
|
||||
|
||||
|
|
@ -2544,10 +2522,7 @@ export async function fetchBmtFlashExchangeDetail(requestOptions) {
|
|||
coupon: toFixedNumber(balances.coupon, 2),
|
||||
voucher: toFixedNumber(balances.voucher, 2),
|
||||
brokerage_price: toFixedNumber(balances.balance, 2),
|
||||
bmtr: toFixedNumber(bmtr, 4),
|
||||
},
|
||||
bmtrPercent: bmtrPercent || "",
|
||||
bmtrRatio: bmtrRatio === "" ? "" : String(bmtrRatio),
|
||||
tips: [
|
||||
"BMT闪兑 = 输入数量 ÷ BMT实时价格",
|
||||
"BMT闪兑时所需的抵用券、消费券、余额。必须大于10的倍数。",
|
||||
|
|
@ -2557,13 +2532,10 @@ export async function fetchBmtFlashExchangeDetail(requestOptions) {
|
|||
}
|
||||
|
||||
export async function submitAssetBmtFlashExchange(payload, requestOptions) {
|
||||
const rawMode = payload && payload.mode;
|
||||
const mode =
|
||||
rawMode === "bmtr"
|
||||
? "bmtr"
|
||||
: rawMode === "coupon"
|
||||
payload && payload.mode === "coupon"
|
||||
? "coupon"
|
||||
: rawMode === "balance"
|
||||
: payload && payload.mode === "balance"
|
||||
? "balance"
|
||||
: "voucher";
|
||||
const amount = toNumber(payload && payload.amount);
|
||||
|
|
@ -2572,24 +2544,13 @@ export async function submitAssetBmtFlashExchange(payload, requestOptions) {
|
|||
throw createError("请输入闪兑数量");
|
||||
}
|
||||
|
||||
if (mode === "bmtr" && amount < 0.01) {
|
||||
throw createError("BMTR闪兑最小数量为0.01");
|
||||
}
|
||||
|
||||
await fetchPayload(
|
||||
createRequestOptions(
|
||||
{
|
||||
url: serviceConfig.ENDPOINTS.bmtFlashExchangeSubmit,
|
||||
method: "POST",
|
||||
data: {
|
||||
type:
|
||||
mode === "coupon"
|
||||
? 1
|
||||
: mode === "balance"
|
||||
? 2
|
||||
: mode === "bmtr"
|
||||
? 3
|
||||
: 0,
|
||||
type: mode === "coupon" ? 1 : mode === "balance" ? 2 : 0,
|
||||
number: String(amount),
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,270 +0,0 @@
|
|||
<template>
|
||||
<view v-if="visible" class="popup-mask" @touchmove.stop.prevent="noop">
|
||||
<view class="popup-mask__backdrop" @click="handleMaskClick"></view>
|
||||
<view class="popup-panel" :class="['popup-panel--' + status, panelClass]">
|
||||
<view class="popup-panel__head">
|
||||
<text class="popup-panel__title">{{ title }}</text>
|
||||
<view v-if="showClose" class="popup-panel__close" @click="$emit('cancel')">
|
||||
<image class="popup-panel__close-image" src="https://imgs.agrimedia.cn/bm-bmt/bmt-close.png" mode="aspectFit">
|
||||
</image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view v-if="showStatusBlock" class="popup-panel__status">
|
||||
<image class="popup-panel__status-image" :src="statusIcon" mode="aspectFit"></image>
|
||||
<text v-if="message" class="popup-panel__status-text asset-number-font">{{
|
||||
message
|
||||
}}</text>
|
||||
</view>
|
||||
<text v-else-if="message" class="popup-panel__message asset-number-font">{{
|
||||
message
|
||||
}}</text>
|
||||
|
||||
<text v-if="description" class="popup-panel__description asset-number-font">{{
|
||||
description
|
||||
}}</text>
|
||||
|
||||
<view v-if="$slots.default" class="popup-panel__body">
|
||||
<slot />
|
||||
</view>
|
||||
|
||||
<view class="popup-panel__footer" :class="{ 'popup-panel__footer--single': !showCancel }">
|
||||
<view v-if="showCancel" class="popup-panel__btn popup-panel__btn--ghost" style="height: 64rpx"
|
||||
@click="$emit('cancel')">
|
||||
{{ cancelText }}
|
||||
</view>
|
||||
<view class="popup-panel__btn popup-panel__btn--primary" style="height: 64rpx" @click="$emit('confirm')">
|
||||
{{ confirmText }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: "提示",
|
||||
},
|
||||
message: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
description: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
confirmText: {
|
||||
type: String,
|
||||
default: "确认",
|
||||
},
|
||||
cancelText: {
|
||||
type: String,
|
||||
default: "取消",
|
||||
},
|
||||
showCancel: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
showClose: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
closeOnMask: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
status: {
|
||||
type: String,
|
||||
default: "default",
|
||||
},
|
||||
panelClass: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
showStatusBlock() {
|
||||
return this.status === "success" || this.status === "error";
|
||||
},
|
||||
statusIcon() {
|
||||
if (this.status === "success") {
|
||||
return "https://imgs.agrimedia.cn/bm-bmt/success.png";
|
||||
}
|
||||
|
||||
if (this.status === "error") {
|
||||
return "https://imgs.agrimedia.cn/bm-bmt/fail.png";
|
||||
}
|
||||
|
||||
return "";
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
noop() { },
|
||||
handleMaskClick() {
|
||||
if (this.closeOnMask) {
|
||||
this.$emit("cancel");
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "../../styles/tokens.scss";
|
||||
|
||||
.popup-mask {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
inset: 0;
|
||||
z-index: 80;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 24rpx;
|
||||
}
|
||||
|
||||
.popup-mask__backdrop {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
inset: 0;
|
||||
background: rgba(5, 10, 22, 0.72);
|
||||
}
|
||||
|
||||
.popup-panel {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
max-width: 600rpx;
|
||||
padding: 30rpx 28rpx 32rpx;
|
||||
border-radius: 28rpx;
|
||||
border: 1px solid rgba(142, 157, 206, 0.14);
|
||||
background: #2a2f4d;
|
||||
box-shadow: 0 30rpx 70rpx rgba(0, 0, 0, 0.28);
|
||||
}
|
||||
|
||||
.popup-panel__head {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-height: 44rpx;
|
||||
}
|
||||
|
||||
.popup-panel__title {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 0 56rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.popup-panel__close {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 44rpx;
|
||||
height: 44rpx;
|
||||
}
|
||||
|
||||
.popup-panel__close-image {
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
}
|
||||
|
||||
.popup-panel__message {
|
||||
display: block;
|
||||
margin-top: 34rpx;
|
||||
font-size: 30rpx;
|
||||
line-height: 1.8;
|
||||
color: #edf2ff;
|
||||
}
|
||||
|
||||
.popup-panel__status {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-top: 46rpx;
|
||||
}
|
||||
|
||||
.popup-panel__status-image {
|
||||
width: 54rpx;
|
||||
height: 54rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.popup-panel__status-text {
|
||||
margin-left: 18rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 600;
|
||||
color: #edf2ff;
|
||||
}
|
||||
|
||||
.popup-panel__description {
|
||||
display: block;
|
||||
margin-top: 34rpx;
|
||||
font-size: 26rpx;
|
||||
line-height: 1.7;
|
||||
text-align: center;
|
||||
color: rgba(201, 209, 233, 0.86);
|
||||
}
|
||||
|
||||
.popup-panel__body {
|
||||
margin-top: 22rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.popup-panel__footer {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 18rpx;
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
|
||||
.popup-panel__footer--single {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.popup-panel__btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex: 1;
|
||||
height: 64rpx;
|
||||
border-radius: 12rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.popup-panel__footer--single .popup-panel__btn {
|
||||
flex: 0 0 232rpx;
|
||||
}
|
||||
|
||||
.popup-panel__btn--ghost {
|
||||
border: 1px solid rgba(157, 173, 221, 0.44);
|
||||
background: rgba(77, 89, 129, 0.28);
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.popup-panel__btn--primary {
|
||||
background: #02ABF1;
|
||||
color: #ffffff;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -18,7 +18,6 @@ const serviceConfig = {
|
|||
spreadCommission: "/api/spread/commission",
|
||||
powerExchangeSubmit: "/api/hn/redeem/power",
|
||||
bmtFlashExchangeSubmit: "/api/hn/redeem/justRedeem",
|
||||
bmtrExchangePercent: "/api/hn/redeem/getBmtrPercent",
|
||||
powerExchangeMuit: "/api/hn/redeem/getMuit",
|
||||
bmtRedeemPowerRate: "/api/hn/redeem/getRedeemPowerRate",
|
||||
bmtExchangeSubmit: "/api/hn/redeem/redeem_bmt",
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@
|
|||
"devServer" : {
|
||||
"proxy" : {
|
||||
"/api" : {
|
||||
"target" : "https://tpoint.agrimedia.cn",
|
||||
"target" : "https__UNI__B250220",
|
||||
"changeOrigin" : true,
|
||||
"secure" : false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,11 +7,15 @@
|
|||
<view class="hero-card__content">
|
||||
<view class="hero-card__coin-row">
|
||||
<view class="hero-card__coin">
|
||||
<image class="hero-card__coin-image" :src="pageIcon('bmt')" mode="aspectFit"></image>
|
||||
<image
|
||||
class="hero-card__coin-image"
|
||||
:src="pageIcon('bmt')"
|
||||
mode="aspectFit"
|
||||
></image>
|
||||
</view>
|
||||
<text class="hero-card__coin-text">BMT</text>
|
||||
</view>
|
||||
<text class="hero-card__label">可用BMT:</text>
|
||||
<text class="hero-card__label">可用1BMT:</text>
|
||||
<text class="hero-card__value asset-number-font">{{ displayBmt }}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -19,7 +23,11 @@
|
|||
<view class="panel-card info-card">
|
||||
<view class="info-row">
|
||||
<view class="info-row__left">
|
||||
<image class="info-row__icon" :src="pageIcon('voucher')" mode="aspectFit"></image>
|
||||
<image
|
||||
class="info-row__icon"
|
||||
:src="pageIcon('voucher')"
|
||||
mode="aspectFit"
|
||||
></image>
|
||||
<text class="info-row__label">我的算力</text>
|
||||
</view>
|
||||
<text class="info-row__value asset-number-font">{{ displayVoucher }}</text>
|
||||
|
|
@ -27,7 +35,11 @@
|
|||
|
||||
<view class="info-row">
|
||||
<view class="info-row__left">
|
||||
<image class="info-row__icon" :src="pageIcon('coupon')" mode="aspectFit"></image>
|
||||
<image
|
||||
class="info-row__icon"
|
||||
:src="pageIcon('coupon')"
|
||||
mode="aspectFit"
|
||||
></image>
|
||||
<text class="info-row__label">可用积分</text>
|
||||
</view>
|
||||
<text class="info-row__value asset-number-font">{{ displayCoupon }}</text>
|
||||
|
|
@ -35,8 +47,11 @@
|
|||
|
||||
<view class="info-row info-row--last">
|
||||
<view class="info-row__left">
|
||||
<image class="info-row__icon" src="https://imgs.agrimedia.cn/bm-bmt/b.png" mode="aspectFit">
|
||||
</image>
|
||||
<image
|
||||
class="info-row__icon"
|
||||
src="https://imgs.agrimedia.cn/bm-bmt/b.png"
|
||||
mode="aspectFit"
|
||||
></image>
|
||||
<text class="info-row__label">BMT实时价格</text>
|
||||
</view>
|
||||
<view class="info-row__price">
|
||||
|
|
@ -54,14 +69,22 @@
|
|||
|
||||
<view class="panel-card form-card">
|
||||
<view class="form-card__title">
|
||||
<image class="form-card__title-icon" src="https://imgs.agrimedia.cn/bm-bmt/b.png" mode="aspectFit">
|
||||
</image>
|
||||
<image
|
||||
class="form-card__title-icon"
|
||||
src="https://imgs.agrimedia.cn/bm-bmt/b.png"
|
||||
mode="aspectFit"
|
||||
></image>
|
||||
<text class="form-card__title-text">BMT兑换</text>
|
||||
</view>
|
||||
|
||||
<view class="form-input">
|
||||
<decimal-input v-model="form.points" class="form-input__field asset-number-font" :digit="0"
|
||||
placeholder="请输入积分数量" placeholder-style="color: rgba(177, 187, 214, 0.42);" />
|
||||
<decimal-input
|
||||
v-model="form.points"
|
||||
class="form-input__field asset-number-font"
|
||||
:digit="0"
|
||||
placeholder="请输入积分数量"
|
||||
placeholder-style="color: rgba(177, 187, 214, 0.42);"
|
||||
/>
|
||||
<text class="form-input__suffix">可用积分</text>
|
||||
</view>
|
||||
|
||||
|
|
@ -74,7 +97,9 @@
|
|||
</view>
|
||||
<view class="preview-card__row">
|
||||
<view class="preview-card__left">
|
||||
<text class="preview-card__label" style="color: #fff">消耗算力</text>
|
||||
<text class="preview-card__label" style="color: #fff"
|
||||
>消耗算力</text
|
||||
>
|
||||
</view>
|
||||
<text class="preview-card__value preview-card__value--light asset-number-font">{{
|
||||
powerCost
|
||||
|
|
@ -84,7 +109,11 @@
|
|||
|
||||
<view class="tips-block">
|
||||
<text class="tips-block__title">兑换说明:</text>
|
||||
<view v-for="(tip, index) in normalizedTips" :key="tip" class="tips-block__item">
|
||||
<view
|
||||
v-for="(tip, index) in normalizedTips"
|
||||
:key="tip"
|
||||
class="tips-block__item"
|
||||
>
|
||||
<text class="tips-block__index asset-number-font">{{ index + 1 }}.</text>
|
||||
<text class="tips-block__text asset-number-font">{{ tip }}</text>
|
||||
</view>
|
||||
|
|
@ -92,15 +121,22 @@
|
|||
</view>
|
||||
|
||||
<view class="action-wrap">
|
||||
<view class="action-button" @touchend.stop.prevent="openConfirm" @tap.stop="openConfirm"
|
||||
@click.stop="openConfirm">确认兑换</view>
|
||||
<view class="action-button" @click="confirmVisible = true"
|
||||
>确认兑换</view
|
||||
>
|
||||
<view class="action-link" @click="openLedger">兑换记录</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<confirm-popup :visible="confirmVisible" title="兑换提示" :message="
|
||||
<asset-confirm-popup
|
||||
:visible="confirmVisible"
|
||||
title="兑换提示"
|
||||
:message="
|
||||
'确认使用 ' + formatAmount(pointsValue, 0) + ' 积分兑换 BMT 吗?'
|
||||
" @cancel="confirmVisible = false" @confirm="submit">
|
||||
"
|
||||
@cancel="confirmVisible = false"
|
||||
@confirm="submit"
|
||||
>
|
||||
<view class="popup-line">
|
||||
<text class="meta-pair__label">预估兑换BMT:</text>
|
||||
<text class="meta-pair__value asset-number-font">{{ estimateBmt }}</text>
|
||||
|
|
@ -113,22 +149,22 @@
|
|||
<text class="meta-pair__label">消耗算力:</text>
|
||||
<text class="meta-pair__value asset-number-font">{{ powerCost }}</text>
|
||||
</view>
|
||||
</confirm-popup>
|
||||
</asset-confirm-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ConfirmPopup from "../../components/confirm-popup/confirm-popup.vue";
|
||||
import AssetPageShell from "../../components/asset-page-shell.vue";
|
||||
import DecimalInput from "../../components/DecimalInput/DecimalInput.vue";
|
||||
import {
|
||||
import AssetConfirmPopup from "../../components/asset-confirm-popup.vue";
|
||||
import AssetPageShell from "../../components/asset-page-shell.vue";
|
||||
import DecimalInput from "../../components/DecimalInput/DecimalInput.vue";
|
||||
import {
|
||||
fetchBmtExchangeDetail,
|
||||
submitAssetBmtExchange,
|
||||
} from "../../api/assets";
|
||||
} from "../../api/assets";
|
||||
|
||||
export default {
|
||||
export default {
|
||||
components: {
|
||||
ConfirmPopup,
|
||||
AssetConfirmPopup,
|
||||
AssetPageShell,
|
||||
DecimalInput,
|
||||
},
|
||||
|
|
@ -257,12 +293,12 @@
|
|||
async loadPage(showLoading) {
|
||||
try {
|
||||
this.detail = await fetchBmtExchangeDetail(
|
||||
showLoading ?
|
||||
{
|
||||
showLoading
|
||||
? {
|
||||
showLoading: true,
|
||||
loadingText: "加载中",
|
||||
} :
|
||||
null,
|
||||
}
|
||||
: null,
|
||||
);
|
||||
} catch (error) {
|
||||
uni.showToast({
|
||||
|
|
@ -271,13 +307,6 @@
|
|||
});
|
||||
}
|
||||
},
|
||||
openConfirm() {
|
||||
if (this.submitting || this.confirmVisible) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.confirmVisible = true;
|
||||
},
|
||||
async submit() {
|
||||
if (this.submitting) {
|
||||
return;
|
||||
|
|
@ -354,49 +383,50 @@
|
|||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "../../styles/tokens.scss";
|
||||
@import "../../styles/common.scss";
|
||||
@import "../../styles/tokens.scss";
|
||||
@import "../../styles/common.scss";
|
||||
|
||||
.bmt-page {
|
||||
.bmt-page {
|
||||
min-height: 100vh;
|
||||
background: #191e32;
|
||||
}
|
||||
}
|
||||
|
||||
.bmt-scroll {
|
||||
padding: 8rpx 20rpx calc(env(safe-area-inset-bottom) + 36rpx);
|
||||
}
|
||||
.bmt-scroll {
|
||||
padding: 8rpx 20rpx;
|
||||
}
|
||||
|
||||
.panel-card,
|
||||
.hero-card {
|
||||
.panel-card,
|
||||
.hero-card {
|
||||
border-radius: 12rpx;
|
||||
background: #20263e;
|
||||
}
|
||||
}
|
||||
|
||||
.hero-card {
|
||||
.hero-card {
|
||||
position: relative;
|
||||
min-height: 240rpx;
|
||||
padding: 24rpx 28rpx;
|
||||
overflow: hidden;
|
||||
background: #20263e url("https://imgs.agrimedia.cn/bm-bmt/bmt2-header.png") no-repeat center top / 100% 240rpx;
|
||||
}
|
||||
background: #20263e url("https://imgs.agrimedia.cn/bm-bmt/bmt2-header.png")
|
||||
no-repeat center top / 100% 240rpx;
|
||||
}
|
||||
|
||||
.hero-card__content {
|
||||
.hero-card__content {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
.hero-card__coin-row {
|
||||
.hero-card__coin-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.hero-card__coin {
|
||||
.hero-card__coin {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
|
@ -404,246 +434,242 @@
|
|||
height: 56rpx;
|
||||
border-radius: 50%;
|
||||
background: linear-gradient(135deg, #18c5ff 0%, #1496ff 100%);
|
||||
}
|
||||
}
|
||||
|
||||
.hero-card__coin-image {
|
||||
.hero-card__coin-image {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.hero-card__coin-text {
|
||||
.hero-card__coin-text {
|
||||
margin-left: 16rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.hero-card__label {
|
||||
.hero-card__label {
|
||||
margin-top: 34rpx;
|
||||
font-size: 28rpx;
|
||||
color: #9ba7ce;
|
||||
}
|
||||
}
|
||||
|
||||
.hero-card__value {
|
||||
.hero-card__value {
|
||||
margin-top: 8rpx;
|
||||
font-size: 48rpx;
|
||||
font-weight: 800;
|
||||
color: #ffffff;
|
||||
line-height: 1.1;
|
||||
}
|
||||
}
|
||||
|
||||
.panel-card {
|
||||
.panel-card {
|
||||
margin-top: 18rpx;
|
||||
padding: 0 26rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.info-card {
|
||||
.info-card {
|
||||
padding-top: 2rpx;
|
||||
padding-bottom: 14rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.info-row {
|
||||
.info-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
min-height: 96rpx;
|
||||
border-bottom: 1rpx solid #4e5a82;
|
||||
}
|
||||
}
|
||||
|
||||
.info-row--last {
|
||||
.info-row--last {
|
||||
border-bottom: 1rpx solid #4e5a82;
|
||||
}
|
||||
}
|
||||
|
||||
.info-row__left {
|
||||
.info-row__left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-width: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.info-row__icon {
|
||||
.info-row__icon {
|
||||
width: 34rpx;
|
||||
height: 34rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.info-row__label {
|
||||
.info-row__label {
|
||||
margin-left: 20rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 400;
|
||||
color: #eef2ff;
|
||||
}
|
||||
}
|
||||
|
||||
.info-row__value {
|
||||
.info-row__value {
|
||||
font-size: 32rpx;
|
||||
font-weight: 700;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.info-row__price {
|
||||
.info-row__price {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
}
|
||||
}
|
||||
|
||||
.info-row__unit {
|
||||
.info-row__unit {
|
||||
margin-left: 10rpx;
|
||||
font-size: 22rpx;
|
||||
color: rgba(184, 193, 218, 0.88);
|
||||
}
|
||||
}
|
||||
|
||||
.info-card__estimate {
|
||||
.info-card__estimate {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: baseline;
|
||||
padding-top: 18rpx;
|
||||
font-size: 28rpx;
|
||||
color: #1ad296;
|
||||
}
|
||||
}
|
||||
|
||||
.info-card__estimate-value {
|
||||
.info-card__estimate-value {
|
||||
margin: 0 10rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 800;
|
||||
color: #2fe2a4;
|
||||
}
|
||||
}
|
||||
|
||||
.form-card {
|
||||
.form-card {
|
||||
padding-top: 18rpx;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.form-card__title {
|
||||
.form-card__title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.form-card__title-icon {
|
||||
.form-card__title-icon {
|
||||
width: 34rpx;
|
||||
height: 34rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.form-card__title-text {
|
||||
.form-card__title-text {
|
||||
margin-left: 14rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 700;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.form-input {
|
||||
.form-input {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 20rpx;
|
||||
padding: 0 20rpx;
|
||||
border-radius: 10rpx;
|
||||
background: #191e32;
|
||||
}
|
||||
}
|
||||
|
||||
.form-input__icon {
|
||||
.form-input__icon {
|
||||
width: 34rpx;
|
||||
height: 34rpx;
|
||||
margin-right: 18rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.form-input__field {
|
||||
.form-input__field {
|
||||
flex: 1;
|
||||
height: 98rpx;
|
||||
font-size: 30rpx;
|
||||
font-weight: 700;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.form-input__suffix {
|
||||
.form-input__suffix {
|
||||
margin-left: 16rpx;
|
||||
font-size: 22rpx;
|
||||
font-weight: 600;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.preview-card {
|
||||
.preview-card {
|
||||
margin-top: 18rpx;
|
||||
padding: 12rpx 26rpx;
|
||||
border-radius: 8rpx;
|
||||
background: rgba(26, 210, 150, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
.preview-card__row {
|
||||
.preview-card__row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
.preview-card__row+.preview-card__row {
|
||||
.preview-card__row + .preview-card__row {
|
||||
margin-top: 8rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.preview-card__left {
|
||||
.preview-card__left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.preview-card__icon {
|
||||
.preview-card__icon {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 10rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.preview-card__label {
|
||||
.preview-card__label {
|
||||
font-size: 26rpx;
|
||||
color: rgba(26, 210, 150, 1);
|
||||
}
|
||||
}
|
||||
|
||||
.preview-card__value {
|
||||
.preview-card__value {
|
||||
font-size: 26rpx;
|
||||
font-weight: 800;
|
||||
color: #1ad296;
|
||||
}
|
||||
}
|
||||
|
||||
.preview-card__value--light {
|
||||
.preview-card__value--light {
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.tips-block {
|
||||
.tips-block {
|
||||
margin-top: 24rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.tips-block__title {
|
||||
.tips-block__title {
|
||||
display: block;
|
||||
font-size: 24rpx;
|
||||
color: rgba(190, 197, 219, 0.92);
|
||||
}
|
||||
}
|
||||
|
||||
.tips-block__item {
|
||||
.tips-block__item {
|
||||
display: flex;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.tips-block__index,
|
||||
.tips-block__text {
|
||||
.tips-block__index,
|
||||
.tips-block__text {
|
||||
font-size: 24rpx;
|
||||
color: #929dbf;
|
||||
line-height: 44rpx;
|
||||
color: rgba(166, 175, 204, 0.92);
|
||||
}
|
||||
}
|
||||
|
||||
.tips-block__index {
|
||||
.tips-block__index {
|
||||
margin-right: 6rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.tips-block__text {
|
||||
.tips-block__text {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.action-wrap {
|
||||
position: relative;
|
||||
z-index: 30;
|
||||
.action-wrap {
|
||||
padding: 36rpx 22rpx 0;
|
||||
}
|
||||
}
|
||||
|
||||
.action-button {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
.action-button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
|
@ -655,19 +681,17 @@
|
|||
font-size: 30rpx;
|
||||
font-weight: 700;
|
||||
color: #ffffff;
|
||||
cursor: pointer;
|
||||
touch-action: manipulation;
|
||||
}
|
||||
}
|
||||
|
||||
.action-link {
|
||||
.action-link {
|
||||
margin-top: 26rpx;
|
||||
text-align: center;
|
||||
font-weight: 500;
|
||||
font-size: 28rpx;
|
||||
color: #1fb4ff;
|
||||
}
|
||||
}
|
||||
|
||||
.popup-line {
|
||||
.popup-line {
|
||||
margin-top: 14rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -18,13 +18,6 @@
|
|||
<text class="hero-card__label">可用BMT数量:</text>
|
||||
<text class="hero-card__value asset-number-font">{{ displayBmt }}</text>
|
||||
</view>
|
||||
<view class="hero-card__price">
|
||||
<text class="hero-card__price-label">BMT实时价格</text>
|
||||
<view class="hero-card__price-row">
|
||||
<text class="hero-card__price-value asset-number-font">{{ displayPrice }}</text>
|
||||
<text class="hero-card__price-unit">BMT/CNY</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="panel-card info-card">
|
||||
|
|
@ -68,15 +61,18 @@
|
|||
<view class="info-row__left">
|
||||
<image
|
||||
class="info-row__icon"
|
||||
:src="pageIcon('bmtr')"
|
||||
:src="pageIcon('bmt')"
|
||||
mode="aspectFit"
|
||||
></image>
|
||||
<text class="info-row__label">BMTR数量</text>
|
||||
<text class="info-row__label">BMT实时价格</text>
|
||||
</view>
|
||||
<view class="info-row__price">
|
||||
<text class="info-row__value asset-number-font">{{ displayPrice }}</text>
|
||||
<text class="info-row__unit">BMT/CNY</text>
|
||||
</view>
|
||||
<text class="info-row__value asset-number-font">{{ displayBmtr }}</text>
|
||||
</view>
|
||||
|
||||
<view v-if="!isBmtrMode" class="info-card__estimate">
|
||||
<view class="info-card__estimate">
|
||||
<text>全部闪兑预估可得</text>
|
||||
<text class="info-card__estimate-value asset-number-font">{{ allEstimateBmt }}</text>
|
||||
<text>BMT</text>
|
||||
|
|
@ -179,13 +175,10 @@ export default {
|
|||
{ label: "抵用券闪兑", value: "voucher" },
|
||||
{ label: "消费券闪兑", value: "coupon" },
|
||||
{ label: "余额闪兑", value: "balance" },
|
||||
{ label: "BMTR闪兑", value: "bmtr" },
|
||||
],
|
||||
detail: {
|
||||
ticker: {},
|
||||
balances: {},
|
||||
bmtrPercent: "",
|
||||
bmtrRatio: "",
|
||||
tips: [],
|
||||
},
|
||||
hasShown: false,
|
||||
|
|
@ -223,10 +216,6 @@ export default {
|
|||
return Number(this.form.amount || 0);
|
||||
},
|
||||
currentModeLabel() {
|
||||
if (this.form.mode === "bmtr") {
|
||||
return "BMTR";
|
||||
}
|
||||
|
||||
if (this.form.mode === "coupon") {
|
||||
return "消费券";
|
||||
}
|
||||
|
|
@ -238,10 +227,6 @@ export default {
|
|||
return "抵用券";
|
||||
},
|
||||
currentModeBalance() {
|
||||
if (this.form.mode === "bmtr") {
|
||||
return Number(this.detail.balances.bmtr || 0);
|
||||
}
|
||||
|
||||
if (this.form.mode === "coupon") {
|
||||
return Number(this.detail.balances.coupon || 0);
|
||||
}
|
||||
|
|
@ -255,68 +240,14 @@ export default {
|
|||
priceNumber() {
|
||||
return Number(this.detail.ticker.close || this.detail.ticker.cnyPrice || 0);
|
||||
},
|
||||
isBmtrMode() {
|
||||
return this.form.mode === "bmtr";
|
||||
},
|
||||
bmtrPercentNumber() {
|
||||
const percent = Number(this.detail.bmtrPercent);
|
||||
return Number.isFinite(percent) && percent > 0 ? percent : 0;
|
||||
},
|
||||
hasBmtrPercent() {
|
||||
return this.bmtrPercentNumber > 0;
|
||||
},
|
||||
bmtrRatioNumber() {
|
||||
const ratio = Number(this.detail.bmtrRatio);
|
||||
return Number.isFinite(ratio) && ratio > 0 ? ratio : 0;
|
||||
},
|
||||
hasBmtrRatio() {
|
||||
return this.bmtrRatioNumber > 0;
|
||||
},
|
||||
bmtrExchangeRate() {
|
||||
return Math.max(0, (100 - this.bmtrPercentNumber) / 100);
|
||||
},
|
||||
displayBmtrRatio() {
|
||||
if (!this.hasBmtrRatio) {
|
||||
return "--";
|
||||
}
|
||||
|
||||
return String(this.detail.bmtrRatio);
|
||||
},
|
||||
displayBmtrPercent() {
|
||||
if (!this.hasBmtrPercent) {
|
||||
return "--";
|
||||
}
|
||||
|
||||
const value = this.bmtrPercentNumber;
|
||||
return Number.isInteger(value) ? String(value) : String(value);
|
||||
},
|
||||
estimateBmt() {
|
||||
if (!this.amountValue) {
|
||||
return "0";
|
||||
}
|
||||
|
||||
if (this.isBmtrMode) {
|
||||
if (!this.hasBmtrPercent || !this.hasBmtrRatio) {
|
||||
return "--";
|
||||
}
|
||||
|
||||
return this.formatAmount(
|
||||
this.amountValue * this.bmtrRatioNumber * this.bmtrExchangeRate,
|
||||
2,
|
||||
);
|
||||
}
|
||||
|
||||
if (!this.priceNumber) {
|
||||
if (!this.amountValue || !this.priceNumber) {
|
||||
return "0";
|
||||
}
|
||||
|
||||
return this.formatAmount(this.amountValue / this.priceNumber, 2);
|
||||
},
|
||||
allEstimateBmt() {
|
||||
if (this.isBmtrMode) {
|
||||
return "0";
|
||||
}
|
||||
|
||||
if (!this.priceNumber) {
|
||||
return "0";
|
||||
}
|
||||
|
|
@ -340,36 +271,19 @@ export default {
|
|||
displayCoupon() {
|
||||
return this.formatAmount(this.detail.balances.coupon, 2);
|
||||
},
|
||||
displayBmtr() {
|
||||
return this.formatAmount(this.detail.balances.bmtr, 4);
|
||||
},
|
||||
displayPrice() {
|
||||
return this.priceNumber ? this.priceNumber : "0.00";
|
||||
},
|
||||
displayInputAmount() {
|
||||
return this.formatAmount(this.amountValue, this.isBmtrMode ? 2 : 0);
|
||||
},
|
||||
normalizedTips() {
|
||||
const tips =
|
||||
this.detail.tips && this.detail.tips.length
|
||||
? this.detail.tips
|
||||
: [
|
||||
if (this.detail.tips && this.detail.tips.length) {
|
||||
return this.detail.tips;
|
||||
}
|
||||
|
||||
return [
|
||||
"BMT闪兑 = 输入数量 ÷ BMT实时价格",
|
||||
"BMT闪兑时所需的抵用券、消费券、余额。必须大于10的倍数。",
|
||||
"闪兑成功后数量将直接结算到可用BMT。",
|
||||
];
|
||||
|
||||
if (!this.isBmtrMode) {
|
||||
return tips;
|
||||
}
|
||||
|
||||
return tips.concat([
|
||||
"BMTR兑换BMT1:" +
|
||||
this.displayBmtrRatio +
|
||||
"兑换,按兑换数量扣除" +
|
||||
this.displayBmtrPercent +
|
||||
"%手续费,兑换最小数量必须是10的倍数",
|
||||
]);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
|
|
@ -383,7 +297,6 @@ export default {
|
|||
voucher: "https://imgs.agrimedia.cn/bm-bmt/quan-icon-g%20%281%29.png",
|
||||
points: "https://imgs.agrimedia.cn/bm-bmt/j.png",
|
||||
coupon: "https://imgs.agrimedia.cn/bm-bmt/xiaofei-icon-o.png",
|
||||
bmtr: "https://imgs.agrimedia.cn/webimg/202607171808386371853.svg",
|
||||
};
|
||||
|
||||
return iconMap[type] || "";
|
||||
|
|
@ -462,16 +375,7 @@ export default {
|
|||
return;
|
||||
}
|
||||
|
||||
if (this.isBmtrMode && this.amountValue < 0.01) {
|
||||
this.openResultDialog(
|
||||
"error",
|
||||
"闪兑失败!",
|
||||
"BMTR闪兑最小数量为0.01。",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.isBmtrMode && this.amountValue < 10) {
|
||||
if (this.amountValue < 10) {
|
||||
this.openResultDialog(
|
||||
"error",
|
||||
"闪兑失败!",
|
||||
|
|
@ -493,7 +397,7 @@ export default {
|
|||
title: "确认闪兑",
|
||||
message:
|
||||
"确认使用" +
|
||||
this.displayInputAmount +
|
||||
this.formatAmount(this.amountValue, 0) +
|
||||
this.currentModeLabel +
|
||||
"闪兑BMT?",
|
||||
description: "预估可得 " + this.estimateBmt + " BMT",
|
||||
|
|
@ -587,7 +491,6 @@ export default {
|
|||
z-index: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
max-width: 360rpx;
|
||||
}
|
||||
|
||||
.hero-card__coin-row {
|
||||
|
|
@ -629,43 +532,6 @@ export default {
|
|||
font-weight: 800;
|
||||
line-height: 1.1;
|
||||
color: #ffffff;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.hero-card__price {
|
||||
position: absolute;
|
||||
right: 36rpx;
|
||||
top: 104rpx;
|
||||
z-index: 2;
|
||||
min-width: 220rpx;
|
||||
padding: 18rpx 22rpx;
|
||||
border-radius: 10rpx;
|
||||
background: rgba(28, 35, 61, 0.82);
|
||||
box-shadow: 0 14rpx 30rpx rgba(6, 10, 24, 0.24);
|
||||
}
|
||||
|
||||
.hero-card__price-label {
|
||||
display: block;
|
||||
font-size: 26rpx;
|
||||
color: rgba(225, 232, 255, 0.86);
|
||||
}
|
||||
|
||||
.hero-card__price-row {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
margin-top: 12rpx;
|
||||
}
|
||||
|
||||
.hero-card__price-value {
|
||||
font-size: 34rpx;
|
||||
font-weight: 800;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.hero-card__price-unit {
|
||||
margin-left: 10rpx;
|
||||
font-size: 20rpx;
|
||||
color: rgba(225, 232, 255, 0.72);
|
||||
}
|
||||
|
||||
.panel-card {
|
||||
|
|
@ -715,6 +581,17 @@ export default {
|
|||
color: #ffffff;
|
||||
}
|
||||
|
||||
.info-row__price {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
}
|
||||
|
||||
.info-row__unit {
|
||||
margin-left: 10rpx;
|
||||
font-size: 22rpx;
|
||||
color: rgba(184, 193, 218, 0.88);
|
||||
}
|
||||
|
||||
.info-card__estimate {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
|
|
@ -756,7 +633,7 @@ export default {
|
|||
|
||||
.mode-tabs {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
width: 600rpx;
|
||||
margin: 26rpx auto 0;
|
||||
padding: 4rpx;
|
||||
border-radius: 999rpx;
|
||||
|
|
@ -771,9 +648,8 @@ export default {
|
|||
flex: 1;
|
||||
height: 60rpx;
|
||||
border-radius: 999rpx;
|
||||
font-size: 24rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 600;
|
||||
white-space: nowrap;
|
||||
color: rgba(210, 219, 242, 0.72);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -136,8 +136,8 @@
|
|||
</view>
|
||||
|
||||
<view class="action-wrap">
|
||||
<view class="action-button" @tap="openConfirmDialog">确认兑换</view>
|
||||
<view class="action-link" @tap="openLedger">兑换记录</view>
|
||||
<view class="action-button" @click="openConfirmDialog">确认兑换</view>
|
||||
<view class="action-link" @click="openLedger">兑换记录</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>白马交易所</title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
|
||||
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/bmt/static/index.883130ca.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/bmt/static/js/chunk-vendors.a58c62f3.js></script><script src=/bmt/static/js/index.75c16dcc.js></script></body></html>
|
||||
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/bmt/static/index.883130ca.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/bmt/static/js/chunk-vendors.a58c62f3.js></script><script src=/bmt/static/js/index.c4c7e156.js></script></body></html>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue