import { ref, computed } from 'vue' import { BuyOrSell } from '@/constants/order' import { querySBYJMyOrders } from '@/services/api/order' import { useFuturesStore } from '@/stores' /** * 水贝亿爵订单业务 * @param selectedRow * @returns */ export const useSBYJOrder = (selectedRow?: Model.SBYJMyOrderRsp) => { const futuresStore = useFuturesStore() const loading = ref(false) const orderList = ref([]) const orderComputedList = computed(() => { orderList.value.forEach((e) => { e.tHDetailEx.depositRate = calcDepositRate(e) }) return orderList.value }) // 订单详情 const detail = computed(() => { const result = { ...selectedRow } if (selectedRow) { result.depositRate = calcDepositRate(selectedRow) } return result }) // 计算定金率 const calcDepositRate = ({ tHDetailEx }: Model.SBYJMyOrderRsp) => { const quote = futuresStore.getGoodsQuote(tHDetailEx.goodsID) const { ask = 0, bid = 0, agreeunit = 0 } = quote.value ?? {} // 计算浮动盈亏 (根据方向取买卖价 * 手数 * 合约乘数 - 持仓金额) * 方向标识 const float = (tHDetailEx.buyOrSell === BuyOrSell.Buy ? bid : ask) * tHDetailEx.holderQty * agreeunit - tHDetailEx.holderAmount const floatpl = float * (tHDetailEx.buyOrSell === BuyOrSell.Buy ? 1 : -1) // 计算定金率 (已付定金 + 补充定金 +盈亏 - 已计滞纳金) / 已付定金 const depositRate = (tHDetailEx.payedDeposit + tHDetailEx.restockDeposit + floatpl - tHDetailEx.callAteFee) / tHDetailEx.payedDeposit return depositRate } // 获取订单列表 const getSBYJMyOrders = async (params?: Model.SBYJMyOrderReq) => { loading.value = true try { const res = await querySBYJMyOrders({ data: { ...params } }) orderList.value = res.data } finally { loading.value = false } } return { orderList, orderComputedList, detail, getSBYJMyOrders } }