Загрузка данных


<!-- Диалоговое окно отклонения справок с типом *Иное* -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<script type="text/javascript">
	$(function() {
	
		const $form = $('#otherAppRejectModal')
		
		$('#closeRejectBtn', $form).click(() => {
			closeRejectModal()
		})
		$('#confirmRejectBtn', $form).click(() => {
			createRejectTessaCard()
		})
		$('[name=appReason]', $form).select2({
			placeholder: 'Причина отклонения',
			allowClear: true,
			minimumInputLength: 0,
			multiple: false,
			data: [
				{ id: '', text: 'Не выбрано' },
				{ id: 1, text: 'Не клиент' },
				{ id: 2, text: 'Достижение общеустановленного возраста' },
				{ id: 3, text: 'Наличие бессрочных пенсионных оснований' },
				{ id: 4, text: 'Нет заявления о расторжении' },
				{ id: 5, text: 'Некорректная справка' },
			],
			id: function (e) {
				return e.id
			}
		}) 
		$('[name=appType]', $form).select2({
			placeholder: 'Причина отклонения',
			allowClear: true,
			minimumInputLength: 0,
			multiple: false,
			data: [
				{ id: '', text: 'Не выбрано' },
				{ id: 1, text: 'Документ, подтверждающие срок пенсионных оснований' },
				{ id: 2, text: 'Справка о налоговом вычете' }
			],
			id: function (e) {
				return e.id
			}
		})
		$('[name=mailAddress]', $form).select2({
			allowClear: true,
			multiple: false,
			minimumInputLength: 3,
			maximumSelectionSize: 1,
			quietMillis: 3000,
			ajax: {
				url: 'queryModel?queryModelCode=UgvPy96q',
				dataType: 'json',
				data: function (term, page) {
					return {
						term: term,
						count: '5'		
					};
				},
				results: function (data, page) {		
					var json = data.data;
					var obj = data.data;
					var results = ($.isArray(json) ? json : []);
					results = ($.isArray(obj) ? obj : [obj]);
					for (i = 0; i < results.length; i++) {
						var text = obj[i].value;
						var valId = obj[i].unrestricted_value;
						results[i] = obj[i].data;
						results[i].name = text;
						results[i].id = valId; //obj[i].kladr_id + 0 + i;
					}

					return {
						results: ($.isArray(results) ? results : [results])
					};
				},
				error: function(xhr, status, error) {
					alert("Произошла ошибка: " + error)
				}
			},
			formatResult: function (address) {
				return '<div>' + address.name + '</div>'
			},
			formatSelection: function (address) {
				return address.name
			},
			escapeMarkup: function (m) {
				return m
			},
			initSelection: function (element, callback) {
				var term = $(element).val()
				var dataSend;
				dataSend.query = term.replace(/\d{6}, /, '');
				dataSend.count = 1;

				if(term != '') {
					$.ajax({
						url: 'queryModel?queryModelCode=UgvPy96q',
						dataType: 'json',
						data: dataSend,
						error: function(data) {
							showErrorMessage(JSON.parse(data.responseText).message_rus);
							console.log(data);
						}
					}).done(function(data) {
						var json = data.data;
						var obj = data.data;
						let results = ($.isArray(json) ? json : [])
						results = ($.isArray(obj) ? obj : [obj])

						for (i = 0; i < results.length; i++) {
							var text = obj[i].unrestricted_value
							results[i] = obj[i].data
							results[i].name = text
							results[i].id = obj[i].kladr_id + 0 + i
						}
						callback(results[0])
					})
				}
			}
		}).on("change", function (e) {
			const data = $('[name=mailAddress]', $form).select2('data')

			if (data) {
				$('[name=mailAddress]', $form).val(data.name)
			}
		})
		
		$('#mailingAddress').on("select2-open", function(e) {
			var test = $('#mailingAddress').select2("data");
			if (test != null) {
				var search = $(".select2-drop.select2-with-searchbox input:not(:button).select2-input");
				if ( search.length > 0) search.val(test.name);
			}
		});
		
		$('[name=appSigner]', $form).select2({
			placeholder: "Выберите подписанта",
			allowClear: true,
			minimumInputLength: 0,
			id: function (e) {
				return e.user_id
			},
			ajax: {
				url: "queryModel?queryModelCode=l1BmFlvw",
				dataType: 'json',
				data: function (term, page) {
					return {
						term: term,
						noticeKind: 'DENIAL',
						maxResults: 10
					}
				},
				results: function (data, page) {
					return {
						results: data.list
					}
				}
			},
			formatResult: formatSignerResult,
			formatSelection: formatSignerSelection,
			escapeMarkup: function (m) {
				return m
			},
			initSelection: function (element, callback) {
				const user_id = $(element).val()

				$.ajax("queryModel?queryModelCode=l1BmFlvw", {
					dataType: "json",
					data: {
						id: user_id
					}
				}).done(function (data) {
					callback(data)
				})
			}
		}).on("change", function (e) {			
			if (e.val.length) {
				$('[name=appSignerErrorTooltip]', $form).attr('style', "display: none")
			}
		})

		function formatSignerResult(data) {
			return '<div>' + data.fullname + '</div>'
		}

		function formatSignerSelection(data) {
			return data.fullname
		}
		
		function closeRejectModal() {
			clearModalControls()
			$('[name=appTypeErrorTooltip]', $form).hide()
			$('[name=appReasonErrorTooltip]', $form).hide()
			$('[name=appSignerErrorTooltip]', $form).hide()
			$('[name=mailAddressErrorTooltip]', $form).hide()
			$('#otherAppRejectModal').modal('hide')
		}

		function validateControls() {
			if ( !$('[name=appType]', $form).val() ) {
				$('[name=appTypeErrorTooltip]', $form).show()
				$('[name=appReasonErrorTooltip]', $form).hide()
				$('[name=appSignerErrorTooltip]', $form).hide()
				$('[name=mailAddressErrorTooltip]', $form).hide()
				
				return false
			}	else if ( !($('[name=appReason]', $form).val()) ) {
				$('[name=appReasonErrorTooltip]', $form).attr('style', "display: block")
				$('[name=appSignerErrorTooltip]', $form).attr('style', "display: none")
				$('[name=appTypeErrorTooltip]', $form).hide()
				$('[name=mailAddressErrorTooltip]', $form).hide()
				
				return false
			} else if (!($('[name=appSigner]', $form).val())) {
				$('[name=appReasonErrorTooltip]', $form).attr('style', "display: none")
				$('[name=appSignerErrorTooltip]', $form).attr('style', "display: block")
				$('[name=appTypeErrorTooltip]', $form).hide()
				$('[name=mailAddressErrorTooltip]', $form).hide()

				return false
			} else if ( !($('[name=mailAddress]', $form).val()) ) {
				$('[name=mailAddressErrorTooltip]', $form).show()
				$('[name=appTypeErrorTooltip]', $form).hide()
				$('[name=appReasonErrorTooltip]', $form).hide()
				$('[name=appSignerErrorTooltip]', $form).hide()
				
				return false
			}	else {
				$('[name=appReasonErrorTooltip]', $form).attr('style', "display: none")
				$('[name=appSignerErrorTooltip]', $form).attr('style', "display: none")
				$('[name=appTypeErrorTooltip]', $form).hide()
				$('[name=mailAddressErrorTooltip]', $form).hide()

				return true
			}
		}
		
		function getRepotrCode() {
			const value = $('[name=appType]', $form).val()
			
			if ( !value ) return
			if ( value == 2 ) return "oRTgDqGV"
			if ( value == 1 ) {
				const app_reason_value = $('[name=appReason]', $form).val()
				
				switch(app_reason_value) {
					case '1':
						return 'R2n0SY0o';
					case '2':
						return 'yV7dw98f';
					case '3':
						return 'tJo0ybKd';
					default:
						break;
				}
			}
		}
		
		async	function createRejectTessaCard() {
			if ( !validateControls() ) return

			const $form_data = $('#otherAppRejectModal').data('data')
			const app_type_text = $('[name=appType]', $form).val() == 2 ? 
						$('[name=appType]', $form).select2('data').text :
						$('[name=appType]', $form).val() == 1 ?
						'в регистрации документа, подтверждающего пенсионные основания' : null
			const form_params = {
				id: $form_data.tessa_document_id,
				agent_id: $('[name=appSigner]', $form).val(),
				address: $('[name=mailAddress]', $form).val(),
				reg_number: $('#tessaAppRegNum').val(),
				reg_date: $('#app${param.preffix}appealDate${param.blockId}').val(),
				app_type_name: app_type_text
			}
			const report_code = getRepotrCode()
			const report_id =	await createReport( report_code, form_params )
			
			const dataForTessa = {
				queryActionCode: "kbA0AO62",
				tessa_document_id: $form_data.tessa_document_id,
				signed_by: $('[name=appSigner]', $form).val(),
				address_text: $('[name=mailAddress]', $form).val(),
				report_id: report_id,
				app_type_text
			}

			$.ajax({
				url: "queryAction/action",
				type: "POST",
				data: dataForTessa,
				dataType: "json"
			}).done(function (data) {
				if (data.result && data.data) {
					console.log('create_outgoing_card_tessa response data: ', data)

					if (data.data[1]) {
						showSuccessMessage('Создана исходящая карточка заявления в Тессе')
						dataNotice.cardId = data.data[0]
					} else {
						alert('Ошибка при создании исходящей карточки заявления в Тессе!\n' + data.data[0])
						dataNotice.cardId = (data.data[0]).split(';')[0].trim()
					}
				} else {
					showMessages(data.messages)
					hideProcessing()

					return
				}

				hideProcessing()
			})
			
			mainTable.reload()
			closeRejectModal()
		}
	
		//--Добавил Коробов createReport--//
		async function createReport( queryReportCode, form_params ) {
			if ( !( form_params && form_params.id) || !queryReportCode ) return
			
			const params = {
				tessa_app_id: form_params.id,
				reg_number: form_params.reg_number,
				reg_date: form_params.reg_date,
				app_type_name: form_params.app_type_name
			}
			
			if ( form_params.address && form_params.agent_id ) {
				params.address = form_params.address
				params.agent_id = form_params.agent_id
			}

			return new Promise((resolve, reject) => {
				new QueryReport(queryReportCode, {
					reportComplete:  function (data) {
						resolve(data.data.id)
					},
					reportFailed: function (request, status, error) {
						reject(error)
					},
				}, () => params, { onlyCreate: true }).run()
			})
		}
	})

	function rejectApplicationOther() {
		clearModalControls()
	
		$('#otherAppRejectModal').modal({
			backdrop: true
		})

		$('#otherAppRejectModal').modal('show')
		return
	}
	function clearModalControls() {
		$('#otherAppRejectModal' + ' input').val(null)
		$('#otherAppRejectModal' + ' select').val(null)
		$('#otherAppRejectModal' + ' div').select2('val', null)
	}

