li.shaoyi 7 hónapja
szülő
commit
2fdf1b27d4

+ 16 - 0
src/constants/currency.ts

@@ -0,0 +1,16 @@
+interface CurrencyConfig {
+    locale: string;
+    currency: string;
+    threshold?: number;
+    notation?: Intl.NumberFormatOptions['notation'];
+}
+
+/**
+ * https://baike.baidu.com/item/ISO%204217/11018231
+ */
+export const currencyConfigMap = new Map<number, CurrencyConfig>([
+    [1, { locale: 'zh-cn', currency: 'CNY' }], // 人民币
+    [2, { locale: 'en', currency: 'USD' }], // 美元
+    [12, { locale: 'th', currency: 'THB' }], // 泰铢
+    [13, { locale: 'vi', currency: 'VND', notation: 'compact' }], // 越南盾
+])

+ 34 - 0
src/filters/index.ts

@@ -2,7 +2,9 @@ import CryptoJS from 'crypto-js'
 import service from '@/services'
 import Long from 'long'
 import moment from 'moment'
+import { currencyConfigMap } from '@/constants/currency'
 import { useGlobalStore, useUserStore, i18n } from '@/stores'
+import { CurrencyFormatOptions } from './types'
 
 /**
  * 获取url对象方法
@@ -449,4 +451,36 @@ export function numberToChinese(num: undefined | string) {
     result = result.replace(/亿万/, '亿零') + '元' + decimalPart
 
     return result.trim()
+}
+
+/**
+ * 货币金额格式化
+ * @param value 
+ * @param options 
+ * @returns 
+ */
+export function currencyFormat(value = 0, currencyId = 1, options: CurrencyFormatOptions = {}) {
+    if (options.noneValue && value <= 0) {
+        return options.noneValueText ?? '--'
+    }
+
+    const currencyConfig = currencyConfigMap.get(currencyId)
+
+    if (currencyConfig) {
+        //const bigInt = BigInt(value)
+
+        const hasValidThreshold = currencyConfig.threshold ? (value > currencyConfig.threshold) : true // 超过有效阈值将启用紧凑格式化
+
+        const intl = new Intl.NumberFormat(currencyConfig.locale, {
+            style: options.showSymbol ? 'currency' : 'decimal',
+            currency: currencyConfig.currency,
+            notation: hasValidThreshold ? (currencyConfig.notation ?? 'standard') : 'standard',
+            minimumFractionDigits: options.fractionDigits ?? 2,
+            maximumFractionDigits: options.fractionDigits ?? 2
+        })
+
+        return intl.format(value)
+    }
+
+    return value.toString()
 }

+ 9 - 0
src/filters/types.ts

@@ -0,0 +1,9 @@
+/**
+ * 货币格式化选项
+ */
+export interface CurrencyFormatOptions {
+    fractionDigits?: number; // 小数位
+    showSymbol?: boolean; // 是否显示货币符号
+    noneValue?: boolean; // 是否处理无值的情况
+    noneValueText?: string; // 无值显示的文本
+}

+ 21 - 14
src/packages/mobile/views/pricing/trade/fullpayment/Index.vue

@@ -20,20 +20,25 @@
                         </dd>
                         <dd>
                             <span>{{ $t('tss.qty') }}:</span>
-                            <span>{{ handleNumberValue(orderQty) }}</span>
+                            <span>{{ orderQty }}</span>
                         </dd>
                         <dd>
                             <span>{{ $t('tss.price') }}:</span>
-                            <span>{{ handleNumberValue(formatDecimal(marketPrice, quote?.decimalplace)) }}</span>
+                            <span>
+                                {{ currencyFormat(marketPrice, quote?.currencyid, {
+                                    fractionDigits: quote?.decimalplace, noneValue: true
+                                }) }}
+                            </span>
                         </dd>
                     </dl>
                 </div>
             </div>
             <div class="g-form" style="margin-top: 5px;">
                 <Form ref="formRef" class="g-form__container" @submit="onSubmit">
-                    <Field class="g-form__addressinfo" v-if="quote?.trademode != 10" left-icon="location" label-align="top" right-icon="add-o"
-                     name="AddrInfo" :label="$t('performance.address')" type="textarea" autosize v-model="formData.AddrInfo" 
-                     :rules="formRules.AddrInfo" :placeholder="$t('performance.pleaseentertheaddress')" @click-right-icon="showContact = true" />
+                    <Field class="g-form__addressinfo" v-if="quote?.trademode != 10" left-icon="location"
+                        label-align="top" right-icon="add-o" name="AddrInfo" :label="$t('performance.address')"
+                        type="textarea" autosize v-model="formData.AddrInfo" :rules="formRules.AddrInfo"
+                        :placeholder="$t('performance.pleaseentertheaddress')" @click-right-icon="showContact = true" />
                 </Form>
             </div>
             <div class="order-total">
@@ -49,29 +54,31 @@
                 <ul class="order-total__center">
                     <li>
                         <span>{{ $t('tss.orderAmount') }}:</span>
-                        <span>{{ formatDecimal(totalAmount) }}</span>
+                        <span>{{ currencyFormat(totalAmount, quote?.currencyid) }}</span>
                     </li>
                     <li>
                         <span>{{ $t('tss.serivcefee') }}:</span>
-                        <span>{{ formatDecimal(serivcefee) }}</span>
+                        <span>{{ currencyFormat(serivcefee, quote?.currencyid) }}</span>
                     </li>
                     <li>
                         <span>{{ $t('tss.pricemove') }}:</span>
-                        <span>{{ formatDecimal(pricemove) }}</span>
+                        <span>{{ currencyFormat(pricemove, quote?.currencyid) }}</span>
                     </li>
                     <li>
                         <span>{{ $t('tss.expressfees') }}:</span>
-                        <span>{{ formatDecimal(shipping) }}</span>
+                        <span>{{ currencyFormat(shipping, quote?.currencyid) }}</span>
                     </li>
                 </ul>
                 <ul class="order-total__bottom">
                     <li>
                         <span>{{ $t('tss.totalAmount') }}:</span>
