<?php
$pageHeader = [
	'title' => '查凭证',
];
?>
<?php include(mvc::$cfg['PATH_TPL'] . 'public/header.php'); ?>
<?php include(mvc::$cfg['PATH_TPL'] . 'voucher/common.php'); ?>
<style>
	body {
		color: #333
	}

	.ui-th-div {
		color: #676a6c
	}

	.money {
		color: #000
	}

	.client {
		font-size: 11px
	}

	.seqBgOne {
		background-color: #eef;
	}

	.table>tbody>tr>td,
	.table>tbody>tr>th,
	.table>tfoot>tr>td,
	.table>tfoot>tr>th,
	.table>thead>tr>td,
	.table>thead>tr>th {
		padding: 3px 4px;
	}

	.table>tbody>tr:nth-child(odd) {
		background-color: #fff;
	}

	.table>tbody>tr:nth-child(even) {
		background-color: #fff;
	}

	/*.seqsort{display:none}*/
</style>
<div class="list_pager">
	<div id="list_buttons"></div>
	<table id="grid_voucher" autocomplete="off"></table>
	<div id="jqGridPager"></div>
</div>
<div id="floatOpLots" class="shadow float_target_box alert-light">
	<div style="padding:.5em 2em 1em 1em;width:350px;background:#fafafa;box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 15%) !important;">
		<!--开始期-号: <input type="text" id="opLotsBeginCycle" placeholder="请输入格式如 2312-1"><br>
		结止期-号: <input type="text" id="opLotsEndCycle" placeholder="请输入格式如 2312-15"><br>-->
		开始日期: <input type="date" id="opLotsBeginDate"><br>
		结止日期: <input type="date" id="opLotsEndDate"><br>
		<button id="btnOpLostCheck" class="btn btn-primary" style="line-height: 1;margin:1em 0;"> <i class="fa fa-check"></i> 审核</button>
		<button id="btnOpLostUnCheck" class="btn btn-success" style="line-height: 1;margin:1em 0;"> <i class="fa fa-edit"></i> 反审核</button>
		<button id="btnOpLostDelete" class="btn btn-danger" style="line-height: 1;margin:1em 0;"> <i class="fa fa-remove"></i> 删除未审核</button>
	</div>
