diff --git a/index.cfm b/index.cfm index 8c8ed1a..fa968d6 100644 --- a/index.cfm +++ b/index.cfm @@ -61,7 +61,7 @@
Nubes - Сверка договоров — LLM v1.0.41 — Lucee + Сверка договоров — LLM v1.0.42 — Lucee
@@ -140,6 +140,7 @@ lucide.createIcons(); var UPLOAD_URL = 'https://contracts.kube5s.ru/lucee/upload.cfm'; +var CONVERT_URL = 'https://contracts.kube5s.ru/convert-doc'; var SITE_URL = ''; // same origin for api calls var fileInput = document.getElementById('fileInput'); @@ -227,26 +228,51 @@ fileInput.addEventListener('change', async function() { function uploadFile(file, onProgress) { return new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - var fd = new FormData(); - fd.append('files', file); - if (contractId) fd.append('contract_id', contractId); + // .doc → конвертация в docx + var isDoc = file.name.toLowerCase().endsWith('.doc') && !file.name.toLowerCase().endsWith('.docx'); + var uploadFile = file; + var uploadName = file.name; - xhr.open('POST', UPLOAD_URL); - xhr.upload.onprogress = function(e) { - if (e.lengthComputable && onProgress) onProgress(Math.round(e.loaded / e.total * 100)); - }; - xhr.onload = function() { - try { - var r = JSON.parse(xhr.responseText); - if (r.OK) resolve(r); - else reject(new Error(r.ERROR || 'Неизвестная ошибка')); - } catch(e) { reject(new Error('Некорректный ответ')); } - }; - xhr.onerror = function() { reject(new Error('Сеть')); }; - xhr.ontimeout = function() { reject(new Error('Таймаут')); }; - xhr.timeout = 180000; - xhr.send(fd); + function doUpload() { + var xhr = new XMLHttpRequest(); + var fd = new FormData(); + fd.append('files', uploadFile, uploadName); + if (contractId) fd.append('contract_id', contractId); + xhr.open('POST', UPLOAD_URL); + xhr.upload.onprogress = function(e) { + if (e.lengthComputable && onProgress) onProgress(Math.round(e.loaded / e.total * 100)); + }; + xhr.onload = function() { + try { + var r = JSON.parse(xhr.responseText); + if (r.OK) resolve(r); + else reject(new Error(r.ERROR || 'Неизвестная ошибка')); + } catch(e) { reject(new Error('Некорректный ответ')); } + }; + xhr.onerror = function() { reject(new Error('Сеть')); }; + xhr.ontimeout = function() { reject(new Error('Таймаут')); }; + xhr.timeout = 180000; + xhr.send(fd); + } + + if (isDoc) { + var xhr = new XMLHttpRequest(); + xhr.open('POST', CONVERT_URL); + xhr.responseType = 'blob'; + xhr.onload = function() { + if (xhr.status === 200 && xhr.response.size > 100) { + uploadFile = xhr.response; + uploadName = file.name.replace(/\.doc$/i, '.docx'); + doUpload(); + } else { + reject(new Error('Конвертация .doc')); + } + }; + xhr.onerror = function() { reject(new Error('Конвертер')); }; + xhr.send(file); + } else { + doUpload(); + } }); } diff --git a/parser.cfm b/parser.cfm index fe3c31b..60aebfe 100644 --- a/parser.cfm +++ b/parser.cfm @@ -163,6 +163,28 @@ + + + + + + + + + + + + + + + + + + + + @@ -210,7 +232,7 @@ - + @@ -264,7 +286,10 @@ - + + + +