useActivityData.ts 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771
  1. import { ref, reactive, computed, onMounted, onUnmounted } from 'vue'
  2. import { useI18n } from 'vue-i18n'
  3. import {activityApi} from '@/service/activity'
  4. import {customApi} from '@/service/custom'
  5. import Config from '@/config/index'
  6. import type { ActivityState, PagerInfo, AccountInfo } from '../types/activity'
  7. const { Code, Host80 } = Config
  8. // 国家列表
  9. const countries = [
  10. "DZ", "AO", "BJ", "BW", "BF", "CM", "CG", "CD", "CI", "DJ", "EG", "ET", "GA", "GM", "GH", "GN", "KE",
  11. "MG", "MW", "ML", "MR", "MA", "MZ", "NA", "NE", "NG", "RW", "SN", "SL", "SO", "ZA", "SS", "SD", "TZ",
  12. "TG", "TN", "UG", "ZM", "ZW", "LS", "BH", "IR", "IQ", "IL", "JO", "KW", "LB", "OM", "PS", "QA", "SA",
  13. "SY", "TR", "AE", "YE", "AR", "BO", "BR", "CL", "CO", "EC", "GY", "PY", "PE", "SR", "UY", "VE", "BZ",
  14. "CR", "SV", "GT", "HN", "NI", "PA", "AU", "CA", "AL", "AD", "AM", "AT", "AZ", "BY", "BE", "BA", "BG",
  15. "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "GE", "DE", "GR", "HU", "IS", "IE", "IT", "XK", "LV", "LI",
  16. "LT", "LU", "MT", "MD", "MC", "ME", "NL", "MK", "NO", "PL", "PT", "RO", "RU", "SM", "RS", "SK", "SI",
  17. "ES", "SE", "CH", "UA", "VA"
  18. ]
  19. export function useActivityData() {
  20. const { t, locale } = useI18n()
  21. // ==================== 用户信息 ====================
  22. const userInfo = computed(() => {
  23. try {
  24. return JSON.parse(uni.getStorageSync('user') || '{}')
  25. } catch {
  26. return { customInfo: {} }
  27. }
  28. })
  29. const country = computed(() => userInfo.value.customInfo?.country || '')
  30. const myCid = computed(() => userInfo.value.customInfo?.cId || '')
  31. // ==================== 加载状态 ====================
  32. const pictLoading = ref(false)
  33. const flag = ref(false)
  34. // ==================== 活动数据 ====================
  35. const tableData = ref<any[]>([])
  36. const tableDataGive = ref<any[]>([])
  37. const singleData = ref<any>({})
  38. // 分页
  39. const pagerInfo = ref<PagerInfo>({
  40. row: 10,
  41. current: 1,
  42. pageTotal: 0,
  43. rowTotal: 0
  44. })
  45. // 账户列表
  46. const loginOptions = ref<AccountInfo[]>([])
  47. const loginOptions1 = ref<AccountInfo[]>([])
  48. // ==================== 活动特定状态 ====================
  49. const activityState = reactive<ActivityState>({
  50. tableDataNewYear24Flag: false,
  51. tableDataNewYear24: {},
  52. choujiaClose: false,
  53. tableDataNoWorriesFlag: false,
  54. tableDataNoWorries: false,
  55. isRealizationNoWorries: 0,
  56. standard: true,
  57. tableData2Flag: false,
  58. tableData2: false,
  59. isTransform: 0,
  60. isRealization: 0,
  61. tableDataCptFlag: false,
  62. tableDataCpt: {},
  63. tableData3FlagJYB: false,
  64. tableData3JYB: {},
  65. isRealizationJxJYB: 0,
  66. tableData3Flag: false,
  67. tableData3: {},
  68. isRealizationJx: 0,
  69. tableData3FlagVip: false,
  70. tableData3Vip: {},
  71. isRealizationJxVip: 0,
  72. tableData4Flag: false,
  73. tableData4: {},
  74. tableData4TwoFlag: false,
  75. tableData4Two: {},
  76. monthlyGive: false,
  77. surplusGive: false,
  78. newTask: false,
  79. newTaskList: { endTime: '', tradeVolume: '', raffleNumber: '' },
  80. LuckyDrawsNumber: '0',
  81. isCountDown: '',
  82. isCashBack: false,
  83. anshiClose: true,
  84. limitedStatus: null,
  85. activityShowsInfo: null,
  86. country: country.value,
  87. lang: locale.value,
  88. isGuoQin: false,
  89. isSupportedCountry: false
  90. })
  91. // 交易大赛参数
  92. const tableDataCptFlagCode = ref('')
  93. // 新年庆典数据
  94. const NewYear24DataBalance = ref('')
  95. const NewYear24Data = ref({ balance: 0, income: 0 })
  96. // 定时器
  97. const interval = ref<any>(null)
  98. // ==================== 计算属性 ====================
  99. // 是否支持的国家
  100. const isSupportedCountry = computed(() => {
  101. return countries.includes(country.value)
  102. })
  103. // 国庆节判断
  104. const isGuoQin = computed(() => {
  105. const startTime1 = '2024/10/01 00:00:00'
  106. const endTime1 = '2024/10/07 23:59:59'
  107. const timezone = 8
  108. const offset_GMT = new Date().getTimezoneOffset()
  109. const nowDate = new Date().getTime()
  110. const now = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000).getTime()
  111. const end = new Date(endTime1).getTime()
  112. const start = new Date(startTime1).getTime()
  113. return now > start && now < end
  114. })
  115. // ==================== 工具函数 ====================
  116. // 获取当前时间(带时区)
  117. const getCurrentTime = (timezone: number = 2) => {
  118. const offset_GMT = new Date().getTimezoneOffset()
  119. const nowDate = new Date().getTime()
  120. return new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000)
  121. }
  122. // 时间补0
  123. const getzero = (time: number) => {
  124. return time > 9 ? time : '0' + time
  125. }
  126. // 时间格式转换
  127. const timeConvert = (val: string) => {
  128. if (!val) return ''
  129. const datetime = new Date(val.replace(/-/g, '/'))
  130. const year = datetime.getFullYear()
  131. let month: any = datetime.getMonth() + 1
  132. let date: any = datetime.getDate()
  133. if (month < 10) month = '0' + month
  134. if (date < 10) date = '0' + date
  135. return year + '年' + month + '月' + date + '日'
  136. }
  137. // 货币符号
  138. const groupCurrency = (type: string) => {
  139. const map: Record<string, string> = {
  140. 'GBP': ': £',
  141. 'USD': ': $',
  142. 'EUR': ': €',
  143. 'USC': ': ¢'
  144. }
  145. return map[type] || ': $'
  146. }
  147. // 账户类型名称
  148. const groupTypeName = (type: string) => {
  149. const map: Record<string, string> = {
  150. '1': 'AccountType.ClassicAccount',
  151. '2': 'AccountType.SeniorAccount',
  152. '3': 'AccountType.AgencyAccount',
  153. '5': 'AccountType.SpeedAccount',
  154. '6': 'AccountType.SpeedAccount',
  155. '7': 'AccountType.StandardAccount',
  156. '8': 'AccountType.CentAccount'
  157. }
  158. return map[type] ? t(map[type]) : ''
  159. }
  160. // 判断活动是否在有效期内
  161. const overdue = (startTime: string, endTime: string) => {
  162. if (!startTime || !endTime) return false
  163. const startTime1 = startTime.replace(/-/g, '/').split(' ')[0]
  164. const endTime1 = endTime.replace(/-/g, '/').split(' ')[0]
  165. const now = getCurrentTime(2).getTime()
  166. const start = new Date(startTime1).getTime()
  167. const end = new Date(endTime1).getTime()
  168. return start < now && now < end
  169. }
  170. // 判断匠鑫活动是否报名结束
  171. const timeExpireJx = (endTime: string) => {
  172. if (!endTime) return false
  173. const endTime1 = endTime.replace(/-/g, '/').split(' ')[0]
  174. const now = getCurrentTime(2).getTime()
  175. const end = new Date(endTime1).getTime()
  176. return now < end
  177. }
  178. // 判断是否在9月30日之后
  179. const isAfterSeptember30 = () => {
  180. return true // 根据实际需求修改
  181. }
  182. // ==================== API 请求函数 ====================
  183. // 获取账户信息
  184. const getDateList = async () => {
  185. try {
  186. const res = await customApi.DropdownlusActivityOptions({ platform: '' })
  187. if (res.code == Code.StatusOK) {
  188. loginOptions1.value = res.data
  189. } else {
  190. uni.showToast({ title: res.msg, icon: 'none' })
  191. }
  192. } catch (error) {
  193. console.error('获取账户信息失败', error)
  194. }
  195. }
  196. // 获取活动列表
  197. const searchFunc = async (page: number = 1) => {
  198. if (flag.value) return
  199. flag.value = true
  200. pictLoading.value = true
  201. try {
  202. const res = await activityApi.ActivityExtensionIist({
  203. hot: '',
  204. tag: 1,
  205. lang: ['cn', 'zhHant'].includes(locale.value) ? 'cn' : 'en',
  206. page: {
  207. current: page,
  208. row: pagerInfo.value.row
  209. }
  210. })
  211. if (res.code == Code.StatusOK) {
  212. tableData.value = res.data
  213. pagerInfo.value.rowTotal = res.page.rowTotal
  214. pagerInfo.value.pageTotal = res.page.pageTotal
  215. } else {
  216. uni.showToast({ title: res.msg, icon: 'none' })
  217. }
  218. } catch (error) {
  219. console.error('获取活动列表失败', error)
  220. } finally {
  221. pictLoading.value = false
  222. flag.value = false
  223. }
  224. }
  225. // 获取赠送活动列表
  226. const searchFunc1 = async () => {
  227. pictLoading.value = true
  228. try {
  229. const res = await activityApi.ActivityExtensionGiveList({
  230. page: {
  231. current: pagerInfo.value.current,
  232. row: pagerInfo.value.row
  233. }
  234. })
  235. if (res.code == Code.StatusOK) {
  236. tableDataGive.value = res.data
  237. pagerInfo.value.rowTotal = res.page.rowTotal
  238. pagerInfo.value.pageTotal = res.page.pageTotal
  239. } else {
  240. uni.showToast({ title: res.msg, icon: 'none' })
  241. }
  242. } catch (error) {
  243. console.error('获取赠送活动列表失败', error)
  244. } finally {
  245. pictLoading.value = false
  246. }
  247. }
  248. // 获取单个活动详情
  249. const getSingle = async (id: string) => {
  250. try {
  251. const res = await activityApi.ActivitySingle({ id })
  252. if (res.code == Code.StatusOK) {
  253. singleData.value = res.data
  254. } else {
  255. uni.showToast({ title: res.msg, icon: 'none' })
  256. }
  257. } catch (error) {
  258. console.error('获取活动详情失败', error)
  259. }
  260. }
  261. // 获取赠送活动详情
  262. const getSingle1 = async (id: string) => {
  263. try {
  264. const res = await activityApi.ActivityExtensionGiveSingle({ id })
  265. if (res.code == Code.StatusOK) {
  266. singleData.value = res.data
  267. } else {
  268. uni.showToast({ title: res.msg, icon: 'none' })
  269. }
  270. } catch (error) {
  271. console.error('获取赠送活动详情失败', error)
  272. }
  273. }
  274. // 2023迎新活动数据
  275. const Activity23HundredInfo = async () => {
  276. try {
  277. const res = await activityApi.Activity23HundredInfo({})
  278. if (res.code == Code.StatusOK) {
  279. activityState.tableData2 = res.data
  280. if (typeof activityState.tableData2 == 'object') {
  281. activityState.tableData2Flag = true
  282. const nowTime = getCurrentTime(2).getTime()
  283. const startTime = new Date(activityState.tableData2.activityStartTime.replace(/-/g, '/')).getTime()
  284. const endTime = new Date(activityState.tableData2.activityEndTime.replace(/-/g, '/')).getTime()
  285. if (nowTime < endTime && nowTime > startTime) {
  286. if (activityState.tableData2.status == 2 && activityState.tableData2.activityStatus == 0) {
  287. activityState.isTransform = 1
  288. } else if (activityState.tableData2.status == 2 &&
  289. (activityState.tableData2.activityStatus == 1 ||
  290. (activityState.tableData2.balanceStatus != 2 && activityState.tableData2.creditStatus != 2))) {
  291. activityState.isTransform = 2
  292. } else if (activityState.tableData2.status == 2 && activityState.tableData2.activityStatus == 3) {
  293. activityState.isTransform = 2
  294. }
  295. } else {
  296. activityState.isTransform = 2
  297. }
  298. if (activityState.tableData2.status == 2 && activityState.tableData2.activityStatus == 2) {
  299. activityState.isTransform = null
  300. if (activityState.tableData2.realizationStatus == 0) {
  301. activityState.isRealization = 1
  302. } else if (activityState.tableData2.realizationStatus == 1 ||
  303. (activityState.tableData2.realizationCreditStatus != 2 && activityState.tableData2.realizationBalanceStatus != 2)) {
  304. activityState.isRealization = 2
  305. } else if (activityState.tableData2.realizationStatus == 3) {
  306. activityState.isRealization = 2
  307. }
  308. } else {
  309. activityState.isRealization = null
  310. }
  311. } else {
  312. if (activityState.tableData2) {
  313. activityState.tableData2Flag = true
  314. }
  315. }
  316. } else {
  317. uni.showToast({ title: res.msg, icon: 'none' })
  318. activityState.tableData2 = true
  319. }
  320. } catch (error) {
  321. console.error('获取2023迎新活动数据失败', error)
  322. }
  323. }
  324. // 2023匠鑫活动数据
  325. const Activity23JiangxinInfo = async () => {
  326. try {
  327. const res = await activityApi.Activity23JiangxinInfo({})
  328. if (res.code == Code.StatusOK) {
  329. activityState.tableData3 = res.data
  330. if (activityState.tableData3.show == 1) {
  331. activityState.tableData3Flag = true
  332. } else if (activityState.tableData3.show == 0) {
  333. activityState.tableData3Flag = false
  334. } else if (!activityState.tableData3.show) {
  335. activityState.tableData3Flag = true
  336. const nowTime = getCurrentTime(2).getTime()
  337. const endTime = activityState.tableData3.activityEndTime
  338. ? new Date(activityState.tableData3.activityEndTime.replace(/-/g, '/')).getTime()
  339. : null
  340. if (activityState.tableData3.status == 2 && activityState.tableData3.realizationStatus == 0 && endTime && nowTime > endTime) {
  341. activityState.isRealizationJx = 1
  342. } else {
  343. activityState.isRealizationJx = 2
  344. }
  345. }
  346. } else {
  347. uni.showToast({ title: res.msg, icon: 'none' })
  348. }
  349. } catch (error) {
  350. console.error('获取2023匠鑫活动数据失败', error)
  351. }
  352. }
  353. // 2023匠鑫活动数据Vip
  354. const Activity23JiangxinInfoVip = async () => {
  355. try {
  356. const res = await activityApi.Activity23JiangxinInfoVip({})
  357. if (res.code == Code.StatusOK) {
  358. activityState.tableData3Vip = res.data
  359. if (activityState.tableData3Vip.show == 1) {
  360. activityState.tableData3FlagVip = true
  361. } else if (activityState.tableData3Vip.show == 0) {
  362. activityState.tableData3FlagVip = false
  363. } else if (!activityState.tableData3Vip.show) {
  364. activityState.tableData3FlagVip = true
  365. const nowTime = getCurrentTime(2).getTime()
  366. const endTime = activityState.tableData3Vip.activityEndTime
  367. ? new Date(activityState.tableData3Vip.activityEndTime.replace(/-/g, '/')).getTime()
  368. : null
  369. if (activityState.tableData3Vip.status == 2 && activityState.tableData3Vip.realizationStatus == 0 && endTime && nowTime > endTime) {
  370. activityState.isRealizationJxVip = 1
  371. } else {
  372. activityState.isRealizationJxVip = 2
  373. }
  374. }
  375. } else {
  376. uni.showToast({ title: res.msg, icon: 'none' })
  377. }
  378. } catch (error) {
  379. console.error('获取2023匠鑫活动数据Vip失败', error)
  380. }
  381. }
  382. // 2023年中赠金活动数据-10
  383. const Activity24nianzhongInfo = async () => {
  384. try {
  385. const res = await activityApi.Activity23nianzhongInfo({})
  386. if (res.code == Code.StatusOK) {
  387. activityState.tableData4 = res.data
  388. if (activityState.tableData4.show == 1) {
  389. activityState.tableData4Flag = true
  390. } else if (activityState.tableData4.show == 0) {
  391. activityState.tableData4Flag = false
  392. }
  393. } else {
  394. uni.showToast({ title: res.msg, icon: 'none' })
  395. }
  396. } catch (error) {
  397. console.error('获取年中赠金活动数据失败', error)
  398. }
  399. }
  400. // 2023年中赠金活动数据-20
  401. const Activity24nianzhongTwoInfo = async () => {
  402. try {
  403. const res = await activityApi.Activity23nianzhongTwoInfo({})
  404. if (res.code == Code.StatusOK) {
  405. activityState.tableData4Two = res.data
  406. if (activityState.tableData4Two.show == 1) {
  407. activityState.tableData4TwoFlag = true
  408. } else if (activityState.tableData4Two.show == 0) {
  409. activityState.tableData4TwoFlag = false
  410. }
  411. } else {
  412. uni.showToast({ title: res.msg, icon: 'none' })
  413. }
  414. } catch (error) {
  415. console.error('获取年中赠金活动数据-20失败', error)
  416. }
  417. }
  418. // 交易大赛数据-参数
  419. const GetActivityCptCode = async () => {
  420. try {
  421. const res = await activityApi.ActivityCptinfoGetCode({})
  422. if (res.code == Code.StatusOK) {
  423. tableDataCptFlagCode.value = res.data.code
  424. if (tableDataCptFlagCode.value) {
  425. await ActivityCptInfo(tableDataCptFlagCode.value)
  426. }
  427. } else {
  428. uni.showToast({ title: res.msg, icon: 'none' })
  429. }
  430. } catch (error) {
  431. console.error('获取交易大赛参数失败', error)
  432. }
  433. }
  434. // 交易大赛数据
  435. const ActivityCptInfo = async (code: string) => {
  436. try {
  437. const res = await activityApi.ActivityCptinfoCode({ infoCode: code })
  438. if (res.code == Code.StatusOK) {
  439. activityState.tableDataCpt = res.data
  440. activityState.tableDataCptFlag = !!activityState.tableDataCpt
  441. } else {
  442. uni.showToast({ title: res.msg, icon: 'none' })
  443. }
  444. } catch (error) {
  445. console.error('获取交易大赛数据失败', error)
  446. }
  447. }
  448. // 24精英杯活动
  449. const Activity24JYBInfoVip = async () => {
  450. try {
  451. const res = await activityApi.Activity24JYBInfoVip({})
  452. if (res.code == Code.StatusOK) {
  453. activityState.tableData3JYB = res.data
  454. if (activityState.tableData3JYB.show == 1) {
  455. activityState.tableData3FlagJYB = true
  456. } else if (activityState.tableData3JYB.show == 0) {
  457. activityState.tableData3FlagJYB = false
  458. } else if (!activityState.tableData3JYB.show) {
  459. activityState.tableData3FlagJYB = true
  460. const nowTime = getCurrentTime(2).getTime()
  461. const endTime = activityState.tableData3JYB.activityEndTime
  462. ? new Date(activityState.tableData3JYB.activityEndTime.replace(/-/g, '/')).getTime()
  463. : null
  464. if (activityState.tableData3JYB.status == 2 && activityState.tableData3JYB.realizationStatus == 0 && endTime && nowTime > endTime) {
  465. activityState.isRealizationJxJYB = 1
  466. } else {
  467. activityState.isRealizationJxJYB = 2
  468. }
  469. }
  470. } else {
  471. uni.showToast({ title: res.msg, icon: 'none' })
  472. }
  473. } catch (error) {
  474. console.error('获取24精英杯活动数据失败', error)
  475. }
  476. }
  477. // 24无忧交易
  478. const ActivityNoWorriesInfo = async () => {
  479. try {
  480. const res = await activityApi.ActivityNoWorriesInfo({})
  481. if (res.code == Code.StatusOK) {
  482. activityState.tableDataNoWorries = res.data
  483. if (typeof activityState.tableDataNoWorries == 'object') {
  484. activityState.tableDataNoWorriesFlag = true
  485. const nowTime = getCurrentTime(2).getTime()
  486. const startTime = new Date(activityState.tableDataNoWorries.compensateTime.replace(/-/g, '/')).getTime()
  487. const endTime = new Date(activityState.tableDataNoWorries.revokeTime.replace(/-/g, '/')).getTime()
  488. if (nowTime < endTime && nowTime > startTime &&
  489. (activityState.tableDataNoWorries.status == 0 || activityState.tableDataNoWorries.status == 3) &&
  490. activityState.tableDataNoWorries.compensateStatus == 2 &&
  491. activityState.tableDataNoWorries.activityStatus == 1) {
  492. activityState.isRealizationNoWorries = 1
  493. } else {
  494. activityState.isRealizationNoWorries = null
  495. }
  496. } else {
  497. if (activityState.tableDataNoWorries) {
  498. activityState.tableDataNoWorriesFlag = true
  499. }
  500. }
  501. } else {
  502. uni.showToast({ title: res.msg, icon: 'none' })
  503. }
  504. } catch (error) {
  505. console.error('获取无忧交易数据失败', error)
  506. }
  507. }
  508. // CWG 现金嘉年华-新任务
  509. const ActivitYdepositRaffleAim = async () => {
  510. try {
  511. const res = await activityApi.ActivitYdepositRaffleAim({})
  512. if (res.code == Code.StatusOK) {
  513. activityState.newTask = !!res.data
  514. if (res.data) {
  515. activityState.newTaskList = res.data
  516. }
  517. } else {
  518. uni.showToast({ title: res.msg, icon: 'none' })
  519. }
  520. } catch (error) {
  521. console.error('获取新任务数据失败', error)
  522. }
  523. }
  524. // CWG 现金嘉年华-抽奖次数
  525. const ActivitYdepositRaffleinfo = async () => {
  526. try {
  527. const res = await activityApi.ActivitYdepositRaffleinfo({})
  528. if (res.code == Code.StatusOK) {
  529. activityState.LuckyDrawsNumber = res.data?.raffleResidueNumber || '0'
  530. } else {
  531. uni.showToast({ title: res.msg, icon: 'none' })
  532. }
  533. } catch (error) {
  534. console.error('获取抽奖次数失败', error)
  535. }
  536. }
  537. // 抽奖活动是否到期
  538. const isRaffleOpen = () => {
  539. const endTime1 = '2025/9/30 23:59:59'
  540. const startTime1 = '2025/7/1 00:00:00'
  541. const now = getCurrentTime(2).getTime()
  542. const end = new Date(endTime1).getTime()
  543. const start = new Date(startTime1).getTime()
  544. if (now < end && start < now) {
  545. activityState.choujiaClose = true
  546. ActivitYdepositRaffleAim()
  547. ActivitYdepositRaffleinfo()
  548. }
  549. }
  550. // 新年庆典是否到期
  551. const isNewYear24Open = () => {
  552. const endTime1 = '2025/3/31 23:59:59'
  553. const startTime1 = '2025/1/1 00:00:00'
  554. const now = getCurrentTime(2).getTime()
  555. const end = new Date(endTime1).getTime()
  556. const start = new Date(startTime1).getTime()
  557. if (now < end && start < now) {
  558. ActivityNewYear24()
  559. }
  560. }
  561. // 新年庆典数据
  562. const ActivityNewYear24 = async () => {
  563. try {
  564. const res = await activityApi.ActivityNewYear24({})
  565. if (res.code == Code.StatusOK) {
  566. activityState.tableDataNewYear24 = res.data
  567. activityState.tableDataNewYear24Flag = !!activityState.tableDataNewYear24
  568. } else {
  569. uni.showToast({ title: res.msg, icon: 'none' })
  570. }
  571. } catch (error) {
  572. console.error('获取新年庆典数据失败', error)
  573. }
  574. }
  575. // 限时活动
  576. const ActivityRequiteInfo = async () => {
  577. try {
  578. const res = await activityApi.ActivityRequiteInfo({})
  579. if (res.code == Code.StatusOK) {
  580. activityState.limitedStatus = res.data
  581. } else {
  582. uni.showToast({ title: res.msg, icon: 'none' })
  583. }
  584. } catch (error) {
  585. console.error('获取限时活动数据失败', error)
  586. }
  587. }
  588. // 获取活动显示信息
  589. const getActivityShowsInfo = async () => {
  590. try {
  591. const res = await activityApi.ActivityShowsInfo()
  592. if (res.code == Code.StatusOK) {
  593. activityState.activityShowsInfo = res.data
  594. activityState.surplusGive = res.data.surplusGive || false
  595. activityState.monthlyGive = res.data.monthlyGive || false
  596. } else {
  597. uni.showToast({ title: res.msg, icon: 'none' })
  598. activityState.surplusGive = false
  599. activityState.monthlyGive = false
  600. }
  601. } catch (error) {
  602. console.error('获取活动显示信息失败', error)
  603. activityState.surplusGive = false
  604. activityState.monthlyGive = false
  605. }
  606. }
  607. // 20赠金是否到期
  608. const is20Open = () => {
  609. const endTime1 = '2023/04/30 23:59:59'
  610. const now = getCurrentTime(2).getTime()
  611. const end = new Date(endTime1).getTime()
  612. if (now > end) {
  613. activityState.anshiClose = false
  614. }
  615. }
  616. // 20赠金活动数据
  617. const getActivityPercentageGiveInfo = async () => {
  618. try {
  619. const res = await activityApi.ActivityPercentageGiveInfo({})
  620. if (res.code == Code.StatusOK) {
  621. // 处理20赠金活动数据
  622. console.log('20赠金活动数据', res.data)
  623. }
  624. } catch (error) {
  625. console.error('获取20赠金活动数据失败', error)
  626. }
  627. }
  628. // 刷新所有活动数据
  629. const refreshAllActivities = () => {
  630. is20Open()
  631. searchFunc()
  632. searchFunc1()
  633. Activity23HundredInfo()
  634. Activity23JiangxinInfoVip()
  635. Activity24nianzhongInfo()
  636. Activity24nianzhongTwoInfo()
  637. GetActivityCptCode()
  638. Activity24JYBInfoVip()
  639. ActivityNoWorriesInfo()
  640. isRaffleOpen()
  641. isNewYear24Open()
  642. ActivityRequiteInfo()
  643. getActivityShowsInfo()
  644. }
  645. // 分页处理
  646. const handlePageChange = (page: number) => {
  647. pagerInfo.value.current = page
  648. searchFunc(page)
  649. searchFunc1()
  650. }
  651. // 清理定时器
  652. onUnmounted(() => {
  653. if (interval.value) {
  654. clearInterval(interval.value)
  655. }
  656. })
  657. return {
  658. // 状态
  659. pictLoading,
  660. flag,
  661. tableData,
  662. tableDataGive,
  663. singleData,
  664. pagerInfo,
  665. loginOptions,
  666. loginOptions1,
  667. activityState,
  668. tableDataCptFlagCode,
  669. NewYear24DataBalance,
  670. NewYear24Data,
  671. // 计算属性
  672. country,
  673. myCid,
  674. isSupportedCountry,
  675. isGuoQin,
  676. // 工具函数
  677. getCurrentTime,
  678. getzero,
  679. timeConvert,
  680. groupCurrency,
  681. groupTypeName,
  682. overdue,
  683. timeExpireJx,
  684. isAfterSeptember30,
  685. // API函数
  686. getDateList,
  687. searchFunc,
  688. searchFunc1,
  689. getSingle,
  690. getSingle1,
  691. Activity23HundredInfo,
  692. Activity23JiangxinInfo,
  693. Activity23JiangxinInfoVip,
  694. Activity24nianzhongInfo,
  695. Activity24nianzhongTwoInfo,
  696. GetActivityCptCode,
  697. ActivityCptInfo,
  698. Activity24JYBInfoVip,
  699. ActivityNoWorriesInfo,
  700. ActivitYdepositRaffleAim,
  701. ActivitYdepositRaffleinfo,
  702. isRaffleOpen,
  703. isNewYear24Open,
  704. ActivityNewYear24,
  705. ActivityRequiteInfo,
  706. getActivityShowsInfo,
  707. getActivityPercentageGiveInfo,
  708. refreshAllActivities,
  709. handlePageChange
  710. }
  711. }