|
|
var app = getApp();
|
|
|
var WxParse = require('../../lib/wxParse/wxParse.js');
|
|
|
var util = require('../../utils/util.js');
|
|
|
var api = require('../../config/api.js');
|
|
|
|
|
|
Page({
|
|
|
data: {
|
|
|
id: 0,
|
|
|
goods: {},
|
|
|
gallery: [],// 轮播数据
|
|
|
attribute: [],
|
|
|
|
|
|
brand: {},// 品牌数据
|
|
|
type_id:1,
|
|
|
specificationList: [],// 功能分类、功能模块和功能点
|
|
|
models:[],// 某功能分类下的 功能模块和功能点
|
|
|
_checkedProductList:[],// 已经选中的产品
|
|
|
_checkedProductDots:[],// 已经选中的功能点
|
|
|
_checkedProductPrice:0,// 选中的价格
|
|
|
_checkedProductNum:0,// 选中的功能点个数
|
|
|
|
|
|
cartGoodsCount: 0,
|
|
|
userHasCollect: 0,
|
|
|
number: 1,
|
|
|
checkedSpecText: '请选择规格数量',
|
|
|
openAttr: false,
|
|
|
noCollectImage: "/static/images/icon_collect.png",
|
|
|
hasCollectImage: "/static/images/icon_collect_checked.png",
|
|
|
collectBackImage: "/static/images/icon_collect.png"
|
|
|
},
|
|
|
getGoodsInfo: function () {
|
|
|
let that = this;
|
|
|
util.request(api.ProjectGood, { type_id: that.data.type_id }).then(function (res) { //that.data.id
|
|
|
console.log(res);
|
|
|
if (res.code === 200) {
|
|
|
var tmpPrice = res.data.info.goods_price * 100
|
|
|
that.setData({
|
|
|
goods: res.data.info,
|
|
|
gallery: res.data.info.carousel_imgs,
|
|
|
attribute: res.data.attribute,
|
|
|
brand: {name:'XiaoT科技',id:'1'},
|
|
|
specificationList: res.data.sku,
|
|
|
_checkedProductPrice:tmpPrice,
|
|
|
// 收藏
|
|
|
userHasCollect: res.data.userHasCollect
|
|
|
});
|
|
|
|
|
|
// 收藏相关代码
|
|
|
if (res.data.userHasCollect == 1) {
|
|
|
that.setData({
|
|
|
'collectBackImage': that.data.hasCollectImage
|
|
|
});
|
|
|
} else {
|
|
|
that.setData({
|
|
|
'collectBackImage': that.data.noCollectImage
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
});
|
|
|
|
|
|
},
|
|
|
clickSkuValue: function (event) {
|
|
|
let that = this;
|
|
|
let functypeId = event.currentTarget.dataset.functypeId;
|
|
|
let modelId = event.currentTarget.dataset.modelId;
|
|
|
let dotId = event.currentTarget.dataset.dotId;
|
|
|
|
|
|
//判断是否可以点击
|
|
|
let _specificationList = this.data.specificationList;
|
|
|
let _models = this.data.models;
|
|
|
let _checkedProductNum = this.data._checkedProductNum;
|
|
|
let _checkedProductPrice = this.data._checkedProductPrice;
|
|
|
let _checkedProductDots = this.data._checkedProductDots;
|
|
|
|
|
|
console.log(_checkedProductDots);
|
|
|
console.log(modelId+'====='+modelId+'====='+dotId);
|
|
|
|
|
|
let nowClickDot = _specificationList[functypeId].models[modelId].dots[dotId];
|
|
|
|
|
|
if(!_specificationList[functypeId].checkdotsNum){
|
|
|
_specificationList[functypeId].checkdotsNum = 0;
|
|
|
}
|
|
|
if(nowClickDot.checked){
|
|
|
_checkedProductPrice = _checkedProductPrice - nowClickDot.price*100
|
|
|
_checkedProductNum--;
|
|
|
_specificationList[functypeId].models[modelId].dots[dotId].checked = false;
|
|
|
_specificationList[functypeId].checkdotsNum--
|
|
|
_models[modelId].dots[dotId].checked = false;
|
|
|
_checkedProductDots.splice(nowClickDot.id,1);
|
|
|
}else{
|
|
|
_checkedProductNum++;
|
|
|
_specificationList[functypeId].checkdotsNum++
|
|
|
_checkedProductPrice = _checkedProductPrice + nowClickDot.price*100
|
|
|
_specificationList[functypeId].models[modelId].dots[dotId].checked = true;
|
|
|
_models[modelId].dots[dotId].checked = true;
|
|
|
_checkedProductDots[nowClickDot.id] = nowClickDot;
|
|
|
}
|
|
|
|
|
|
this.setData({
|
|
|
'specificationList': _specificationList,
|
|
|
'models': _models,
|
|
|
'_checkedProductNum': _checkedProductNum,
|
|
|
'_checkedProductPrice': _checkedProductPrice,
|
|
|
'_checkedProductDots': _checkedProductDots,
|
|
|
});
|
|
|
//重新计算spec改变后的信息
|
|
|
// this.changeSpecInfo();
|
|
|
|
|
|
//重新计算哪些值不可以点击
|
|
|
},
|
|
|
|
|
|
//获取选中的规格信息
|
|
|
getCheckedSpecValue: function () {
|
|
|
let checkedValues = [];
|
|
|
let _specificationList = this.data.specificationList;
|
|
|
for (let i = 0; i < _specificationList.length; i++) {
|
|
|
let _checkedObj = {
|
|
|
nameId: _specificationList[i].specification_id,
|
|
|
valueId: 0,
|
|
|
valueText: ''
|
|
|
};
|
|
|
for (let j = 0; j < _specificationList[i].valueList.length; j++) {
|
|
|
if (_specificationList[i].valueList[j].checked) {
|
|
|
_checkedObj.valueId = _specificationList[i].valueList[j].id;
|
|
|
_checkedObj.valueText = _specificationList[i].valueList[j].value;
|
|
|
}
|
|
|
}
|
|
|
checkedValues.push(_checkedObj);
|
|
|
}
|
|
|
|
|
|
return checkedValues;
|
|
|
|
|
|
},
|
|
|
//根据已选的值,计算其它值的状态
|
|
|
setSpecValueStatus: function () {
|
|
|
|
|
|
},
|
|
|
//判断规格是否选择完整
|
|
|
isCheckedAllSpec: function () {
|
|
|
return !this.getCheckedSpecValue().some(function (v) {
|
|
|
if (v.valueId == 0) {
|
|
|
return true;
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
getCheckedSpecKey: function () {
|
|
|
let checkedValue = this.getCheckedSpecValue().map(function (v) {
|
|
|
return v.valueId;
|
|
|
});
|
|
|
|
|
|
return checkedValue.join('_');
|
|
|
},
|
|
|
changeSpecInfo: function () {
|
|
|
let checkedNameValue = this.getCheckedSpecValue();
|
|
|
|
|
|
//设置选择的信息
|
|
|
let checkedValue = checkedNameValue.filter(function (v) {
|
|
|
if (v.valueId != 0) {
|
|
|
return true;
|
|
|
} else {
|
|
|
return false;
|
|
|
}
|
|
|
}).map(function (v) {
|
|
|
return v.valueText;
|
|
|
});
|
|
|
if (checkedValue.length > 0) {
|
|
|
this.setData({
|
|
|
'checkedSpecText': checkedValue.join(' ')
|
|
|
});
|
|
|
} else {
|
|
|
this.setData({
|
|
|
'checkedSpecText': '请选择规格数量'
|
|
|
});
|
|
|
}
|
|
|
|
|
|
},
|
|
|
onLoad: function (options) {
|
|
|
// 页面初始化 options为页面跳转所带来的参数
|
|
|
this.setData({
|
|
|
type_id: parseInt(options.id)
|
|
|
// id: 1181000
|
|
|
});
|
|
|
|
|
|
},
|
|
|
onReady: function () {
|
|
|
// 页面渲染完成
|
|
|
var that = this;
|
|
|
this.getGoodsInfo();
|
|
|
util.request(api.CartGoodsCount).then(function (res) {
|
|
|
if (res.code == 200) {
|
|
|
that.setData({
|
|
|
cartGoodsCount: res.data.goodsCount
|
|
|
});
|
|
|
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
onShow: function () {
|
|
|
// 页面显示
|
|
|
|
|
|
},
|
|
|
onHide: function () {
|
|
|
// 页面隐藏
|
|
|
|
|
|
},
|
|
|
onUnload: function () {
|
|
|
// 页面关闭
|
|
|
|
|
|
},
|
|
|
switchAttrPop: function (event) {
|
|
|
let currentModels = event.currentTarget.dataset.models;
|
|
|
if (this.data.openAttr == false) {
|
|
|
this.setData({
|
|
|
models: currentModels,
|
|
|
openAttr: !this.data.openAttr
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
closeAttr: function () {
|
|
|
this.setData({
|
|
|
openAttr: false,
|
|
|
});
|
|
|
},
|
|
|
// 取消收藏
|
|
|
addCannelCollect: function () {
|
|
|
let that = this;
|
|
|
var checkedProductNum = that.data._checkedProductNum
|
|
|
var checkedProductPrice = that.data._checkedProductPrice
|
|
|
// 技术商品转换成商城的正式商品
|
|
|
util.request(api.GoodsTransform, {
|
|
|
specificationList: that.data.specificationList,
|
|
|
models: that.data.models,
|
|
|
checkedProductDots: that.data._checkedProductDots,
|
|
|
checkedProductNum: checkedProductNum,
|
|
|
checkedProductPrice: checkedProductPrice,
|
|
|
type_id: that.data.type_id
|
|
|
}, "POST").then(function (res) {
|
|
|
if (res.code == 200) {
|
|
|
if (res.data.id) {
|
|
|
//添加或是取消收藏
|
|
|
util.request(api.CollectAddOrDelete, { typeId: 0, valueId: res.data.id }, "POST")
|
|
|
.then(function (_res) {
|
|
|
if (_res.code == 200) {
|
|
|
if (_res.data.type == 'add') {
|
|
|
that.setData({
|
|
|
'collectBackImage': that.data.hasCollectImage
|
|
|
});
|
|
|
} else {
|
|
|
that.setData({
|
|
|
'collectBackImage': that.data.noCollectImage
|
|
|
});
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
wx.showToast({
|
|
|
image: '/static/images/icon_error.png',
|
|
|
title: _res.message,
|
|
|
mask: true
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
openCartPage: function () {
|
|
|
wx.switchTab({
|
|
|
url: '/pages/cart/cart',
|
|
|
});
|
|
|
},
|
|
|
addToCart: function () {
|
|
|
let that = this;
|
|
|
var checkedProductNum = that.data._checkedProductNum
|
|
|
var checkedProductPrice = that.data._checkedProductPrice
|
|
|
//验证商品选择
|
|
|
if (!checkedProductNum) {
|
|
|
wx.showToast({
|
|
|
image: '/static/images/icon_error.png',
|
|
|
title: '未选择商品',
|
|
|
mask: true
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// 技术商品转换成商城的正式商品
|
|
|
util.request(api.GoodsTransform, {
|
|
|
specificationList: that.data.specificationList,
|
|
|
models: that.data.models,
|
|
|
checkedProductDots:that.data._checkedProductDots,
|
|
|
checkedProductNum:checkedProductNum,
|
|
|
checkedProductPrice:checkedProductPrice,
|
|
|
type_id:that.data.type_id
|
|
|
}, "POST").then(function (res) {
|
|
|
if(res.code == 200){
|
|
|
if(res.data.id){
|
|
|
//添加到购物车
|
|
|
util.request(api.CartAdd, { goodsId: res.data.id, number: 1}, "POST")
|
|
|
.then(function (res) {
|
|
|
let _res = res;
|
|
|
if (_res.code == 200) {
|
|
|
wx.showToast({
|
|
|
title: '添加成功'
|
|
|
});
|
|
|
that.setData({
|
|
|
openAttr: !that.data.openAttr,
|
|
|
cartGoodsCount: _res.data.goodsCount
|
|
|
});
|
|
|
} else {
|
|
|
wx.showToast({
|
|
|
image: '/static/images/icon_error.png',
|
|
|
title: _res.message,
|
|
|
mask: true
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
|
|
|
payNow: function () {
|
|
|
var that = this;
|
|
|
var checkedProductNum = that.data._checkedProductNum
|
|
|
var checkedProductPrice = that.data._checkedProductPrice
|
|
|
if (this.data.openAttr === false) {
|
|
|
//打开规格选择窗口
|
|
|
this.setData({
|
|
|
openAttr: !this.data.openAttr
|
|
|
});
|
|
|
} else {
|
|
|
|
|
|
// 技术商品转换成商城的正式商品
|
|
|
util.request(api.GoodsTransform, {
|
|
|
specificationList: that.data.specificationList,
|
|
|
models: that.data.models,
|
|
|
checkedProductDots: that.data._checkedProductDots,
|
|
|
checkedProductNum: checkedProductNum,
|
|
|
checkedProductPrice: checkedProductPrice,
|
|
|
type_id: that.data.type_id
|
|
|
}, "POST").then(function (res) {
|
|
|
if (res.code == 200) {
|
|
|
if (res.data.id) {
|
|
|
wx.navigateTo({
|
|
|
url: '../shopping/checkout/checkout?goodsId=' + res.data.id + '&number=1'
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
}) |