Przeglądaj źródła

fix: not need to refresh manually result of tags

icenaked 3 lat temu
rodzic
commit
f3fef1619a

+ 25 - 10
src/components/Sidebar.vue

@@ -1,7 +1,15 @@
 <template>
     <div class="sidebar">
-        <el-menu class="sidebar-el-menu" :default-active="onRoutes" :collapse="collapse" background-color="#000000"
-            text-color="#bfcbd9" active-text-color="#20a0ff" unique-opened router>
+        <el-menu
+            class="sidebar-el-menu"
+            :default-active="onRoutes"
+            :collapse="collapse"
+            background-color="#000000"
+            text-color="#bfcbd9"
+            active-text-color="#20a0ff"
+            unique-opened
+            router
+        >
 
             <template v-for="item in items">
                 <template v-if="item.subs">
@@ -22,7 +30,7 @@
                     </el-submenu>
                 </template>
                 <template v-else>
-                    <el-menu-item :index="item.index" :key="item.index">
+                    <el-menu-item :index="item.index.toString()" :key="item.index">
                         <i :class="item.icon"></i>
                         <template #title>{{ item.title }}</template>
                     </el-menu-item>
@@ -35,7 +43,7 @@
 <script>
 import { computed } from "vue";
 import { useStore } from "vuex";