-                        <span>{{ formatDecimal(totalAmount + serivcefee + pricemove + shipping) }}</span>
+                        <span>{{ currencyFormat(totalAmount + serivcefee + pricemove + shipping, quote?.currencyid)
+                            }}</span>
                     </li>
                     <li>
                         <span>{{ $t('tss.payAmount') }}:</span>
-                        <span>{{ formatDecimal(totalAmount + serivcefee + pricemove + shipping) }}</span>
+                        <span>{{ currencyFormat(totalAmount + serivcefee + pricemove + shipping, quote?.currencyid)
+                            }}</span>
                     </li>
                 </ul>
             </div>
@@ -94,7 +101,7 @@ import { Button, Image, Field, FieldRule, FormInstance, Form } from 'vant'
 import { useOrder } from '@/business/trade'
 import { fullloading, dialog } from '@/utils/vant'
 import { BuildType, BuyOrSell, PriceMode } from '@/constants/order'
-import { formatDecimal, getFileUrl, handleNumberValue } from '@/filters'
+import { getFileUrl, currencyFormat } from '@/filters'
 import { getGoodsUnitName } from '@/constants/unit'
 import AppModal from '@/components/base/modal/index.vue'
 import eventBus from '@/services/bus'
@@ -155,10 +162,10 @@ const serivcefee = computed(() => {
     const { FeeAlgorithm = 1, ExchangeValue = 0.0, MemberDefaultValue = 0.0 } = tradefees.find((e) => e.FeeID === 105) ?? {}
     // 固定
     if (FeeAlgorithm === 2) {
-        return props.orderQty * agreeunit * (ExchangeValue+MemberDefaultValue)
+        return props.orderQty * agreeunit * (ExchangeValue + MemberDefaultValue)
     }
     // 比例
-    return totalAmount.value * (ExchangeValue+MemberDefaultValue)
+    return totalAmount.value * (ExchangeValue + MemberDefaultValue)
 })
 
 // 验收费

+ 14 - 10
src/packages/mobile/views/pricing/trade/prepayment/Index.vue

@@ -20,11 +20,15 @@
                         </dd>
                         <dd>
                             <span>{{ $t('tss.qty') }}:</span>
-                            <span>{{ handleNumberValue(orderQty) }}</span>
+                            <span>{{ orderQty }}</span>
                         </dd>
                         <dd>
                             <span>{{ $t('tss.price') }}:</span>
-                            <span>{{ handleNumberValue(formatDecimal(marketPrice, quote?.decimalplace)) }}</span>
+                            <span>
+                                {{ currencyFormat(marketPrice, quote?.currencyid, {
+                                    fractionDigits: quote?.decimalplace, noneValue: true
+                                }) }}
+                            </span>
                         </dd>
                     </dl>
                 </div>
@@ -42,25 +46,25 @@
                 <ul class="order-total__center">
                     <li>
                         <span>{{ $t('tss.orderAmount') }}:</span>
-                        <span>{{ formatDecimal(totalAmount) }}</span>
+                        <span>{{ currencyFormat(totalAmount, quote?.currencyid) }}</span>
                     </li>
                     <li>
                         <span>{{ $t('tss.serivcefee') }}:</span>
-                        <span>{{ formatDecimal(serivcefee) }}</span>
+                        <span>{{ currencyFormat(serivcefee, quote?.currencyid) }}</span>
                     </li>
                     <li>
                         <span>{{ $t('tss.preamount') }}:</span>
-                        <span> {{ handleNumberValue(formatDecimal(usedMargin.deposit)) }}</span>
+                        <span> {{ currencyFormat(usedMargin.deposit, quote?.currencyid) }}</span>
                     </li>
                 </ul>
                 <ul class="order-total__bottom">
                     <li>
                         <span>{{ $t('tss.totalAmount') }}:</span>
-                        <span>{{ formatDecimal(serivcefee + usedMargin.deposit) }}</span>
+                        <span>{{ currencyFormat(serivcefee + usedMargin.deposit, quote?.currencyid) }}</span>
                     </li>
                     <li>
                         <span>{{ $t('tss.payAmount') }}:</span>
-                        <span>{{ formatDecimal(serivcefee + usedMargin.deposit) }}</span>
+                        <span>{{ currencyFormat(serivcefee + usedMargin.deposit, quote?.currencyid) }}</span>
                     </li>
                 </ul>
             </div>
@@ -82,7 +86,7 @@ import { Button, Image } from 'vant'
 import { useOrder } from '@/business/trade'
 import { fullloading, dialog } from '@/utils/vant'
 import { BuildType, BuyOrSell, PriceMode } from '@/constants/order'
-import { formatDecimal, getFileUrl, handleNumberValue } from '@/filters'
+import { getFileUrl, currencyFormat } from '@/filters'
 import { getGoodsUnitName } from '@/constants/unit'
 import AppModal from '@/components/base/modal/index.vue'
 import eventBus from '@/services/bus'
@@ -138,10 +142,10 @@ const serivcefee = computed(() => {
     const { FeeAlgorithm = 1, ExchangeValue = 0.0, MemberDefaultValue = 0.0 } = tradefees.find((e) => e.FeeID === 101) ?? {}
     // 固定
     if (FeeAlgorithm === 2) {
-        return props.orderQty * agreeunit * (ExchangeValue+MemberDefaultValue)
+        return props.orderQty * agreeunit * (ExchangeValue + MemberDefaultValue)
     }
     // 比例
-    return totalAmount.value * (ExchangeValue+MemberDefaultValue)
+    return totalAmount.value * (ExchangeValue + MemberDefaultValue)
 })
 
 // 预付款

+ 15 - 6
src/packages/mobile/views/pricing/trade/v2/Index.vue

@@ -12,19 +12,28 @@
                     <template v-if="orderType === 3">
                         <dt>{{ $t('tss.buyprice') }}</dt>
                         <dd :class="quote?.bidColor">
-                            {{ quote ? formatDecimal(quote.bid, quote.decimalplace) : handleNumberValue() }}
+                            {{ currencyFormat(quote?.bid, quote?.currencyid, {
+                                fractionDigits: quote?.decimalplace,
+                                noneValue: true
+                            }) }}
                         </dd>
                     </template>
                     <template v-else>
                         <dt>{{ $t('tss.sellprice') }}</dt>
                         <dd :class="quote?.askColor">
