;
layui.config({
	base: "../../../admin/js/layuiPlugins/"
}).use(['form', 'layer', 'jquery', 'laypage', 'element', 'table', 'laydate', 'laytpl', 'cascade'], function() {
	var form = layui.form,
		layer = layui.layer,
		laytpl = layui.laytpl,
		laypage = layui.laypage,
		$ = layui.jquery,
		table = layui.table,
		element = layui.element,
		laydate = layui.laydate,
		cascade = layui.cascade;
	//自定义验证
	form.verify({
		namelength: [
			/^.{0,18}$/,
			"长度限制在0-18个字符噢"
		]
	});
	//监听一级Tab切换
	element.on('tab(tabBrief)', function(obj) {
		switch (obj.index) {
			case 0:
				tradeTableVm.reload();
				break;
		}
	});
	var vm = function(obj) {
		var _this = this;
		_this.dataId = obj.dataId || 'dataListId'; //数据表ID
		_this.elem = obj.elem || 'dataListBox'; //数据表容器
		_this.toolbar = obj.toolbar || '';
		_this.url = obj.url || ''; //数据表接口URL
		_this.page = obj.page; //分页
		_this.limit = obj.limit;
		_this.cols = obj.cols || []; //表头
		_this.done = obj.done || ''; //表头
		_this.formObj = {}; //当前表单对象
		_this.searchParameter = {}; //搜索参数
		_this.config = {};
		_this.where = obj.where;
		_this.config.dateTime = obj.dateTime;
		_this.dateTime = {
			year: 365 * 1 * 24 * 3600 * 1000,
			month: 30 * 1 * 24 * 3600 * 1000,
			day: 24 * 3600 * 1000,
		}
		_this.main();
	};
	//入口函数
	vm.prototype.main = function() {
		var _this = this;
		_this.initializationData()
	};
	//初始化表格
	vm.prototype.initializationData = function() {
		var _this = this;
		_this.dataListObj = table.render({
			id: _this.dataId,
			elem: _this.elem,
			toolbar: _this.toolbar,
			defaultToolbar: ['filter'],
			url: _this.url,
			page: _this.page,
			cols: _this.cols,
			done: _this.done,
			where: $.extend(_this.where, _this.searchParameter),
			limit: _this.limit,
		});
	};
	//重新加载数据表
	vm.prototype.reload = function() {
		var _this = this;
		_this.dataListObj = table.reload(_this.dataId, { //执行重载数据表
			where: _this.searchParameter,
			page: {
				curr: 1
			}
		});
	};
	//初始化组件
	vm.prototype.initializationModule = function(obj) {
		var _this = this;
		$.ajax({
			url: obj.url,
			data: obj.data,
			success: function(res) {
				var html = '<option value="">' + obj.prompt + '</option>';
				for (var i in res.data) {
					html += '<option value="' + res.data[i].id + '">' + res.data[i].name +
						'</option>';
				}
				$(obj.elem).html(html);
				form.render();
			}
		});
	};
	//初始化事件监听
	vm.prototype.eventMonitor = function(id) {
		var _this = this;
		//监听搜索表单事件
		if (typeof(_this.formEvent) == "object") {
			form.on('submit(' + _this.formEvent + ')', function(obj) {
				_this.formInfoSearch(_this.formEvent, obj);
				return false;
			});
		}
		return _this;
	};
	//搜索处理函数
	vm.prototype.formInfoSearch = function(id, obj) {
		var _this = this;
		_this.searchParameter = obj.field;
		if (obj.field.dateRange) {
			_this.searchParameter.beginTime = obj.field.dateRange.substring(0, 10);
			_this.searchParameter.endTime = obj.field.dateRange.substring(13, 23);
		}else{
			_this.searchParameter.beginTime = "";
			_this.searchParameter.endTime = "";
		}
		delete _this.searchParameter.dateRange;
		_this.reload();
	};
	//渲染时间选择器
	vm.prototype.showTimeSelect = function() {
		var _this = this;
		laydate.render({
			elem: _this.datePicker,
			range: true,
			max: 30
		});
	};
	//jquer事件绑定
	vm.prototype.$event = function() {
		var _this = this;
		//监听头部工具栏
		table.on('toolbar(' + _this.dataId + ')', function(obj) {
			switch (obj.event) {
				case 'export':
					_this.dataExport();
					break;
			};
		});
	};
	//数据导出处理函数
	vm.prototype.dataExport = function() {
		var _this = this;
		_this.downloadParameter = '?';
		for (var i in _this.dataListObj.config.where) {
			_this.downloadParameter += "&" + i + '=' + _this.dataListObj.config.where[i];
		}
		_this.startDownload();
	};
	//启动下载
	vm.prototype.startDownload = function() {
		var _this = this;
		window.open(window.hywa.config.href + window.hywa.config.port[_this.dataDownload] + _this.downloadParameter);
	};

	//模板引擎
	function typeTpl(obj) {
		laytpl(selectTpl.innerHTML).render(obj, function(html) {
			$(obj.elem).html(html);
			form.render();
		});
	}

	// 交易统计
	var tradeTableVm = new vm({
		dataId: 'tradeTableData',
		elem: '#tradeTableData',
		url: 'tradeTableUrl',
		toolbar: '#tradeToolbar',
		dateTime: {
			year: 1,
			day: 1,
		},
		page: true,
		cols: [
			[{
				field: 'payTime',
				title: '日期',
				align: 'center'
			}, {
				field: 'tradingAmount',
				title: '交易流水（元）',
				align: 'center'
			}, {
				field: 'numberOfOrders',
				title: '有效单数',
				align: 'center'
			}, {
				field: 'numberOfSellers',
				title: '供货商家数',
				align: 'center'
			}, {
				field: 'numberOfUsers',
				title: '购买用户数',
				align: 'center'
			}]
		],
		done: function(res) {
			$.ajax({
				type: 'get',
				url: "tradeTotalUrl",
				data: {
					beginTime: tradeTableVm.searchParameter.beginTime,
					endTime: tradeTableVm.searchParameter.endTime,
				},
				success: function(res) {
					$('#tradeCounter').text('合计：' + (res.data[0].amount || 0) + '元，' + (res.data[0].totalOrders || 0) + '单');
				},
			})
			if (!layui.data('auth').data.output) {
				$('.output-btn').hide();
			}
		}
	});
	//初始化事件监听
	tradeTableVm.formEvent = ['tradeTableSearch'];
	tradeTableVm.eventMonitor();
	tradeTableVm.$event();
	tradeTableVm.datePicker = '#datePicker'; //时间容器
	tradeTableVm.showTimeSelect();
	tradeTableVm.dataDownload = 'tradeExportUrl';

});
