|
|
@@ -7,6 +7,57 @@ const AITrans = function() {
|
|
|
this.spread = SpreadJsObj.createNewSpread($('#ai-trans-grid-spread')[0]);
|
|
|
this.spread.options.tabStripVisible = true;
|
|
|
}
|
|
|
+ },
|
|
|
+ getFileMiniHtml: function(file) {
|
|
|
+ const html = [];
|
|
|
+ html.push(`<div class="card mb-2 p-1 thumbnail-container" fid="${file.id}" name="ai-his-file" title="${file.filename+file.fileext}">`);
|
|
|
+ html.push('<div class="ai-del-btn text-danger"><span aria-hidden="true">×</span></div>');
|
|
|
+ html.push(`<img src="${file.viewpath}">`);
|
|
|
+ html.push('</div>');
|
|
|
+ return html.join('');
|
|
|
+ },
|
|
|
+ selectFile: function(fid) {
|
|
|
+ $('[name=ai-his-file]').removeClass('thumbnail-active');
|
|
|
+ $(`[fid="${fid}"]`).addClass('thumbnail-active');
|
|
|
+ transResultObj.showFile(fid);
|
|
|
+ },
|
|
|
+ afterUploadFile: function(file) {
|
|
|
+ if (!this.rela_node.aiRelaFile) this.rela_node.aiRelaFile = [];
|
|
|
+ this.rela_node.aiRelaFile.push(file);
|
|
|
+ $('#ai-trans-file-add').parent().append(this.getFileMiniHtml(file));
|
|
|
+ this.selectFile(file.id);
|
|
|
+ },
|
|
|
+ deleteFile: function(fid) {
|
|
|
+ const fileIndex = transResultObj.rela_node.aiRelaFile.findIndex(x => { return x.id === fid; });
|
|
|
+ const file = transResultObj.rela_node.aiRelaFile[fileIndex];
|
|
|
+ if (!file) return;
|
|
|
+ const fileObj = $(`[fid="${fid}"]`);
|
|
|
+ if (fileObj.hasClass('thumbnail-active')) {
|
|
|
+ $('#ai-trans-show-file').attr('src', "");
|
|
|
+ }
|
|
|
+
|
|
|
+ postData(window.location.pathname + '/ai/deleteFile', { fid }, function(){
|
|
|
+ transResultObj.rela_node.aiRelaFile.splice(fileIndex, 1);
|
|
|
+ fileObj.remove();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ reloadAiRelaFile: function() {
|
|
|
+ $('#ai-trans-file-add').nextAll().remove();
|
|
|
+ const html = [];
|
|
|
+ for (const file of this.rela_node.aiRelaFile) {
|
|
|
+ html.push(this.getFileMiniHtml(file));
|
|
|
+ }
|
|
|
+ $('#ai-trans-file-add').after(html.join(''));
|
|
|
+ },
|
|
|
+ loadAiRelaFile: async function() {
|
|
|
+ if (this.rela_node.aiRelaFile) return;
|
|
|
+ this.rela_node.aiRelaFile = await postDataAsync(window.location.pathname + '/ai/file', { rela_id: this.rela_node.id, rela_type: this.rela_type });
|
|
|
+ this.reloadAiRelaFile();
|
|
|
+ $('#ai-trans-show-file').attr('src', '');
|
|
|
+ },
|
|
|
+ showFile: function(fid) {
|
|
|
+ const file = this.rela_node.aiRelaFile.find(x => { return x.id === fid; });
|
|
|
+ $('#ai-trans-show-file').attr('src', file.viewpath);
|
|
|
}
|
|
|
};
|
|
|
$('#ai-trans-grid').bind('shown.bs.modal', function() {
|
|
|
@@ -57,21 +108,29 @@ const AITrans = function() {
|
|
|
$('#ai-trans-grid').modal('show');
|
|
|
};
|
|
|
|
|
|
- $('#ai-trans-ok').click(function() {
|
|
|
- const files = $('#ai-trans-file')[0].files;
|
|
|
- if (!files || files.length === 0) return;
|
|
|
-
|
|
|
+ document.getElementById('ai-trans-file-add').addEventListener('dragenter', function(e) {
|
|
|
+ e.preventDefault();
|
|
|
+ this.style.backgroundColor = '#f0f0f0';
|
|
|
+ });
|
|
|
+ document.getElementById('ai-trans-file-add').addEventListener('dragleave', function(e) {
|
|
|
+ if (e.relatedTarget !== this) {
|
|
|
+ this.style.backgroundColor = '';
|
|
|
+ }
|
|
|
+ });
|
|
|
+ document.getElementById('ai-trans-file-add').addEventListener('dragover', function(e) {
|
|
|
+ e.preventDefault();
|
|
|
+ e.dataTransfer.dropEffect = 'copy';
|
|
|
+ });
|
|
|
+ document.getElementById('ai-trans-file-add').addEventListener('drop', function(e) {
|
|
|
+ if (transResultObj.rela_node.aiRelaFile && transResultObj.rela_node.aiRelaFile.length >= 3) {
|
|
|
+ toastr.warning('保存的图片超过限制,请先删除旧图片后再操作');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ e.preventDefault();
|
|
|
+ const files = e.dataTransfer.files;
|
|
|
const formData = new FormData();
|
|
|
formData.append('rela_type', transResultObj.rela_type);
|
|
|
formData.append('rela_id', transResultObj.rela_id);
|
|
|
- if (transResultObj.rela_type === 'ancGcl') {
|
|
|
- formData.append('rela_template', transResultObj.rela_node.calc_template);
|
|
|
- } else {
|
|
|
- formData.append('rela_template', transResultObj.rela_bills.calc_template);
|
|
|
- }
|
|
|
- formData.append('rela_bills_name', transResultObj.rela_bills.name);
|
|
|
- formData.append('rela_keyword', $('#ai-trans-keyword').val());
|
|
|
- formData.append('rela_billsType', transResultObj.billsType);
|
|
|
for (const file of files) {
|
|
|
if (file === undefined) {
|
|
|
toastr.error('未选择图片!');
|
|
|
@@ -90,13 +149,79 @@ const AITrans = function() {
|
|
|
formData.append('size', filesize);
|
|
|
formData.append('file[]', file);
|
|
|
}
|
|
|
- postDataWithFile(window.location.pathname + '/aiComplie', formData, function (data) {
|
|
|
+ postDataWithFile(window.location.pathname + '/ai/uploadFile', formData, function (data) {
|
|
|
+ transResultObj.afterUploadFile(data[0]);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ $('body').on('click', '[name=ai-his-file]', function() {
|
|
|
+ transResultObj.selectFile(this.getAttribute('fid'));
|
|
|
+ });
|
|
|
+ $("#ai-trans-file-add").on('paste', function(e) {
|
|
|
+ let file = null;
|
|
|
+ const data = (event.clipboardData || window.clipboardData).items;
|
|
|
+ for (let i = 0; i < data.length; i += 1) {
|
|
|
+ if ((data[i].kind == 'file') && (data[i].type.match('^image/'))) {
|
|
|
+ file = data[i].getAsFile();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (file) {
|
|
|
+ const formData = new FormData();
|
|
|
+ formData.append('rela_type', transResultObj.rela_type);
|
|
|
+ formData.append('rela_id', transResultObj.rela_id);
|
|
|
+ formData.append('file', file);
|
|
|
+ formData.append('size', file.size);
|
|
|
+ console.log(formData);
|
|
|
+ postDataWithFile(window.location.pathname + '/ai/uploadFile', formData, function (data) {
|
|
|
+ transResultObj.afterUploadFile(data[0]);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ $('body').on('click', '.ai-del-btn', function() {
|
|
|
+ const fid = $(this).parent().attr('fid');
|
|
|
+ transResultObj.deleteFile(fid);
|
|
|
+ e.stopPropagation();
|
|
|
+ });
|
|
|
+ $('#ai-trans-ok').click(function() {
|
|
|
+ const files = $('.thumbnail-container');
|
|
|
+ if (files.length === 0) {
|
|
|
+ toastr.warning('请先上传/拖动/粘贴图片');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const select = $('.thumbnail-active')[0];
|
|
|
+ if (!select) {
|
|
|
+ toastr.warning('请选择历史图片,或者重新上传/拖动/粘贴图片');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const complieData = {
|
|
|
+ rela_id: transResultObj.rela_node.id,
|
|
|
+ rela_type: transResultObj.rela_type,
|
|
|
+ fid: select.getAttribute('fid'),
|
|
|
+ billsType: transResultObj.billsType,
|
|
|
+ keyword: $('#ai-trans-keyword').val(),
|
|
|
+ bills_name: transResultObj.rela_bills.name,
|
|
|
+ };
|
|
|
+ if (transResultObj.rela_type === 'ancGcl') {
|
|
|
+ complieData.template = transResultObj.rela_node.calc_template;
|
|
|
+ } else {
|
|
|
+ complieData.template = transResultObj.rela_bills.calc_template;
|
|
|
+ }
|
|
|
+
|
|
|
+ postData(window.location.pathname + '/ai/complie', complieData, function (data) {
|
|
|
if (transResultObj.callback) transResultObj.callback(data);
|
|
|
$('#ai-trans').modal('hide');
|
|
|
});
|
|
|
});
|
|
|
- const transDetail = function(callback) {
|
|
|
+ const transDetail = async function(callback) {
|
|
|
+ if (transResultObj.rela_type === 'bills') {
|
|
|
+ $('#ai-trans-title').html(`AI识别部位(${transResultObj.rela_node.b_code} ${transResultObj.rela_node.name})`);
|
|
|
+ } else if (transResultObj.rela_type === 'pos') {
|
|
|
+ $('#ai-trans-title').html(`AI识别设计量细目(${transResultObj.rela_bills.b_code} ${transResultObj.rela_bills.name} / ${transResultObj.rela_node.name})`);
|
|
|
+ } else if (transResultObj.rela_type === 'ancGcl') {
|
|
|
+ $('#ai-trans-title').html(`AI识别附属工程量明细(${transResultObj.rela_bills.b_code} ${transResultObj.rela_bills.name} / ${transResultObj.rela_node.name})`);
|
|
|
+ }
|
|
|
transResultObj.callback = callback;
|
|
|
+ transResultObj.loadAiRelaFile();
|
|
|
$('#ai-trans').modal('show');
|
|
|
};
|
|
|
const billsIdentify = function (callback) {
|
|
|
@@ -113,5 +238,8 @@ const AITrans = function() {
|
|
|
transResultObj.rela_id = rela_node ? rela_node.id : undefined;
|
|
|
transResultObj.rela_bills = rela_bills;
|
|
|
};
|
|
|
- return { show, setRelaInfo, billsIdentify, transDetail, rela_type: function() {return transResultObj.rela_type} }
|
|
|
-};
|
|
|
+ return {
|
|
|
+ show,
|
|
|
+ setRelaInfo, billsIdentify, transDetail, rela_type: function() {return transResultObj.rela_type}
|
|
|
+ }
|
|
|
+}
|