-                            {{ quote ? formatDecimal(quote.ask, quote.decimalplace) : handleNumberValue() }}
+                            {{ currencyFormat(quote?.ask, quote?.currencyid, {
+                                fractionDigits: quote?.decimalplace,
+                            noneValue: true }) }}
                         </dd>
                     </template>
                 </dl>
                 <dl v-if="orderType !== 1">
                     <dt>{{ $t('tss.preamount') }}</dt>
-                    <dd>{{ handleNumberValue(formatDecimal(usedMargin.deposit, quote?.decimalplace)) }}</dd>
+                    <dd>
+                        {{ currencyFormat(usedMargin?.deposit, quote?.currencyid, {
+                            fractionDigits: quote?.decimalplace, noneValue: true
+                        }) }}
+                    </dd>
                 </dl>
             </div>
         </div>
@@ -77,8 +86,8 @@
         <template #footer v-if="collection">
             <div class="g-form__footer inset">
                 <Button type="danger" block :disabled="orderQty === 0" @click="onSubmit">
-                    {{ orderType === 1 ? $t('operation.buynow') : orderTypeStepList.find(e => e.value ===
-                        orderType)?.label }}
+                    {{orderType === 1 ? $t('operation.buynow') : orderTypeStepList.find(e => e.value ===
+                        orderType)?.label}}
                 </Button>
             </div>
             <component ref="componentRef" :is="componentMap.get(componentId)"
@@ -92,7 +101,7 @@ import { shallowRef, onMounted, onUnmounted, computed, defineAsyncComponent } fr
 import { Form, Field, Button, FormInstance, Radio, RadioGroup, Tab, Tabs } from 'vant'
 import { useFuturesStore, useGoodsCollectionStore, useUserStore, i18n, useAccountStore } from '@/stores'
 import { useNavigation } from '@mobile/router/navigation'
-import { formatDecimal, handleNumberValue } from '@/filters'
+import { currencyFormat } from '@/filters'
 import { getGoodsUnitName } from '@/constants/unit'
 import { useComponent } from '@/hooks/component'
 import quoteSocket from '@/services/websocket/quote'

+ 12 - 12
src/packages/tss/views/bank/capital/index.vue

@@ -5,21 +5,21 @@
         </template>
         <CellGroup v-for="(item, index) in accountStore.accountComputedList" :key="index">
             <Cell :title="$t('account.accountid')" :value="item.accountid" />
-            <!-- <Cell :title="$t('account.balance2')" :value="formatDecimal(item.balance)" />
-            <Cell :title="$t('account.currentbalance')" :value="formatDecimal(item.currentbalance)" /> -->
-            <Cell :title="$t('account.netWorth')" :value="formatDecimal(item.netvalue)" />
-            <Cell :title="$t('account.availableFunds2')" :value="formatDecimal(item.avaiableMoney)" />
-            <!-- <Cell :title="$t('account.usedMargin2')" :value="formatDecimal(item.usedmargin)" /> -->
-            <Cell :title="$t('account.freezeMargin2')" :value="formatDecimal(item.freezeMargin)" />
+            <!-- <Cell :title="$t('account.balance2')" :value="currencyFormat(item.balance, item.currencyid)" />
+            <Cell :title="$t('account.currentbalance')" :value="currencyFormat(item.currentbalance, item.currencyid)" /> -->
+            <Cell :title="$t('account.netWorth')" :value="currencyFormat(item.netvalue, item.currencyid)" />
+            <Cell :title="$t('account.availableFunds2')" :value="currencyFormat(item.avaiableMoney, item.currencyid)" />
+            <!-- <Cell :title="$t('account.usedMargin2')" :value="currencyFormat(item.usedmargin, item.currencyid)" /> -->
+            <Cell :title="$t('account.freezeMargin2')" :value="currencyFormat(item.freezeMargin, item.currencyid)" />
             <Cell :title="$t('account.profitLoss')">
                 <template #value>
-                    <span :class="handlePriceColor(profitLoss)">{{ formatDecimal(profitLoss) }}</span>
+                    <span :class="handlePriceColor(profitLoss)">{{ currencyFormat(profitLoss, item.currencyid) }}</span>
                 </template>
             </Cell>
-            <Cell :title="$t('account.inamount')" :value="formatDecimal(item.inamount)" />
-            <Cell :title="$t('account.outamount')" :value="formatDecimal(item.outamount)" />
-            <Cell :title="$t('account.closepl')" :value="formatDecimal(item.closepl)" />
-            <Cell :title="$t('account.paycharge')" :value="formatDecimal(item.paycharge)" />
+            <Cell :title="$t('account.inamount')" :value="currencyFormat(item.inamount, item.currencyid)" />
+            <Cell :title="$t('account.outamount')" :value="currencyFormat(item.outamount, item.currencyid)" />
+            <Cell :title="$t('account.closepl')" :value="currencyFormat(item.closepl, item.currencyid)" />
+            <Cell :title="$t('account.paycharge')" :value="currencyFormat(item.paycharge, item.currencyid)" />
             <Cell :title="$t('account.tradestatus')" :value="getTradeStatusName(item.tradestatus)" />
         </CellGroup>
     </app-view>
@@ -28,7 +28,7 @@
 <script lang="ts" setup>
 import { computed } from 'vue'
 import { CellGroup, Cell } from 'vant'
-import { formatDecimal, handlePriceColor } from '@/filters'
+import { currencyFormat, handlePriceColor } from '@/filters'
 import { getTradeStatusName } from '@/constants/order'
 import { useAccountStore, useSBYJOrderStore } from '@/stores'
 

+ 19 - 14
src/packages/tss/views/bank/wallet/components/deposit/Index.vue

@@ -4,7 +4,8 @@
         <Form ref="formRef" class="g-form__container" @submit="doDepositWarning">
             <CellGroup v-if="cusBank?.caninamount === 1">
                 <Field :label="$t('banksign.wallet.deposit.inamount')"
-                    :placeholder="$t('banksign.wallet.deposit.pleaseenterinamount')" :rules="formRules.Amount" label-align="top">
+                    :placeholder="$t('banksign.wallet.deposit.pleaseenterinamount')" :rules="formRules.Amount"
+                    label-align="top">
                     <template #input>
                         <div class="g-qty-group">
                             <RadioGroup v-model="qtyStep" direction="horizontal" @change="onRadioChange">
