websocket.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. let socket = []
  2. import {
  3. Api_getQuotationNew
  4. } from "@/api/index.js"
  5. import {
  6. setStorageSync,
  7. getStorageSync
  8. } from "@/utils/common.js"
  9. const getCurrencyVal = () => {
  10. return getStorageSync('currency_val') || {};
  11. }
  12. const state = {
  13. bids: [],
  14. asks: [],
  15. daymarket: {},
  16. //
  17. getQuotationStatus: false,
  18. usdtList: [],
  19. optional: [], // 首页 市场 - 自选
  20. marketAll: [], // 首页 市场
  21. currencyVal: getCurrencyVal(),
  22. contract_optional: [], // 合约 市场 - 自选
  23. contract_marketAll: [], // 合约 市场 - 自选
  24. currencySuspend: false,
  25. orderList: [], // 合约页面 , 持仓
  26. leverTrade: {}, // 合约页面, 杠杆 持仓
  27. }
  28. const mutations = {
  29. set_currencySuspend: (state, status) => {
  30. state.currencySuspend = status;
  31. },
  32. set_currency_val: (state, val) => { // 币种列表
  33. setStorageSync('currency_val', val)
  34. state.currencyVal = val;
  35. },
  36. set_usdt_ist: (state, val) => { // 推荐列表 - 首页
  37. state.usdtList = val;
  38. },
  39. set_optional: (state, val) => { // 自选
  40. state.optional = val;
  41. },
  42. set_marketAll: (state, val) => { // 市场
  43. state.marketAll = val;
  44. },
  45. set_contract_optional: (state, val) => { // 合约 - 自选
  46. state.contract_optional = val;
  47. },
  48. set_contract_marketAll: (state, val) => { // 合约 - 市场
  49. state.contract_marketAll = val;
  50. },
  51. set_bids: (state, val) => {
  52. state.bids = val;
  53. },
  54. set_asks: (state, val) => {
  55. state.asks = val;
  56. },
  57. set_daymarket: (state, val) => {
  58. state.daymarket = val;
  59. },
  60. set_orderList: (state, list) => {
  61. state.orderList = list;
  62. },
  63. set_lever_trade: (state, list) => {
  64. state.leverTrade = list;
  65. },
  66. // SET_CONTRACT: (state, contract) => {
  67. // // 合约账户
  68. // state.contractAccount = contract;
  69. // },
  70. // SET_BIBI: (state, bibi) => {
  71. // // 币币账户
  72. // state.bibiAccount = bibi;
  73. // },
  74. // SET_LEGAL: (state, legal) => {
  75. // // 法币账户
  76. // state.legalAccount = legal;
  77. // },
  78. // SET_GIFTMONEY: (state, GiftMoney) => {
  79. // // 赠金账户
  80. // state.GiftMoneyAccount = GiftMoney;
  81. // },
  82. // SET_STOCKS_COLOR: (state, code) => {
  83. // state.stocksColor = code
  84. // },
  85. // SET_TOKEN: (state, token) => {
  86. // setToken(token)
  87. // state.token = token
  88. // }
  89. }
  90. const nums = (arr) => {
  91. const att = arr.map(el => {
  92. return el[0]
  93. })
  94. const num = Math.max.apply(null, att)
  95. arr.forEach(el => {
  96. let n = Math.round(el[0] / num * 10000) / 100
  97. el[2] = n > 100 ? 100 : n;
  98. })
  99. return arr
  100. }
  101. const actions = {
  102. openSocket({
  103. commit,
  104. state
  105. }, data) {
  106. },
  107. closeSocket({
  108. commit,
  109. state
  110. }, data) {
  111. console.log('关闭socket', socket)
  112. try {
  113. socket.disconnect()
  114. // socket.forEach(el => {
  115. // el.disconnect()
  116. // });
  117. // socket
  118. // socket.close()
  119. } catch {}
  120. socket = null;
  121. },
  122. getQuotationNew({
  123. commit,
  124. state
  125. }, data) {
  126. return false
  127. commit('set_currencySuspend', true)
  128. const rq = () => {
  129. Api_getQuotationNew().then(res => {
  130. if (res && res.length > 0) {
  131. let newArr = res.find((item) => item.name == 'USDT').quotation || [];
  132. if (!state.currencyVal || !state.currencyVal?.currency_id) {
  133. state.currencyVal = newArr[0];
  134. }
  135. // 首页推荐
  136. if (newArr && newArr.length > 0) {
  137. const nums = newArr.length > 3 ? 3 : newArr.length;
  138. state.usdtList = newArr.slice(0, nums);
  139. } else {
  140. state.usdtList = []
  141. }
  142. // 自选
  143. state.optional = newArr.slice(0, 6)
  144. // 全部
  145. state.marketAll = newArr
  146. }
  147. }).catch(err => {
  148. if (state.currencySuspend && data?.noRefresh) {
  149. console.log(11111, state.currencySuspend, data?.noRefresh)
  150. rq()
  151. }
  152. }).finally(() => {
  153. setTimeout(() => {
  154. // noRefresh : 是否不刷新,true 不会继续调用
  155. if (state.currencySuspend && !data?.noRefresh) {
  156. console.log(22222, state.currencySuspend, data?.noRefresh)
  157. rq()
  158. }
  159. }, 3000)
  160. })
  161. }
  162. rq()
  163. },
  164. }
  165. export default {
  166. namespaced: true,
  167. state,
  168. mutations,
  169. actions
  170. }