index.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. import Setting from "@/api/setting";
  4. import i18n from "@/i18n";
  5. import Socket from '@/api/serve/market-socket'
  6. import themeStyle from '@/plugins/theme-style'
  7. import app from '@/app'
  8. let socket = new Socket(app.socketUrl)
  9. socket.on('message',(evt)=>{
  10. if(evt.type=='ping'){
  11. socket.send({cmd:'pong'})
  12. }
  13. })
  14. let socket1 = new Socket(app.socketUrl1)
  15. socket1.on('message',(evt)=>{
  16. if(evt.cmd=='ping'){
  17. socket1.send({cmd:'pong'})
  18. }
  19. })
  20. Vue.use(Vuex)
  21. function defaultTheme() {
  22. return `dark`
  23. // 获取当前时间
  24. let timeNow = new Date();
  25. // 获取当前小时
  26. let hours = timeNow.getHours();
  27. // 设置默认文字
  28. let state = ``;
  29. // 判断当前时间段
  30. if (hours >= 19 || hours <= 7) {
  31. state = `dark`;
  32. } else {
  33. state = `light`;
  34. }
  35. return state;
  36. }
  37. let store = new Vuex.Store({
  38. state: {
  39. // 切换动画
  40. fade: '',
  41. // 区号列表
  42. countryList: [],
  43. token: uni.getStorageSync('token'),
  44. user: (() => {
  45. if (!uni.getStorageSync('user')) return {};
  46. return JSON.parse(uni.getStorageSync('user'))
  47. })(),
  48. ws:socket,
  49. ws1:socket1,
  50. wsState: false,
  51. hideMoney: uni.getStorageSync('hideMoney') == 'true',
  52. // logo
  53. logoMap: (() => {
  54. if (!uni.getStorageSync('logoMap')) return {};
  55. return JSON.parse(uni.getStorageSync('logoMap'))
  56. })(),
  57. lang: uni.getStorageSync('lang')||'tw',
  58. langList: [
  59. {
  60. value: 'en',
  61. label: 'English'
  62. },
  63. // {
  64. // value: 'cn',
  65. // label: '简体中文'
  66. // },
  67. {
  68. value: 'tw',
  69. label: '繁體中文'
  70. },
  71. {
  72. value: 'tr',
  73. label: 'Türkçe'
  74. },
  75. {
  76. value: 'kor',
  77. label: '한국어'
  78. },
  79. {
  80. value: 'jp',
  81. label: '日本語'
  82. },
  83. {
  84. value: 'de',
  85. label: 'Deutsch'
  86. },
  87. {
  88. value: 'fra',
  89. label: 'Français'
  90. },
  91. {
  92. value: 'spa',
  93. label: 'Español'
  94. },
  95. {
  96. value: 'it',
  97. label: 'Italiano'
  98. },
  99. {
  100. value: 'ukr',
  101. label: 'українська мова'
  102. },
  103. {
  104. value: 'swe',
  105. label: 'Svenska'
  106. },
  107. {
  108. value: 'fin',
  109. label: 'Suomi'
  110. },
  111. {
  112. value: 'pl',
  113. label: 'język polski'
  114. },
  115. {
  116. value: 'pt',
  117. label: 'Português'
  118. },
  119. {
  120. value:'alb',
  121. label:'اَلْعَرَبِيَّةُ‎'
  122. },
  123. {
  124. value:'tai',
  125. label:'อักษรไทย'
  126. },
  127. {
  128. value:'yue',
  129. label:'Tiếng Việt'
  130. },
  131. {
  132. value:'yindu',
  133. label:'हिंदी'
  134. }
  135. ],
  136. // 主题
  137. theme:uni.getStorageSync('theme')||defaultTheme(),
  138. // 自定义页面下标
  139. pageIdx:0
  140. },
  141. getters:{
  142. themeStyle(state){
  143. return themeStyle[state.theme]
  144. }
  145. },
  146. mutations: {
  147. FADE(state, data) {
  148. state.fade = data
  149. },
  150. COUNTRYLIST(state, data) {
  151. state.countryList = data
  152. },
  153. TOKEN(state, data) {
  154. uni.setStorageSync('token', data)
  155. state.token = data
  156. },
  157. USER(state, data) {
  158. uni.setStorageSync('user', JSON.stringify(data))
  159. state.user = data
  160. },
  161. HIDEMONEY(state, data) {
  162. uni.setStorageSync('hideMoney', data)
  163. state.hideMoney = data
  164. },
  165. LOGOMAP(state, data) {
  166. uni.setStorageSync('logoMap', JSON.stringify(data))
  167. state.logoMap = data
  168. },
  169. LANG(state, data) {
  170. uni.setStorageSync('lang', data)
  171. i18n.locale = data
  172. state.lang = data
  173. },
  174. VANTLANG(state, data) {
  175. let name = 'zh-CN'
  176. console.log('待修改插件语言')
  177. },
  178. THEME(state,data){
  179. state.theme = data
  180. uni.setStorageSync('theme',data)
  181. },
  182. PAGEIDX(state,data){
  183. state.pageIdx++
  184. }
  185. },
  186. actions: {
  187. // 页面返回事件
  188. fadeOut({ commit }) {
  189. commit('FADE', 'fade-out')
  190. setTimeout(() => {
  191. commit('FADE', 'fade-in')
  192. }, 300);
  193. },
  194. // 设置区号
  195. countryList({ commit }, data) {
  196. commit('COUNTRYLIST', data)
  197. },
  198. token({ commit }, data) {
  199. commit('TOKEN', data)
  200. },
  201. // 设置用户信息 (登录处)
  202. user({ commit }, data) {
  203. commit('USER', data)
  204. },
  205. // 过滤资金显示
  206. hideMoney({ commit }, data) {
  207. commit('HIDEMONEY', data)
  208. },
  209. // 设置用户信息
  210. setUserInfo({ commit }) {
  211. Setting.getUserInfo().then(res => {
  212. commit('USER', res.data)
  213. }).catch(() => { })
  214. },
  215. // 设置logo
  216. logoMap({ commit }, data) {
  217. commit('LOGOMAP', data)
  218. },
  219. // 设置当前语言
  220. setLang({ commit }, data) {
  221. commit('LANG', data)
  222. commit('VANTLANG', data)
  223. },
  224. // 设置主题
  225. setTheme({ commit }, data){
  226. commit('THEME',data)
  227. uni.setNavigationBarColor({
  228. frontColor:data=='dark'?'#ffffff':'#000000',
  229. backgroundColor:'#666666',
  230. })
  231. },
  232. // 页面栈++
  233. setPageIdx({ commit }, data){
  234. commit('PAGEIDX',data)
  235. }
  236. },
  237. modules: {
  238. }
  239. })
  240. export default store