const _Http = getApp().globalData.http, file = require("../../utils/FormatTheAttachment"); import currency from "../../utils/currency"; Page({ data: { hidePrice: wx.getStorageSync('hidePrice'), loading: true, params: {}, //请求体 result: [], //返回结果 radio: false, //是否为单选 idname: "itemid", //idkey showName: "itemname" }, onLoad(options) { if (options.params) { let params = JSON.parse(options.params); if (!params.content.pageNumber || !params.content.pageTotal) { params.content.pageNumber = 1; params.content.pageTotal = 1; } this.setData({ params }); }; this.setData({ radio: options.radio ? true : false, idname: options.idname || this.data.idname, showName: options.showName || this.data.showName, newPrice: options.newprice || "price", //红色价格 }); this.getList(); getApp().globalData.customizedProduct = this.customizedProduct.bind(this); }, customizedProduct(item) { return new Promise((resolve) => { let index = this.data.list.findIndex(v => v[this.data.idname] == item[this.data.idname]); if (index != -1) this.data.list[index] = item; if (item.pitchOn) this.data.result.push(item[this.data.idname]) this.setData({ list: this.data.list, result: this.data.result }) resolve(true) }) }, getList(init = false) { //init 用于初始化分页 if (init.detail != undefined) init = init.detail; let params = this.data.params; if (init) params.content.pageNumber = 1 if (params.content.pageNumber > params.content.pageTotal) return; _Http.basic(params).then(res => { console.log("选择产品列表", res) this.selectComponent('#ListBox').RefreshToComplete(); if (res.msg != '成功') return wx.showToast({ title: res.msg, icon: "none" }) const CNY = num => currency(num, { symbol: "¥", precision: 2 }).format(); let newPrice = this.data.newPrice; res.data = res.data.map(value => { if (value.attinfos.length != 0) { value.attinfos = file.fileList(value.attinfos) let image = value.attinfos.find(v => v.fileType == "image"); value.cover = image ? image.cover : ""; } if (newPrice) value.newPrice = CNY(value[newPrice] || 0); value.brandName = value.brand.map(name => name.brandname) value.tradefields = value.tradefield.map(name => name.tradefield) value.qty = value.orderminqty; value.width = 0; value.length = 0; return value; }) this.setData({ 'params.content.pageNumber': res.pageNumber + 1, 'params.content.pageTotal': res.pageTotal, 'params.content.total': res.total, list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data), loading: false }) }) }, customization(e) { let { item } = e.target.dataset; item.pitchOn = false; if (item) this.selectComponent("#Custom").onClick(item) }, /* 选中 */ changeResult(e) { let { id, item } = e.currentTarget.dataset, result = this.data.result; if (this.data.radio) { result = [id]; } else { let isAdd = result.some(v => v == id); if (!isAdd) { if (item.iscustomsize == 1) { if ((item.widthschemeid && item.width == 0) || (item.lengthschemeid && item.length == 0)) { item.pitchOn = true; if (item) this.selectComponent("#Custom").onClick(item) } else { result.push(id) } } else { result.push(id) } } else { result = result.filter(v => v != id) } } this.setData({ result }); if (this.data.radio) this.submit(); }, /* 提交 */ submit() { let result = this.data.result, obj = this.data.radio ? { id: result, item: this.data.list.find(value => value[this.data.idname] == result), value: [this.data.list.find(value => value[this.data.idname] == result)[this.data.showName], result] } : { result, list: result.map(v => this.data.list.find(value => value[this.data.idname] == v)), value: [result.map(v => { let data = this.data.list.find(value => value[this.data.idname] == v); return data ? data[this.data.showName] : "" }), result] } getApp().globalData.handleSelect && getApp().globalData.handleSelect(obj) }, /* 预览图片 */ viewImage(e) { const { file } = e.currentTarget.dataset; if (file.length) wx.previewMedia({ sources: file.filter(value => ['image', 'vadio'].includes(value.fileType)).map(v => { return { url: v.url, type: v.fileType } }), current: 0, showmenu: true }) }, /* 开始搜索 */ startSearch({ detail }) { let condition = this.data.content ? this.data.content.where.condition : this.data.params.content.where.condition; if (detail == condition) return; this.setData({ 'content.where.condition': detail, 'params.content.where.condition': detail }); this.getList(true); }, /* 取消搜索 */ onClear() { this.setData({ 'content.where.condition': "", 'params.content.where.condition': "" }); this.getList(true); }, onReady() { this.selectComponent("#ListBox").setHeight(".total", this); }, /* 步进器输入框失去焦点 */ 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 }); }, stepperChange(e) { const { index } = e.currentTarget.dataset; let item = this.data.list[index]; if (e.type == 'plus') { item.qty += (item.orderaddqty) - 0 } else { item.qty -= item.orderaddqty } this.setData({ [`list[${index}]`]: item }) }, onUnload() { getApp().globalData.handleSelect = null; } })