@@ -26,26 +27,29 @@
                 </template>
             </CellGroup>
             <CellGroup>
-                <Cell :title="$t('mine.balance')" :value="currentAccount.currentbalance?.toFixed(2)" />
+                <Cell :title="$t('mine.balance')"
+                    :value="currencyFormat(currentAccount.currentbalance, currentAccount.currencyid)" />
                 <Cell :title="$t('banksign.wallet.withdraw.bankaccountname')"
                     :value="handleNoneValue(sign.bankaccountname)" />
-                <Cell v-if="sign.ismix === 0" :title="$t('banksign.wallet.withdraw.bankname')" :value="handleNoneValue(sign.bankname)" />
+                <Cell v-if="sign.ismix === 0" :title="$t('banksign.wallet.withdraw.bankname')"
+                    :value="handleNoneValue(sign.bankname)" />
                 <Cell v-if="sign.ismix === 0" :title="$t('banksign.wallet.withdraw.bankaccountno')"
                     :value="handleNoneValue(sign.bankaccountno)" />
-                <Field v-if="sign.ismix === 1" type="number" name="phone_number" :label="$t('banksign.mobilephone')" maxlength="30" v-model.trim="phone_number" :placeholder="$t('banksign.Pleaseenteryourmobilephonenumber')"
-                    :rules="formRules.phone_number" />
-                <Field v-if="sign.ismix === 1" :label="$t('banksign.bankchannel')" name="channel_code" is-link >
+                <Field v-if="sign.ismix === 1" type="number" name="phone_number" :label="$t('banksign.mobilephone')"
+                    maxlength="30" v-model.trim="phone_number"
+                    :placeholder="$t('banksign.Pleaseenteryourmobilephonenumber')" :rules="formRules.phone_number" />
+                <Field v-if="sign.ismix === 1" :label="$t('banksign.bankchannel')" name="channel_code" is-link>
                     <template #input>
                         <app-select v-model="channel_code" :options="hybrids"
-                            :optionProps="{ label: 'channel_name', value: 'channel_code' }" @confirm="onHibirdChange"/>
+                            :optionProps="{ label: 'channel_name', value: 'channel_code' }" @confirm="onHibirdChange" />
                     </template>
                 </Field>
-                <Field v-if="sign.ismix === 1" :label="$t('banksign.banktype')" name="method_type" is-link >
+                <Field v-if="sign.ismix === 1" :label="$t('banksign.banktype')" name="method_type" is-link>
                     <template #input>
-                        <app-select v-model="method_type" :options="methodTypes" @confirm="onMethodTypeChange"/>
+                        <app-select v-model="method_type" :options="methodTypes" @confirm="onMethodTypeChange" />
                     </template>
                 </Field>
-                <Field v-if="sign.ismix === 1 && channel_banks.length != 0" :label="$t('banksign.bankname1')" 
+                <Field v-if="sign.ismix === 1 && channel_banks.length != 0" :label="$t('banksign.bankname1')"
                     :placeholder="$t('banksign.Pleaseselectyourbank')" name="bank_code" v-model="hyBankName"
                     @click-input="showSelect = true" :rules="formRules.hyBankName" is-link />
             </CellGroup>
@@ -97,6 +101,7 @@
 import { shallowRef, ref, defineAsyncComponent, onMounted, computed } from 'vue'
 import { Form, Field, Cell, CellGroup, Button, FieldRule, FormInstance, RadioGroup, Radio, showToast, showFailToast } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
+import { currencyFormat } from '@/filters'
 import { useDoDeposit, useDoCusBankExtendConfigs, getMethodTypeKeys, useHybridConfigs } from '@/business/bank'
 import { getServerTime } from '@/services/api/common'
 import { useUserStore, useAccountStore, i18n } from '@/stores'
@@ -108,7 +113,7 @@ import moment from 'moment'
 
 const formRef = shallowRef<FormInstance>()
 const { formData, onSubmit, sign } = useDoDeposit()
-const {  hybrids, channel_code, bank_code, method_type, method_types, channel_banks } = useHybridConfigs(0)
+const { hybrids, channel_code, bank_code, method_type, method_types, channel_banks } = useHybridConfigs(0)
 const { getSystemParamValue } = useUserStore()
 const { configs, cusBank, startTime, endTime } = useDoCusBankExtendConfigs(2)
 const certificate_photo_url = ref('')
@@ -130,7 +135,7 @@ const msg_324 = getSystemParamValue('324')
 
 const hyBankName = shallowRef('')
 // 弹出客户选择界面
-const showSelect = shallowRef(false) 
+const showSelect = shallowRef(false)
 // 选择银行
 const SelectBank = defineAsyncComponent(() => import('../hybank/Index.vue'))
 
