useActivityData.ts 28 KB

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