diff --git a/components/goods-buy/goods-buy.vue b/components/goods-buy/goods-buy.vue
index eb2c49d6..0d2d721e 100644
--- a/components/goods-buy/goods-buy.vue
+++ b/components/goods-buy/goods-buy.vue
@@ -91,10 +91,11 @@ export default {
opt_button: [],
is_direct_cart: 0,
is_success_tips: 1,
+ // 选中规格临时定时变量
+ spec_selected_timer: null,
+ spec_selected_timerout: null,
// 智能工具插件
plugins_intellectstools_config: app.globalData.get_config("plugins_base.intellectstools.data"),
- plugins_intellectstools_timer: null,
- plugins_intellectstools_timerout: null,
};
},
@@ -102,6 +103,10 @@ export default {
componentPopup,
},
props: {
+ propParams: {
+ type: [String, Object],
+ default: {},
+ },
propCurrencySymbol: {
type: String,
default: app.globalData.currency_symbol(),
@@ -182,8 +187,8 @@ export default {
this.get_spec_detail();
}
- // 是否默认选中第一个规格
- this.plugins_intellectstools_selected_spec_handle();
+ // 规格选中处理
+ this.selected_spec_handle();
// 是否直接操作加入购物车
if (is_direct_cart) {
@@ -191,15 +196,15 @@ export default {
}
},
- // 默认选中第一个规格
- plugins_intellectstools_selected_spec_handle() {
- // 是否已选择
- var temp_data = this.goods_spec_choose;
- if (temp_data.length > 0) {
+ // 规格选中处理
+ selected_spec_handle() {
+ var temp_spec_choose = this.goods_spec_choose;
+ if (temp_spec_choose.length > 0) {
+ // 是否已选择
var active_count = 0;
- for (var i in temp_data) {
- for (var k in temp_data[i]["value"]) {
- if ((temp_data[i]["value"][k]["is_active"] || null) != null) {
+ for (var i in temp_spec_choose) {
+ for (var k in temp_spec_choose[i]["value"]) {
+ if ((temp_spec_choose[i]["value"][k]["is_active"] || null) != null) {
active_count++;
}
}
@@ -208,61 +213,132 @@ export default {
return false;
}
+ // 是否指定规格初始化
+ var spec = (((this.propParams || null) != null) && (this.propParams.spec || null) != null) ? this.propParams.spec : null;
+ if(spec != null) {
+ this.appoint_selected_spec_handle(temp_spec_choose, spec);
+ } else {
+ // 是否默认选中第一个规格、、已存在指定规格初始化则不走默认选择第一个规格
+ this.plugins_intellectstools_selected_spec_handle(temp_spec_choose);
+ }
+ }
+ },
+
+ // 指定规格初始化
+ appoint_selected_spec_handle(spec_choose, spec) {
+ spec = decodeURIComponent(spec).split('|');
+ if(spec.length == spec_choose.length) {
// 选择处理
var self = this;
// 销毁之前的任务
- clearInterval(self.plugins_intellectstools_timer);
- clearInterval(self.plugins_intellectstools_timerout);
- // 读取智能工具插件配置、是否开启
- var config = self.plugins_intellectstools_config || null;
- if (config != null && (config.is_goods_detail_selected_first_spec || 0) == 1) {
- // 必须存在购买和加入购物车任意一个、规格必须多个
- var sku_count = app.globalData.get_length(temp_data);
- // 先清除价格展示信息
- self.setData({
- goods_spec_base_price: "...",
- goods_spec_base_original_price: "...",
- });
- var num = 0;
- var timer = setInterval(function () {
- for (var i in temp_data) {
- // 清除价格展示信息、避免获取价格类型赋值
- self.setData({
- goods_spec_base_price: "...",
- goods_spec_base_original_price: "...",
- });
- // 必须不存在已选择项
- var active = temp_data[i]["value"].map(function (v) {
- return v.is_active;
- }).join("") || null;
- if (active == null) {
- // 不能选择规格处理
- self.spec_handle_dont(i);
-
- // 规格选择处理
- var status = false;
- for (var k in temp_data[i]["value"]) {
- // 必须是可选和未选
- if (!status && (temp_data[i]["value"][k]["is_disabled"] || null) == null && (temp_data[i]["value"][k]["is_dont"] || null) == null) {
- self.goods_spec_choice_handle(i, k);
- status = true;
- num++;
- }
+ clearInterval(self.spec_selected_timer);
+ clearInterval(self.spec_selected_timerout);
+ // 必须存在购买和加入购物车任意一个、规格必须多个
+ var sku_count = app.globalData.get_length(spec_choose);
+ // 先清除价格展示信息
+ self.setData({
+ goods_spec_base_price: "...",
+ goods_spec_base_original_price: "...",
+ });
+ var num = 0;
+ var timer = setInterval(function () {
+ for (var i in spec_choose) {
+ // 清除价格展示信息、避免获取价格类型赋值
+ self.setData({
+ goods_spec_base_price: "...",
+ goods_spec_base_original_price: "...",
+ });
+ // 必须不存在已选择项
+ var active = spec_choose[i]["value"].map(function (v) {
+ return v.is_active;
+ }).join("") || null;
+ if (active == null) {
+ // 不能选择规格处理
+ self.spec_handle_dont(i);
+
+ // 规格选择处理
+ var temp_spec = spec[i];
+ var status = false;
+ for (var k in spec_choose[i]["value"]) {
+ // 必须是可选和未选
+ if (!status && (spec_choose[i]["value"][k]["is_disabled"] || null) == null && (spec_choose[i]["value"][k]["is_dont"] || null) == null && temp_spec == spec_choose[i]["value"][k]["name"]) {
+ self.goods_spec_choice_handle(i, k);
+ status = true;
+ num++;
}
}
}
- if (num >= sku_count) {
- clearInterval(self.plugins_intellectstools_timer);
+ }
+ if (num >= sku_count) {
+ clearInterval(self.spec_selected_timer);
+ }
+ }, 100);
+ var timerout = setTimeout(function () {
+ clearInterval(self.spec_selected_timerout);
+ }, 20000);
+ self.setData({
+ spec_selected_timer: timer,
+ spec_selected_timerout: timerout,
+ });
+ }
+ },
+
+ // 默认选中第一个规格 - 智能工具箱插件
+ plugins_intellectstools_selected_spec_handle(spec_choose) {
+ // 选择处理
+ var self = this;
+ // 销毁之前的任务
+ clearInterval(self.spec_selected_timer);
+ clearInterval(self.spec_selected_timerout);
+ // 读取智能工具插件配置、是否开启
+ var config = self.plugins_intellectstools_config || null;
+ if (config != null && (config.is_goods_detail_selected_first_spec || 0) == 1) {
+ // 必须存在购买和加入购物车任意一个、规格必须多个
+ var sku_count = app.globalData.get_length(spec_choose);
+ // 先清除价格展示信息
+ self.setData({
+ goods_spec_base_price: "...",
+ goods_spec_base_original_price: "...",
+ });
+ var num = 0;
+ var timer = setInterval(function () {
+ for (var i in spec_choose) {
+ // 清除价格展示信息、避免获取价格类型赋值
+ self.setData({
+ goods_spec_base_price: "...",
+ goods_spec_base_original_price: "...",
+ });
+ // 必须不存在已选择项
+ var active = spec_choose[i]["value"].map(function (v) {
+ return v.is_active;
+ }).join("") || null;
+ if (active == null) {
+ // 不能选择规格处理
+ self.spec_handle_dont(i);
+
+ // 规格选择处理
+ var status = false;
+ for (var k in spec_choose[i]["value"]) {
+ // 必须是可选和未选
+ if (!status && (spec_choose[i]["value"][k]["is_disabled"] || null) == null && (spec_choose[i]["value"][k]["is_dont"] || null) == null) {
+ self.goods_spec_choice_handle(i, k);
+ status = true;
+ num++;
+ }
+ }
}
- }, 100);
- var timerout = setTimeout(function () {
- clearInterval(self.plugins_intellectstools_timerout);
- }, 20000);
- self.setData({
- plugins_intellectstools_timer: timer,
- plugins_intellectstools_timerout: timerout,
- });
- }
+ }
+ if (num >= sku_count) {
+ clearInterval(self.spec_selected_timer);
+ }
+ }, 100);
+ var timerout = setTimeout(function () {
+ clearInterval(self.spec_selected_timerout);
+ }, 20000);
+ self.setData({
+ spec_selected_timer: timer,
+ spec_selected_timerout: timerout,
+ });
}
},
diff --git a/pages/goods-detail/goods-detail.vue b/pages/goods-detail/goods-detail.vue
index 6c92c55d..52141d0e 100644
--- a/pages/goods-detail/goods-detail.vue
+++ b/pages/goods-detail/goods-detail.vue
@@ -596,7 +596,7 @@
-
+