| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 | "use strict";const common_vendor = require("../../../common/vendor.js");const sheep_index = require("../../index.js");const sheep_hooks_useGoods = require("../../hooks/useGoods.js");require("../../api/index.js");require("../../api/distri/score.js");require("../../request/index.js");require("../../config/index.js");require("../../store/index.js");require("../../store/app.js");require("../../api/promotion/diy.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("../../api/member/signin.js");require("../../helper/throttle.js");require("../../url/index.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("../../api/distri/share.js");require("../../api/distri/team.js");require("../../api/infra/file.js");require("../../api/member/address.js");require("../../api/member/point.js");require("../../api/migration/app.js");require("../../api/migration/chat.js");require("../../api/migration/index.js");require("../../api/migration/third.js");require("../../api/pay/channel.js");require("../../api/product/category.js");require("../../api/product/comment.js");require("../../api/product/favorite.js");require("../../api/product/history.js");require("../../api/product/spu.js");require("../../api/promotion/activity.js");require("../../api/promotion/article.js");require("../../api/promotion/bargain.js");require("../../api/promotion/combination.js");require("../../api/promotion/rewardActivity.js");require("../../api/promotion/seckill.js");require("../../api/system/area.js");require("../../api/system/voice.js");require("../../api/trade/afterSale.js");require("../../api/trade/brokerage.js");require("../../api/trade/config.js");require("../../api/trade/delivery.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-seckill-sku",  props: {    modelValue: {      type: Object,      default() {      }    },    show: {      type: Boolean,      default: false    },    // 单次限购数量    singleLimitCount: {      type: Number,      default: 1    }  },  emits: ["change", "addCart", "buy", "close"],  setup(__props, { emit: __emit }) {    const emits = __emit;    const props = __props;    const state = common_vendor.reactive({      goodsInfo: common_vendor.computed(() => props.modelValue),      selectedSku: {},      currentPropertyArray: []    });    const propertyList = sheep_hooks_useGoods.convertProductPropertyList(state.goodsInfo.skus);    const skuList = common_vendor.computed(() => {      let skuPrices = state.goodsInfo.skus;      for (let price of skuPrices) {        price.value_id_array = price.properties.map((item) => item.valueId);      }      return skuPrices;    });    if (!state.goodsInfo.is_sku) {      state.selectedSku = state.goodsInfo.skus[0];    }    common_vendor.watch(      () => state.selectedSku,      (newVal) => {        emits("change", newVal);      },      {        immediate: true,        // 立即执行        deep: true        // 深度监听      }    );    const onBuy = () => {      if (state.selectedSku.id) {        if (state.selectedSku.stock <= 0) {          sheep_index.sheep.$helper.toast("库存不足");        } else {          emits("buy", state.selectedSku);        }      } else {        sheep_index.sheep.$helper.toast("请选择规格");      }    };    function onBuyCountChange(buyCount) {      if (buyCount > 0 && state.selectedSku.count !== buyCount) {        state.selectedSku.count = buyCount;      }    }    const 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;        }      }    };    const 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;    };    const 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 {        a: common_vendor.unref(sheep_index.sheep).$url.cdn(state.selectedSku.picUrl || state.goodsInfo.picUrl),        b: common_vendor.t(state.goodsInfo.name),        c: common_vendor.t(common_vendor.unref(sheep_hooks_useGoods.fen2yuan)(state.selectedSku.price || state.goodsInfo.price)),        d: common_vendor.t(state.selectedSku.stock || state.goodsInfo.stock),        e: 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          };        }),        f: common_vendor.o(($event) => onBuyCountChange($event)),        g: common_vendor.o(($event) => state.selectedSku.count = $event),        h: common_vendor.p({          min: 1,          max: common_vendor.unref(common_vendor.lodashExports.min)([__props.singleLimitCount, state.selectedSku.stock]),          step: 1,          activity: "seckill",          modelValue: state.selectedSku.count        }),        i: common_vendor.o(onBuy),        j: common_vendor.o(($event) => emits("close")),        k: common_vendor.p({          show: __props.show,          round: "10"        })      };    };  }};const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-e3bc621c"], ["__file", "D:/zx/mall-front-app/sheep/components/s-select-seckill-sku/s-select-seckill-sku.vue"]]);wx.createComponent(Component);
 |