@@ -265,7 +270,7 @@ const formSubmit = () => {
         obj['certificate_photo_url'] = certificate_photo_url.value
 
         // 请求是否结束
-        let isComplete = false 
+        let isComplete = false
         const complete = () => {
             isComplete = true
             dialog({
@@ -278,7 +283,7 @@ const formSubmit = () => {
         // 请求等待可能会超过30秒导致请求超时,所以2秒内没回应直接提示成功
         const t = setTimeout(() => complete(), 2000)
         formData.extendInfo = JSON.stringify(obj)
-        
+
         onSubmit().then(() => {
             if (!isComplete) {
                 complete()

+ 3 - 3
src/packages/tss/views/bank/wallet/components/inoutapply/Index.vue

@@ -12,12 +12,12 @@
                         <dt>
                             <span>{{ getInOutExecuteTypeName(item.executetype) }}</span>
                             <span>
-                                <b>{{ formatDecimal(item.amount) }}</b>
+                                <b>{{ currencyFormat(item.amount, item.currencyid) }}</b>
                             </span>
                         </dt>
                         <dd>
                             <span>{{ $t('banksign.wallet.inoutapply.charge') }}</span>
-                            <span>{{ formatDecimal(item.charge) }}</span>
+                            <span>{{ currencyFormat(item.charge, item.currencyid) }}</span>
                         </dd>
                         <dd>
                             <span>{{ $t('banksign.wallet.inoutapply.extoperateid') }}</span>
@@ -49,7 +49,7 @@ import { Button, showToast } from 'vant'
 import { useRequest } from '@/hooks/request'
 import { queryAccountInOutApply, getAmtInByPaidUrl } from '@/services/api/bank'
 import { getInOutApplyStatusName, getInOutExecuteTypeName } from '@/constants/order'
-import { formatDecimal, handleNoneValue, formatDate } from '@/filters'
+import { currencyFormat, handleNoneValue, formatDate } from '@/filters'
 import AppModal from '@/components/base/modal/index.vue'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 import plus from '@/utils/h5plus'

+ 33 - 22
src/packages/tss/views/bank/wallet/components/withdraw/Index.vue

@@ -10,7 +10,8 @@
                             :placeholder="$t('banksign.wallet.withdraw.pleaseenteroutamount')" />
                         <div class="form-field__tips">
                             <label>{{ $t('banksign.wallet.withdraw.availableoutmoney') }}</label>
-                            <span style="color: #FF0000;">{{ fund.AvailableOutMoney }}</span>
+                            <span style="color: #FF0000;">{{ currencyFormat(fund.AvailableOutMoney,
+                                accountStore.currentAccount.currencyid) }}</span>
                         </div>
                     </template>
                 </Field>
@@ -22,30 +23,38 @@
                 </template>
             </CellGroup>
             <CellGroup>
-                <Cell v-if="sign.ismix === 0" :title="$t('banksign.wallet.withdraw.bankaccountname')" :value="handleNoneValue(sign.bankaccountname)" />
-                <Cell v-if="sign.ismix === 0" :title="$t('banksign.wallet.withdraw.bankname')" :value="handleNoneValue(sign.bankname)" />
-                <Cell v-if="sign.ismix === 0" :title="$t('banksign.wallet.withdraw.bankaccountno')" :value="handleNoneValue(sign.bankaccountno)" />
-                <Field v-if="sign.ismix === 1" name="bankaccountname" :label="$t('banksign.wallet.withdraw.bankaccountname')" 
-                    v-model.trim="sign.bankaccountname" @click="showReciver = true" is-link readonly />
-                <Field v-if="sign.ismix === 1" type="number" name="phone_number" :label="$t('banksign.mobilephone')" maxlength="30" v-model.trim="onboard.phone_number" :placeholder="$t('banksign.Pleaseenteryourmobilephonenumber')"
-                    :rules="formRules.phone_number" />
-                <Field v-if="sign.ismix === 1" type="number" name="cert_no" :label="$t('banksign.cardno')" maxlength="30" v-model.trim="onboard.cert_no" :placeholder="$t('user.authentication.pleaseenterthecardnum')" :rules="formRules.cert_no" />
-                <Field v-if="sign.ismix === 1" :label="$t('banksign.bankchannel')" name="channel_code" is-link >
+                <Cell v-if="sign.ismix === 0" :title="$t('banksign.wallet.withdraw.bankaccountname')"
+                    :value="handleNoneValue(sign.bankaccountname)" />
+                <Cell v-if="sign.ismix === 0" :title="$t('banksign.wallet.withdraw.bankname')"
+                    :value="handleNoneValue(sign.bankname)" />
+                <Cell v-if="sign.ismix === 0" :title="$t('banksign.wallet.withdraw.bankaccountno')"
+                    :value="handleNoneValue(sign.bankaccountno)" />
+                <Field v-if="sign.ismix === 1" name="bankaccountname"
+                    :label="$t('banksign.wallet.withdraw.bankaccountname')" v-model.trim="sign.bankaccountname"
+                    @click="showReciver = true" is-link readonly />
+                <Field v-if="sign.ismix === 1" type="number" name="phone_number" :label="$t('banksign.mobilephone')"
+                    maxlength="30" v-model.trim="onboard.phone_number"
+                    :placeholder="$t('banksign.Pleaseenteryourmobilephonenumber')" :rules="formRules.phone_number" />
+                <Field v-if="sign.ismix === 1" type="number" name="cert_no" :label="$t('banksign.cardno')"
+                    maxlength="30" v-model.trim="onboard.cert_no"
+                    :placeholder="$t('user.authentication.pleaseenterthecardnum')" :rules="formRules.cert_no" />
+                <Field v-if="sign.ismix === 1" :label="$t('banksign.bankchannel')" name="channel_code" is-link>
                     <template #input>
-                        <app-select v-model="channel_code" :options="hybrids" :optionProps="{ label: 'channel_name', value: 'channel_code' }" 
-                          @confirm="onHibirdChange"/>
+                        <app-select v-model="channel_code" :options="hybrids"
+                            :optionProps="{ label: 'channel_name', value: 'channel_code' }" @confirm="onHibirdChange" />
                     </template>
                 </Field>
-                <Field v-if="sign.ismix === 1" :label="$t('banksign.banktype')" name="method_type" is-link >
+                <Field v-if="sign.ismix === 1" :label="$t('banksign.banktype')" name="method_type" is-link>
                     <template #input>
-                        <app-select v-model="method_type" :options="methodTypes" @confirm="onMethodTypeChange"/>
+                        <app-select v-model="method_type" :options="methodTypes" @confirm="onMethodTypeChange" />
                     </template>
                 </Field>
-                <Field v-if="sign.ismix === 1 && channel_banks.length != 0" :label="$t('banksign.bankname1')" 
-                    :placeholder="$t('banksign.Pleaseselectyourbank')" name="bank_code" v-model="hyBankName" 
+                <Field v-if="sign.ismix === 1 && channel_banks.length != 0" :label="$t('banksign.bankname1')"
+                    :placeholder="$t('banksign.Pleaseselectyourbank')" name="bank_code" v-model="hyBankName"
                     @click-input="showSelect = true" :rules="formRules.hyBankName" is-link />
-                <Field v-if="sign.ismix === 1" type="number" name="bank_account" :label="$t('banksign.bankno')" maxlength="30" v-model.trim="onboard.bank_account" :placeholder="$t('banksign.Pleaseenterbankaccountno')"
-                        :rules="formRules.bank_account" />
+                <Field v-if="sign.ismix === 1" type="number" name="bank_account" :label="$t('banksign.bankno')"
+                    maxlength="30" v-model.trim="onboard.bank_account"
+                    :placeholder="$t('banksign.Pleaseenterbankaccountno')" :rules="formRules.bank_account" />
             </CellGroup>
             <CellGroup v-if="msg_317">
                 <Cell :title="$t('common.tips')">
@@ -80,16 +89,17 @@
 import { reactive, shallowRef, defineAsyncComponent, computed } from 'vue'
 import { Form, Field, Cell, CellGroup, FormInstance, Button, FieldRule } from 'vant'
 import { fullloading, dialog, } from '@/utils/vant'
+import { currencyFormat } from '@/filters'
 import { useDoWithdraw, useAccountFundInfo, useDoCusBankExtendConfigs, getMethodTypeKeys, useHybridConfigs } from '@/business/bank'
 import { getServerTime } from '@/services/api/common'
 import { useNavigation } from '@mobile/router/navigation'
-import { useUserStore, i18n } from '@/stores'
+import { useUserStore, useAccountStore, i18n } from '@/stores'
 import { handleNoneValue } from '@/filters'
 import moment from 'moment'
 import AppSelect from '@mobile/components/base/select/index.vue'
 
 const { formData, onSubmit, sign } = useDoWithdraw()
-const {  hybrids, channel_code, bank_code, method_type, method_types, channel_banks } = useHybridConfigs(1)
+const { hybrids, channel_code, bank_code, method_type, method_types, channel_banks } = useHybridConfigs(1)
 const { configs, cusBank, startTime, endTime } = useDoCusBankExtendConfigs(3)
 
 /// 资金账户信息
@@ -101,7 +111,8 @@ const msg = getSystemParamValue('302')
 const msg_317 = getSystemParamValue('317')
 const { global: { t } } = i18n
 
-const userStore = useUserStore() 
+const accountStore = useAccountStore()
+const userStore = useUserStore()
 const { userinfotype } = userStore.userInfo
 
 const showReciver = shallowRef(false)
@@ -109,7 +120,7 @@ const Reciver = defineAsyncComponent(() => import('./reciver/Index.vue'))
 
 const hyBankName = shallowRef('')
 // 弹出客户选择界面
-const showSelect = shallowRef(false) 
+const showSelect = shallowRef(false)
 // 选择银行
 const SelectBank = defineAsyncComponent(() => import('../hybank/Index.vue'))
 

+ 8 - 4
src/packages/tss/views/mine/Index.vue

@@ -31,13 +31,17 @@
                     <ul>
                         <li>
                             <span>{{ $t('mine.balance') }}</span>
-                            <span>{{ currentAccount.currentbalance?.toFixed(2) }}</span>
+                            <span>
+                                {{ currencyFormat(currentAccount.currentbalance, currentAccount.currencyid) }}
+                            </span>
                         </li>
                     </ul>
                     <ul>
                         <li>
                             <span>{{ $t('mine.availableFunds') }}</span>
-                            <span>{{ currentAccount.avaiableMoney?.toFixed(2) }}</span>
+                            <span>
+                                {{ currencyFormat(currentAccount.avaiableMoney, currentAccount.currencyid) }}
+                            </span>
                         </li>
                     </ul>
                 </div>
@@ -127,7 +131,7 @@
 import { shallowRef, onActivated, onDeactivated, computed } from 'vue'
 import { Cell, CellGroup, Button, Icon } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
-// import { parsePercent } from '@/filters'
+import { currencyFormat } from '@/filters'
 import { useNavigation } from '@mobile/router/navigation'
 import { AuthStatus } from '@/constants/account'
 import { queryBankAccountSign } from '@/services/api/bank'
@@ -193,7 +197,7 @@ const userLogout = () => {
 
 onActivated(() => {
     plus.setStatusBarStyle('light')
-    
+
     if (authStatus.value !== AuthStatus.Certified) {
         userStore.getUserData()
     }

+ 5 - 3
src/packages/tss/views/order/delivery/components/offline/Index.vue

@@ -44,11 +44,13 @@
                     <div class="bottom">
                         <div class="bottom-left">
                             <label>{{ $t('delivery.offline.deliveryprice') }}</label>
-                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : currencyFormat(item.deliveryprice, item.currencyid)
+                                }}</span>
                         </div>
                         <div class="bottom-right">
                             <label>{{ $t('delivery.offline.deliveryamount') }}</label>
-                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : currencyFormat(item.deliveryamount,
+                                item.currencyid) }}</span>
                         </div>
                     </div>
                 </div>
@@ -60,7 +62,7 @@
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
 import { Image } from 'vant'
-import { getFileUrl } from '@/filters'
+import { getFileUrl, currencyFormat } from '@/filters'
 import { getDeliveryOrderStatusName } from '@/constants/order'
 // import { fullloading, dialog } from '@/utils/vant'
 import { formatDate } from '@/filters'

+ 5 - 3
src/packages/tss/views/order/delivery/components/online/Index.vue

@@ -48,11 +48,13 @@
                     <div class="bottom">
                         <div class="bottom-left">
                             <label>{{ $t('delivery.offline.deliveryprice') }}</label>
-                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : currencyFormat(item.deliveryprice, item.currencyid)
+                                }}</span>
                         </div>
                         <div class="bottom-right">
                             <label>{{ $t('delivery.offline.deliveryamount') }}</label>
-                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : currencyFormat(item.deliveryamount,
+                                item.currencyid) }}</span>
                         </div>
                     </div>
                 </div>
@@ -70,7 +72,7 @@
 import { shallowRef } from 'vue'
 import { Button, Image } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
-import { formatDate, handleRequestBigNumber } from '@/filters'
+import { formatDate, handleRequestBigNumber, currencyFormat } from '@/filters'
 import { useRequest } from '@/hooks/request'
 import { getFileUrl } from '@/filters'
 import { queryMineTradeGoodsDeliveryOfflines } from '@/services/api/transfer'

+ 5 - 3
src/packages/tss/views/order/delivery/components/spot/Index.vue

@@ -48,11 +48,13 @@
                     <div class="bottom">
                         <div class="bottom-left">
                             <label>{{ $t('delivery.offline.deliveryprice') }}</label>
-                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : currencyFormat(item.deliveryprice, item.currencyid)
+                                }}</span>
                         </div>
                         <div class="bottom-right">
                             <label>{{ $t('delivery.offline.deliveryamount') }}</label>
-                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : currencyFormat(item.deliveryamount,
+                                item.currencyid) }}</span>
                         </div>
                     </div>
                 </div>
