const _Http = getApp().globalData.http, currency = require("../../../utils/currency"), CNY = sum => currency(sum, { symbol: "¥", precision: 2 }).format(); let downCount = {}; Component({ options: { addGlobalClass: true, }, properties: {}, data: { list: [], results: [], //选中结果 sa_brandid: null, //当前选中品牌id classList: [], //生成订单时所选 sum: 0, //价格合 allBrandList: [] }, methods: { init() { this.getList() this.setData({ hidePrice: wx.getStorageSync('hidePrice'), }) getApp().globalData.customizedProduct = this.customizedProduct.bind(this); return true; }, customizedProduct(item) { return new Promise((resolve) => { _Http.basic({ "id": 20220924104302, "content": { "sa_shoppingcartid": item.sa_shoppingcartid, "qty": item.qty, "width": item.width || 0, "length": item.length || 0 }, }).then(res => { console.log("修改定制", res) wx.showToast({ title: res.msg != '成功' ? res.msg : '修改成功', icon: "none" }); this.getList() resolve(true) }) }) }, /* 获取列表 */ getList() { _Http.basic({ "id": 20220924095302, "content": { nocache: true, istool: 0, "pageNumber": 1, "pageSize": getApp().globalData.collectCount + 5, "where": { "condition": "" } } }).then(res => { console.log('购物车列表', res) this.selectComponent('#ListBox').RefreshToComplete(); this.selectComponent("#ListBox").setHeight(".head", this); if (res.msg != '成功') return wx.showToast({ title: res.msg, icon: "none" }) let list = [], allBrandList = []; list = res.data.map(v => { v.showPrice = CNY(v.gradeprice) let obj = allBrandList.find(s => s.sa_brandid == v.sa_brandid); if (obj) { obj.results.push(v.sa_shoppingcartid) } else { allBrandList.push({ brandname: v.brandname, sa_brandid: v.sa_brandid, results: [v.sa_shoppingcartid], }) } return v }); this.setData({ list, allBrandList, isGet: true }); if (wx.getStorageSync('shopping')) { this.setData({ ...wx.getStorageSync('shopping') }); this.computeSum(); } }) }, clickBut(e) { this.data.classList.length >= 2 ? wx.showToast({ title: '请选择订单领域(订单只允许同品牌/同领域的商品)', icon: "none", duration: 3000 }) : this.handleSubmit(0); }, /* 提交 */ submit(e) { this.handleSubmit(e.detail.value) }, handleSubmit(index) { let data = this.data.classList[index]; _Http.basic({ "id": 20221128183202, "content": { istool: 0, type: "标准订单", "tradefield": data.type, //必选 "items": data.list.map(v => { return { "sa_orderitemsid": 0, "itemid": v.itemid, "sa_brandid": v.sa_brandid, "qty": v.qty, width: v.width || 0, length: v.length || 0, sa_shoppingcartid: v.sa_shoppingcartid || 0 } }) } }).then(res => { console.log("转化订单", res) if (res.msg != '成功') return wx.showToast({ title: res.msg, icon: "none" }); getApp().globalData.getCollectCount() wx.showModal({ title: '提示', content: '生成成功!是否立即前往', complete: (s) => { if (s.confirm) { wx.navigateTo({ url: '/packageA/orderForm/detail?id=' + res.data.sa_orderid, }) } } }); this.getList(); }) }, /* 是否选择全部 */ setIsAll() { let isAll = this.data.isAll; //取消全选 if (isAll) { this.setData({ sa_brandid: null, results: [] }) } else { //已选品牌产品情况下 if (this.data.sa_brandid) { let obj = this.data.allBrandList.find(v => v.sa_brandid == this.data.sa_brandid) this.setData({ results: obj.results }) } else { if (this.data.allBrandList.length == 0) return; this.setData({ sa_brandid: this.data.allBrandList[0].sa_brandid, results: this.data.allBrandList[0].results }) } }; this.computeSum(); }, /* 切换选中项 */ changeResults(e, my = false) { const { item } = my ? e : e.currentTarget.dataset; let results = this.data.results, sa_brandid = this.data.sa_brandid; if (sa_brandid && sa_brandid != item.sa_brandid) return; if (results.length == 0) { results.push(item.sa_shoppingcartid); sa_brandid = item.sa_brandid; } else { let index = results.findIndex(v => v == item.sa_shoppingcartid) if (index == -1) { results.push(item.sa_shoppingcartid); } else { results.splice(index, 1); if (results.length == 0) sa_brandid = null; } }; this.setData({ results, sa_brandid }) this.computeSum(); }, customization(e) { const { item } = e.target.dataset; if (item) this.selectComponent("#Custom").onClick(item) }, /* 计算总价/产品领域分类 */ computeSum() { let results = this.data.results, sum = 0, classList = []; if (results.length) results = results.filter(v => { let item = this.data.list.find(va => va.sa_shoppingcartid == v); if (item) { sum = currency(sum).add(currency(item.qty).multiply(item.gradeprice)).value; /* 领域分类 */ let index = classList.findIndex(value => value.type == item.tradefield_shoppingcart); if (index == -1) { classList.push({ type: item.tradefield_shoppingcart, list: [item], name: item.tradefield_shoppingcart + "(1件商品)" }) } else { classList[index].list.push(item) classList[index].name = classList[index].type + `(${classList[index].list.length}件商品)` } }; return item }); let sa_brandid = results.length ? this.data.sa_brandid : null; wx.setStorageSync('shopping', { results, sa_brandid }) let isAll = false; if (sa_brandid) { let brand = this.data.allBrandList.find(v => v.sa_brandid == sa_brandid) isAll = brand.results.length == results.length } console.log(results) this.setData({ sum: CNY(sum), isAll, results, sa_brandid, classList }); }, /* 删除产品 */ deteleItem(e) { const { item } = e.currentTarget.dataset; wx.showModal({ title: '提示', content: `是否确认删除${item.itemname}?`, complete: ({ confirm }) => { e.detail.instance.close(); if (confirm) _Http.basic({ "id": 20220924095202, "content": { "sa_shoppingcartids": [item.sa_shoppingcartid] } }).then(res => { wx.showToast({ title: res.msg != '成功' ? res.msg : "删除成功", icon: "none" }); if (res.msg != '成功') return; this.getList(true) getApp().globalData.getCollectCount() }) } }) }, /* 输入框失去焦点调整数量 */ inputBlur(e) { const { index } = e.currentTarget.dataset; let item = this.data.list[index]; let qty = 0; if (item.orderminqty > e.detail.value) { wx.showToast({ title: '输入数量低于最低起订量!', icon: "none" }) qty = item.orderminqty; } else if (item.orderminqty < e.detail.value) { var currencyRounding = value => currency(value, { increment: item.orderaddqty }); qty = currency(currencyRounding(currency(e.detail.value).subtract(item.orderminqty)).format()).add(item.orderminqty).value; } else { qty = e.detail.value; } this.setData({ [`list[${index}].qty`]: 0 }); this.setData({ [`list[${index}].qty`]: qty }); this.computeSum(); clearTimeout(downCount['count' + index]) downCount['count' + index] = setTimeout(() => { _Http.basic({ "id": 20220924104302, "content": { "sa_shoppingcartid": item.sa_shoppingcartid, "qty": item.qty, "width": item.width || 0, "length": item.length || 0 }, }, false).then(res => { console.log("修改数量", res) }) }, 2000) }, /* 步进器调整数量 */ stepperChange(e) { const { index } = e.currentTarget.dataset; let item = this.data.list[index]; if (e.type == 'plus') { item.qty += item.orderaddqty } else { item.qty -= item.orderaddqty } this.setData({ [`list[${index}]`]: item }) this.computeSum(); clearTimeout(downCount['count' + index]) downCount['count' + index] = setTimeout(() => { _Http.basic({ "id": 20220924104302, "content": { "sa_shoppingcartid": item.sa_shoppingcartid, "qty": item.qty, "width": item.width || 0, "length": item.length || 0 }, }, false).then(res => { console.log("修改数量", res) }) }, 2000) } } })