dev-QQq
qinzhenpen 2 years ago
parent eee2db0820
commit 7bba7aff51

@ -16,8 +16,8 @@ axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
const service = axios.create({ const service = axios.create({
// axios中请求配置有baseURL选项表示请求URL公共部分 // axios中请求配置有baseURL选项表示请求URL公共部分
// baseURL: import.meta.env.VITE_APP_BASE_API, // baseURL: import.meta.env.VITE_APP_BASE_API,
baseURL:'http://118.31.7.2:9868/', // baseURL:'http://118.31.7.2:9868/',
// baseURL:'http://192.168.2.16:9868/', baseURL:'http://192.168.2.28:9868/',
// 超时 // 超时
timeout: 100000 timeout: 100000
}) })

@ -124,7 +124,6 @@
<div> <div>
<el-checkbox v-model="formData.value5" label="{'面包', '啤酒'}" size="large" /> <el-checkbox v-model="formData.value5" label="{'面包', '啤酒'}" size="large" />
</div> </div>
</div> </div>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
@ -324,6 +323,7 @@
</template> </template>
<script setup> <script setup>
import * as portraitModel from "@/api/portraitModel";
import * as echarts from "echarts"; import * as echarts from "echarts";
import * as XLSX from "XLSX"; import * as XLSX from "XLSX";
import { MdEditor, MdPreview } from "md-editor-v3"; import { MdEditor, MdPreview } from "md-editor-v3";
@ -333,17 +333,29 @@ import { getUserInfo } from "@/utils/auth";
import { onMounted, reactive } from "vue"; import { onMounted, reactive } from "vue";
import popModel from "@/views/components/popModal.vue"; import popModel from "@/views/components/popModal.vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const formData=reactive({ const formData = reactive({
value1:'', value1: "",
value2:'', value2: "",
value3:'', value3: "",
value4:'', value4: "",
value5:'', value5: "",
}) });
const task=()=>{ const task = () => {
dialogVisible.value = false if (Object.values(formData).every((item) => item == "")) {
proxy.$modal.msgSuccess("提交完成!"); proxy.$modal.msgWarning("请填写完整");
} return;
}
portraitModel
.submit({
userId: JSON.parse(getUserInfo()).userId,
taskName: "关联规则挖掘",
numberOfErrors: 0,
})
.then((res) => {
dialogVisible.value = false;
proxy.$modal.msgSuccess("提交成功");
});
};
const dialogVisible = ref(false); const dialogVisible = ref(false);
const runResultShow = ref(false); const runResultShow = ref(false);
const tableLabel = reactive([{ prop: "date", label: "" }]); const tableLabel = reactive([{ prop: "date", label: "" }]);
@ -433,27 +445,27 @@ const handleChange = (info) => {
}; };
const flag = ref(false); const flag = ref(false);
onMounted(()=>{ onMounted(() => {
getList() getList();
}) });
const optionData=()=>{ const optionData = () => {
API.viewingMetrics({userId:JSON.parse(getUserInfo()).userId,tableName:input.value,algorithmName:'关联规则挖掘'}).then((res)=>{ API.viewingMetrics({ userId: JSON.parse(getUserInfo()).userId, tableName: input.value, algorithmName: "关联规则挖掘" }).then((res) => {
tableData.value=[] tableData.value = [];
input3.value='' input3.value = "";
res.data.forEach(element => { res.data.forEach((element) => {
tableData.value.push({ tableData.value.push({
text:element text: element,
}) });
}) });
}) });
} };
const selectedRows = ref([]); const selectedRows = ref([]);
const handleSelectionChange = (selection) => { const handleSelectionChange = (selection) => {
selectedRows.value = selection; selectedRows.value = selection;
}; };
const tableData2 = ref([]); const tableData2 = ref([]);
const tableData3 = ref([]); const tableData3 = ref([]);
const resTable2 = ref(); const resTable2 = ref([]);
const taskZB = () => { const taskZB = () => {
flag.value = true; flag.value = true;
if (selectedRows.value.length === 0) { if (selectedRows.value.length === 0) {
@ -545,7 +557,7 @@ const optionData2 = () => {
const exportTableRef = ref(null); const exportTableRef = ref(null);
const uplodFlag = ref(false); const uplodFlag = ref(false);
const computation = () => { const computation = () => {
if (resTable2.value.length === 0 || input2.value == "" || input3.value == "") { if (resTable2.value.length == 0 || input2.value == "" || input3.value == "") {
proxy.$modal.msgWarning("请先计算/对数据进行预处理!"); proxy.$modal.msgWarning("请先计算/对数据进行预处理!");
return; return;
} }
@ -755,7 +767,7 @@ const startOver = () => {
font-size: 16px; font-size: 16px;
} }
} }
:deep(.el-checkbox){ :deep(.el-checkbox) {
color:#ffffff; color: #ffffff;
} }
</style> </style>

@ -15,7 +15,6 @@
</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"> <el-scrollbar height="550px" style="padding: 0 10px" min-size="5">
<div> <div>
@ -65,7 +64,7 @@
<span style="font-weight: 400; font-size: 12px; color: #ffffff">最大迭代次数</span> <span style="font-weight: 400; font-size: 12px; color: #ffffff">最大迭代次数</span>
<el-input v-model="input6" style="width: 180px; margin-top: 5px" /> <el-input v-model="input6" style="width: 180px; margin-top: 5px" />
</div> </div>
<el-button @click="computation"></el-button> <el-button @click="clusterAnalysisCalculation"></el-button>
</div> </div>
</div> </div>
</el-scrollbar> </el-scrollbar>
@ -77,7 +76,6 @@
</div> </div>
</div> </div>
<div class="main-right"> <div class="main-right">
<el-scrollbar height="500px" ref="scrollbar" style="padding: 20px"> <el-scrollbar height="500px" ref="scrollbar" style="padding: 20px">
<div> <div>
@ -274,6 +272,8 @@
</template> </template>
<script setup> <script setup>
import * as portraitModel from "@/api/portraitModel";
import popModel from "@/views/components/popModal.vue"; import popModel from "@/views/components/popModal.vue";
import { htmlPdf } from "@/utils/pdf.js"; import { htmlPdf } from "@/utils/pdf.js";
import * as echarts from "echarts"; import * as echarts from "echarts";
@ -287,18 +287,33 @@ 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({ const formInline2 = reactive({
value1:'', value1: "",
value2:'', value2: "",
value3:'', value3: "",
value4:'', value4: "",
value5:'', value5: "",
value6:'', value6: "",
}) });
const task=()=>{ const task = () => {
dialogVisible.value = false for(let key in formInline2){
proxy.$modal.msgSuccess("提交完成!"); if(formInline2[key] == ""){
} proxy.$modal.msgError("请填写完整!");
return;
}
}
portraitModel
.submit({
userId: JSON.parse(getUserInfo()).userId,
taskName: "聚类分析",
numberOfErrors: 0,
})
.then((res) => {
dialogVisible.value = false;
proxy.$modal.msgSuccess("提交成功");
});
};
const algorithmicKnowledge = () => { const algorithmicKnowledge = () => {
runResultShow.value = true; runResultShow.value = true;
}; };
@ -361,7 +376,8 @@ onMounted(() => {
getList(); getList();
var chartDom = document.getElementById("main"); var chartDom = document.getElementById("main");
var chartDom2 = document.getElementById("main2"); var chartDom2 = document.getElementById("main2");
myChart = echarts.init(chartDom);472 myChart = echarts.init(chartDom);
472;
myChart2 = echarts.init(chartDom2); myChart2 = echarts.init(chartDom2);
// //
var option = { var option = {
@ -389,46 +405,46 @@ onMounted(() => {
// //
myChart.setOption(option); myChart.setOption(option);
myChart2.setOption(option); myChart2.setOption(option);
}) });
const optionData=()=>{ const optionData = () => {
API.viewingMetrics({userId:JSON.parse(getUserInfo()).userId,tableName:input.value,algorithmName:'聚类分析'}).then((res)=>{ API.viewingMetrics({ userId: JSON.parse(getUserInfo()).userId, tableName: input.value, algorithmName: "聚类分析" }).then((res) => {
tableData.value=[] tableData.value = [];
input3.value='' input3.value = "";
res.data.forEach(element => { res.data.forEach((element) => {
tableData.value.push({ tableData.value.push({
text:element text: element,
}) });
}) });
}) });
} };
const selectedRows = ref([]); const selectedRows = ref([]);
const handleSelectionChange = (selection) => { const handleSelectionChange = (selection) => {
selectedRows.value = selection; selectedRows.value = selection;
};
const tableData2 = ref([]);
const tableData3 = ref([]);
const resTable2 = ref();
const taskZB = () => {
flag.value = true;
if (selectedRows.value.length === 0) {
return proxy.$modal.msgWarning("请选择指标!");
}
const sendData = {
tableName: input.value,
userId: JSON.parse(getUserInfo()).userId,
fieldList: selectedRows.value.map((item) => item.text),
}; };
const tableData2=ref([]) API.analysisDataDisplay(sendData).then((res) => {
const tableData3=ref([]) tableLabel.length = 0;
const resTable2=ref()
const taskZB=()=>{
flag.value=true
if(selectedRows.value.length===0){
return
}
const sendData={
tableName:input.value,
userId:JSON.parse(getUserInfo()).userId,
fieldList:selectedRows.value.map(item=>item.text)
}
API.analysisDataDisplay(sendData).then((res)=>{
tableLabel.length=0
for (const key in res.data[0]) { for (const key in res.data[0]) {
tableLabel.push({ tableLabel.push({
label:key, label: key,
prop:key prop: key,
}) });
} }
tableData2.value=res.data tableData2.value = res.data;
flag.value=true flag.value = true;
proxy.$modal.msgSuccess("计算完成!"); proxy.$modal.msgSuccess("计算完成!");
tableData2.value = res.data; tableData2.value = res.data;
flag.value = true; flag.value = true;
@ -497,12 +513,12 @@ const optionData2 = () => {
proxy.$modal.msgSuccess("预处理成功!"); proxy.$modal.msgSuccess("预处理成功!");
}); });
} }
}
const showChart = ref(false); const showChart = ref(false);
// //
const nowData = ref([]); const nowData = ref([]);
const computation = () => { const clusterAnalysisCalculation = () => {
if (tableData2.value.length === 0 && input2.value == "" && input3.value == "") { if (tableData2.value.length === 0 || input2.value == "" || input3.value == "") {
proxy.$modal.msgWarning("请先计算/对数据进行预处理!"); proxy.$modal.msgWarning("请先计算/对数据进行预处理!");
return; return;
} }
@ -585,9 +601,9 @@ const computation = () => {
} else { } else {
proxy.$modal.msgWarning("请模型参数进行设置!"); proxy.$modal.msgWarning("请模型参数进行设置!");
} }
}; };
const exportTableRef = ref(null); const exportTableRef = ref(null);
const upLoad = () => { const upLoad = () => {
const tableDom = exportTableRef.value?.$el; const tableDom = exportTableRef.value?.$el;
if (!tableDom) { if (!tableDom) {
return; return;
@ -601,9 +617,9 @@ const upLoad = () => {
zip.generateAsync({ type: "blob" }).then((content) => { zip.generateAsync({ type: "blob" }).then((content) => {
saveAs(content, "聚类分析.zip"); saveAs(content, "聚类分析.zip");
}); });
}; };
const startOver = () => { const startOver = () => {
myChart.setOption({ myChart.setOption({
series: [ series: [
{ {
@ -630,14 +646,15 @@ const startOver = () => {
showChart.value = false; showChart.value = false;
tableLabel.length = 0; tableLabel.length = 0;
nowData.value = []; nowData.value = [];
}; };
//pdf //pdf
const handleExport = async (name) => { const handleExport = async (name) => {
var fileName = "聚类分析图表"; var fileName = "聚类分析图表";
const fileList = document.getElementsByClassName("pdfRef"); // const fileList = document.getElementsByClassName("pdfRef"); //
const pdfBlob = await htmlPdf(fileName, document.querySelector("#pdfRef"), fileList, true); const pdfBlob = await htmlPdf(fileName, document.querySelector("#pdfRef"), fileList, true);
return pdfBlob; return pdfBlob;
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

@ -80,26 +80,25 @@
<span>重新开始</span> <span>重新开始</span>
</div> </div>
</div> </div>
</div> </div>
<div class="main-right"> <div class="main-right">
<el-scrollbar height="500px" ref="scrollbar" style="padding: 20px;"> <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 :data="tableData2" style="width: 94%;margin-top:10px" :header-cell-style="headerCellStyle" height="350"> <el-table :data="tableData2" style="width: 94%; 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" /> -->
</div> </div>
<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 class="imgBtn" v-if="flagUP" @click="upLoad"></el-button> <el-button class="imgBtn" v-if="flagUP" @click="upLoad"></el-button>
<el-table :data="tableData3" ref="exportTableRef" row-key="TSuid" style="width: 94%;margin-top:10px" :header-cell-style="headerCellStyle" height="350"> <el-table :data="tableData3" ref="exportTableRef" row-key="TSuid" style="width: 94%; margin-top: 10px" :header-cell-style="headerCellStyle" height="350">
<el-table-column v-for="column in tableLabel2" :key="column.prop" :prop="column.prop" :label="column.label" align="center"/> <el-table-column v-for="column in tableLabel2" :key="column.prop" :prop="column.prop" :label="column.label" align="center" />
<el-table-column v-if="flagColumn" label="预测" align="center"> <el-table-column v-if="flagColumn" label="预测" align="center">
<template #default="scope"> <template #default="scope">
<el-button type="primary" link @click="handleClick(scope.row)" v-if="predictionResults===''"></el-button> <el-button type="primary" link @click="handleClick(scope.row)" v-if="predictionResults === ''"></el-button>
<span v-else>{{predictionResults}}</span> <span v-else>{{ predictionResults }}</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -109,13 +108,7 @@
</div> </div>
<!-- </el-scrollbar> --> <!-- </el-scrollbar> -->
<el-dialog <el-dialog v-model="dialogVisible" title="实训任务提交" width="600" custom-class="dialogClass" :show-close="false">
v-model="dialogVisible"
title="实训任务提交"
width="600"
custom-class="dialogClass"
:show-close="false"
>
<template #header="{ close, titleId, titleClass }"> <template #header="{ close, titleId, titleClass }">
<div class="my-header"> <div class="my-header">
<span :id="titleId" :class="titleClass">实训任务提交</span> <span :id="titleId" :class="titleClass">实训任务提交</span>
@ -314,6 +307,8 @@
</template> </template>
<script setup> <script setup>
import * as portraitModel from "@/api/portraitModel";
import popModel from "@/views/components/popModal.vue"; import popModel from "@/views/components/popModal.vue";
import * as echarts from "echarts"; import * as echarts from "echarts";
import * as API from "@/api/AI.js"; import * as API from "@/api/AI.js";
@ -322,15 +317,29 @@ import * as XLSX from "XLSX";
import { onMounted, reactive } from "vue"; import { onMounted, reactive } from "vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const dialogVisible = ref(false); const dialogVisible = ref(false);
const formInline3=reactive({ const formInline3 = reactive({
value1:'', value1: "",
value2:'', value2: "",
value3:'', value3: "",
}) });
const task=()=>{ const task = () => {
dialogVisible.value = false for (let key in formInline3) {
if (formInline3[key] == "") {
proxy.$modal.msgWarning("请填写完整!");
return;
}
}
portraitModel
.submit({
userId: JSON.parse(getUserInfo()).userId,
taskName: "回归分析",
numberOfErrors: 0,
})
.then((res) => {
dialogVisible.value = false;
proxy.$modal.msgSuccess("提交完成!"); proxy.$modal.msgSuccess("提交完成!");
} });
};
const dialogVisible2 = ref(false); const dialogVisible2 = ref(false);
const flagColumn = ref(false); const flagColumn = ref(false);
const runResultShow = ref(false); const runResultShow = ref(false);
@ -414,14 +423,14 @@ const formInline = reactive({
}); });
const input = ref(); const input = ref();
const options = ref([]); const options = ref([]);
const input2 = ref(''); const input2 = ref("");
const options2 = ref([ const options2 = ref([
{ {
value: "数据区重", value: "数据区重",
label: "数据去重", label: "数据去重",
}, },
]); ]);
const input3 = ref(''); const input3 = ref("");
const options3 = ref([ const options3 = ref([
{ {
value: "缺失值处理--剔除数据", value: "缺失值处理--剔除数据",
@ -479,7 +488,7 @@ const optionData2 = () => {
// //
const computation = () => { const computation = () => {
if (tableData.value.length === 0 || input2.value=='' || input3.value=='') { if (tableData.value.length === 0 || input2.value == "" || input3.value == "") {
proxy.$modal.msgWarning("请先计算/对数据进行预处理!"); proxy.$modal.msgWarning("请先计算/对数据进行预处理!");
return; return;
} }

@ -2,7 +2,7 @@
* @Author: qinzhenpen qzp1807@126.com * @Author: qinzhenpen qzp1807@126.com
* @Date: 2024-07-15 15:44:46 * @Date: 2024-07-15 15:44:46
* @LastEditors: qinzhenpen qzp1807@126.com * @LastEditors: qinzhenpen qzp1807@126.com
* @LastEditTime: 2024-08-21 17:56:44 * @LastEditTime: 2024-08-21 18:47:09
* @FilePath: \digital-marketing\vite.config.js * @FilePath: \digital-marketing\vite.config.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
@ -46,7 +46,7 @@ export default defineConfig(({ mode, command }) => {
} }
}, },
esbuild: { esbuild: {
drop: ['console', 'debugger'], // drop: ['console', 'debugger'],
}, },
//fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file //fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
css: { css: {

Loading…
Cancel
Save