</div>
<link href="<?php echo mvc::$cfg['URL_STATIC']; ?>css/plugins/datapicker/datepicker3.css" rel="stylesheet">
<script src="<?php echo mvc::$cfg['URL_STATIC']; ?>js/plugins/datapicker/bootstrap-datepicker.js"></script>
<script type="text/javascript" defer>
	var grid = null;
	var dateSelectBefore = '';
	$(document).ready(function() {
		var form_title = '凭证';
		var sop = {
			sopt: ['cn', 'eq', 'ne', 'le', 'lt', 'gt', 'ge', 'nc', 'nu', 'nn']
		};
		var coloptions = {
			sorting: false,
			filtering: false,
			columns: false,
			freeze: false,
			grouping: true
		};
		grid = new qgGrid('grid_voucher', {
			url: urls.listPost,
			autowidth: true,
			rowNum: 300,
			colMenu: true,
			height: $(document).height() - 165,
			colModel: [{
					label: 'ID',
					name: 'v_id',
					key: true,
					width: 120,
					hidden: true,
					sortable: false,
					searchoptions: sop,
					colmenu: false
				},
				{
					label: '期',
					name: 'v_cycle',
					width: 88,
					hidden: true,
					searchoptions: sop,
					cellattr: cycleAttr,
					colmenu: false
				},
				{
					label: '期-号',
					name: 'cycleseq',
					width: 100,
					searchoptions: sop,
					cellattr: seqAttr,
					formatter: viewLink,
					unformat: unLink,
					colmenu: false
				},
				{
					label: '科目',
					name: 'subjectText',
					width: 200,
					sortable: false,
					searchoptions: sop,
					formatter: viewSubject,
					unformat: function(text) {
						return text;
					},
					coloptions: coloptions
				},
				{
					label: '借方',
					name: 'v_j',
					align: 'right',
					width: 100,
					sortable: false,
					searchoptions: sop,
					classes: "money",
					cellattr: moneyAttr,
					formatter: viewMoney,
					unformat: unMoney,
					colmenu: false,
				},
				{
					label: '贷方',
					name: 'v_d',
					align: 'right',
					width: 100,
					sortable: false,
					searchoptions: sop,
					classes: "money",
					cellattr: moneyAttr,
					formatter: viewMoney,
					unformat: unMoney,
					colmenu: false
				},
				{
					label: '部门',
					name: 'depText',
					width: 120,
					sortable: false,
					searchoptions: sop,
					coloptions: coloptions
				},
				{
					label: '职员',
					name: 'staffText',
					width: 100,
					sortable: false,
					searchoptions: sop,
					coloptions: coloptions
				},
				{
					label: '客户',
					name: 'clientText',
					width: 220,
					sortable: false,
					searchoptions: sop,
					classes: "client",
					coloptions: coloptions
				},
				{
					label: '摘要',
					name: 'v_summary',
					width: 280,
					sortable: false,
					searchoptions: sop,
					colmenu: false
				},
				{
					label: '审核',
					name: 'v_state',
					width: 50,
					sortable: false,
					searchoptions: sop,
					formatter: viewState,
					align: "center",
					colmenu: false
				},
				{
					label: '日期',
					name: 'v_date',
					width: 122,
					sortable: false,
					coloptions: coloptions,
					stype: 'text',
					search: true,
					datefmt: 'Y-m-d',
					searchoptions: {
						sopt: ['eq', 'cn', 'ne', 'le', 'lt', 'gt', 'ge', 'nc', 'nu', 'nn'],
						dataInit: function(element) {
							$(element).datepicker({
								language: "zh-CN", //语言
								autoclose: true, //自动关闭
								todayBtn: "linked",
								todayHighlight: true,
								format: "yyyy-mm-dd"
							}).on('show', function(ev) {
								if ($('#gs_v_date').val() != '') {
									dateSelectBefore = $('#gs_v_date').val();
								}
							}).on('change', function(ev) {
								if ($('#gs_v_date').val() == '') {
									$('#gs_v_date').val(dateSelectBefore);
								}
								$('#gs_v_date').trigger('keydown');
							});
							$(element).click(function(e) { //选中时间后隐藏
								$(e).parent().datepicker('hide');
							});
						}
					}
				},
			],
			multiSort: false,
			footerrow: true,
			gridComplete: function() {
				var total_j = grid.grid.getCol('v_j', false, 'sum');
				var total_d = grid.grid.getCol('v_d', false, 'sum');
				grid.grid.footerData('set', {
					"subjectText": '合计',
					v_j: total_j.toFixed(2),
					v_d: total_d.toFixed(2),
					v_summary: '借-贷= ' + qg.num.money.format((total_j - total_d).toFixed(2)),
				});
				//合并行
				//grid.mergerRowspan('v_cycle');
				grid.mergerRowspan('cycleseq');
				//行变色
				var ids = grid.grid.getDataIDs();
				var old = '';
				var ischangebg = '';
				var regi = 0;
				for (var i = 0; i < ids.length; i++) {
					var rowData = grid.grid.getRowData(ids[i]);
					if (old == '') old = rowData.cycleseq;
					if (rowData.cycleseq == old) {

					} else {
						regi++;
						old = rowData.cycleseq;
					}
					if (regi % 2 != 0)
						$('#' + ids[i]).find("td").addClass("seqBgOne");
				}
				//
				$('#gs_v_date').attr('autocomplete', 'off');
			},
			onSelectRow: function(key, status, event) {
				;
			},
			onEnter: function(rowid) {
				if (rowid) {
					var viewUrl = urls.view + '?key=' + rowid;
					var row = grid.selectRowData();
					qgui.form.view(row.v_seq, viewUrl)
				}
			}
		});
		var template1 = {
			"groupOp": "AND",
			"rules": [{
				"field": "v_date",
				"op": "eq",
				"data": qg.date.nowDate()
			}, ]
		};
		var template2 = {
			"groupOp": "AND",
			"rules": [{
				"field": "v_date",
				"op": "eq",
				"data": qg.date.nowDate(-1)
			}, ]
		};
		var template3 = {
			"groupOp": "AND",
			"rules": [{
				"field": "v_date",
				"op": "eq",
				"data": qg.date.nowDate(-2)
			}, ]
		};
		var template4 = {
			"groupOp": "AND",
			"rules": [{
				"field": "v_date",
				"op": "ge",
				"data": qg.date.nowDate(-6)
			}, ]
		};
		var template5 = {
			"groupOp": "AND",
			"rules": [{
					"field": "v_date",
					"op": "ge",
					"data": qg.date.nowDate().substring(0, 7) + '-01'
				},
				{
					"field": "v_date",
					"op": "le",
					"data": qg.date.nowDate().substring(0, 7) + '-31'
				},
			]
		};
		var template6 = {
			"groupOp": "AND",
			"rules": [{
					"field": "v_date",
					"op": "ge",
					"data": qg.date.nowDate().substring(0, 4) + '-01-01'
				},
				{
					"field": "v_date",
					"op": "le",
					"data": qg.date.nowDate().substring(0, 4) + '-12-31'
				},
			]
		};
		var customButtons = [{
				btn: 'btn_oplots',
				caption: '批量',
				icon: 'fa fa-calendar-plus-o',
				type: 'btn-info',
				onBuild: function(e) {
					$(e).powerFloat({
						width: 'auto',
						offsets: {
							x: 0,
							y: 5
						},
						eventType: "click", //click,hover
						target: "#floatOpLots"
					});
				},
				click: function(e) {
					//$('#floatOpLots').find('.create-remark').html(html);
				}
			},
			{
				btn: 'day0',
				caption: '今天',
				icon: 'fa fa-clock-o',
				type: 'btn-white',
				click: function(e) {
					$('#gs_v_date').val(qg.date.nowDate());
					$('#gs_v_date').trigger('keydown');
				}
			},
			{
				btn: 'day_1',
				caption: '昨天',
				icon: 'fa fa-clock-o',
				type: 'btn-white',
				click: function(e) {
					$('#gs_v_date').val(qg.date.nowDate(-1));
					$('#gs_v_date').trigger('keydown');
				}
			},
			{
				btn: 'day_2',
				caption: '前天',
				icon: 'fa fa-clock-o',
				type: 'btn-white',
				click: function(e) {
					$('#gs_v_date').val(qg.date.nowDate(-2));
					$('#gs_v_date').trigger('keydown');
				}
			},
		];
		qgui.tableButton({
			dom: '#list_buttons',
			grid: grid,
			title: form_title,
			buttons: [{
					btn: 'refresh'
				},
				{
					btn: 'search',
					tpl: {
						names: ["今天", "昨天", "前天", "近7天", "本月", "本年"],
						filters: [template1, template2, template3, template4, template5, template6]
					}
				},
				{
					btn: 'add',
					click: function() {
						if (isInIframe)
							qgui.page.open('录凭证', urls.add);
						else
							qg.win.open(urls.add);
					}
				},
				{
					btn: 'edit',
					click: function() {
						var key = grid.selectRowKey();
						if (key != null) {
							var row = grid.selectRowData();
							var seq = row.cycleseq.replace(/\d+-/g, '');
							var url = qg.url.set(urls.edit).add({
								cycle: row.v_cycle,
								seq: seq
							}).val();
							var title = row.v_cycle + '.' + seq;
							qgui.page.open(title, url);
						} else {
							qgui.box.timer('请先选择一条记录');
							return '';
						}
					}
				},
				{
					btn: 'delete',
					url: function() {
						var key = grid.selectRowKey();
						if (key != null) {
							var row = grid.selectRowData();
							var seq = row.cycleseq.replace(/\d+-/g, '');
							var key = row.v_cycle + '.' + seq;
							return {
								title: key,
								url: urls.deletePost,
								params: {
									cycle: row.v_cycle,
									seq: seq
								}
							};
						} else {
							qgui.box.timer('请先选择一条记录');
							return '';
						}
					}
				},
				{
					btn: 'export'
				},
				{
					btn: 'open'
				},
				{
					btn: 'tools'
				},
				{
					btn: 'ui_showhideCol'
				},
				{
					btn: 'ui_save'
				},
				{
					btn: 'ui_reset'
				},
			],
			customButtons: customButtons,
		});
	});
	/**方法************************/
	var gridReload = function() { //供弹窗调用
		grid.reload();
	};
	//列格式化
	function cycleAttr(rowId, val, rawObject, cm, rdata) {
		return 'id=\'td_cycle_' + rowId + "\'";
	}

	function seqAttr(rowId, val, rawObject, cm, rdata) {
		return 'id=\'td_seq_' + rowId + "\'";
	}
	var viewState = function(cellValue, options, rowObject, action) {
		if (cellValue == '1')
			cellValue = '<i class="fa fa-check" style="color:#ccc"></i>';
		else
			cellValue = '<i class="fa fa-circle-o" style="color:red"></i>'
		return cellValue;
	};
	var viewMoney = function(cellValue, options, rowObject, action) {
		if (cellValue == '0' || cellValue == '0.00' || !cellValue)
			cellValue = '';
		else
			cellValue = qg.num.money.format(cellValue);
		return cellValue;
	};
	var unMoney = function(cellValue, options, rowObject) {
		return qg.num.money.unformat(cellValue);
	};

	function moneyAttr(rowId, val, rawObject, cm, rdata) {
		if (val < 0) {
			return "style='color:red'";
		}
	}
	var viewSubject = function(cellValue, options, rowObject, action) {
		var text = cellValue.replace(/#/g, '<span style="visibility:hidden">0</span>');
		return text;
	};
	//在colModel列中加上 formatter:viewLink,unformat:function(text){return text;}
	var viewLink = function(cellValue, options, rowObject, action) {
		var title = rowObject.v_cycle.substring(2, 6) + '-' + rowObject.v_seq;
		var url = qg.url.set(urls.edit).add({
			cycle: rowObject.v_cycle,
			seq: rowObject.v_seq
		}).val();
		var func = "qgui.page.open(\'" + title + "\',\'" + url + "\')";
		if (!isInIframe) {
			func = "qg.win.open(\'" + url + "\')";
		}
		return '<a href="javascript:;" onclick="' + func + '">' + cellValue + '</a>';
	};
	var unLink = function(cellValue, options, rowObject) {
		return cellValue;
	};


	var opLots = function(type) {
		//let opLotsBeginCycle = $('#opLotsBeginCycle').val();
		//let opLotsEndCycle = $('#opLotsEndCycle').val();
		/*
		const regex = /^\d{4}-\d+$/;
		if (!regex.test(opLotsBeginCycle)) {
			qgui.box.msg('开始期号格式不正确');
			return false;
		}
		if (!regex.test(opLotsEndCycle)) {
			qgui.box.msg('结止期号格式不正确');
			return false;
		}*/
		let opLotsBeginDate = $('#opLotsBeginDate').val();
		let opLotsEndDate = $('#opLotsEndDate').val();
		if (opLotsBeginDate == '' || opLotsEndDate == '') {
			qgui.box.msg('开始日期和结止日期不能为空');
			return false;
		}
		qgui.box.yesnoInfo('确认是否要批量' + type + ', 从 [ ' + opLotsBeginDate + ' 至 ' + opLotsEndDate + '] 之间的凭证', function(btn) {
			if (btn == 'yes') {
				qg.ajax.post(HOST + 'voucher/opLots', {
					type: type,
					//opLotsBeginCycle: opLotsBeginCycle,
					//opLotsEndCycle: opLotsEndCycle,
					opLotsBeginDate: opLotsBeginDate,
					opLotsEndDate: opLotsEndDate,
				}, function(res, status) {
					if (typeof(gridReload) != 'undefined') gridReload();
					swal('操作执行完成', {
						icon: "success",
						buttons: false,
						timer: 1000
					});
				});
			}
		});
	};

	$('#btnOpLostCheck').click(function() {
		opLots('审核');
	});

	$('#btnOpLostUnCheck').click(function() {
		opLots('反审核');
	});

	$('#btnOpLostDelete').click(function() {
		opLots('删除');
	});
</script>
<?php include(mvc::$cfg['PATH_TPL'] . 'public/footer.php'); ?>