@@ -69,7 +71,7 @@ import { shallowRef } from 'vue'
 import { Button, Image } from 'vant'
 import { getFileUrl } from '@/filters'
 import { fullloading, dialog } from '@/utils/vant'
-import { formatDate, handleRequestBigNumber } from '@/filters'
+import { formatDate, handleRequestBigNumber, currencyFormat } from '@/filters'
 import { useRequest } from '@/hooks/request'
 import { queryMineTradeGoodsDeliveryOfflines } from '@/services/api/transfer'
 import { offlineDeliveryApplyCancelOrder } from '@/services/api/trade'

+ 3 - 3
src/packages/tss/views/order/list/fullpayment/Index.vue

@@ -40,11 +40,11 @@
                     <div class="bottom">
                         <div class="bottom-left">
                             <label>{{ $t('delivery.offline.deliveryprice') }}</label>
-                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : currencyFormat(item.deliveryprice, item.currencyid) }}</span>
                         </div>
                         <div class="bottom-right">
                             <label>{{ $t('delivery.offline.deliveryamount') }}</label>
-                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : currencyFormat(item.deliveryamount, item.currencyid) }}</span>
                         </div>
                     </div>
                 </div>
@@ -63,7 +63,7 @@
 import { shallowRef } from 'vue'
 import { Button, Image } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
