order.js 2.76 KB
import { ref, reactive } from 'vue';
// 创建全局状态对象
const globalOrderState = reactive({
  orderParams: null, // 订单参数
  selectedGiftCardIds: [], // 选中的礼品卡ID
  selectedCouponId: '', // 选中的优惠券ID
  selectedCoursePackageId: '', // 选中的课程包ID
  isInitialized: false, // 新增:是否已初始化
});

// 创建订单状态管理 composable
export function useOrderStore() {
  // 获取订单参数
  const getOrderParams = () => globalOrderState.orderParams;

  // 设置订单参数
  const setOrderParams = (params) => {
    if (!globalOrderState.isInitialized) {
      globalOrderState.orderParams = { ...params };
    }
    globalOrderState.isInitialized = true;
  };

  // 获取选中的礼品卡ID
  const getSelectedGiftCardIds = () => globalOrderState.selectedGiftCardIds;

  // 设置选中的礼品卡ID
  const setSelectedGiftCardIds = (cardIds) => {
    globalOrderState.selectedGiftCardIds = Array.isArray(cardIds) ? [...cardIds] : [];
  };

  // 添加礼品卡ID
  const addGiftCardIds = (cardIds) => {
    const newIds = Array.isArray(cardIds) ? cardIds : [cardIds];
    globalOrderState.selectedGiftCardIds = [
      ...new Set([...globalOrderState.selectedGiftCardIds, ...newIds]),
    ];
  };

  // 移除礼品卡ID
  const removeGiftCardId = (cardId) => {
    globalOrderState.selectedGiftCardIds = globalOrderState.selectedGiftCardIds.filter(
      (id) => id !== cardId,
    );
  };

  // 清除礼品卡ID
  const clearGiftCardIds = () => {
    globalOrderState.selectedGiftCardIds = [];
  };

  // 获取选中的优惠券ID
  const getSelectedCouponId = () => globalOrderState.selectedCouponId;

  // 设置选中的优惠券ID
  const setSelectedCouponId = (couponId) => {
    globalOrderState.selectedCouponId = couponId;
  };

  // 获取选中的课程包ID
  const getSelectedCoursePackageId = () => globalOrderState.selectedCoursePackageId;

  // 设置选中的课程包ID
  const setSelectedCoursePackageId = (packageId) => {
    globalOrderState.selectedCoursePackageId = packageId;
  };

  // 清除所有订单状态
  const clearOrderState = () => {
    globalOrderState.orderParams = null;
    globalOrderState.selectedGiftCardIds = [];
    globalOrderState.selectedCouponId = '';
    globalOrderState.selectedCoursePackageId = '';
    globalOrderState.isInitialized = false;
  };

  // 返回所有方法
  return {
    // 订单参数相关
    getOrderParams,
    setOrderParams,

    // 礼品卡相关
    getSelectedGiftCardIds,
    setSelectedGiftCardIds,
    addGiftCardIds,
    removeGiftCardId,
    clearGiftCardIds,

    // 优惠券相关
    getSelectedCouponId,
    setSelectedCouponId,

    // 课程包相关
    getSelectedCoursePackageId,
    setSelectedCoursePackageId,

    // 清除状态
    clearOrderState,
  };
}