use-card-store.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import { defineStore } from "pinia";
  2. import ls from "@/utils/store2";
  3. import { ref } from "vue";
  4. import { userToken } from "../composables/config";
  5. import crypt from "../composables/crypt";
  6. const CARD_KEY = "cardList";
  7. const APPLY_CARD_KEY = "applyList";
  8. const CURRENCY_LIST_KEY = "currencyList"; // 新增币种列表的本地存储键
  9. const ORDER_DETAIL_KEY = "orderDetailEncrypted"; // 订单详情加密缓存键
  10. const useCardStore = defineStore("cardStore", () => {
  11. // 用户卡和申请卡列表
  12. const userCard = ref([]);
  13. const applyCard = ref([]);
  14. // 新增币种列表
  15. const currencyList = ref([]);
  16. // 订单详情(使用加密存储)
  17. const orderDetail = ref<any | null>(null);
  18. // 初始化用户卡
  19. const initUserCard = () => {
  20. const encryptedCard = ls.get(CARD_KEY);
  21. if (encryptedCard) {
  22. const decryptedCard = crypt.decrypt(encryptedCard);
  23. if (decryptedCard) {
  24. userCard.value = JSON.parse(decryptedCard);
  25. }
  26. }
  27. };
  28. // 初始化申请卡
  29. const initApplyCard = () => {
  30. const encryptedCard = ls.get(APPLY_CARD_KEY);
  31. if (encryptedCard) {
  32. const decryptedCard = crypt.decrypt(encryptedCard);
  33. if (decryptedCard) {
  34. applyCard.value = JSON.parse(decryptedCard);
  35. }
  36. }
  37. };
  38. // 初始化币种列表
  39. const initCurrencyList = () => {
  40. const encryptedCurrencies = ls.get(CURRENCY_LIST_KEY);
  41. if (encryptedCurrencies) {
  42. const decryptedCurrencies = crypt.decrypt(encryptedCurrencies);
  43. if (decryptedCurrencies) {
  44. currencyList.value = JSON.parse(decryptedCurrencies);
  45. }
  46. }
  47. };
  48. // 初始化订单详情(解密)
  49. const initOrderDetail = () => {
  50. const encryptedDetail = ls.get(ORDER_DETAIL_KEY);
  51. if (encryptedDetail) {
  52. const decryptedDetail = crypt.decrypt(encryptedDetail);
  53. if (decryptedDetail) {
  54. try {
  55. orderDetail.value = JSON.parse(decryptedDetail);
  56. } catch (e) {
  57. orderDetail.value = null;
  58. }
  59. }
  60. }
  61. };
  62. // 保存用户卡
  63. const saveUserCard = (info: any) => {
  64. userCard.value = info;
  65. const encryptedCard = crypt.encrypt(JSON.stringify(info));
  66. ls.set(CARD_KEY, encryptedCard);
  67. };
  68. // 保存申请卡
  69. const saveApplyCard = (info: any) => {
  70. applyCard.value = info;
  71. const encryptedCard = crypt.encrypt(JSON.stringify(info));
  72. ls.set(APPLY_CARD_KEY, encryptedCard);
  73. };
  74. // 保存币种列表
  75. const saveCurrencyList = (list: any) => {
  76. currencyList.value = list;
  77. const encryptedCurrencies = crypt.encrypt(JSON.stringify(list));
  78. ls.set(CURRENCY_LIST_KEY, encryptedCurrencies);
  79. };
  80. // 保存订单详情(加密)
  81. const saveOrderDetail = (detail: any) => {
  82. orderDetail.value = detail;
  83. const encryptedDetail = crypt.encrypt(JSON.stringify(detail));
  84. ls.set(ORDER_DETAIL_KEY, encryptedDetail);
  85. };
  86. // 清空订单详情(缓存 + 内存)
  87. const clearOrderDetail = () => {
  88. orderDetail.value = null;
  89. // @ts-ignore: store2 兼容 remove/removeItem
  90. if (typeof (ls as any).remove === "function") {
  91. (ls as any).remove(ORDER_DETAIL_KEY);
  92. } else if (typeof (ls as any).removeItem === "function") {
  93. (ls as any).removeItem(ORDER_DETAIL_KEY);
  94. } else {
  95. ls.set(ORDER_DETAIL_KEY, null);
  96. }
  97. };
  98. // 初始化所有数据
  99. initUserCard();
  100. initApplyCard();
  101. initCurrencyList();
  102. initOrderDetail();
  103. return {
  104. userCard,
  105. applyCard,
  106. currencyList, // 新增币种列表
  107. orderDetail, // 订单详情(已解密)
  108. saveUserCard,
  109. saveApplyCard,
  110. saveCurrencyList, // 新增保存币种列表的操作
  111. saveOrderDetail, // 保存订单详情(加密)
  112. clearOrderDetail, // 清空订单详情
  113. };
  114. });
  115. export default useCardStore;