index.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { ref, computed } from 'vue'
  2. import { BuyOrSell } from '@/constants/order'
  3. import { querySBYJMyOrders } from '@/services/api/order'
  4. import { useFuturesStore } from '@/stores'
  5. /**
  6. * 水贝亿爵订单业务
  7. * @param selectedRow
  8. * @returns
  9. */
  10. export const useSBYJOrder = (selectedRow?: Model.SBYJMyOrderRsp) => {
  11. const futuresStore = useFuturesStore()
  12. const loading = ref(false)
  13. const orderList = ref<Model.SBYJMyOrderRsp[]>([])
  14. const orderComputedList = computed(() => {
  15. orderList.value.forEach((e) => {
  16. e.tHDetailEx.depositRate = calcDepositRate(e)
  17. })
  18. return orderList.value
  19. })
  20. // 订单详情
  21. const detail = computed(() => {
  22. const result = { ...selectedRow }
  23. if (selectedRow) {
  24. result.depositRate = calcDepositRate(selectedRow)
  25. }
  26. return result
  27. })
  28. // 计算定金率
  29. const calcDepositRate = ({ tHDetailEx }: Model.SBYJMyOrderRsp) => {
  30. const quote = futuresStore.getGoodsQuote(tHDetailEx.goodsID)
  31. const { ask = 0, bid = 0, agreeunit = 0 } = quote.value ?? {}
  32. // 计算浮动盈亏 (根据方向取买卖价 * 手数 * 合约乘数 - 持仓金额) * 方向标识
  33. const float = (tHDetailEx.buyOrSell === BuyOrSell.Buy ? bid : ask) * tHDetailEx.holderQty * agreeunit - tHDetailEx.holderAmount
  34. const floatpl = float * (tHDetailEx.buyOrSell === BuyOrSell.Buy ? 1 : -1)
  35. // 计算定金率 (已付定金 + 补充定金 +盈亏 - 已计滞纳金) / 已付定金
  36. const depositRate = (tHDetailEx.payedDeposit + tHDetailEx.restockDeposit + floatpl - tHDetailEx.callAteFee) / tHDetailEx.payedDeposit
  37. return depositRate
  38. }
  39. // 获取订单列表
  40. const getSBYJMyOrders = async (params?: Model.SBYJMyOrderReq) => {
  41. loading.value = true
  42. try {
  43. const res = await querySBYJMyOrders({
  44. data: {
  45. ...params
  46. }
  47. })
  48. orderList.value = res.data
  49. } finally {
  50. loading.value = false
  51. }
  52. }
  53. return {
  54. orderList,
  55. orderComputedList,
  56. detail,
  57. getSBYJMyOrders
  58. }
  59. }