websocket.js 4.3 KB

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