const { bus } = getApp();
import { conversion } from '../../../utils/week-index';
const componentOptions = {
  // 组件选项
  options: {
    multipleSlots: true,
  },
  properties: {
    value: {
      type: Object,
      value: {},
    },
    direction: {
      type: String,
      value: "horizontal",
      observer(v) {
        this.setData({
          isHorizontal: v === "horizontal",
        });
      },
    },
    extraInfo: {
      type: Object,
      value: {},
    },
  },
  // 数据监听
  observers: {
    "value, extraInfo"(value, extraInfo) {
      if (value && extraInfo.storeOperatingStatus) {
        this.initData(value);
      }
    },
  },
  // 组件数据
  data: {
    isPageHidden: false, // 页面是否处于隐藏状态
    // 菜品的UUID
    dishKey: "",
    // 菜品数据
    dishData: {},
    // 购买信息
    buyInfo: {
      number: 0,
    },
    // 是否不允许点击
    disabled: false,
    // 是否横向展示
    isHorizontal: true,
    // 图片是否展示
    imgShow: false,
  },
  // 组件方法
  methods: {
    init() {
    },
    // 计算菜品数据
    initData(v) {
      v = conversion(v)
      const {
        price,
        cartNum,
        packagePrice,
      } = v;

      // 这个是用于展示被划掉的价格，通常来说是原价
      const totalPrice = price * cartNum + (packagePrice || 0) * cartNum

      const dishData = Object.assign({}, v, {
        totalPrice
      });
      console.log(dishData)

      const { storeOperatingStatus } = this.data.extraInfo || {};

      this.setData({
        dishData,
        disabled: storeOperatingStatus === 2,
      });
    },
    // 点击菜品获取详情
    clickItem() {
      bus.emit("showDishDetail", { show: true, detail: this.data.dishData });
    },
  },
  // 组件生命周期
  lifetimes: {
    attached() {
      this.init();
    },
  },
  // 页面生命周期
  pageLifetimes: {
    // 页面被展示
    show() {
      const { isPageHidden } = this.data;

      // show事件发生前，页面不是处于隐藏状态时
      if (!isPageHidden) {
        return;
      }

      // 重新执行定时器等操作
    },
    // 页面被隐藏
    hide() {
      this.setData({
        isPageHidden: true,
      });

      // 清除定时器等操作
    },
  },
};

Component(componentOptions);