-import { formatDate, handleRequestBigNumber } from '@/filters'
+import { formatDate, handleRequestBigNumber, currencyFormat } from '@/filters'
 import { getFileUrl } from '@/filters'
 import { useRequest } from '@/hooks/request'
 import { getDeliveryOrderStatusName } from '@/constants/order'

+ 12 - 5
src/packages/tss/views/order/list/prepayment/Index.vue

@@ -36,7 +36,7 @@
                                 <li>
                                     <span>{{ $t('position.goods.closepl') }}:</span>
                                     <span :class="handlePriceColor(item.floatpl)">
-                                        {{ formatDecimal(item.floatpl) }}
+                                        {{ currencyFormat(item.floatpl, item.currencyid) }}
                                     </span>
                                 </li>
                             </ul>
@@ -45,11 +45,19 @@
                     <div class="bottom">
                         <div class="bottom-left">
                             <label>{{ $t('position.goods.holddetail.holderamount') }}</label>
-                            <span>{{ formatDecimal(item.tradeamount, item.decimalplace) }}</span>
+                            <span>
+                                {{ currencyFormat(item.tradeamount, item.currencyid, {
+                                    fractionDigits: item.decimalplace
+                                }) }}
+                            </span>
                         </div>
                         <div class="bottom-right">
                             <label>{{ $t('position.goods.preamounts') }}</label>
-                            <span>{{ formatDecimal(item.oripayeddeposit, item.decimalplace)}}</span>
+                            <span>
+                                {{ currencyFormat(item.oripayeddeposit, item.currencyid, {
+                                    fractionDigits:
+                                item.decimalplace }) }}
+                            </span>
                         </div>
                     </div>
                 </div>
@@ -61,8 +69,7 @@
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
 import { Image } from 'vant'
-import { formatDecimal, handlePriceColor } from '@/filters'
-import { getFileUrl, formatDate } from '@/filters'
+import { getFileUrl, formatDate, handlePriceColor, currencyFormat } from '@/filters'
 import { getBuyOrSellName } from '@/constants/order'
 import { useRequest } from '@/hooks/request'
 import { queryTradeHolderDetailEx } from '@/services/api/order'

+ 10 - 6
src/packages/tss/views/order/position/Index.vue

@@ -48,14 +48,14 @@
                                     <li>
                                         <span>{{ $t('position.goods.preamounts') }}:</span>
                                         <span>
-                                            {{ formatDecimal(item.tHDetailEx.payedDeposit
-                                                + item.tHDetailEx.restockDeposit) }}
+                                            {{ currencyFormat(item.tHDetailEx.payedDeposit
+                                                + item.tHDetailEx.restockDeposit, item.currencyid) }}
                                         </span>
                                     </li>
                                     <li>
                                         <span>{{ $t('position.goods.closepl') }}:</span>
                                         <span :class="handlePriceColor(item.tHDetailEx.floatPL)">
-                                            {{ formatDecimal(item.tHDetailEx.floatPL) }}
+                                            {{ currencyFormat(item.tHDetailEx.floatPL, item.currencyid) }}
                                         </span>
                                     </li>
                                 </ul>
@@ -64,11 +64,15 @@
                         <ul class="bottom">
                             <li>
                                 <label>{{ $t('position.goods.holderprice') }}</label>
-                                <span>{{ formatDecimal(item.tHDetailEx.holderPrice, item.decimalPlace) }}</span>
+                                <span>
+                                    {{ currencyFormat(item.tHDetailEx.holderPrice, item.currencyid, {
+                                        fractionDigits:
+                                    item.decimalPlace})}}
+                                </span>
                             </li>
                             <li>
                                 <label>{{ $t('position.goods.holderamount') }}</label>
-                                <span>{{ formatDecimal(item.tHDetailEx.holderAmount) }}</span>
+                                <span>{{ currencyFormat(item.tHDetailEx.holderAmount, item.currencyid) }}</span>
                             </li>
                         </ul>
                     </div>
@@ -95,7 +99,7 @@ import { Button, Image } from 'vant'
 import { getFileUrl } from '@/filters'
 import { useComponent } from '@/hooks/component'
 import { getBuyOrSellName, BuyOrSell, PriceMode } from '@/constants/order'
-import { formatDecimal, formatDate, handleRequestBigNumber, handlePriceColor } from '@/filters'
+import { formatDate, currencyFormat, handleRequestBigNumber, handlePriceColor } from '@/filters'
 import { useSBYJOrderStore, i18n, useFuturesStore } from '@/stores'
 import { useOrder } from '@/business/trade'
 import { dialog, fullloading } from '@/utils/vant'