</script>

	<div id="otherAppRejectModal" class="modal fade" tabindex="-1">
		<div class="modal-dialog">
			<div class="modal-content">

				<div class="modal-header">
					<button type="button" class="close" data-dismiss="modal">
						<span aria-hidden="true">×</span>
						<span class="sr-only"><s:message code="dialog.close"/></span>
					</button>
					<h4 class="modal-title">Отклонение справки</h4>
				</div>

				<div class="modal-body">
					<div class="form-group">
						<label class="control-label">Тип справки</label>
						<input name="appType"
									 class="form-control" 
									 placeholder="Выберите тип справки">
					</div>
					<p name="appTypeErrorTooltip"
						 class="error-tooltip">
						Необходимо выбрать тип справки
					</p>

					<div class="form-group">
						<label class="control-label">Причина отклонения</label>
						<input name="appReason"
									 class="form-control" 
									 placeholder="Выберите причину отклонения">
						<p name="appReasonErrorTooltip"
							 class="error-tooltip">
							Необходимо выбрать причину
						</p>
					</div>

					<div class="form-group">
						<label class="control-label">Подписант</label>
						<input name="appSigner" class="form-control">
					</div>
					<p name="appSignerErrorTooltip"
						 class="error-tooltip">
						Необходимо выбрать подписанта
					</p>
					
					<div class="form-group">
						<label class="control-label">Почтовый адрес</label>
						<input type="text"
									 name="mailAddress"
									 class="form-control">
					</div>
					<p name=mailAddressErrorTooltip
						 class="error-tooltip">
						Необходимо заполнить почтовый адрес
					</p>
				</div>

				<div class="modal-footer">
					<button id="confirmRejectBtn" class="btn btn-danger" type="button" >Отклонить</button>
					<button id="closeRejectBtn" class="btn btn-default" type="button" >Отмена</button>
				</div>
			</div>
		</div>
	</div>