首页样式

This commit is contained in:
2026-06-12 13:12:36 +08:00
parent e84f864229
commit 55b003c2bf
4 changed files with 1198 additions and 650 deletions

View File

@ -138,8 +138,8 @@ export default {
pointDiff: '点差佣金',
service: '服务费',
risk: '风险金',
profit: '头寸',
headPosition: '头寸',
profit: '盈亏',
headPosition: '盈亏',
available: '可用余额',
},
table: {

View File

@ -8,29 +8,9 @@
<div class="wallet-section">
<div class="section-label">{{ t('withdraw.dialog.walletBalance') }}</div>
<div class="wallet-grid">
<div class="wallet-item">
<span class="wallet-label">{{ t('withdraw.wallet.feeHandling') }}</span>
<span class="wallet-value">{{ walletInfo.commission_fee_handling || '0.00' }}</span>
</div>
<div class="wallet-item">
<span class="wallet-label">{{ t('withdraw.wallet.pointDiff') }}</span>
<span class="wallet-value">{{ walletInfo.commission_point_diff || '0.00' }}</span>
</div>
<div class="wallet-item">
<span class="wallet-label">{{ t('withdraw.wallet.service') }}</span>
<span class="wallet-value">{{ walletInfo.service || '0.00' }}</span>
</div>
<div class="wallet-item" v-if="showRiskFee">
<span class="wallet-label">{{ t('withdraw.wallet.risk') }}</span>
<span class="wallet-value">{{ walletInfo.risk || '0.00' }}</span>
</div>
<div class="wallet-item">
<span class="wallet-label">{{ t('withdraw.wallet.profit') }}</span>
<span class="wallet-value">{{ walletInfo.closing_profit || '0.00' }}</span>
</div>
<div class="wallet-item" v-if="roleId >= 5">
<span class="wallet-label">{{ t('withdraw.wallet.available') }}</span>
<span class="wallet-value available">{{ availableBalance || '0.00' }}</span>
<div v-for="(item, index) in walletItems" :key="index" class="wallet-item">
<span class="wallet-label">{{ item.label }}</span>
<span class="wallet-value" :class="{ available: item.field === 'available' }">{{ item.value }}</span>
</div>
</div>
</div>
@ -248,7 +228,7 @@ const isAgent = computed(() => roleId >= 5)
//
const currentCurrency = computed(() => props.channelInfo?.currency?.symbol || '-')
// = amount - freeze - ( + + + + )
// = amount - freeze - ( + + + + )
const availableBalance = computed(() => {
const amount = parseFloat(walletInfo.value.amount || '0')
const freeze = parseFloat(walletInfo.value.freeze || '0')
@ -259,7 +239,7 @@ const availableBalance = computed(() => {
Math.max(0, parseFloat(walletInfo.value.service || '0')) +
Math.max(0, parseFloat(walletInfo.value.risk || '0')) +
Math.max(0, parseFloat(walletInfo.value.closing_profit || '0'))
return Math.max(0, amount - freeze - walletSum)
return Math.max(0, amount - walletSum)
})
//
@ -267,8 +247,9 @@ const availableBalance = computed(() => {
const totalWalletBalance = computed(() => {
const amount = parseFloat(walletInfo.value.amount || '0')
const freeze = parseFloat(walletInfo.value.freeze || '0')
console.log('walletInfo.value:', walletInfo.value);
// + + + +
// + + + +
const walletSum =
parseFloat(walletInfo.value.commission_fee_handling || '0') +
parseFloat(walletInfo.value.commission_point_diff || '0') +
@ -279,49 +260,71 @@ const totalWalletBalance = computed(() => {
if (roleId >= 5) {
// roleId >= 5
// availableBalance = amount - freeze - walletSum
const availableBal = Math.max(0, amount - freeze - walletSum)
const availableBal = Math.max(0, amount - walletSum)
return walletSum + availableBal
}
return walletSum
})
//
const showRiskFee = computed(() => [1].includes(roleId))
//
const feeOrder = computed(() => {
const orders: Record<number, string[]> = {
1: ['手续费', '点差', '服务费', '风险金', '头寸', '可用余额'], //
2: ['手续费', '点差', '服务费', '可用余额'], //
3: ['手续费', '点差', '服务费', '头寸', '可用余额'], //
4: ['手续费', '点差', '服务费', '头寸', '可用余额'], //
5: ['手续费', '点差', '可用余额'], //
6: ['手续费', '点差', '可用余额'], //
}
return orders[roleId] ?? orders[6] ?? []
})
//
const feeFieldMap: Record<string, keyof WalletInfo | 'available'> = {
'手续费': 'commission_fee_handling',
'点差': 'commission_point_diff',
'服务费': 'service',
'风险金': 'risk',
'头寸': 'closing_profit',
'可用余额': 'available', // computed
}
//
const feeLabelMap: Record<string, string> = {
'手续费': '手续费佣金',
'点差': '点差佣金',
'服务费': '服务费',
'风险金': '风险金',
'头寸': '头寸',
'盈亏': '盈亏',
'可用余额': '可用余额',
}
//
const feeFieldMap: Record<string, keyof WalletInfo | 'available'> = {
'手续费': 'commission_fee_handling',
'点差': 'commission_point_diff',
'服务费': 'service',
'风险金': 'risk',
'盈亏': 'closing_profit',
'可用余额': 'available', // computed
}
//
const feeOrder = computed(() => {
const orders: Record<number, string[]> = {
1: ['手续费', '点差', '服务费', '风险金', '盈亏', '可用余额'], //
2: ['手续费', '点差', '服务费', '可用余额'], //
3: ['手续费', '点差', '服务费', '盈亏', '可用余额'], //
4: ['手续费', '点差', '服务费', '盈亏', '可用余额'], //
5: ['手续费', '点差', '可用余额'], //
6: ['手续费', '点差', '可用余额'], //
}
return orders[roleId] ?? orders[6] ?? []
})
//
const walletItems = computed(() => {
const items: { label: string; value: string; field: string }[] = []
for (const feeType of feeOrder.value) {
const field = feeFieldMap[feeType]
if (!field) continue
let value: string
if (field === 'available') {
value = availableBalance.value.toFixed(2)
} else {
value = walletInfo.value[field] || '0.00'
}
items.push({
label: feeLabelMap[feeType] || feeType,
value,
field,
})
}
return items
})
//
const walletInfo = ref<WalletInfo>({
user_id: '',
@ -523,13 +526,39 @@ const handleNextStep = () => {
return
}
//
formData.value.withdraw_fee_handle = calculatedData.value.find(item => item.type === '手续费')?.deducted || '0'
formData.value.withdraw_point_diff = calculatedData.value.find(item => item.type === '点差')?.deducted || '0'
formData.value.withdraw_service_fee = calculatedData.value.find(item => item.type === '服务费')?.deducted || '0'
formData.value.withdraw_risk_fee = calculatedData.value.find(item => item.type === '风险金')?.deducted || '0'
formData.value.withdraw_head_fee = calculatedData.value.find(item => item.type === '头寸')?.deducted || '0'
formData.value.withdraw_blance = calculatedData.value.find(item => item.type === '可用余额')?.deducted || '0'
//
formData.value.withdraw_fee_handle = '0'
formData.value.withdraw_point_diff = '0'
formData.value.withdraw_service_fee = '0'
formData.value.withdraw_risk_fee = '0'
formData.value.withdraw_head_fee = '0'
formData.value.withdraw_blance = '0'
//
for (const feeType of feeOrder.value) {
const deducted = calculatedData.value.find(item => item.type === feeType)?.deducted || '0'
switch (feeType) {
case '手续费':
formData.value.withdraw_fee_handle = deducted
break
case '点差':
formData.value.withdraw_point_diff = deducted
break
case '服务费':
formData.value.withdraw_service_fee = deducted
break
case '风险金':
formData.value.withdraw_risk_fee = deducted
break
case '盈亏':
formData.value.withdraw_head_fee = deducted
break
case '可用余额':
formData.value.withdraw_blance = deducted
break
}
}
currentStep.value = 2
}
@ -548,14 +577,35 @@ const handleSubmit = async () => {
const params: any = {
channel_id: props.channelId,
amount: +withdrawAmount.value,
withdraw_fee_handle: formData.value.withdraw_fee_handle,
withdraw_point_diff: formData.value.withdraw_point_diff,
withdraw_address: formData.value.withdraw_address,
}
//
for (const feeType of feeOrder.value) {
switch (feeType) {
case '手续费':
params.withdraw_fee_handle = formData.value.withdraw_fee_handle
break
case '点差':
params.withdraw_point_diff = formData.value.withdraw_point_diff
break
case '服务费':
params.withdraw_service_fee = formData.value.withdraw_service_fee
break
case '风险金':
params.withdraw_risk_fee = formData.value.withdraw_risk_fee
break
case '盈亏':
params.withdraw_head_fee = formData.value.withdraw_head_fee
break
case '可用余额':
params.withdraw_blance = formData.value.withdraw_blance
break
}
}
if (isAgent.value) {
//
params.withdraw_blance = formData.value.withdraw_blance
params.beneficiary_name = formData.value.beneficiary_name
params.beneficiary_bank_name = formData.value.beneficiary_bank_name
params.swift_bic_code = formData.value.swift_bic_code
@ -565,10 +615,6 @@ const handleSubmit = async () => {
await withdraw(params)
} else {
//
params.withdraw_service_fee = formData.value.withdraw_service_fee
params.withdraw_head_fee = formData.value.withdraw_head_fee
params.withdraw_risk_fee = formData.value.withdraw_risk_fee
await agentWithdraw(params)
}

File diff suppressed because it is too large Load Diff

View File

@ -65,7 +65,7 @@
<UserCaptcha v-model="registerForm.code" />
<el-form-item
label="设置密码(6-12位密码,包含特殊符号以及大小写)"
label="设置密码(6-12位密码)"
label-position="top"
prop="password"
>
@ -87,8 +87,8 @@
v-model="registerForm.inviteCode"
/>
</el-form-item>
<el-form-item>
<el-checkbox label="同意注册协议"
<el-form-item prop="agreeAgreement">
<el-checkbox v-model="registerForm.agreeAgreement"
>我已阅读并同意 隐私条例 退款政策 AMLCTF政策<br />
执行政策 网站条款和条件</el-checkbox
>
@ -108,6 +108,7 @@ defineOptions({
})
// type
import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage } from 'element-plus'
//
import UserHeader from './components/Header.vue'
import UserText from './components/Text.vue'
@ -155,12 +156,25 @@ const registerForm = ref<any>({
password: '',
code: '',
inviteCode: '',
agreeAgreement: false,
})
const registerRules = ref<FormRules>({
email: emailRules().email,
phone: phoneRules(registerForm.value).phone,
password: passwordRules(registerForm.value).password,
code: codeRules().code,
agreeAgreement: [
{
validator: (rule: any, value: any, callback: any) => {
if (!value) {
callback(new Error('请勾选同意注册协议'))
} else {
callback()
}
},
trigger: 'change',
},
],
})
//
@ -215,6 +229,13 @@ const handleSendCode = async () => {
//
const handleRegister = async () => {
if (!registerFormRef.value) return
//
if (!registerForm.value.agreeAgreement) {
ElMessage.error('请勾选同意注册协议')
return
}
try {
//
await registerFormRef.value.validate()