|
|
|
@ -1,5 +1,5 @@
|
|
|
|
<template>
|
|
|
|
<template>
|
|
|
|
<el-scrollbar ref="scrollbar" height="800px">
|
|
|
|
<!-- <el-scrollbar ref="scrollbar" height="800px"> -->
|
|
|
|
<div class="main-top">
|
|
|
|
<div class="main-top">
|
|
|
|
<span style="font-weight: bold; font-size: 18px; color: #3596eb">任务描述</span>
|
|
|
|
<span style="font-weight: bold; font-size: 18px; color: #3596eb">任务描述</span>
|
|
|
|
<p style="font-weight: 400; font-size: 12px; color: #e6e6e6">(给出任务清单参考,做哪些数据的统计分析)Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar sic tempor. Sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum, nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus pronin sapien nunc accuan eget.</p>
|
|
|
|
<p style="font-weight: 400; font-size: 12px; color: #e6e6e6">(给出任务清单参考,做哪些数据的统计分析)Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar sic tempor. Sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum, nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus pronin sapien nunc accuan eget.</p>
|
|
|
|
@ -15,7 +15,9 @@
|
|
|
|
</el-button>
|
|
|
|
</el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="app-main">
|
|
|
|
<div class="app-main">
|
|
|
|
|
|
|
|
|
|
|
|
<div class="main-left">
|
|
|
|
<div class="main-left">
|
|
|
|
|
|
|
|
<el-scrollbar height="550px" style="padding: 0 10px" min-size="5">
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<div class="left-top">
|
|
|
|
<div class="left-top">
|
|
|
|
<span>一、选择指标</span>
|
|
|
|
<span>一、选择指标</span>
|
|
|
|
@ -66,6 +68,7 @@
|
|
|
|
<el-button @click="computation">计算</el-button>
|
|
|
|
<el-button @click="computation">计算</el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</el-scrollbar>
|
|
|
|
<div style="margin-top: auto">
|
|
|
|
<div style="margin-top: auto">
|
|
|
|
<div class="startOver" @click="startOver()">
|
|
|
|
<div class="startOver" @click="startOver()">
|
|
|
|
<img src="../../../assets/images/重新开始.png" alt="" />
|
|
|
|
<img src="../../../assets/images/重新开始.png" alt="" />
|
|
|
|
@ -73,10 +76,13 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="main-right">
|
|
|
|
<div class="main-right">
|
|
|
|
|
|
|
|
<el-scrollbar height="500px" ref="scrollbar" style="padding: 20px">
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<span style="font-weight: bold; font-size: 18px; color: #3596eb">分析数据:</span>
|
|
|
|
<span style="font-weight: bold; font-size: 18px; color: #3596eb">分析数据:</span>
|
|
|
|
<el-table ref="exportTableRef" :data="tableData2" style="width: 94%; margin-top: 10px" :header-cell-style="headerCellStyle" height="350">
|
|
|
|
<el-table ref="exportTableRef" :data="tableData2" style="width: 100%; margin-top: 10px" :header-cell-style="headerCellStyle" height="350">
|
|
|
|
<el-table-column v-for="column in tableLabel" :key="column.prop" :prop="column.prop" :label="column.label" align="center" />
|
|
|
|
<el-table-column v-for="column in tableLabel" :key="column.prop" :prop="column.prop" :label="column.label" align="center" />
|
|
|
|
</el-table>
|
|
|
|
</el-table>
|
|
|
|
<!-- <el-pagination style="margin-top:10px" background layout="prev, pager, next" :total="1000" /> -->
|
|
|
|
<!-- <el-pagination style="margin-top:10px" background layout="prev, pager, next" :total="1000" /> -->
|
|
|
|
@ -84,7 +90,7 @@
|
|
|
|
<div class="analysisResults" style="margin-top: 20px">
|
|
|
|
<div class="analysisResults" style="margin-top: 20px">
|
|
|
|
<span style="font-weight: bold; font-size: 18px; color: #3596eb; display: block">分析结果:</span>
|
|
|
|
<span style="font-weight: bold; font-size: 18px; color: #3596eb; display: block">分析结果:</span>
|
|
|
|
<el-button @click="upLoad" v-if="showChart">下载</el-button>
|
|
|
|
<el-button @click="upLoad" v-if="showChart">下载</el-button>
|
|
|
|
<el-table :data="tableData3" row-key="TSuid" style="width: 94%; margin-top: 10px" :header-cell-style="headerCellStyle" height="350">
|
|
|
|
<el-table :data="tableData3" row-key="TSuid" style="width: 100%; margin-top: 10px" :header-cell-style="headerCellStyle" height="350">
|
|
|
|
<el-table-column v-for="column in tableLabel" :key="column.prop" :prop="column.prop" :label="column.label" align="center" />
|
|
|
|
<el-table-column v-for="column in tableLabel" :key="column.prop" :prop="column.prop" :label="column.label" align="center" />
|
|
|
|
</el-table>
|
|
|
|
</el-table>
|
|
|
|
<!-- <el-pagination style="margin-top:10px" background layout="prev, pager, next" :total="1000" /> -->
|
|
|
|
<!-- <el-pagination style="margin-top:10px" background layout="prev, pager, next" :total="1000" /> -->
|
|
|
|
@ -99,9 +105,10 @@
|
|
|
|
<div id="main2" style="width: 500px; height: 500px"></div>
|
|
|
|
<div id="main2" style="width: 500px; height: 500px"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</el-scrollbar>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-scrollbar>
|
|
|
|
<!-- </el-scrollbar> -->
|
|
|
|
|
|
|
|
|
|
|
|
<el-dialog v-model="dialogVisible" title="实训任务提交" width="600" custom-class="dialogClass" :show-close="false">
|
|
|
|
<el-dialog v-model="dialogVisible" title="实训任务提交" width="600" custom-class="dialogClass" :show-close="false">
|
|
|
|
<template #header="{ close, titleId, titleClass }">
|
|
|
|
<template #header="{ close, titleId, titleClass }">
|
|
|
|
@ -114,31 +121,31 @@
|
|
|
|
<div class="from-item">
|
|
|
|
<div class="from-item">
|
|
|
|
<el-form :inline="true" label-position="right" label-width="115px" :model="form" class="demo-form-inline">
|
|
|
|
<el-form :inline="true" label-position="right" label-width="115px" :model="form" class="demo-form-inline">
|
|
|
|
<el-form-item label="聚类个数:">
|
|
|
|
<el-form-item label="聚类个数:">
|
|
|
|
<el-input style="width: 120px" v-model="formInline.user" clearable />
|
|
|
|
<el-input style="width: 120px" v-model="formInline2.value1" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="最大迭代次数:">
|
|
|
|
<el-form-item label="最大迭代次数:">
|
|
|
|
<el-input style="width: 120px" v-model="formInline.user" clearable />
|
|
|
|
<el-input style="width: 120px" v-model="formInline2.value2" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
|
|
|
</el-form>
|
|
|
|
<span style="color: #ffffff; font-weight: 700">各簇类特征描述:</span>
|
|
|
|
<span style="color: #ffffff; font-weight: 700">各簇类特征描述:</span>
|
|
|
|
<el-form :inline="true" label-position="right" style="margin: 15px 0" label-width="115px" :model="form" class="demo-form-inline">
|
|
|
|
<el-form :inline="true" label-position="right" style="margin: 15px 0" label-width="115px" :model="form" class="demo-form-inline">
|
|
|
|
<el-form-item label="簇类1:">
|
|
|
|
<el-form-item label="簇类1:">
|
|
|
|
<el-input style="width: 240px" v-model="formInline.user" clearable />
|
|
|
|
<el-input style="width: 240px" v-model="formInline2.value3" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="簇类2:">
|
|
|
|
<el-form-item label="簇类2:">
|
|
|
|
<el-input style="width: 240px" v-model="formInline.user" clearable />
|
|
|
|
<el-input style="width: 240px" v-model="formInline2.value4" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="簇类3:">
|
|
|
|
<el-form-item label="簇类3:">
|
|
|
|
<el-input style="width: 240px" v-model="formInline.user" clearable />
|
|
|
|
<el-input style="width: 240px" v-model="formInline2.value5" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="簇类4:">
|
|
|
|
<el-form-item label="簇类4:">
|
|
|
|
<el-input style="width: 240px" v-model="formInline.user" clearable />
|
|
|
|
<el-input style="width: 240px" v-model="formInline2.value6" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
|
|
|
</el-form>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<template #footer>
|
|
|
|
<template #footer>
|
|
|
|
<div class="dialog-footer">
|
|
|
|
<div class="dialog-footer">
|
|
|
|
<el-button @click="dialogVisible = false">确定</el-button>
|
|
|
|
<el-button @click="task()">确定</el-button>
|
|
|
|
<el-button type="primary" @click="dialogVisible = false">返回</el-button>
|
|
|
|
<el-button type="primary" @click="dialogVisible = false">返回</el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
@ -274,12 +281,24 @@ import * as XLSX from "XLSX";
|
|
|
|
import JSZip from "jszip";
|
|
|
|
import JSZip from "jszip";
|
|
|
|
import * as API from "@/api/AI.js";
|
|
|
|
import * as API from "@/api/AI.js";
|
|
|
|
import { getUserInfo } from "@/utils/auth";
|
|
|
|
import { getUserInfo } from "@/utils/auth";
|
|
|
|
import { onMounted } from "vue";
|
|
|
|
import { onMounted, reactive } from "vue";
|
|
|
|
const runResultShow = ref(false);
|
|
|
|
const runResultShow = ref(false);
|
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
const dialogVisible = ref(false);
|
|
|
|
const dialogVisible = ref(false);
|
|
|
|
const tableLabel = reactive([{ prop: "date", label: "" }]);
|
|
|
|
const tableLabel = reactive([{ prop: "date", label: "" }]);
|
|
|
|
const isFlag = ref(false);
|
|
|
|
const isFlag = ref(false);
|
|
|
|
|
|
|
|
const formInline2=reactive({
|
|
|
|
|
|
|
|
value1:'',
|
|
|
|
|
|
|
|
value2:'',
|
|
|
|
|
|
|
|
value3:'',
|
|
|
|
|
|
|
|
value4:'',
|
|
|
|
|
|
|
|
value5:'',
|
|
|
|
|
|
|
|
value6:'',
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
const task=()=>{
|
|
|
|
|
|
|
|
dialogVisible.value = false
|
|
|
|
|
|
|
|
proxy.$modal.msgSuccess("提交完成!");
|
|
|
|
|
|
|
|
}
|
|
|
|
const algorithmicKnowledge = () => {
|
|
|
|
const algorithmicKnowledge = () => {
|
|
|
|
runResultShow.value = true;
|
|
|
|
runResultShow.value = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
@ -410,66 +429,73 @@ const resTable2=ref()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
tableData2.value=res.data
|
|
|
|
tableData2.value=res.data
|
|
|
|
flag.value=true
|
|
|
|
flag.value=true
|
|
|
|
})
|
|
|
|
proxy.$modal.msgSuccess("计算完成!");
|
|
|
|
}
|
|
|
|
tableData2.value = res.data;
|
|
|
|
const formInline=reactive({
|
|
|
|
flag.value = true;
|
|
|
|
user:'',
|
|
|
|
});
|
|
|
|
region:''
|
|
|
|
};
|
|
|
|
})
|
|
|
|
const formInline = reactive({
|
|
|
|
const input=ref()
|
|
|
|
user: "",
|
|
|
|
const options = ref([])
|
|
|
|
region: "",
|
|
|
|
const input2=ref()
|
|
|
|
});
|
|
|
|
const options2=ref([
|
|
|
|
const input = ref();
|
|
|
|
|
|
|
|
const options = ref([]);
|
|
|
|
|
|
|
|
const input2 = ref();
|
|
|
|
|
|
|
|
const options2 = ref([
|
|
|
|
{
|
|
|
|
{
|
|
|
|
value:'数据区重',
|
|
|
|
value: "数据区重",
|
|
|
|
label:'数据去重'
|
|
|
|
label: "数据去重",
|
|
|
|
}
|
|
|
|
},
|
|
|
|
])
|
|
|
|
]);
|
|
|
|
const input3=ref()
|
|
|
|
const input3 = ref();
|
|
|
|
const options3=ref([
|
|
|
|
const options3 = ref([
|
|
|
|
{
|
|
|
|
{
|
|
|
|
value:'缺失值处理--剔除数据',
|
|
|
|
value: "缺失值处理--剔除数据",
|
|
|
|
label:'缺失值处理--剔除数据'
|
|
|
|
label: "缺失值处理--剔除数据",
|
|
|
|
},{
|
|
|
|
|
|
|
|
value:'缺失值处理--均值替换',
|
|
|
|
|
|
|
|
label:'缺失值处理--均值替换'
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
])
|
|
|
|
|
|
|
|
const input4=ref()
|
|
|
|
|
|
|
|
const options4=ref([
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
value:'K-means',
|
|
|
|
value: "缺失值处理--均值替换",
|
|
|
|
label:'K-means'
|
|
|
|
label: "缺失值处理--均值替换",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
])
|
|
|
|
]);
|
|
|
|
const input5=ref()
|
|
|
|
const input4 = ref();
|
|
|
|
const input6=ref()
|
|
|
|
const options4 = ref([
|
|
|
|
const taskSubmit=()=>{
|
|
|
|
{
|
|
|
|
dialogVisible.value=true
|
|
|
|
value: "K-means",
|
|
|
|
}
|
|
|
|
label: "K-means",
|
|
|
|
const tableData = ref([
|
|
|
|
},
|
|
|
|
|
|
|
|
]);
|
|
|
|
])
|
|
|
|
const input5 = ref();
|
|
|
|
const headerCellStyle=()=>{
|
|
|
|
const input6 = ref();
|
|
|
|
|
|
|
|
const taskSubmit = () => {
|
|
|
|
|
|
|
|
dialogVisible.value = true;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
const tableData = ref([]);
|
|
|
|
|
|
|
|
const headerCellStyle = () => {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
backgroundColor: "#1882DE !important", // 设置表头背景颜色
|
|
|
|
backgroundColor: "#1882DE !important", // 设置表头背景颜色
|
|
|
|
color: "#ffffff !important",
|
|
|
|
color: "#ffffff !important",
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
const optionData2 = () => {
|
|
|
|
|
|
|
|
if (tableData2.value.length === 0) {
|
|
|
|
|
|
|
|
input2.value = "";
|
|
|
|
|
|
|
|
input3.value = "";
|
|
|
|
|
|
|
|
proxy.$modal.msgWarning("请先选择指标!");
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
const optionData2=()=>{
|
|
|
|
if (input2.value && input3.value) {
|
|
|
|
if(input2.value&&input3.value){
|
|
|
|
const sendData = ref({
|
|
|
|
const sendData=ref({
|
|
|
|
mapList: tableData2.value,
|
|
|
|
mapList:tableData2.value,
|
|
|
|
method: input3.value,
|
|
|
|
method:input3.value,
|
|
|
|
userId: JSON.parse(getUserInfo()).userId,
|
|
|
|
userId:JSON.parse(getUserInfo()).userId
|
|
|
|
});
|
|
|
|
})
|
|
|
|
API.dataPreprocessing(sendData.value).then((res) => {
|
|
|
|
API.dataPreprocessing(sendData.value).then((res)=>{
|
|
|
|
resTable2.value = res.data;
|
|
|
|
resTable2.value=res.data
|
|
|
|
tableData2.value = [];
|
|
|
|
tableData2.value=[]
|
|
|
|
tableData2.value = res.data;
|
|
|
|
tableData2.value=res.data
|
|
|
|
|
|
|
|
proxy.$modal.msgSuccess("预处理成功!");
|
|
|
|
proxy.$modal.msgSuccess("预处理成功!");
|
|
|
|
})
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const showChart = ref(false);
|
|
|
|
const showChart = ref(false);
|
|
|
|
@ -643,20 +669,20 @@ const handleExport = async (name) => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.app-main {
|
|
|
|
.app-main {
|
|
|
|
// background-color: #f5f5f5;
|
|
|
|
// background-color: #f5f5f5;
|
|
|
|
min-height: 965px;
|
|
|
|
// min-height: 965px;
|
|
|
|
margin: 5px 20px 0;
|
|
|
|
margin: 5px 20px 0;
|
|
|
|
height: 100%;
|
|
|
|
height: 100%;
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
overflow: auto;
|
|
|
|
// overflow: auto;
|
|
|
|
.main-left {
|
|
|
|
.main-left {
|
|
|
|
//水平居中
|
|
|
|
//水平居中
|
|
|
|
flex-direction: column;
|
|
|
|
flex-direction: column;
|
|
|
|
min-height: 965px;
|
|
|
|
// min-height: 965px;
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
width: 205px;
|
|
|
|
width: 205px;
|
|
|
|
// height: 100%;
|
|
|
|
height: 100%;
|
|
|
|
background: #041c49;
|
|
|
|
background: #041c49;
|
|
|
|
padding: 0px 10px;
|
|
|
|
// padding: 0px 10px;
|
|
|
|
.left-top {
|
|
|
|
.left-top {
|
|
|
|
padding: 10px;
|
|
|
|
padding: 10px;
|
|
|
|
span {
|
|
|
|
span {
|
|
|
|
@ -682,7 +708,7 @@ const handleExport = async (name) => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.startOver {
|
|
|
|
.startOver {
|
|
|
|
margin-left: -10px;
|
|
|
|
// margin-left: -10px;
|
|
|
|
width: 205px;
|
|
|
|
width: 205px;
|
|
|
|
height: 55px;
|
|
|
|
height: 55px;
|
|
|
|
background: #00f4ff;
|
|
|
|
background: #00f4ff;
|
|
|
|
@ -704,7 +730,7 @@ const handleExport = async (name) => {
|
|
|
|
.main-right {
|
|
|
|
.main-right {
|
|
|
|
width: 1639px;
|
|
|
|
width: 1639px;
|
|
|
|
// height: 100%;
|
|
|
|
// height: 100%;
|
|
|
|
padding: 20px;
|
|
|
|
// padding: 20px;
|
|
|
|
border: 1px solid #0452c6;
|
|
|
|
border: 1px solid #0452c6;
|
|
|
|
:deep(.el-table__header) {
|
|
|
|
:deep(.el-table__header) {
|
|
|
|
.el-table__cell {
|
|
|
|
.el-table__cell {
|
|
|
|
|