// pages/product/produst.js var urlPath = require('../../config.js'); Page({ /** * 页面的初始数据 */ data: { host: urlPath.host, list: {}, flag:false, isXiangm: false, newDo_type: '', threeList: [], curCaseIndex: 0, addressIndex: 0, curThreeCode: [], carbon: 0, paid_money: '0', id: 0, tree_num: {}, icon: "/img/nav/menu1.png", priceList: {}, carbon_neutralization: 0, carbon_efficiency: '0.00', senIndex: 0, senList: [{ name: '补植补造', type: 'afforestation' }, { name: '森林管护', type: 'forest_management' }, ], newType: '', isShif: false, cases_position_id: '' }, senChange(event) { this.setData({ senIndex: event.detail.value, newType: this.data.senList[event.detail.value].type, priceList: {}, curThreeCode: [], tree_num: {}, flag:true, }) if (this.data.senList[event.detail.value].type == 'forest_management') { this.setData({ isShif: true, newDo_type: this.data.senList[this.data.senIndex].type }) } else { this.setData({ isShif: false, newDo_type: this.data.senList[this.data.senIndex].type }) } }, casesChange(event) { if(this.data.threeList[event.detail.value].type=='forest_management'){ this.setData({ isXiangm:true, }) } else { this.setData({ isXiangm:false, }) } this.setData({ curCaseIndex: event.detail.value, isShif: false, senIndex: 0, addressIndex:0, priceList: {}, curThreeCode: [], tree_num: {}, paid_money: 0, flag:true, carbon_neutralization: 0, carbon_efficiency: "0.00", }) if(this.data.senList[event.detail.value].name=='补植补造'){ this.setData({ newDo_type:'afforestation', }) } if (event.detail.value == 1) { this.setData({ newDo_type: this.data.senList[this.data.senIndex].type, cases_position_id:this.data.threeList[this.data.curCaseIndex].address[0].id }) } else { this.setData({ newDo_type: this.data.senList[this.data.curCaseIndex].type, cases_position_id:this.data.threeList[this.data.curCaseIndex].address[0].id }) } }, addrressChange(event) { this.setData({ addressIndex: event.detail.value, cases_position_id: this.data.threeList[this.data.curCaseIndex].address[event.detail.value] .id, priceList: {}, curThreeCode: [], tree_num: {}, flag:true, }) }, numChange(event) { const { num, nameId } = event.detail const { price, name, carbon_base } = event.mark let all_list = {} all_list = Object.assign({}, this.data.priceList, all_list) if (this.data.curThreeCode.indexOf(nameId) != -1) { if (num == 0) { delete all_list[nameId] this.data.curThreeCode.splice(this.data.curThreeCode.indexOf(nameId), 1) this.setData({ curThreeCode: this.data.curThreeCode }) } else { all_list[nameId] = { id: nameId, price: price, num: num, name: name, all: price * num, carbon_base: carbon_base * num } } } else { if (num > 0) { var data = this.data.curThreeCode data.push(nameId) this.setData({ curThreeCode: data }) all_list[nameId] = { id: nameId, price: price, num: num, name: name, all: price * num, carbon_base: carbon_base * num } } } this.setMoneyNum(all_list); }, setMoneyNum: function(all_list) { var all_price = 0 var carbon_neutralization = 0, carbon_efficiency = 100 for (var p in all_list) { all_price = all_price + all_list[p].all carbon_neutralization = parseFloat(carbon_neutralization) + all_list[p].carbon_base; } carbon_efficiency = (parseFloat(carbon_neutralization) / parseFloat(this.data.carbon)) * 100 this.setData({ priceList: all_list, paid_money: all_price, carbon_neutralization: parseInt((carbon_neutralization * 100)) / 100, carbon_efficiency: carbon_efficiency.toFixed(2), }) }, setMoney: function(e) { console.log('e',e); //数量= 排放量 / 植物的碳汇量基数 // ,价格 = 每棵树价格 * 数量 var that = this var { money, name, carbon_base, id } = e.currentTarget.dataset; let i = that.data.curThreeCode.indexOf(e.currentTarget.dataset.code); this.data.tree_num[e.currentTarget.dataset.code] = 1 if (i == -1) { that.data.curThreeCode.push(e.currentTarget.dataset.code); } else { //取消选中 that.data.curThreeCode.splice(i, 1); delete this.data.priceList[e.currentTarget.dataset.code] this.data.tree_num[e.currentTarget.dataset.code] = 0 } var new_att = [] // 拿出已经存在的价格数量判断取消的内容 for (var p in this.data.priceList) { new_att.push(p) } // 计算不在列表的数据加入默认数量1科 that.data.curThreeCode.map(item => { if (new_att.indexOf(item) == -1) { this.data.priceList[item] = { id: id, price: money, num: 1, name: name, all: money * 1, carbon_base: parseFloat(carbon_base) } } }) this.setData({ curThreeCode: that.data.curThreeCode, priceList: that.data.priceList, tree_num: that.data.tree_num, carbon_neutralization: 0 }) // 重新计算数目的结果 this.setMoneyNum(this.data.priceList) }, /** * 生命周期函数--监听页面加载 */ onLoad: function(options) { console.log('options',options); if (typeof this.getTabBar === 'function' && this.getTabBar()) { this.getTabBar().setData({ selected: 2 }) } if (options.icon != undefined) { this.setData({ icon: options.icon, }) } this.getOne(options) }, moneyset: function(e) { this.setData({ paid_money: e.detail.value }) }, getOne: function(options) { var that = this var carbon = (options.carbon != undefined ? options.carbon : ""); var id = (options.id != undefined ? options.id : ""); wx.request({ url: urlPath.gMarketDetail, header: { 'content-type': 'application/x-www-form-urlencoded' }, method: 'post', dataType: 'json', // 添加这个配置 data: { id: id, 'openid': wx.getStorageSync('openid'), }, success(res) { console.log('res213',res); if (res.data.result == 'success') { that.setData({ list: JSON.parse(res.data.data), carbon: carbon, id: id }) } else { console.log(res.data.msg); //失败 } } }) wx.request({ url: urlPath.getapiCasesOnlyForestManagementV2, header: {'content-type': 'application/x-www-form-urlencoded'}, method: 'post', dataType: 'json', // 添加这个配置 data: { id: id, 'openid': wx.getStorageSync('openid') }, success(res) { if (res.data.result == 'success') { var threeList = JSON.parse(res.data.data).cases; if(threeList[0].type=='forest_management'){ that.setData({ isXiangm:true }) } let arr = that.data.senList arr.forEach((item,index)=>{ if(item.type == threeList[that.data.curCaseIndex].default_type){ let obj = arr[index]; arr.splice(index,1) arr.unshift(obj) } }) if(arr[0].type=='forest_management'){ that.setData({ isShif:true }) } that.setData({ senList:arr }) that.setData({ threeList: threeList, cases_position_id: threeList[that.data.curCaseIndex].address[that.data.addressIndex].id, newDo_type:arr[0].type, //TODO 这里赋值应该用数组 // curThreeCode: [JSON.parse(res.data.data).trees[0].coding], // carbon:JSON.parse(res.data.data).trees[0].carbon_base, // paid_money: money.toFixed(2) }) } else { console.log(res.data.msg); //失败 } } }); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function() {}, /** * 生命周期函数--监听页面显示 */ onShow: function() {}, /** * 生命周期函数--监听页面隐藏 */ onHide: function() {}, /** * 生命周期函数--监听页面卸载 */ onUnload: function() {}, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function() {}, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function() {}, /** * 用户点击右上角分享 */ onShareAppMessage: function() {}, toPay() { var that = this var tree_items = [] var management_items = [] if (this.data.newDo_type == 'afforestation') { for (var p in this.data.priceList) { tree_items.push({ coding: p, amount: this.data.priceList[p].num }) } } else { for (var p in this.data.priceList) { management_items.push({ id: this.data.priceList[p].id, amount: this.data.priceList[p].num }) } } wx.request({ url: urlPath.postPayDataV2, data: { 'openid': wx.getStorageSync('openid'), footmark_id: this.data.list.id, do_type: this.data.newDo_type, case_coding: this.data.threeList[this.data.curCaseIndex].coding, tree_items: JSON.stringify(tree_items) || '', forest_management_items: JSON.stringify(management_items) || '', paid_money: this.data.paid_money, cases_position_id: this.data.cases_position_id }, header: { 'content-type': 'application/x-www-form-urlencoded' }, dataType: 'json', // 添加这个配置 method: 'post', success(res) { if (res.data.result == 'fail') { wx.showModal({ title: '提示', content: res.data.message, }) } else { var data = JSON.parse(res.data.data) wx.requestPayment({ timeStamp: String(data.prepay_data.timeStamp), nonceStr: data.prepay_data.nonceStr, package: data.prepay_data.package, signType: data.prepay_data.signType, paySign: data.prepay_data.paySign, success(res) { //支付成功 wx.request({ url: urlPath.apiNeutralizationPaidV2, //查询 data: { 'openid': wx.getStorageSync('openid'), neutralization_id: data.neutralization_id, }, header: { 'content-type': 'application/x-www-form-urlencoded' }, dataType: 'json', // 添加这个配置 method: 'post', success(res) { if (res.data.result == "success") { wx.navigateTo({ url: '/pages/payment/payment?paid_money=' + that.data.paid_money + "&&id=" + that.data.id }) } } }) }, fail(res) { wx.showToast({ title: '支付失败', icon: 'error', duration: 2000 }) } }) } } }) } })