Explorar o código

style: 在views下加子文件夹管理页面,继续增加数据分析部分的页面显示

icenaked %!s(int64=3) %!d(string=hai) anos
pai
achega
cab69beb60

+ 1 - 0
src/api/_prefix.js

@@ -7,5 +7,6 @@ export const PIC_MODULE= `${API_MODULE}/picture`
 export const POST_MODULE=`${NEW_API_MODULE}/posts`
 export const POST_MODULE=`${NEW_API_MODULE}/posts`
 export const COMMENT_MODULE=`${NEW_API_MODULE}/comment`
 export const COMMENT_MODULE=`${NEW_API_MODULE}/comment`
 export const MAIL_MODULE=`${NEW_API_MODULE}/mail`
 export const MAIL_MODULE=`${NEW_API_MODULE}/mail`
+export const ANALYSIS_MODULE = `${API_MODULE}/analysis`
 
 
 
 

+ 18 - 0
src/api/analysisConfig.js

@@ -0,0 +1,18 @@
+import {ANALYSIS_MODULE, CONFIG_MODULE} from "./_prefix";
+import {axios} from '../utils/request'
+
+
+/**
+ * 获取所有模型配置 GET /get/all/{userId} 传入用户id
+ * @param {*} payload
+ * @returns
+ */
+export const getAnalysisConfig = payload => {
+    // console.log("getAllConfig",payload);
+    const {uid} = payload;
+    console.log("payload",payload);
+    console.log("uid",uid);
+    return axios.get(`${ANALYSIS_MODULE}/configs?userId=${uid}`).then(res => {
+        return res;
+    });
+}

+ 12 - 8
src/components/Sidebar.vue

@@ -74,8 +74,18 @@ export default {
 
 
           {
           {
               icon: "el-icon-lx-cascades",
               icon: "el-icon-lx-cascades",
-              index: "/config",
-              title: "模型配置",
+              title: "配置",
+              index:2,
+              subs: [
+                {
+                  index: "/config",
+                  title: "模型配置"
+                },
+                {
+                  index: "/analysisConfig",
+                  title: "数据统计配置",
+                },
+              ]
           },
           },
 
 
           // {
           // {
@@ -102,12 +112,6 @@ export default {
             title: "预测结果",
             title: "预测结果",
           },
           },
 
 
