icenaked преди 3 години
родител
ревизия
9c42c15345
променени са 3 файла, в които са добавени 76 реда и са изтрити 12 реда
  1. 6 4
      src/api/model.js
  2. 20 6
      src/views/ml/Deployment.vue
  3. 50 2
      src/views/ml/ModelList.vue

+ 6 - 4
src/api/model.js

@@ -1,5 +1,5 @@
 import {axios} from '../utils/request'
-import {MODEL_MODULE} from "./_prefix";
+import {MODEL_MODULE, ML_MODULE} from "./_prefix";
 import {MOCK} from "./_prefix";
 
 /**
@@ -144,13 +144,15 @@ export const getOneModel = async payload => {
      */
     export const getAllDeployment = async payload => {
         const{ userId } = payload;
-        const res = await axios.get(`${MODEL_MODULE}/deployments?userId=${userId}`)
+        const res = await axios.get(`${ML_MODULE}/deployments?userId=${userId}`)
         return res
     }
 
     export const addDeployment = async payload => {
-        const{ userId, modelId } = payload;
-        const res = await axios.post(`${MODEL_MODULE}/deployments?userId=${userId}&modelId=${modelId}`)
+        const{ userId, modelId, deploymentName } = payload;
+        const res = await axios.post(`${ML_MODULE}/deployments`,{
+            userId, modelId, deploymentName
+        })
         return res
     }
 

+ 20 - 6
src/views/ml/Deployment.vue

@@ -14,10 +14,25 @@
         :data="tableData" border class="table" ref="multipleTable"
         header-cell-class-name="table-header"
     >
-      <el-table-column prop="configName" label="部署名"></el-table-column>
-      <el-table-column prop="configName" label="开始时间"></el-table-column>
-      <el-table-column prop="configName" label="部署状态"></el-table-column>
-      <el-table-column prop="configName" label="完成时间"></el-table-column>
+      <el-table-column prop="deploymentName" label="部署名"></el-table-column>
+      <el-table-column prop="createdTime" label="开始时间"></el-table-column>
+      <el-table-column label="部署状态">
+        <template #default="scope">
+          <div v-if="scope.row.deploymentState === 'SUCCESS'">
+            部署成功
+          </div>
+          <div v-else-if="scope.row.deploymentState === 'WAITING'">
+            未部署
+          </div>
+          <div v-else-if="scope.row.deploymentState === 'ON_GOING'">
+            部署中
+          </div>
+          <div v-else>
+            部署失败
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column prop="finishTime" label="完成时间"></el-table-column>
 
       <el-table-column label="操作" width="180" align="center">
         <template #default="scope">
@@ -54,9 +69,8 @@ export default {
       const payload = {
         userId: localStorage.getItem("ms_userId")
       }
-      console.log(payload)
       getAllDeployment(payload).then(res =>{
-        console.log(res)
+        tableData.value = res.result
       })
     }
     getPage()

+ 50 - 2
src/views/ml/ModelList.vue

@@ -61,7 +61,7 @@
             <div v-else>
               <el-button type="text" style="color: gray">暂未成功训练</el-button>
             </div>
-            <el-button type="text" @click="handleShare(scope.$index, scope.row)">部署</el-button>
+            <el-button type="text" @click="handleDeploy(scope.row.id)">部署</el-button>
             <el-button type="text" class="yellow" @click="handleShare(scope.$index, scope.row)">分享</el-button>
             <el-button type="text" class="red" @click="handleDelete(scope.$index, scope.row)">删除</el-button>
           </template>
@@ -130,6 +130,25 @@
       </template>
     </el-dialog>
 
+    <el-dialog
+        v-model="deployVisible"
+        title="新建部署"
+        width="30%"
+        :before-close="handleClose"
+    >
+      <el-form width="300px">
+        <el-form-item label="部署" required>
+          <el-input v-model="deployName"></el-input>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+          <span class="dialog-footer">
+            <el-button @click="deployVisible = false">取消</el-button>
+            <el-button type="primary" @click="goDeploy()" style="margin-left: 10px"> 部署 </el-button>
+          </span>
+      </template>
+    </el-dialog>
+
   </div>
 
 </template>
@@ -137,7 +156,7 @@
 <script>
 import { ref, reactive } from "vue";
 import { ElMessage, ElMessageBox } from "element-plus";
-import {getAllModel, getOneModel, train} from "../../api/model";
+import {addDeployment, getAllModel, getOneModel, train} from "../../api/model";
 import {use} from "../../api/prediction";
 import {GetAllFile} from "../../api/file";
 import {useRoute, useRouter} from "vue-router";
@@ -162,6 +181,9 @@ export default {
     const fileList=ref();
     const multipleSelection =ref([]);
     const tableData = ref();
+    let deployVisible = ref(false)
+    let deployName = ref()
+    let deployModel = ref()
 
     const pageTotal = ref(0);
     let pipelineVisible = ref(false)
@@ -321,6 +343,27 @@ export default {
        ElMessageBox.confirm(str)
       }
 
+      const handleDeploy = (id) => {
+        deployVisible.value = true
+        deployModel.value = id
+      }
+
+      const goDeploy = () =>{
+        const payload = {
+          userId: localStorage.getItem("ms_userId"),
+          modelId: deployModel.value,
+          deploymentName: deployName.value
+        }
+        addDeployment(payload).then(res=>{
+          if (res.msg === '成功'){
+            ElMessage.success('开始部署!')
+          }
+          else {
+            ElMessage.error('无法部署!')
+          }
+        })
+      }
+
     const usemodelId=ref();
     //todo模型使用
      const editUseModel = (id) => {
@@ -494,6 +537,11 @@ export default {
       useform,
       pipelineVisible,
       pplForm,
+      deployVisible,
+      deployName,
+      deployModel,
+      handleDeploy,
+      goDeploy,
       handlePipeline,
       pipeline,
       handlePreList,