|
@@ -1,5 +1,5 @@
|
|
<template>
|
|
<template>
|
|
- <div class="content" v-loading="loading">
|
|
|
|
|
|
+ <div class="content">
|
|
<el-tabs
|
|
<el-tabs
|
|
ref="tabs"
|
|
ref="tabs"
|
|
tab-position="left"
|
|
tab-position="left"
|
|
@@ -126,7 +126,9 @@
|
|
<el-dialog
|
|
<el-dialog
|
|
title="数据列表特征计算函数"
|
|
title="数据列表特征计算函数"
|
|
:visible.sync="dialogVisible"
|
|
:visible.sync="dialogVisible"
|
|
|
|
+ element-loading-background="rgba(0, 0, 0, 0.8)"
|
|
width="600px"
|
|
width="600px"
|
|
|
|
+ v-loading="loading"
|
|
:before-close="handleClose"
|
|
:before-close="handleClose"
|
|
>
|
|
>
|
|
<el-form
|
|
<el-form
|
|
@@ -293,7 +295,6 @@ export default {
|
|
"setTriggerGetData",
|
|
"setTriggerGetData",
|
|
"setUpdateTriggerGetData",
|
|
"setUpdateTriggerGetData",
|
|
]),
|
|
]),
|
|
-
|
|
|
|
async initDB() {
|
|
async initDB() {
|
|
return new Promise((resolve, reject) => {
|
|
return new Promise((resolve, reject) => {
|
|
const request = indexedDB.open("FileDataDB", 2); // 使用较高版本
|
|
const request = indexedDB.open("FileDataDB", 2); // 使用较高版本
|
|
@@ -333,6 +334,7 @@ export default {
|
|
console.log(this.options, "调用数据");
|
|
console.log(this.options, "调用数据");
|
|
},
|
|
},
|
|
async submitComputedFn(formName) {
|
|
async submitComputedFn(formName) {
|
|
|
|
+ this.loading = true;
|
|
try {
|
|
try {
|
|
// 1. 验证表单
|
|
// 1. 验证表单
|
|
if (!(await this.validateForm(formName))) return;
|
|
if (!(await this.validateForm(formName))) return;
|
|
@@ -340,6 +342,7 @@ export default {
|
|
this.$message.error("开始行不可以大于结束行");
|
|
this.$message.error("开始行不可以大于结束行");
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+
|
|
// 2. 获取 IndexedDB 数据
|
|
// 2. 获取 IndexedDB 数据
|
|
const indexeddbData = await getDataFromIndexedDB();
|
|
const indexeddbData = await getDataFromIndexedDB();
|
|
const region = this.getRegionData(indexeddbData);
|
|
const region = this.getRegionData(indexeddbData);
|
|
@@ -348,8 +351,14 @@ export default {
|
|
console.warn("当前选择的列未找到数据");
|
|
console.warn("当前选择的列未找到数据");
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ if (region[0].length > 1000 && this.ruleForm.type.length > 2) {
|
|
|
|
+ this.$message.warning(
|
|
|
|
+ "由于列数据过长,为了保证页面操作流畅,每次最多选择2个特征值进行计算。请分批次选择。"
|
|
|
|
+ );
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
// 3. 调用算法接口
|
|
// 3. 调用算法接口
|
|
|
|
+ // console.log(region, "region[0]");
|
|
const resData = await this.fetchAlgorithmData(region[0]);
|
|
const resData = await this.fetchAlgorithmData(region[0]);
|
|
|
|
|
|
// 4. 筛选和处理数据
|
|
// 4. 筛选和处理数据
|
|
@@ -359,9 +368,12 @@ export default {
|
|
const resObj = this.buildExportData(indexeddbData, filteredData);
|
|
const resObj = this.buildExportData(indexeddbData, filteredData);
|
|
this.storeData(resObj);
|
|
this.storeData(resObj);
|
|
this.resetForm();
|
|
this.resetForm();
|
|
- console.log(resObj, "resObj");
|
|
|
|
|
|
+ this.$message.success("成功");
|
|
|
|
+ this.loading = false;
|
|
} catch (error) {
|
|
} catch (error) {
|
|
console.error("提交过程中发生错误:", error);
|
|
console.error("提交过程中发生错误:", error);
|
|
|
|
+ this.$message.error(error);
|
|
|
|
+ this.loading = false;
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
|
|
@@ -466,7 +478,6 @@ export default {
|
|
|
|
|
|
return resObj;
|
|
return resObj;
|
|
},
|
|
},
|
|
-
|
|
|
|
resetForm() {
|
|
resetForm() {
|
|
this.ruleForm = {
|
|
this.ruleForm = {
|
|
max: "",
|
|
max: "",
|
|
@@ -502,7 +513,6 @@ export default {
|
|
this.activeName = tab.name;
|
|
this.activeName = tab.name;
|
|
}
|
|
}
|
|
},
|
|
},
|
|
-
|
|
|
|
// 自定义上传方法
|
|
// 自定义上传方法
|
|
customUpload(file) {
|
|
customUpload(file) {
|
|
const formData = new FormData();
|
|
const formData = new FormData();
|
|
@@ -510,7 +520,6 @@ export default {
|
|
// 使用 axios 自定义上传逻辑
|
|
// 使用 axios 自定义上传逻辑
|
|
console.log("自定义上传", file.name);
|
|
console.log("自定义上传", file.name);
|
|
},
|
|
},
|
|
-
|
|
|
|
// 验证并处理文件变化
|
|
// 验证并处理文件变化
|
|
validateAndHandleChange(fileList) {
|
|
validateAndHandleChange(fileList) {
|
|
// 判断 fileList 是否为数组(多个文件)还是单个文件
|
|
// 判断 fileList 是否为数组(多个文件)还是单个文件
|
|
@@ -528,7 +537,6 @@ export default {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
-
|
|
|
|
// 检查文件类型&多个文件选择,但多个文件总数大小不能超过50KB
|
|
// 检查文件类型&多个文件选择,但多个文件总数大小不能超过50KB
|
|
checkFileType(file) {
|
|
checkFileType(file) {
|
|
// 判断文件类型
|
|
// 判断文件类型
|
|
@@ -544,7 +552,6 @@ export default {
|
|
this.$message.error("只能上传csv文件或xlsx或xls文件");
|
|
this.$message.error("只能上传csv文件或xlsx或xls文件");
|
|
return false; // 返回false,阻止上传
|
|
return false; // 返回false,阻止上传
|
|
}
|
|
}
|
|
-
|
|
|
|
// 判断文件大小(以字节为单位,50KB = 51200字节)
|
|
// 判断文件大小(以字节为单位,50KB = 51200字节)
|
|
const maxSize = 50 * 1024; // 50KB
|
|
const maxSize = 50 * 1024; // 50KB
|
|
if (file.size > maxSize) {
|
|
if (file.size > maxSize) {
|
|
@@ -593,7 +600,6 @@ export default {
|
|
const reader = new FileReader();
|
|
const reader = new FileReader();
|
|
reader.onload = (e) => {
|
|
reader.onload = (e) => {
|
|
const data = new Uint8Array(e.target.result);
|
|
const data = new Uint8Array(e.target.result);
|
|
-
|
|
|
|
// 读取 Excel 文件
|
|
// 读取 Excel 文件
|
|
const workbook = XLSX.read(data, { type: "array" });
|
|
const workbook = XLSX.read(data, { type: "array" });
|
|
|
|
|
|
@@ -604,7 +610,6 @@ export default {
|
|
defval: "", // 确保空值不会导致错误
|
|
defval: "", // 确保空值不会导致错误
|
|
}
|
|
}
|
|
);
|
|
);
|
|
-
|
|
|
|
const fileData = {
|
|
const fileData = {
|
|
filename:
|
|
filename:
|
|
format(new Date(), "yyyyMMdd-HH:mm:ss") + "_" + ind + file.name,
|
|
format(new Date(), "yyyyMMdd-HH:mm:ss") + "_" + ind + file.name,
|