| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 | "use strict";const common_vendor = require("../../../common/vendor.js");const sheep_index = require("../../index.js");const sheep_hooks_useGoods = require("../../hooks/useGoods.js");require("../../url/index.js");require("../../store/index.js");require("../../store/app.js");require("../../api/promotion/diy.js");require("../../request/index.js");require("../../config/index.js");require("../../platform/index.js");require("../../platform/provider/wechat/index.js");require("../../platform/provider/wechat/miniProgram.js");require("../../api/member/auth.js");require("../../api/member/social.js");require("../../api/member/user.js");require("../../platform/provider/apple/index.js");require("../../platform/share.js");require("../../router/index.js");require("../../hooks/useModal.js");require("../../helper/index.js");require("../../helper/test.js");require("../../helper/digit.js");require("../../helper/throttle.js");require("../../platform/pay.js");require("../../api/pay/order.js");require("../../store/user.js");require("../../store/cart.js");require("../../api/trade/cart.js");require("../../api/pay/wallet.js");require("../../api/trade/order.js");require("../../api/promotion/coupon.js");require("../../store/sys.js");require("../../store/modal.js");require("../../config/zIndex.js");require("../../util/index.js");if (!Array) {  const _easycom_su_number_box2 = common_vendor.resolveComponent("su-number-box");  const _easycom_su_popup2 = common_vendor.resolveComponent("su-popup");  (_easycom_su_number_box2 + _easycom_su_popup2)();}const _easycom_su_number_box = () => "../../ui/su-number-box/su-number-box.js";const _easycom_su_popup = () => "../../ui/su-popup/su-popup.js";if (!Math) {  (_easycom_su_number_box + _easycom_su_popup)();}const _sfc_main = {  __name: "s-select-groupon-sku",  props: {    show: {      type: Boolean,      default: false    },    goodsInfo: {      type: Object,      default() {      }    },    grouponAction: {      type: String,      default: "create"    },    grouponNum: {      type: [Number, String],      default: 0    }  },  emits: ["change", "addCart", "buy", "close", "ladder"],  setup(__props, { emit: emits }) {    const props = __props;    common_vendor.useCssVars((_ctx) => ({      "478364b0": common_vendor.unref(headerBg)    }));    const headerBg = sheep_index.sheep.$url.css("/static/img/shop/goods/groupon-btn-long.png");    const state = common_vendor.reactive({      selectedSku: {},      // 选中的 SKU      currentPropertyArray: [],      // 当前选中的属性,实际是个 Map。key 是 property 编号,value 是 value 编号      grouponNum: props.grouponNum    });    const propertyList = sheep_hooks_useGoods.convertProductPropertyList(props.goodsInfo.skus);    const skuList = common_vendor.computed(() => {      let skuPrices = props.goodsInfo.skus;      for (let price of skuPrices) {        price.value_id_array = price.properties.map((item) => item.valueId);      }      return skuPrices;    });    common_vendor.watch(      () => state.selectedSku,      (newVal) => {        emits("change", newVal);      },      {        immediate: true,        // 立即执行        deep: true        // 深度监听      }    );    function onNumberChange(e) {      if (e === 0)        return;      if (state.selectedSku.count === e)        return;      state.selectedSku.count = e;    }    function onBuy() {      if (!state.selectedSku.id || state.selectedSku.id <= 0) {        sheep_index.sheep.$helper.toast("请选择规格");        return;      }      if (state.selectedSku.stock <= 0) {        sheep_index.sheep.$helper.toast("库存不足");        return;      }      emits("buy", state.selectedSku);    }    function changeDisabled(isChecked = false, propertyId = 0, valueId = 0) {      let newSkus = [];      if (isChecked) {        for (let price of skuList.value) {          if (price.stock <= 0) {            continue;          }          if (price.value_id_array.indexOf(valueId) >= 0) {            newSkus.push(price);          }        }      } else {        newSkus = getCanUseSkuList();      }      let noChooseValueIds = [];      for (let price of newSkus) {        noChooseValueIds = noChooseValueIds.concat(price.value_id_array);      }      noChooseValueIds = Array.from(new Set(noChooseValueIds));      if (isChecked) {        let index = noChooseValueIds.indexOf(valueId);        noChooseValueIds.splice(index, 1);      } else {        state.currentPropertyArray.forEach((currentPropertyId) => {          if (currentPropertyId.toString() !== "") {            return;          }          let index = noChooseValueIds.indexOf(currentPropertyId);          if (index >= 0) {            noChooseValueIds.splice(index, 1);          }        });      }      let choosePropertyIds = [];      if (!isChecked) {        state.currentPropertyArray.forEach((currentPropertyId, currentValueId) => {          if (currentPropertyId !== "") {            choosePropertyIds.push(currentValueId);          }        });      } else {        choosePropertyIds = [propertyId];      }      for (let propertyIndex in propertyList) {        if (choosePropertyIds.indexOf(propertyList[propertyIndex]["id"]) >= 0) {          continue;        }        for (let valueIndex in propertyList[propertyIndex]["values"]) {          propertyList[propertyIndex]["values"][valueIndex]["disabled"] = noChooseValueIds.indexOf(propertyList[propertyIndex]["values"][valueIndex]["id"]) < 0;        }      }    }    function getCanUseSkuList() {      let newSkus = [];      for (let sku of skuList.value) {        if (sku.stock <= 0) {          continue;        }        let isOk = true;        state.currentPropertyArray.forEach((propertyId) => {          if (propertyId.toString() !== "" && sku.value_id_array.indexOf(propertyId) < 0) {            isOk = false;          }        });        if (isOk) {          newSkus.push(sku);        }      }      return newSkus;    }    function onSelectSku(propertyId, valueId) {      let isChecked = true;      if (state.currentPropertyArray[propertyId] !== void 0 && state.currentPropertyArray[propertyId] === valueId) {        isChecked = false;        state.currentPropertyArray.splice(propertyId, 1, "");      } else {        state.currentPropertyArray[propertyId] = valueId;      }      let choosePropertyId = [];      state.currentPropertyArray.forEach((currentPropertyId) => {        if (currentPropertyId !== "") {          choosePropertyId.push(currentPropertyId);        }      });      let newSkuList = getCanUseSkuList();      if (choosePropertyId.length === propertyList.length && newSkuList.length) {        newSkuList[0].count = state.selectedSku.count || 1;        state.selectedSku = newSkuList[0];      } else {        state.selectedSku = {};      }      changeDisabled(isChecked, propertyId, valueId);    }    changeDisabled(false);    return (_ctx, _cache) => {      return common_vendor.e({        a: common_vendor.unref(sheep_index.sheep).$url.cdn(state.selectedSku.picUrl || __props.goodsInfo.picUrl),        b: common_vendor.unref(sheep_index.sheep).$url.static("/static/img/shop/goods/groupon-tag-white.png"),        c: common_vendor.t(__props.goodsInfo.name),        d: common_vendor.t(common_vendor.unref(sheep_hooks_useGoods.fen2yuan)(__props.goodsInfo.price)),        e: common_vendor.t(state.selectedSku.stock || __props.goodsInfo.stock),        f: common_vendor.f(common_vendor.unref(propertyList), (property, k0, i0) => {          return {            a: common_vendor.t(property.name),            b: common_vendor.f(property.values, (value, k1, i1) => {              return {                a: common_vendor.t(value.name),                b: common_vendor.n({                  "checked-btn": state.currentPropertyArray[property.id] === value.id                }),                c: common_vendor.n({                  "disabled-btn": value.disabled === true                }),                d: value.id,                e: value.disabled === true,                f: common_vendor.o(($event) => onSelectSku(property.id, value.id), value.id)              };            }),            c: property.id          };        }),        g: common_vendor.o(($event) => onNumberChange($event)),        h: common_vendor.o(($event) => state.selectedSku.count = $event),        i: common_vendor.p({          min: 1,          max: state.selectedSku.stock,          step: 1,          activity: "groupon",          modelValue: state.selectedSku.count        }),        j: common_vendor.t(__props.grouponNum + "人团"),        k: common_vendor.t(common_vendor.unref(sheep_hooks_useGoods.fen2yuan)(__props.goodsInfo.price)),        l: __props.grouponAction === "create"      }, __props.grouponAction === "create" ? {} : __props.grouponAction === "join" ? {} : {}, {        m: __props.grouponAction === "join",        n: common_vendor.o(onBuy),        o: common_vendor.o(($event) => emits("close")),        p: common_vendor.s(_ctx.__cssVars()),        q: common_vendor.p({          show: __props.show,          round: "10"        })      });    };  }};const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-f77ace9d"], ["__file", "/Users/RuHu.Xu/Desktop/mall-newfeifan-zx-app/sheep/components/s-select-groupon-sku/s-select-groupon-sku.vue"]]);wx.createComponent(Component);
 |