const _Http = getApp().globalData.http,
	file = require("../../utils/FormatTheAttachment");
import currency from "../../utils/currency";

import {
	getCustomText
} from "../../utils/customItemType";


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 = (item, custom) => {
			return new Promise((resolve) => {
				item = Object.assign(item, custom)
				item.customText = getCustomText(item);
				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;
				if (value.iscustomsize) value.customText = getCustomText(value);
				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;
	}
})