const _Http = getApp().globalData.http, currency = require("../../../../utils/currency"), CNY = sum => currency(sum, { symbol: "¥", precision: 2 }).format(); let downCount = {}; let ids = {}; import { getCustomText } from "../../../../utils/customItemType"; Page({ data: { list: [], results: [], //选中结果 resultsList: [], sa_brandid: null, //当前选中品牌id classList: [], //生成订单时所选 sum: 0, //价格合 allBrandList: [], loading: false, privacyFieldC: [] }, onLoad(options) { ids = JSON.parse(options.data); this.getList() try { let privacyFieldC = wx.getStorageSync('auth').wdiscounts.forms.wdiscounts.formcols.map(v => v.title); this.setData({ privacyFieldC }) console.log("privacyFieldC", privacyFieldC) } catch (error) { console.error(error) } }, /* 获取列表 */ getList() { _Http.basic({ "id": 20220924095302, "content": { nocache: true, istool: 0, ...ids, "pageNumber": 1, "pageSize": 9999, "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) obj.resultsList.push(v) } else { allBrandList.push({ brandname: v.brandname, sa_brandid: v.sa_brandid, results: [v.sa_shoppingcartid], resultsList: [v] }) } if (v.iscustomsize) v.customText = getCustomText(v); return v }); this.setData({ list, allBrandList, isGet: true }); if (wx.getStorageSync('shopping1')) this.setData({ ...wx.getStorageSync('shopping1') }); this.computeSum(); }) }, clickBut(e) { this.handleSubmit(); /* this.data.classList.length >= 2 ? wx.showToast({ title: '请选择订单领域(订单只允许同品牌/同领域的商品)', icon: "none", duration: 3000 }) : this.handleSubmit(0); */ }, /* 提交 */ submit(e) { this.handleSubmit() }, handleSubmit() { let that = this; let items = that.data.resultsList.map(v => { return { "sa_orderitemsid": 0, "itemid": v.itemid, "sa_promotion_itemsid": v.sa_promotion_itemsid, "sa_brandid": v.sa_brandid, "qty": v.qty, width: v.width || 0, length: v.length || 0, sa_shoppingcartid: v.sa_shoppingcartid || 0, sa_promotion_itemsid: v.sa_promotion_itemsid } }) console.log("items", items) wx.showModal({ title: '提示', content: '是否确定生成促销订单', complete: ({ confirm }) => { if (confirm) { that.setData({ loading: true }) _Http.basic({ "id": 20221128183202, "content": { istool: 0, type: "促销订单", //"tradefield": data.type, 必选 ...ids, items } }).then(res => { console.log("转化订单", res) that.setData({ loading: false }) if (res.msg != '成功') return wx.showToast({ title: res.msg, icon: "none" }); getApp().globalData.getCollectCount() that.getList(); wx.showModal({ title: '提示', content: '生成成功!是否立即前往', complete: (s) => { if (s.confirm) { wx.navigateTo({ url: '/packageA/orderForm/detail?id=' + res.data.sa_orderid, }) } } }); }) } } }) }, /* 是否选择全部 */ setIsAll() { let isAll = this.data.isAll; //取消全选 if (isAll) { this.setData({ sa_brandid: null, results: [], resultsList: [] }) } 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, resultsList: obj.resultsList }) } else { if (this.data.allBrandList.length == 0) return; this.setData({ sa_brandid: this.data.allBrandList[0].sa_brandid, results: this.data.allBrandList[0].results, resultsList: this.data.allBrandList[0].resultsList, }) } }; this.computeSum(); }, /* 切换选中项 */ changeResults(e, my = false) { const { item } = my ? e : e.currentTarget.dataset; let results = this.data.results, resultsList = this.data.resultsList, sa_brandid = this.data.sa_brandid; if (sa_brandid && sa_brandid != item.sa_brandid) return; if (results.length == 0) { results.push(item.sa_shoppingcartid); resultsList.push(item) sa_brandid = item.sa_brandid; } else { let index = results.findIndex(v => v == item.sa_shoppingcartid) if (index == -1) { results.push(item.sa_shoppingcartid); resultsList.push(item) } else { results.splice(index, 1); resultsList.splice(index, 1); if (results.length == 0) sa_brandid = null; } }; this.setData({ results, sa_brandid }) this.computeSum(); }, customization(e) { const { item } = e.target.dataset; getApp().globalData.customizedProduct = (item, custom) => { return new Promise((resolve) => { _Http.basic({ "id": 20220924104302, "content": { "sa_shoppingcartid": item.sa_shoppingcartid, "qty": item.qty, ...custom }, }).then(res => { console.log("修改定制", res) wx.showToast({ title: res.msg != '成功' ? res.msg : '修改成功', icon: "none" }); this.getList() resolve(true) }) }) } if (item) this.selectComponent("#Custom").onClick(item) }, /* 计算总价/产品领域分类 */ computeSum() { let results = this.data.results, resultsList = [], 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; resultsList.push(item) /* 领域分类 */ 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('shopping1', { 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 } this.setData({ sum: CNY(sum), isAll, results, sa_brandid, resultsList, 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": { ...ids, "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) } })