-          {
-            icon: "el-icon-lx-cascades",
-            index: "/analysisConfig",
-            title: "数据统计配置",
-          },
-
           {
           {
             icon: "el-icon-pie-chart",
             icon: "el-icon-pie-chart",
             index: "/analysis",
             index: "/analysis",

+ 17 - 9
src/router/index.js

@@ -31,7 +31,7 @@ const routes = [
                 meta: {
                 meta: {
                     title: '机器学习模型'
                     title: '机器学习模型'
                 },
                 },
-                component: () => import ( /* webpackChunkName: "dashboard" */ "../views/ModelList.vue")
+                component: () => import ( /* webpackChunkName: "dashboard" */ "../views/ml/ModelList.vue")
             },
             },
             // {
             // {
             //     path: "/dlModelList",
             //     path: "/dlModelList",
@@ -48,7 +48,7 @@ const routes = [
                 meta: {
                 meta: {
                     title: '模型训练'
                     title: '模型训练'
                 },
                 },
-                component: () => import ( /* webpackChunkName: "dashboard" */ "../views/ModelDetail.vue")
+                component: () => import ( /* webpackChunkName: "dashboard" */ "../views/ml/ModelDetail.vue")
             },
             },
 
 
             {
             {
@@ -72,7 +72,7 @@ const routes = [
                 meta: {
                 meta: {
                     title: '模型配置'
                     title: '模型配置'
                 },
                 },
-                component: () => import ( /* webpackChunkName: "table" */ "../views/ConfigList.vue")
+                component: () => import ( /* webpackChunkName: "table" */ "../views/ml/ConfigList.vue")
             },
             },
             {
             {
                 path: "/charts",
                 path: "/charts",
@@ -80,7 +80,7 @@ const routes = [
                 meta: {
                 meta: {
                     title: '训练结果'
                     title: '训练结果'
                 },
                 },
-                component: () => import ( /* webpackChunkName: "charts" */ "../views/BaseCharts.vue")
+                component: () => import ( /* webpackChunkName: "charts" */ "../views/ml/BaseCharts.vue")
             },
             },
             {
             {
                 path: "/analysisConfig",
                 path: "/analysisConfig",
@@ -88,7 +88,15 @@ const routes = [
                 meta: {
                 meta: {
                     title: '数据统计配置'
                     title: '数据统计配置'
                 },
                 },
-                component: () => import ( /* webpackChunkName: "charts" */ "../views/AnalysisConfig.vue")
+                component: () => import ( /* webpackChunkName: "charts" */ "../views/analysis/AnalysisConfig.vue")
+            },
+            {
+                path: "/analysisConfigDetail",
+                name: "analysisConfigDetail",
+                meta: {
+                    title: '数据统计配置详情'
+                },
+                component: () => import ( /* webpackChunkName: "charts" */ "../views/analysis/AnalysisConfigDetail.vue")
             },
             },
             {
             {
                 path: "/analysis",
                 path: "/analysis",
@@ -96,7 +104,7 @@ const routes = [
                 meta: {
                 meta: {
                     title: '数据分析'
                     title: '数据分析'
                 },
                 },
-                component: () => import ( /* webpackChunkName: "charts" */ "../views/Analysis.vue")
+                component: () => import ( /* webpackChunkName: "charts" */ "../views/analysis/Analysis.vue")
             },
             },
             {
             {
                 path: "/form",
                 path: "/form",
@@ -152,7 +160,7 @@ const routes = [
                 meta:{
                 meta:{
                     title:'编辑配置'
                     title:'编辑配置'
                 },
                 },
-                component:()=>import(/*webpackChunkName:"configform" */ '../views/ConfigForm.vue')
+                component:()=>import(/*webpackChunkName:"configform" */ '../views/ml/ConfigForm.vue')
             },
             },
             {
             {
                 path:'/configformp/:id',
                 path:'/configformp/:id',
@@ -160,7 +168,7 @@ const routes = [
                 meta:{
                 meta:{
                     title:'更改配置'
                     title:'更改配置'
                 },
                 },
-                component:()=>import(/*webpackChunkName:"configform" */ '../views/changeConfig.vue')
+                component:()=>import(/*webpackChunkName:"configform" */ '../views/ml/changeConfig.vue')
             },
             },
             {
             {
                 path:'/ConfigDetail',
                 path:'/ConfigDetail',
@@ -168,7 +176,7 @@ const routes = [
                 meta:{
                 meta:{
                     title:'配置详情'
                     title:'配置详情'
                 },
                 },
-                component:()=>import(/*webpackChunkName:"configform" */ '../views/ConfigDetail.vue')
+                component:()=>import(/*webpackChunkName:"configform" */ '../views/ml/ConfigDetail.vue')
             },
             },
             //无用组件or路由
             //无用组件or路由
             // {
             // {

+ 44 - 2
src/views/Analysis.vue → src/views/analysis/Analysis.vue

@@ -15,9 +15,12 @@
         @selection-change="handleSelectionChange"
         @selection-change="handleSelectionChange"
         @row-dblclick="getConfigDetail"
         @row-dblclick="getConfigDetail"
     >
     >
-      <el-table-column prop="confName" label="配置名"></el-table-column>
+      <el-table-column prop="configName" label="配置名"></el-table-column>
       <el-table-column prop="fileName" label="文件名"></el-table-column>
       <el-table-column prop="fileName" label="文件名"></el-table-column>
-      <el-table-column label="查看历史分析"></el-table-column>
+      <el-table-column label="查看历史分析">
+          <el-button type="text" icon="el-icon-circle-check" class="yellow"
+                     @click="handleTrainRes(scope.$index, scope.row)">查看分析结果</el-button>
+      </el-table-column>
       <el-table-column label="操作" width="180" align="center">
       <el-table-column label="操作" width="180" align="center">
         <template #default="scope">
         <template #default="scope">
 
 
@@ -48,6 +51,12 @@ export default {
     const tableData = ref([]);
     const tableData = ref([]);
     const pageTotal = ref(0);
     const pageTotal = ref(0);
 
 
+    tableData.value = [
+      {configId: 1, configName: 'a', fileName: 'af', chosenColumn: ['melon','person']},
+      {configId: 2, configName: 'b', fileName: 'bf', chosenColumn: ['melon','person']}
+    ];
+
+
     return{
     return{
       tableData,
       tableData,
       pageTotal,
       pageTotal,
@@ -57,5 +66,38 @@ export default {
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
+.handle-box {
+  margin-bottom: 20px;
+}
 
 
+.handle-select {
+  width: 120px;
+}
+
+.handle-input {
+  width: 300px;
+  display: inline-block;
+}
+.table {
+  width: 100%;
+  font-size: 14px;
+}
+.red {
+  color: #ff0000;
+}
+.green {
+  color: rgb(32, 220, 88)
+}
+.yellow{
+  color:yellowgreen;
+}
+.mr10 {
+  margin-right: 10px;
+}
+.table-td-thumb {
+  display: block;
+  margin: auto;
+  width: 40px;
+  height: 40px;
+}
 </style>
 </style>

+ 47 - 5
src/views/AnalysisConfig.vue → src/views/analysis/AnalysisConfig.vue

@@ -15,15 +15,13 @@
           @selection-change="handleSelectionChange"
           @selection-change="handleSelectionChange"
           @row-dblclick="getConfigDetail"
           @row-dblclick="getConfigDetail"
       >
       >
-        <el-table-column prop="confName" label="配置名"></el-table-column>
+        <el-table-column prop="configName" label="配置名"></el-table-column>
         <el-table-column prop="fileName" label="文件名"></el-table-column>
         <el-table-column prop="fileName" label="文件名"></el-table-column>
-        <el-table-column label="选中字段">
-          <template #default="scope">{{ scope.row.name }}</template>
-        </el-table-column>
+        <el-table-column prop="chosenColumn" label="选中字段"></el-table-column>
         <el-table-column label="操作" width="180" align="center">
         <el-table-column label="操作" width="180" align="center">
           <template #default="scope">
           <template #default="scope">
 
 
-            <router-link :to="{path:'/ConfigDetail',query:{configId:scope.row.configId}}">
+            <router-link :to="{path:'/analysisConfigDetail',query:{configId:scope.row.configId}}">
               <el-button type="text" icon="el-icon-view" >查看详情
               <el-button type="text" icon="el-icon-view" >查看详情
               </el-button>
               </el-button>
             </router-link>
             </router-link>
@@ -44,6 +42,7 @@
 
 
 <script>
 <script>
 import {ref} from "vue";
 import {ref} from "vue";
+import {getAnalysisConfig} from "../../api/analysisConfig";
 
 
 export default {
 export default {
   name: "AnalysisConfig",
   name: "AnalysisConfig",
@@ -51,14 +50,57 @@ export default {
     const tableData = ref([]);
     const tableData = ref([]);
     const pageTotal = ref(0);
     const pageTotal = ref(0);
 
 
+    const getPage=()=> {
+      getAnalysisConfig({
+        uid: 1
+      }).then(res => {
+        console.log("res",res);
+        tableData.value = res.data;
+      })
+    };
+    //getPage();
+    tableData.value = [
+      {configId: 1, configName: 'a', fileName: 'af', chosenColumn: ['melon','person']},
+      {configId: 2, configName: 'b', fileName: 'bf', chosenColumn: ['melon','person']}
+    ];
+
     return{
     return{
       tableData,
       tableData,
       pageTotal,
       pageTotal,
+      getPage,
     };
     };
   }
   }
 }
 }
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
+.handle-box {
+  margin-bottom: 20px;
+}
+
+.handle-select {
+  width: 120px;
+}
 
 
+.handle-input {
+  width: 300px;
+  display: inline-block;
+}
+.table {
+  width: 100%;
+  font-size: 14px;
+}
+.red {
+  color: #ff0000;
+  margin-left: 10px;
+}
+.mr10 {
+  margin-right: 10px;
+}
+.table-td-thumb {
+  display: block;
+  margin: auto;
+  width: 40px;
+  height: 40px;
+}
 </style>
 </style>

+ 250 - 0
src/views/analysis/AnalysisConfigDetail.vue

@@ -0,0 +1,250 @@
+<template>
+  <div>
+
+    <div class="crumbs">
+      <el-breadcrumb separator="/">
+        <el-breadcrumb-item>
+          <i class="el-icon-lx-cascades"></i> 数据统计配置详情
+        </el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div class="container">
+      <div class="form-box" >
+        <el-form ref="formRef" label-width="120px">
+          <el-form-item label="统计配置名:" >
+            {{config.configName}}
+          </el-form-item>
+          <el-form-item label="选中字段:" >
+            <el-table :data="tableData" border class="table"  ref="fieldTable" header-cell-class-name="table-header" @selection-change="handleSelectChange">
+              <el-table-column label="字段名" width="120%">
+                <template #default="scope"><span>{{ scope.row }}</span></template>
+              </el-table-column>
+              <el-table-column label="取值类型">
+                <template #default="scope">{{ scope.row.fieldType }}</template>
+              </el-table-column>
+            </el-table>
+          </el-form-item>
+
+<!--          <el-form-item label="分析记录:" >-->
+<!--            <el-table :data="modelData" border class="table" ref="fieldTable" header-cell-class-name="table-header" @selection-change="handleSelectChange">-->
+<!--              <el-table-column label="分析id" width="150%">-->
+<!--                <template #default="scope"><span>{{ scope.row.modelName }}</span></template>-->
+<!--              </el-table-column>-->
+<!--              <el-table-column label="分析算法" width="150%">-->
+<!--                <template #default="scope">{{ scope.row.modelDetailName }}</template>-->
+<!--              </el-table-column>-->
+<!--              <el-table-column label="分析状态">-->
+<!--                <template #default="scope" >-->
+<!--                  <div v-if="scope.row.trainedStatus===-1">未训练</div>-->
+<!--                  <div v-else="">已训练</div></template>-->
+<!--              </el-table-column>-->
+<!--              <el-table-column label="操作" width="180" align="center">-->
+<!--                <template #default="scope">-->
+
+<!--                  <router-link :to="{path:'/modelList',query:{modelId:scope.row.id}}">-->
+<!--                    <el-button type="text" icon="el-icon-view" >查看分析结果-->
+<!--                    </el-button>-->
+<!--                  </router-link>-->
+
+<!--                </template>-->
+<!--              </el-table-column>-->
+
+
+
+<!--            </el-table>-->
+<!--          </el-form-item>-->
+
+          <el-form-item>
+            <el-button type="primary"  @click="createModel()">进行分析</el-button>
+          </el-form-item>
+        </el-form>
+
+
+
+<!--        <el-dialog title="新建模型" v-model="modelVisiable" width="30%">-->
+<!--          <el-form label-width="120px">-->
+<!--            <el-form-item label="文件Id" required>-->
+<!--              <el-input v-model="form.fileInfoId" ></el-input>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="模型名称" required>-->
+<!--              <el-input v-model="form.modelName"></el-input>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="MaxIter" v-model="showMaxIter" v-if="showMaxIter===true">-->
+<!--              <el-input v-model="form.MaxIter"></el-input>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="RegParam" v-model="showRegParam" v-if="showRegParam===true">-->
+<!--              <el-input v-model="form.RegParam"></el-input>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="ElasticNetParam" v-model="showElasticNetParam" v-if="showElasticNetParam===true">-->
+<!--              <el-input v-model="form.ElasticNetParam"></el-input>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="Category" v-model="showCategory" v-if="showCategory===true">-->
+<!--              <el-input v-model="form.Category"></el-input>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="DataSetOccupy" v-model="showTrainingDataSetOccupy" v-if="showTrainingDataSetOccupy===true">-->
+<!--              <el-input v-model="form.TrainingDataSetOccupy"></el-input>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="NumOfCluster" v-model="showNumOfCluster" v-if="showNumOfCluster===true">-->
+<!--              <el-input v-model="form.NumOfCluster"></el-input>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="Seed" v-model="showSeed" v-if="showSeed===true">-->
+<!--              <el-input v-model="form.Seed"></el-input>-->
+<!--            </el-form-item>-->
+
+<!--          </el-form>-->
+<!--          <template #footer>-->
+<!--                <span class="dialog-footer">-->
+<!--                    <el-button @click="modelVisiable = false">取 消</el-button>-->
+<!--                    <el-button type="primary" @click="saveModel">确 定</el-button>-->
+<!--                </span>-->
+<!--          </template>-->
+<!--        </el-dialog>-->
+      </div>
+    </div>
+
+  </div>
+</template>
+
+<script>
+import {reactive, ref} from "vue";
+import {getOneConfig} from "../../api/config";
+import {useRoute} from "vue-router";
+
+export default {
+  name: "AnalysisConfigDetail",
+  setup(){
+    const query = reactive({
+      address: "",
+      name: "",
+      pageIndex: 1,
+      pageSize: 10,
+    });
+    const fileId=ref(1);
+    const tableData = ref([]);
+    const selectData = ref([]);
+    const pageTotal = ref(0);
+    const modelData=ref([]);
+    const config=ref({});
+    const route=useRoute()
+    const showMaxIter=ref(false);
+    const showRegParam=ref(false);
+    const showElasticNetParam=ref(false);
+    const showCategory=ref(false);
+    const showTrainingDataSetOccupy=ref(false);
+    const showNumOfCluster=ref(false);
+    const showSeed=ref(false);
+
+    let form = reactive({
+      modelTypeId:"",
+      configId:route.query.configId,
+      fileInfoId:"",
+      modelName:"",
+      MaxIter:"",
+      RegParam:"",
+      ElasticNetParam:"",
+      Category:"",
+      TrainingDataSetOccupy:"",
+      NumOfCluster:"",
+      Seed:"",
+    });
+
+    const getData = () => {
+      // console.log("queryId",route.query.configId);
+      if(route.query.configId!=null) {
+        getOneConfig({configId:route.query.configId}).then(res => {
+          // console.log("configdetail",route.query.configId);
+          config.value=res.data;
+          form.modelTypeId=config.value.modelTypeId;
+          if (form.modelTypeId==='1') {
+            showMaxIter.value = true;
+            showRegParam.value = true;
+            showElasticNetParam.value = true;
+          }else if (form.modelTypeId==='5') {
+            showNumOfCluster.value=true;
+            showSeed.value=true;
+          }else {
+            showCategory.value=true;
+            showTrainingDataSetOccupy.value=true;
+          }
+          console.log("form",form);
+          //console.log("config",config.value.modelTypeId);
+          tableData.value = res.data.featureList;
+          for (var i = 0; i < tableData.value.length; i++) {
+            if (tableData.value[i].conOrDis === 1) {
+              tableData.value[i].conOrDis = "连续值"
+            } else {
+              tableData.value[i].conOrDis = "离散值"
+            }
+          }
+          //console.log(tableData)
+
+          modelData.value=res.data.modelInfos;
+          console.log("tableData",tableData);
+          fileId.value=tableData.value[0].fileInfoId;
+          form.fileInfoId=(String)(fileId.value)
+        })
+
+      }
+
+    };
+    //getData();
+    config.value= {id: 1, userId: 822, fileId: 1, configName: 'zyq', createdTime: 23.08, chosenColumn: ['好瓜','色泽']} ;
+    tableData.value=config.value.chosenColumn;
+
+
+    return{
+      config,
+      query,
+      tableData,
+      pageTotal,
+      modelData,
+      form,
+      fileId,
+      showMaxIter,
+
+      showRegParam,
+      showElasticNetParam,
+      showCategory,
+      showNumOfCluster,
+      showSeed,
+      showTrainingDataSetOccupy,
+      selectData,
+    };
+  }
+}
+</script>
+
+<style scoped>
+.handle-box {
+  margin-bottom: 20px;
+}
+.handle-table{
+  margin-bottem: 40px;
+}
+
+.handle-select {
+  width: 120px;
+}
+
+.handle-input {
+  width: 300px;
+  display: inline-block;
+}
+.table {
+  width: 100%;
+  font-size: 14px;
+}
+.red {
+  color: #ff0000;
+}
+.mr10 {
+  margin-right: 10px;
+}
+.table-td-thumb {
+  display: block;
+  margin: auto;
+  width: 40px;
+  height: 40px;
+}
+</style>

+ 2 - 2
src/views/BaseCharts.vue → src/views/ml/BaseCharts.vue

@@ -34,9 +34,9 @@
 <script>
 <script>
 import { ref, reactive } from "vue";
 import { ref, reactive } from "vue";
 import { ElMessage, ElMessageBox } from "element-plus";
 import { ElMessage, ElMessageBox } from "element-plus";
-import { fetchData,fetchModuleDetail } from "../api";
+import { fetchData,fetchModuleDetail } from "../../api";
 import {useRoute} from "vue-router";
 import {useRoute} from "vue-router";
-import {use}from "../api/model"
+import {use}from "../../api/model"
 
 
 export default {
 export default {
     
     

+ 4 - 9
src/views/ConfigDetail.vue → src/views/ml/ConfigDetail.vue

@@ -151,11 +151,11 @@
 <script>
 <script>
 import {ref, reactive, getCurrentInstance, onMounted} from "vue";
 import {ref, reactive, getCurrentInstance, onMounted} from "vue";
 import { ElMessage, ElMessageBox } from "element-plus";
 import { ElMessage, ElMessageBox } from "element-plus";
-import { fetchData } from "../api/index";
-import {getFileDetail} from "../api/file";
-import {getOneConfig} from "../api/config";
+import { fetchData } from "../../api";
+import {getFileDetail} from "../../api/file";
+import {getOneConfig} from "../../api/config";
 import {useRoute}from "vue-router";
 import {useRoute}from "vue-router";
-import {addModel} from "../api/model";
+import {addModel} from "../../api/model";
 export default {
 export default {
   name: "configDetail",
   name: "configDetail",
   //训练特征
   //训练特征
@@ -204,11 +204,6 @@ export default {
       TrainingDataSetOccupy:"",
       TrainingDataSetOccupy:"",
       NumOfCluster:"",
       NumOfCluster:"",
       Seed:"",
       Seed:"",
-
-
-
-
-
     });
     });
     // 获取表格数据
     // 获取表格数据
 
 

+ 0 - 0
src/views/ConfigForm.vue → src/views/ml/ConfigForm.vue


+ 3 - 2
src/views/ConfigList.vue → src/views/ml/ConfigList.vue

@@ -117,8 +117,8 @@
 <script>
 <script>
 import { ref, reactive } from "vue";
 import { ref, reactive } from "vue";
 import { ElMessage, ElMessageBox } from "element-plus";
 import { ElMessage, ElMessageBox } from "element-plus";
-import { fetchData } from "../api/index";
-import {addConfig, deleteModelByModelId, getAllConfig} from "../api/config";
+import { fetchData } from "../../api";
+import {addConfig, deleteModelByModelId, getAllConfig} from "../../api/config";
 import {useRouter} from "vue-router";
 import {useRouter} from "vue-router";
 
 
 export default {
 export default {
@@ -334,6 +334,7 @@ export default {
 }
 }
 .red {
 .red {
     color: #ff0000;
     color: #ff0000;
+    margin-left: 10px;
 }
 }
 .mr10 {
 .mr10 {
     margin-right: 10px;
     margin-right: 10px;

+ 3 - 3
src/views/ModelDetail.vue → src/views/ml/ModelDetail.vue

@@ -113,9 +113,9 @@
 <script>
 <script>
 import { ref, reactive } from "vue";
 import { ref, reactive } from "vue";
 import { ElMessage, ElMessageBox } from "element-plus";
 import { ElMessage, ElMessageBox } from "element-plus";
-import { fetchData } from "../api";
-import {addConfig, deleteModelByModelId, getAllConfig} from "../api/config";
-import {getAllModel, train} from "../api/model";
+import { fetchData } from "../../api";
+import {addConfig, deleteModelByModelId, getAllConfig} from "../../api/config";
+import {getAllModel, train} from "../../api/model";
 
 
 export default {
 export default {
     name: "config",
     name: "config",

+ 3 - 3
src/views/ModelList.vue → src/views/ml/ModelList.vue

@@ -112,10 +112,10 @@
 <script>
 <script>
 import { ref, reactive } from "vue";
 import { ref, reactive } from "vue";
 import { ElMessage, ElMessageBox } from "element-plus";
 import { ElMessage, ElMessageBox } from "element-plus";
-import {getAllModel,train,use} from "../api/model";
-import {GetAllFile} from "../api/file";
+import {getAllModel,train,use} from "../../api/model";
+import {GetAllFile} from "../../api/file";
 import {useRoute, useRouter} from "vue-router";
 import {useRoute, useRouter} from "vue-router";
-import {deleteModel} from "../api/model";
+import {deleteModel} from "../../api/model";
 
 
 export default {
 export default {
   name: "model",
   name: "model",

+ 2 - 2
src/views/changeConfig.vue → src/views/ml/changeConfig.vue

@@ -69,8 +69,8 @@
 
 
 import { reactive, ref } from "vue";
 import { reactive, ref } from "vue";
 import { ElMessage } from "element-plus";
 import { ElMessage } from "element-plus";
-import {changeConfig} from "../api/config";
-import router from "../router";
+import {changeConfig} from "../../api/config";
+import router from "../../router";
 import {useRoute} from "vue-router";
 import {useRoute} from "vue-router";
 // import router from "../router";
 // import router from "../router";
 export default {
 export default {