|
|
@@ -5,16 +5,131 @@
|
|
|
<template #header>
|
|
|
<app-navbar title="掉期持仓-平仓" @back="closed" />
|
|
|
</template>
|
|
|
+ <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error" v-model:pageIndex="pageIndex"
|
|
|
+ :page-count="pageCount" @refresh="run">
|
|
|
+ <div class="g-order-list">
|
|
|
+ <div class="g-order-list__box" v-for="(item, index) in dataList" :key="index">
|
|
|
+ <div class="g-order-list__titlebar">
|
|
|
+ <div class="left">
|
|
|
+ <h4>{{ item.tradeid }}</h4>
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <span>{{ getBuyOrSellName(item.buyorsell) }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="g-order-list__content">
|
|
|
+ <ul>
|
|
|
+ <li>
|
|
|
+ <span>持有数量:</span>
|
|
|
+ <span>{{ formatDecimal(item.holderqty) }}</span>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <span>持仓均价:</span>
|
|
|
+ <span>{{ formatDecimal(item.holderprice) }}</span>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <span>可用数量:</span>
|
|
|
+ <span>{{ formatDecimal(item.holderqty-item.freezeqty) }}</span>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <span>持仓金额:</span>
|
|
|
+ <span>{{ formatDecimal(item.holderamount) }}</span>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <span>到期日:</span>
|
|
|
+ <span>{{ formatDate(item.expiredate, 'YYYY/MM/DD') }}</span>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <span>参考损益:</span>
|
|
|
+ <span>--</span>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ <div class="g-order-list__btnbar">
|
|
|
+ <Button size="small" @click="onCloseSubmit(item)" round>平仓</Button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </app-pull-refresh>
|
|
|
</app-view>
|
|
|
</app-modal>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
-import { shallowRef } from 'vue'
|
|
|
+import { shallowRef, PropType } from 'vue'
|
|
|
+import { useRequest } from '@/hooks/request'
|
|
|
+import { queryTradeHolderDetail } from '@/services/api/order';
|
|
|
+import { ETradeMode } from '@/constants/client';
|
|
|
+import { Button } from 'vant'
|
|
|
+import { getBuyOrSellName } from '@/constants/order'
|
|
|
+import { formatDate, formatDecimal } from '@/filters'
|
|
|
+import { useHolderClose } from '@/business/trade'
|
|
|
+import { dialog, fullloading } from '@/utils/vant'
|
|
|
+
|
|
|
import AppModal from '@/components/base/modal/index.vue'
|
|
|
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
|
|
|
|
|
|
+const dataList = shallowRef<Model.TradeHolderDetailRsp[]>([])
|
|
|
const showModal = shallowRef(true)
|
|
|
const refresh = shallowRef(false) // 是否刷新父组件数据
|
|
|
+const error = shallowRef(false)
|
|
|
+
|
|
|
+const { holderCloseSubmit, formData } = useHolderClose()
|
|
|
+
|
|
|
+const props = defineProps({
|
|
|
+ selectedRow: {
|
|
|
+ type: Object as PropType<Model.TradePositionRsp>,
|
|
|
+ required: true,
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+const { loading, pageIndex, pageCount, run } = useRequest(queryTradeHolderDetail, {
|
|
|
+ params: {
|
|
|
+ pagesize: 20,
|
|
|
+ /// 交易模式, 格式 1,2,3
|
|
|
+ trademodes: ETradeMode.TRADEMODE_TJMD.toString(),
|
|
|
+ /// marketid
|
|
|
+ marketids: props.selectedRow.marketid.toString(),
|
|
|
+ /// 商品id
|
|
|
+ goodsid: props.selectedRow.goodsid,
|
|
|
+ /// 买卖方向 0-买 1-卖
|
|
|
+ buyorsell: props.selectedRow.buyorsell
|
|
|
+ },
|
|
|
+ onSuccess: (res) => {
|
|
|
+ if (pageIndex.value === 1) {
|
|
|
+ dataList.value = []
|
|
|
+ }
|
|
|
+ dataList.value.push(...res.data)
|
|
|
+ },
|
|
|
+ onError: () => {
|
|
|
+ error.value = true
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+const onCloseSubmit = (row: Model.TradeHolderDetailRsp) => {
|
|
|
+ dialog({
|
|
|
+ message: '确认要平仓吗?',
|
|
|
+ showCancelButton: true,
|
|
|
+ }).then(() => {
|
|
|
+ // TradeID: tradeid,
|
|
|
+ const { marketid, goodsid, buyorsell, tradeid } = row
|
|
|
+ /// 市场ID
|
|
|
+ formData.Header = { MarketID: marketid }
|
|
|
+ formData.GoodsID = goodsid
|
|
|
+ formData.BuyOrSell = buyorsell
|
|
|
+ formData.MarketID = marketid
|
|
|
+ formData.TradeID = tradeid
|
|
|
+ /// loding....
|
|
|
+ fullloading((hideLoading) => {
|
|
|
+ holderCloseSubmit().then(() => {
|
|
|
+ hideLoading('请求成功')
|
|
|
+ closed(true)
|
|
|
+ }).catch((err) => {
|
|
|
+ hideLoading(err, 'fail')
|
|
|
+ })
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
// 关闭弹窗
|
|
|
const closed = (isRefresh = false) => {
|