|
@@ -3,28 +3,28 @@
|
|
|
<app-drawer :title="t('operation.close')" :width="800" v-model:show="show" :loading="loading" :refresh="refresh">
|
|
<app-drawer :title="t('operation.close')" :width="800" v-model:show="show" :loading="loading" :refresh="refresh">
|
|
|
<el-form ref="formRef" class="el-form--horizontal" label-width="120px" :model="formData" :rules="formRules">
|
|
<el-form ref="formRef" class="el-form--horizontal" label-width="120px" :model="formData" :rules="formRules">
|
|
|
<el-form-item :label="t('position.transfer.goodsname')">
|
|
<el-form-item :label="t('position.transfer.goodsname')">
|
|
|
- <span>{{ selectedRow.goodscode }}/{{ selectedRow.goodsname }}</span>
|
|
|
|
|
|
|
+ <span>{{ selectedRow.goodsCode }}/{{ selectedRow.goodsName }}</span>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item :label="t('position.transfer.buyorsell')">
|
|
<el-form-item :label="t('position.transfer.buyorsell')">
|
|
|
- <span>{{ getBuyOrSellName(selectedRow.buyorsell) }}</span>
|
|
|
|
|
|
|
+ <span>{{ getBuyOrSellName(selectedRow.tHDetailEx.buyOrSell) }}</span>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item :label="t('position.transfer.buycurholderamount')">
|
|
<el-form-item :label="t('position.transfer.buycurholderamount')">
|
|
|
- <span>{{ formatDecimal(selectedRow.holderamount) }}</span>
|
|
|
|
|
|
|
+ <span>{{ formatDecimal(selectedRow.tHDetailEx.holderAmount) }}</span>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item :label="t('position.transfer.holderqty')">
|
|
<el-form-item :label="t('position.transfer.holderqty')">
|
|
|
- <span>{{ selectedRow.holderqty }}</span>
|
|
|
|
|
|
|
+ <span>{{ selectedRow.tHDetailEx.holderQty }}</span>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item :label="t('position.transfer.holderprice')">
|
|
<el-form-item :label="t('position.transfer.holderprice')">
|
|
|
- <span>{{ formatDecimal(selectedRow.holderprice, selectedRow.decimalplace) }}</span>
|
|
|
|
|
|
|
+ <span>{{ formatDecimal(selectedRow.tHDetailEx.holderPrice, selectedRow.decimalPlace) }}</span>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item :label="t('position.goods.freezeqty')">
|
|
<el-form-item :label="t('position.goods.freezeqty')">
|
|
|
- <span>{{ selectedRow.freezeqty }}</span>
|
|
|
|
|
|
|
+ <span>{{ selectedRow.tHDetailEx.freezeQty }}</span>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item :label="t('position.transfer.enableqty')">
|
|
<el-form-item :label="t('position.transfer.enableqty')">
|
|
|
<span>{{ maxQty }}</span>
|
|
<span>{{ maxQty }}</span>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item :label="t('position.transfer.closepl')">
|
|
<el-form-item :label="t('position.transfer.closepl')">
|
|
|
- <span :class="handlePriceColor(closepl)">{{ formatDecimal(closepl, selectedRow.decimalplace) }}</span>
|
|
|
|
|
|
|
+ <span :class="handlePriceColor(closepl)">{{ formatDecimal(closepl, selectedRow.decimalPlace) }}</span>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="PriceMode" :label="t('quote.pricing.pricemode')">
|
|
<el-form-item prop="PriceMode" :label="t('quote.pricing.pricemode')">
|
|
|
<el-radio-group v-model="formData.PriceMode">
|
|
<el-radio-group v-model="formData.PriceMode">
|
|
@@ -66,13 +66,13 @@ import { ElMessage, FormInstance, FormRules } from 'element-plus'
|
|
|
import { useOrder } from '@/business/trade'
|
|
import { useOrder } from '@/business/trade'
|
|
|
import { formatDecimal, handlePriceColor, handleRequestBigNumber, parsePercent } from '@/filters'
|
|
import { formatDecimal, handlePriceColor, handleRequestBigNumber, parsePercent } from '@/filters'
|
|
|
import { getBuyOrSellName, BuyOrSell, getPricemode2List, PriceMode } from '@/constants/order'
|
|
import { getBuyOrSellName, BuyOrSell, getPricemode2List, PriceMode } from '@/constants/order'
|
|
|
-import { useFuturesStore, usePositionStore, i18n, useSettingStore, useUserStore } from '@/stores'
|
|
|
|
|
|
|
+import { useFuturesStore, usePositionStore, i18n, useSettingStore, useUserStore, useAccountStore } from '@/stores'
|
|
|
import { EBuildType, EDelistingType, EListingSelectType, EValidType, EOrderOperateType } from '@/constants/client'
|
|
import { EBuildType, EDelistingType, EListingSelectType, EValidType, EOrderOperateType } from '@/constants/client'
|
|
|
import AppDrawer from '@pc/components/base/drawer/index.vue'
|
|
import AppDrawer from '@pc/components/base/drawer/index.vue'
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
|
selectedRow: {
|
|
selectedRow: {
|
|
|
- type: Object as PropType<Model.TradeHolderDetailRsp>,
|
|
|
|
|
|
|
+ type: Object as PropType<Model.SBYJMyOrderRsp>,
|
|
|
required: true
|
|
required: true
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
@@ -80,10 +80,11 @@ const props = defineProps({
|
|
|
const futuresStore = useFuturesStore()
|
|
const futuresStore = useFuturesStore()
|
|
|
const positionStore = usePositionStore()
|
|
const positionStore = usePositionStore()
|
|
|
const userStore = useUserStore()
|
|
const userStore = useUserStore()
|
|
|
|
|
+const accountStore = useAccountStore()
|
|
|
const settingStore = useSettingStore()
|
|
const settingStore = useSettingStore()
|
|
|
// 价格类型
|
|
// 价格类型
|
|
|
const orderPriceType = computed(() => settingStore.getSettingValue('orderPriceType'))
|
|
const orderPriceType = computed(() => settingStore.getSettingValue('orderPriceType'))
|
|
|
-const quote = futuresStore.getGoodsQuote(props.selectedRow.goodscode)
|
|
|
|
|
|
|
+const quote = futuresStore.getGoodsQuote(props.selectedRow.goodsCode)
|
|
|
const { t } = i18n.global
|
|
const { t } = i18n.global
|
|
|
const qtyStepList = [0.25, 0.5, 0.75, 1] // 数量步长列表
|
|
const qtyStepList = [0.25, 0.5, 0.75, 1] // 数量步长列表
|
|
|
const qtyStep = ref(1) // 数量步长
|
|
const qtyStep = ref(1) // 数量步长
|
|
@@ -94,15 +95,18 @@ const formRef = ref<FormInstance>()
|
|
|
|
|
|
|
|
// 可用数量
|
|
// 可用数量
|
|
|
const maxQty = computed(() => {
|
|
const maxQty = computed(() => {
|
|
|
- const record = positionStore.positionList.find((e) => e.goodsid === props.selectedRow.goodsid && e.buyorsell === props.selectedRow.buyorsell)
|
|
|
|
|
- const qty = props.selectedRow.holderqty - props.selectedRow.freezeqty
|
|
|
|
|
|
|
+ const record = positionStore.positionList.find((e) => e.goodsid === props.selectedRow.tHDetailEx.goodsID && e.buyorsell === props.selectedRow.tHDetailEx.buyOrSell)
|
|
|
|
|
+ const qty = props.selectedRow.tHDetailEx.holderQty - props.selectedRow.tHDetailEx.freezeQty
|
|
|
return Math.min(record?.enableqty ?? 0, qty)
|
|
return Math.min(record?.enableqty ?? 0, qty)
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
// 损益
|
|
// 损益
|
|
|
const closepl = computed(() => {
|
|
const closepl = computed(() => {
|
|
|
const { presettle = 0, last = 0 } = quote.value ?? {}
|
|
const { presettle = 0, last = 0 } = quote.value ?? {}
|
|
|
- const { holderqty, holderamount, agreeunit, buyorsell, currencyid, tacurrencyid } = props.selectedRow
|
|
|
|
|
|
|
+ const { holderQty, holderAmount, buyOrSell } = props.selectedRow.tHDetailEx
|
|
|
|
|
+ const goods = futuresStore.getGoods(props.selectedRow.goodsCode)
|
|
|
|
|
+ const { currencyid, agreeunit = 0 } = goods ?? {}
|
|
|
|
|
+ const { currencyid: tacurrencyid } = accountStore.currentAccount
|
|
|
const price = last || presettle // 没有最新价取昨结价
|
|
const price = last || presettle // 没有最新价取昨结价
|
|
|
|
|
|
|
|
// 查找汇率
|
|
// 查找汇率
|
|
@@ -113,8 +117,8 @@ const closepl = computed(() => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 计算市值 = 现价 * 数量 * 合约单位
|
|
// 计算市值 = 现价 * 数量 * 合约单位
|
|
|
- const marketValue = price ? price * holderqty * agreeunit * exchangerate : 0
|
|
|
|
|
- return price ? (marketValue - holderamount) * (buyorsell === BuyOrSell.Buy ? 1 : -1) : 0
|
|
|
|
|
|
|
+ const marketValue = price ? price * holderQty * agreeunit * exchangerate : 0
|
|
|
|
|
+ return price ? (marketValue - holderAmount) * (buyOrSell === BuyOrSell.Buy ? 1 : -1) : 0
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
const formRules: FormRules = {
|
|
const formRules: FormRules = {
|
|
@@ -175,19 +179,19 @@ const marketPrice = computed(() => {
|
|
|
const onCloseSumit = () => {
|
|
const onCloseSumit = () => {
|
|
|
formRef.value?.validate((valid) => {
|
|
formRef.value?.validate((valid) => {
|
|
|
if (valid) {
|
|
if (valid) {
|
|
|
- const { marketid, goodsid, buyorsell, tradeid } = props.selectedRow
|
|
|
|
|
|
|
+ const { marketID, goodsID, buyOrSell, tradeID } = props.selectedRow.tHDetailEx
|
|
|
/// 市场ID
|
|
/// 市场ID
|
|
|
- formData.Header = { MarketID: marketid, GoodsID: goodsid }
|
|
|
|
|
- formData.MarketID = marketid
|
|
|
|
|
|
|
+ formData.Header = { MarketID: marketID, GoodsID: goodsID }
|
|
|
|
|
+ formData.MarketID = marketID
|
|
|
if (formData.PriceMode === PriceMode.Market) { formData.OrderPrice = marketPrice.value }
|
|
if (formData.PriceMode === PriceMode.Market) { formData.OrderPrice = marketPrice.value }
|
|
|
- formData.BuyOrSell = buyorsell === BuyOrSell.Buy ? BuyOrSell.Sell : BuyOrSell.Buy
|
|
|
|
|
- formData.GoodsID = goodsid
|
|
|
|
|
|
|
+ formData.BuyOrSell = buyOrSell === BuyOrSell.Buy ? BuyOrSell.Sell : BuyOrSell.Buy
|
|
|
|
|
+ formData.GoodsID = goodsID
|
|
|
formData.ListingSelectType = EListingSelectType.LISTINGSELECTTYPE_DELISTINGTHENLISTING
|
|
formData.ListingSelectType = EListingSelectType.LISTINGSELECTTYPE_DELISTINGTHENLISTING
|
|
|
formData.DelistingType = EDelistingType.DELISTINGTYPE_PRICE
|
|
formData.DelistingType = EDelistingType.DELISTINGTYPE_PRICE
|
|
|
formData.BuildType = EBuildType.BUILDTYPE_CLOSE
|
|
formData.BuildType = EBuildType.BUILDTYPE_CLOSE
|
|
|
formData.TimevalidType = EValidType.VALIDTYPE_DR
|
|
formData.TimevalidType = EValidType.VALIDTYPE_DR
|
|
|
formData.OperateType = EOrderOperateType.ORDEROPERATETYPE_HOLDER_CLOSE
|
|
formData.OperateType = EOrderOperateType.ORDEROPERATETYPE_HOLDER_CLOSE
|
|
|
- formData.RelatedID = handleRequestBigNumber(tradeid)
|
|
|
|
|
|
|
+ formData.RelatedID = handleRequestBigNumber(tradeID)
|
|
|
|
|
|
|
|
formSubmit().then(() => {
|
|
formSubmit().then(() => {
|
|
|
if (settingStore.getSettingValue('showOrderSuccessMessage')) {
|
|
if (settingStore.getSettingValue('showOrderSuccessMessage')) {
|
|
@@ -209,7 +213,7 @@ const onRadioChange = (value: number) => {
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
const { bid, ask, presettle = 0 } = quote.value ?? {}
|
|
const { bid, ask, presettle = 0 } = quote.value ?? {}
|
|
|
- switch (props.selectedRow.buyorsell) {
|
|
|
|
|
|
|
+ switch (props.selectedRow.tHDetailEx.buyOrSell) {
|
|
|
case BuyOrSell.Buy:
|
|
case BuyOrSell.Buy:
|
|
|
formData.OrderPrice = ask || presettle
|
|
formData.OrderPrice = ask || presettle
|
|
|
break
|
|
break
|