|
|
@@ -1,18 +1,18 @@
|
|
|
const AITrans = function() {
|
|
|
const transResultObj = {
|
|
|
spread: null,
|
|
|
- sheet: null,
|
|
|
+ transSheetData: [],
|
|
|
initSpread: function() {
|
|
|
if (!this.spread) {
|
|
|
- this.spread = SpreadJsObj.createNewSpread($('#ai-trans-spread')[0]);
|
|
|
- this.sheet = this.spread.getActiveSheet();
|
|
|
+ this.spread = SpreadJsObj.createNewSpread($('#ai-trans-grid-spread')[0]);
|
|
|
+ this.spread.options.tabStripVisible = true;
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
- $('#ai-trans').bind('shown.bs.modal', function() {
|
|
|
+ $('#ai-trans-grid').bind('shown.bs.modal', function() {
|
|
|
transResultObj.spread.refresh();
|
|
|
});
|
|
|
- $('#ai-trans-file').change(function() {
|
|
|
+ $('#ai-trans-grid-file').change(function() {
|
|
|
const files = this.files;
|
|
|
if (!files || files.length === 0) return;
|
|
|
|
|
|
@@ -38,19 +38,74 @@ const AITrans = function() {
|
|
|
formData.append('file[]', file);
|
|
|
}
|
|
|
postDataWithFile('ai-trans', formData, function (data) {
|
|
|
- const sheetParts = data.split('==++==');
|
|
|
+ transResultObj.transSheetData.length = 0;
|
|
|
+ const sheetParts = data.split('\n==++==\n');
|
|
|
for (const sp of sheetParts) {
|
|
|
- const rows = sp.split('\n').map(r => { return r.split('|')});
|
|
|
- console.log(rows);
|
|
|
- SpreadJsObj.loadSimpleSheetData(transResultObj.sheet, rows);
|
|
|
+ const rows = sp.split('\n').filter(x => { return !!x; }).map(r => { return r.split('|')});
|
|
|
+ transResultObj.transSheetData.push(rows);
|
|
|
+ }
|
|
|
+ transResultObj.spread.setSheetCount(transResultObj.transSheetData.length);
|
|
|
+ for (const [i, sheetData] of transResultObj.transSheetData.entries()) {
|
|
|
+ SpreadJsObj.loadSimpleSheetData(transResultObj.spread.getSheet(i), sheetData);
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
- const show = function(rela_type, rela_id) {
|
|
|
+ const show = function() {
|
|
|
+ if (!transResultObj.rela_id) toastr.warning('请先选择清单、计量单元、附属工程量后再使用');
|
|
|
+
|
|
|
transResultObj.initSpread();
|
|
|
- transResultObj.rela_type = rela_type;
|
|
|
- transResultObj.rela_id = rela_id;
|
|
|
+ $('#ai-trans-grid').modal('show');
|
|
|
+ };
|
|
|
+
|
|
|
+ $('#ai-trans-ok').click(function() {
|
|
|
+ const files = $('#ai-trans-file')[0].files;
|
|
|
+ if (!files || files.length === 0) return;
|
|
|
+
|
|
|
+ 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());
|
|
|
+ for (const file of files) {
|
|
|
+ if (file === undefined) {
|
|
|
+ toastr.error('未选择图片!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ const filesize = file.size;
|
|
|
+ if (filesize > 50 * 1024 * 1024) {
|
|
|
+ toastr.error('选择图片大小过大!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ const fileext = '.' + file.name.toLowerCase().split('.').splice(-1)[0];
|
|
|
+ if (whiteList.indexOf(fileext) === -1) {
|
|
|
+ toastr.error('只能上传指定格式的图片!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ formData.append('size', filesize);
|
|
|
+ formData.append('file[]', file);
|
|
|
+ }
|
|
|
+ postDataWithFile(window.location.pathname + '/aiComplie', formData, function (data) {
|
|
|
+ if (transResultObj.callback) transResultObj.callback(data);
|
|
|
+ $('#ai-trans').modal('hide');
|
|
|
+ });
|
|
|
+ });
|
|
|
+ const transDetail = function(callback) {
|
|
|
+ if (!transResultObj.rela_id) toastr.warning('请先选择清单、计量单元、附属工程量后再使用');
|
|
|
+ // todo 判断条件,调整
|
|
|
+ if (!transResultObj.rela_bills || transResultObj.rela_bills.name.indexOf('钢筋') === 0) toastr.warning('当前清单暂不支持');
|
|
|
+ transResultObj.callback = callback;
|
|
|
$('#ai-trans').modal('show');
|
|
|
};
|
|
|
- return { show }
|
|
|
+ const setRelaInfo = function(rela_type, rela_node, rela_bills) {
|
|
|
+ transResultObj.rela_type = rela_type;
|
|
|
+ transResultObj.rela_node = rela_node;
|
|
|
+ transResultObj.rela_id = rela_node ? rela_node.id : undefined;
|
|
|
+ transResultObj.rela_bills = rela_bills;
|
|
|
+ };
|
|
|
+ return { show, setRelaInfo, transDetail, rela_type: function() {return transResultObj.rela_type} }
|
|
|
};
|