first commit + add fe component vue accone

This commit is contained in:
2026-05-07 17:10:10 +07:00
parent fd8e4d694b
commit 38a182641a
327 changed files with 263946 additions and 0 deletions

27
libs/vendor/xlsprse/parser/index.js vendored Normal file
View File

@@ -0,0 +1,27 @@
import parseXlsx from './xlsx-parser';
function parseFileExcelFile(file, lang, callback) {
const reader = new FileReader();
reader.onload = event =>
parseXlsx(event.target.result, lang)
.then(result => callback(result))
.catch(error => callback(error));
if (file.type === 'text/csv') {
reader.readAsText(file);
} else {
reader.readAsBinaryString(file);
}
}
export default (htmlFile, lang) =>
new Promise((resolve, reject) => {
parseFileExcelFile(htmlFile, lang, (result) => {
if (result.error) {
return reject(result.error);
}
return resolve(result.worksheet);
});
});

View File

@@ -0,0 +1,30 @@
import _ from 'lodash';
import XLSX from 'xlsx';
export default (file, lang) => {
const workbook = typeof window === 'undefined' ? XLSX.readFile(file) : XLSX.read(file, { type: 'binary' });
const sheetNames = workbook.SheetNames;
if (sheetNames.length === 0) {
return Promise.reject({ error: lang.error.noWorksheet });
}
const sheets = workbook.Sheets;
const json = XLSX.utils.sheet_to_json(sheets[sheetNames[0]], {
header: 1,
defVal: '',
blankrows: false,
});
if (json.length === 0) {
return Promise.reject({ error: lang.error.emptyWorksheet });
}
const transposedMatrix = _.unzip(json);
const normalizedOutput = transposedMatrix
.map(columnRows => ({
name: _.first(columnRows),
data: _.tail(columnRows),
}))
.filter(column => column.data.length === 0 || !column.data.every(data => data === undefined));
return Promise.resolve({ worksheet: normalizedOutput });
};