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)
		}
	}
})