+ 8 - 3
src/packages/tss/views/product/list/components/waterfall-list/index.vue

@@ -20,9 +20,9 @@
 <script lang="ts" setup>
 import { PropType, ref, onActivated } from 'vue'
 import { Image } from 'vant'
-import { getFileUrl, handleNumberValue, formatDecimal } from '@/filters'
+import { getFileUrl, currencyFormat } from '@/filters'
 import { useNavigation } from '@mobile/router/navigation'
-import { BuyOrSell, BuildType, getGoodsCurrencyName } from '@/constants/order'
+import { BuyOrSell, BuildType } from '@/constants/order'
 import { queryTouristGoods, queryTouristQuoteDay } from '@/services/api/goods'
 import { useLoginStore, useFuturesStore } from '@/stores'
 import Waterfall from '@mobile/components/base/waterfall/index.vue'
@@ -49,7 +49,12 @@ const getFirstImage = (thumurls?: string) => {
 // 获取商品价格
 const getPrice = (item: Model.TCEGoodsCollectionRsp) => {
     const { ask = 0, currencyid = 0, decimalplace } = quotationList.value.find((e) => e.goodsid === item.defaultgoodsid) ?? {}
-    return ask ? getGoodsCurrencyName(currencyid) + formatDecimal(ask, decimalplace) : handleNumberValue()
+
+    return currencyFormat(ask, currencyid, {
+        fractionDigits: decimalplace,
+        showSymbol: true,
+        noneValue: true
+    })
 }
 
 // 获取价格颜色

+ 1 - 0
src/types/model/bank.d.ts

@@ -146,6 +146,7 @@ declare namespace Model {
         charge: number;//手续费
         checkerrorflag: number;//对账差错标志 - 1:为单边账;其它为正常出入金
         currency: string;//币种
+        currencyid: number; // 货币ID
         cusbankid: string;//托管银行编号
         cusbankname: string; // 托管银行名称
         cusbankshortname: string; // 托管银行简称

+ 25 - 23
src/types/model/order.d.ts

@@ -1481,13 +1481,13 @@ declare namespace Model {
         /// 方向 - 0:买 1:卖
         buyOrSell: number;
         // 允许自动补定金 是(1),否(0)
-        canautoadddeposit?: number; 
+        canautoadddeposit?: number;
         // 允许自动退定金 是(1),否(0)
-        canautorefunddeposit?: number; 
+        canautorefunddeposit?: number;
         // 到期剩余天数
-        closeddays: number; 
+        closeddays: number;
         // 追加定金率
-        adddepositrate?: number; 
+        adddepositrate?: number;
         /// 交易日(yyyyMMdd)
         tradeDate: string;
         /// 市场ID
@@ -1569,13 +1569,13 @@ declare namespace Model {
         /// 商品名称
         goodsName: string;
         //
-        goodsnameen: string; 
+        goodsnameen: string;
         //
-        goodsnametw: string; 
+        goodsnametw: string;
         //
-        goodsnameth: string; 
-         //
-         goodsnamevi: string; 
+        goodsnameth: string;
+        //
+        goodsnamevi: string;
         /// 单位
         goodsUnitID: number;
         /// 合约单位
@@ -1587,7 +1587,8 @@ declare namespace Model {
         /// 单位名称
         goodsUnit: string;
         // 缩略图片(1:1)(逗号分隔)
-        thumurls: string; 
+        thumurls: string;
+        currencyid: number; 货币ID
     }
 
     /* 查询我的交收 请求*/
@@ -1793,6 +1794,7 @@ declare namespace Model {
         buyorsell: number; // 方向 - 0:买 1:卖
         callatefee: number; // 已计滞纳金
         closepl: number; // 平仓盈亏
+        currencyid: number; // 货币ID
         cutdepositrate: number; // 斩仓定金率
         cutprice: number; // 斩仓价格
         decimalplace: number; // 报价小数位
@@ -1836,7 +1838,7 @@ declare namespace Model {
         tradetime: string; // 交易时间
         userid: number; // 用户ID
         // 缩略图片(1:1)(逗号分隔)
-        thumurls: string; 
+        thumurls: string;
     }
 
     /** 查询我的终止订单 请求 */
@@ -1903,7 +1905,7 @@ declare namespace Model {
         goodstradetype: string // 商品交易权限类型(3) - 1:可建可平 2:可建不可平 3:不可建可平 4:不可建不可平
         userid: number     // 用户ID
     }
- 
+
     /** 用户库存查询 请求 */
     interface UserGoodsInventoryReq {
         userId: number // 用户ID
@@ -1912,21 +1914,21 @@ declare namespace Model {
     /** 用户库存查询 响应 */
     interface UserGoodsInventoryRsp {
         // 期末库存量
-        curqty: number   
+        curqty: number
         // 商品ID
-        goodsid: number  
+        goodsid: number
         // 商品代码
         goodscode: string
         // 商品名称
-        goodsname: string 
+        goodsname: string
         // 更新时间
-        updatetime: string 
+        updatetime: string
         // 报价单位
-        goodunit: string 
+        goodunit: string
         // 报价单位ID
-        goodunitid: string 
-         // 用户ID
-        userid: number    
+        goodunitid: string
+        // 用户ID
+        userid: number
     }
 
     /** 用户出入库流水 请求 */
@@ -1956,11 +1958,11 @@ declare namespace Model {
         // 商品代码
         goodscode: string
         // 商品名称
-        goodsname: string 
+        goodsname: string
         // 报价单位
-        goodunit: string 
+        goodunit: string
         // 报价单位ID
-        goodunitid: string 
+        goodunitid: string
         // 出入库方式 - 1:邮寄 3:自提 4:配送(enum:appointmentModelOut)
         inoutmodel: number
         // 申请类型 - 1:入库 2:出库 (enum:inouttype)

+ 1 - 0
src/types/model/transfer.d.ts

@@ -313,6 +313,7 @@ declare namespace Model {
         buyorselldisplay: string; // 交收方向
         closetime: string; // 完成时间
         closetradedate: string; // 完成交易日
+        currencyid: number; // 货币ID
         deliveryamount: number; // 交收货款
         deliveryinfo: string; // 交收信息
         deliverylot: number; // 交收手数