-import { useRoute } from "vue-router";
+import { useRoute, useRouter } from "vue-router";
 export default {
     setup() {
         const items = [
@@ -70,11 +78,11 @@ export default {
               title: "模型配置",
           },
 
-          {
-            icon: "el-icon-star-off",
-            index: "/modelDetail",
-            title: "模型训练",
-          },
+          // {
+          //   icon: "el-icon-star-off",
+          //   index: "/modelDetail",
+          //   title: "模型训练",
+          // },
 
           {
             icon: "el-icon-coin",
@@ -91,7 +99,7 @@ export default {
           {
             icon: "el-icon-pie-chart",
             index: "/charts",
-            title: "训练结果",
+            title: "预测结果",
           },
 
           // {
@@ -169,19 +177,26 @@ export default {
         ];
 
         const route = useRoute();
+        //const router = useRouter();
 
         const onRoutes = computed(() => {
             return route.path;
         });
 
+        // const onRouters = computed(() => {
+        //   return router.path;
+        // });
+
         const store = useStore();
         const collapse = computed(() => store.state.collapse);
 
         return {
             items,
             onRoutes,
+            //onRouters,
             collapse,
         };
+
     },
 };
 </script>

+ 1 - 1
src/router/index.js

@@ -1,5 +1,5 @@
 import {createRouter, createWebHashHistory} from "vue-router";
-import Home from "../views/unused/Home.vue";
+import Home from "../views/Home.vue";
 import squareLayout from "../views/square.vue";
 
 const routes = [

+ 2 - 0
src/views/BaseCharts.vue

@@ -88,6 +88,8 @@ export default {
                 }
                 console.log(res.data);
                 tableData.value=res.data
+              }).catch(err=>{
+                console.log(err)
               });
               //console.log("getData被调用了")
             }

+ 5 - 5
src/views/unused/Home.vue → src/views/Home.vue

@@ -3,7 +3,7 @@
         <v-header />
         <v-sidebar />
         <div class="content-box" :class="{ 'content-collapse': collapse }">
-            <v-tags></v-tags>
+<!--            <v-tags></v-tags>-->
             <div class="content">
                 <router-view v-slot="{ Component }">
                     <transition name="move" mode="out-in">
@@ -20,14 +20,14 @@
 <script>
 import { computed } from "vue";
 import { useStore } from "vuex";
-import vHeader from "../../components/Header.vue";
-import vSidebar from "../../components/Sidebar.vue";
-import vTags from "../../components/Tags.vue";
+import vHeader from "../components/Header.vue";
+import vSidebar from "../components/Sidebar.vue";
+//import vTags from "../components/Tags.vue";
 export default {
     components: {
         vHeader,
         vSidebar,
-        vTags,
+        //vTags,
     },
     setup() {
         const store = useStore();

+ 3 - 16
src/views/ModelDetail.vue

@@ -95,14 +95,6 @@
                   </el-radio-group>
                 </el-form-item>
 
-<!--              <el-form-item label="单选框" prop="resource">-->
-<!--                <el-radio-group v-model="form.resource">-->
-<!--                  <el-radio label="步步高"></el-radio>-->
-<!--                  <el-radio label="小天才"></el-radio>-->
-<!--                  <el-radio label="imoo"></el-radio>-->
-<!--                </el-radio-group>-->
-<!--              </el-form-item>-->
-
                 <el-form-item label="选择特征字段" required>
                   <el-alert type="info" description="您下列选择的第一个字段为分类模型的目标字段"
                             show-icon style="height: 40px;"></el-alert>
@@ -128,14 +120,7 @@ import {getAllModel, train} from "../api/model";
 export default {
     name: "config",
     //训练特征
-  // data(){
-  //     return{
-  //       form:{
-  //         name:"",
-  //         file:"",
-  //       }
-  //     }
-  // },
+
   setup() {
     const featureSty = reactive({
 
@@ -224,6 +209,8 @@ export default {
                     ElMessage.error("训练失败!失败码:"+res.status);
                     done()
                   }
+                }).catch(err=>{
+                  console.log(err)
                 });
               } else {
                 done()

+ 58 - 23
src/views/ModelList.vue

@@ -43,21 +43,25 @@
         <el-table-column prop="trainedStatus" label="训练状态">
           <template #default="scope">
             <div v-if="scope.row.trainedStatus==='已训练'" >
-              <el-button type="text" icon="el-icon-video-play" class="yellow"
+              <el-button type="text" icon="el-icon-circle-check" class="yellow"
                          @click="handleTrainRes(scope.$index, scope.row)">查看训练结果</el-button>
             </div>
             <div v-else>
               <el-button type="text" icon="el-icon-video-play" class="green"
-                       @click="handleTrain(scope.$index, scope.row)">模型训练</el-button>
+                       @click="handleTrain(scope.row.modelId)">模型训练</el-button>
             </div>
           </template>
         </el-table-column>
         <el-table-column label="操作" width="180" align="center">
           <template #default="scope">
-
-              <el-button type="text" icon="el-icon-mouse" 
-              @click="editUseModel(scope.$index, scope.row)">模型使用
+            <div v-if="scope.row.trainedStatus==='已训练'">
+              <el-button type="text" icon="el-icon-mouse"
+                         @click="editUseModel(scope.$index, scope.row)">模型使用
               </el-button>
+            </div>
+            <div v-else>
+              <el-button type="text" icon="el-icon-lock" style="color: gray">暂未训练</el-button>
+            </div>
             <el-button type="text" icon="el-icon-delete" class="red"
                        @click="handleDelete(scope.$index, scope.row)">删除</el-button>
 
@@ -111,6 +115,7 @@ import { ElMessage, ElMessageBox } from "element-plus";
 import {getAllModel,train,use} from "../api/model";
 import {GetAllFile} from "../api/file";
 import {useRoute, useRouter} from "vue-router";
+import {deleteModel} from "../api/model";
 
 export default {
   name: "model",
@@ -187,23 +192,47 @@ export default {
       getData();
     };
     //todo模型训练
-    const handleTrain = (index) => {
-      ElMessageBox.confirm("要进行训练吗?", "提示", {
-        type: "info",
-      })
-          .then(() => {
-            //console.log(tableData)
-            let modelId=tableData.value[index].modelId
-            train({modelId:modelId}).then(res=>{
-              if(res.status===200)
-                ElMessage.success("模型"+modelId+"训练成功");
+    const handleTrain =(modelId) => {
+      ElMessageBox( {
+        title: "确定要训练吗?",
+        showCancelButton: true,
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        beforeClose: (action, instance, done) => {
+          if (action === 'confirm') {
+            instance.confirmButtonLoading = true
+            instance.confirmButtonText = '训练中...'
+            let idx=modelId;
+            console.log("modelId: "+idx);
+            train({
+              modelId: idx
+            }).then(res=>{
+              instance.confirmButtonLoading = false
+              console.log("train_res: ",res);
+              if (res.status === 200 & res.data === true)
+              {
+                // ElMessageBox({
+                //   title: '模型训练',
+                //   message: `模型训练成功`,
+                //   confirmButtonText: '确定',
+                // })
+                location.reload();
+                done()
+              }
               else
-                ElMessage.error("模型"+modelId+"失败");
-            })
-
-
-          })
-          .catch(() => {});
+              {
+                console.log(res);
+                ElMessage.error("训练失败!失败码:"+res.status);
+                done()
+              }
+            }).catch(err=>{
+              console.log(err)
+            });
+          } else {
+            done()
+          }
+        },
+      })
     };
     const modelRes=ref();
     const resVisible = ref(false);
@@ -266,13 +295,19 @@ const usemodelId=ref();
             // ElMessage.success("删除成功");
             // tableData.value.splice(index, 1);
             console.log("删除");
-            let idx=tableData.value[index].id;
+            let idx=tableData.value[index].modelId;
             console.log(idx);
+            deleteModel(idx
+            ).then(res=>{
+              //console.log("deleteres",res);
+              if(res.status===200){
+                location.reload();
+              }
+            });
 
           })
           .catch(() => {});
     };
-
     //TODO
     const handleSelectionChange = (val) => {
       multipleSelection.value = val