Handy_Cao 2 jaren geleden
bovenliggende
commit
8a389996a6

+ 5 - 8
src/business/trade/index.ts

@@ -516,7 +516,7 @@ export function useHolderClose() {
     const loading = shallowRef(false)
 
     /// 参数信息
-    const params = {
+    const formData = reactive<Partial<Proto.HolderCloseReq>>({
         ClientSerialNo: v4(),
         ClientOrderTime: formatDate(new Date().toString(), 'YYYY-MM-DD HH:mm:ss'),
         ClientType: ClientType.Web,
@@ -524,18 +524,14 @@ export function useHolderClose() {
         AccountID: accountStore.accountId,
         OrderSrc: OrderSrc.ORDERSRC_CLIENT,
         OperatorID: loginStore.loginId,
-    }
+    })
 
-    const holderCloseSubmit = async (tradeid: string, goodsid: number, buyOrSell: number, marketid: number) => {
+    const holderCloseSubmit = async () => {
         try {
             loading.value = true
             return await holderClose({
                 data: {
-                    TradeID: tradeid,
-                    GoodsID: goodsid,
-                    BuyOrSell: buyOrSell,
-                    MarketID: marketid,
-                    ...params
+                    ...formData
                 }
             })
         } finally {
@@ -544,6 +540,7 @@ export function useHolderClose() {
     }
 
     return {
+        formData,
         loading,
         holderCloseSubmit
     }

+ 116 - 1
src/packages/mobile/views/order/position/components/swap/close/Index.vue

@@ -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) => {

+ 2 - 4
src/packages/mobile/views/order/position/components/swap/list/Index.vue

@@ -6,10 +6,8 @@
             <div class="g-order-list__box" v-for="(item, index) in dataList" :key="index">
                 <div class="g-order-list__titlebar">
                     <div class="left">
-                        <h5>{{ item.goodscode }}/{{ item.goodsname }}</h5>
-                    </div>
-                    <div class="center">
-                        <h5>--</h5>
+                        <h4>{{ item.goodscode }}/{{ item.goodsname }}</h4>
+                        <span>--</span>
                     </div>
                     <div class="right">
                         <span>{{ getBuyOrSellName(item.buyorsell) }}</span>

+ 5 - 1
src/services/api/order/index.ts

@@ -164,7 +164,11 @@ export function queryTradeDetail(config: RequestConfig<Model.TradeDetailReq> = {
 export function queryTradeHolderDetail(config: RequestConfig<Model.TradeHolderDetailReq> = {}) {
     return http.commonRequest<Model.TradeHolderDetailRsp[]>({
         url: '/Order/QueryTradeHolderDetail',
-        params: config.data,
+        params: {
+            userid: loginStore.userId,
+            accids: accountStore.accountId.toString(),
+            ...config.data
+        },
     })
 }
 

+ 0 - 1
src/services/api/trade/index.ts

@@ -182,7 +182,6 @@ export function cancelOrder(config: RequestConfig<Proto.CancelOrderReq>) {
  * 交易下单
  */
 export function order(config: RequestConfig<Proto.OrderReq>) {
-    console.log(config.data)
     return http.mqRequest<Proto.OrderRsp>({
         data: config.data,
         requestCode: 'OrderReq',

+ 1 - 1
src/services/http/index.ts

@@ -180,7 +180,7 @@ export default new (class {
                 ...data.Header,
             }
         }
-        console.log(requestCode, data)
+        console.log(requestCode, JSON.stringify(data))
 
         const config: AxiosRequestConfig = {
             method: 'post',