websocket.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import socket from "@/utils/websocket.js"
  2. let socket_api = 'https://doc.okenx.com:2000'
  3. import {
  4. Api_getQuotationNew
  5. } from "@/api/index.js"
  6. const state = {
  7. bids: [],
  8. asks: [],
  9. daymarket: {},
  10. //
  11. getQuotationStatus: false,
  12. usdtList: [],
  13. optional:[],
  14. marketAll:[],
  15. currencyVal:{}
  16. }
  17. const mutations = {
  18. set_currency_val:(state, val) => {
  19. state.currencyVal = val;
  20. }
  21. // SET_CONTRACT: (state, contract) => {
  22. // // 合约账户
  23. // state.contractAccount = contract;
  24. // },
  25. // SET_BIBI: (state, bibi) => {
  26. // // 币币账户
  27. // state.bibiAccount = bibi;
  28. // },
  29. // SET_LEGAL: (state, legal) => {
  30. // // 法币账户
  31. // state.legalAccount = legal;
  32. // },
  33. // SET_GIFTMONEY: (state, GiftMoney) => {
  34. // // 赠金账户
  35. // state.GiftMoneyAccount = GiftMoney;
  36. // },
  37. // SET_STOCKS_COLOR: (state, code) => {
  38. // state.stocksColor = code
  39. // },
  40. // SET_TOKEN: (state, token) => {
  41. // setToken(token)
  42. // state.token = token
  43. // }
  44. }
  45. const nums = (arr) => {
  46. const att = arr.map(el => {
  47. return el[0]
  48. })
  49. const num = Math.max.apply(null, att)
  50. arr.forEach(el => {
  51. let n = Math.round(el[0] / num * 10000) / 100
  52. el[2] = n > 100 ? 100 : n;
  53. })
  54. return arr
  55. }
  56. const actions = {
  57. openSocket({
  58. commit,
  59. state
  60. }, data) {
  61. var sk = socket(socket_api);
  62. sk.on(data.type, function(msg) {
  63. if (state.currencyVal.legal_id == msg.legal_id && state.currencyVal.currency_id == msg.currency_id) {
  64. //btc 匹配
  65. // var buyIn = JSON.parse(msg.bids);
  66. // var out = JSON.parse(msg.asks).reverse();
  67. if (msg.type == 'market_depth') {
  68. var buyIn = msg.bids.slice(0, 7);
  69. state.bids = nums(buyIn);
  70. var out = msg.asks.slice(0, 7);
  71. // state.bids = msg.bids
  72. state.asks = nums(out);
  73. }
  74. if (msg.type == 'daymarket') {
  75. state.daymarket = msg;
  76. }
  77. }
  78. })
  79. },
  80. getQuotationNew({
  81. commit,
  82. state
  83. }, data) {
  84. const rq = () => {
  85. Api_getQuotationNew().then(res => {
  86. if (res && res.length > 0) {
  87. let newArr = res.find((item) => item.name == 'USDT').quotation || [];
  88. if(!state.currencyVal || !state.currencyVal?.currency_id){
  89. state.currencyVal = newArr[0]
  90. console.log('currencyVal = ' , state.currencyVal)
  91. }
  92. // 首页推荐
  93. if (newArr && newArr.length > 0) {
  94. const nums = newArr.length > 3 ? 3 : newArr.length;
  95. state.usdtList = newArr.slice(0, nums);
  96. } else {
  97. state.usdtList = []
  98. }
  99. // 自选
  100. state.optional = newArr.slice(0,6)
  101. // 全部
  102. state.marketAll = newArr
  103. }
  104. }).catch(err => {
  105. }).finally(() => {
  106. setTimeout(() => {
  107. rq()
  108. // if (state.getQuotationStatus) {
  109. // }
  110. }, 1000)
  111. })
  112. }
  113. rq()
  114. },
  115. }
  116. export default {
  117. namespaced: true,
  118. state,
  119. mutations,
  120. actions
  121. }