allen 1 rok temu
rodzic
commit
5d6b9524a0
1 zmienionych plików z 134 dodań i 146 usunięć
  1. 134 146
      pdaaphm-ui/src/views/algoManager/algorithm/index.vue

+ 134 - 146
pdaaphm-ui/src/views/algoManager/algorithm/index.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="68px">
       <el-form-item label="算法类型" prop="type">
-        <el-select v-model="queryParams.type" placeholder="请选择算法类型" clearable filterable @change=changeQueryType()>
+        <el-select v-model="queryParams.type" placeholder="请选择算法类型" clearable filterable @change="changeQueryType()">
           <el-option
             v-for="dict in dict.type.process_type"
             :key="dict.value"
@@ -23,8 +23,7 @@
             :key="item.id"
             :label="item.name"
             :value="item.id"
-          >
-          </el-option>
+          />
         </el-select>
       </el-form-item>
       <el-form-item label="名称" prop="name">
@@ -68,58 +67,58 @@
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
+          v-hasPermi="['algoManager:algorithm:add']"
           type="primary"
           plain
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
-          v-hasPermi="['algoManager:algorithm:add']"
         >新增</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
+          v-hasPermi="['algoManager:algorithm:edit']"
           type="success"
           plain
           icon="el-icon-edit"
           size="mini"
           :disabled="single"
           @click="handleUpdate"
-          v-hasPermi="['algoManager:algorithm:edit']"
         >修改</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
+          v-hasPermi="['algoManager:algorithm:remove']"
           type="danger"
           plain
           icon="el-icon-delete"
           size="mini"
           :disabled="multiple"
           @click="handleDelete"
-          v-hasPermi="['algoManager:algorithm:remove']"
         >删除</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
+          v-hasPermi="['algoManager:algorithm:export']"
           type="warning"
           plain
           icon="el-icon-download"
           size="mini"
           :disabled="single"
           @click="handleExport"
-          v-hasPermi="['algoManager:algorithm:export']"
         >导出</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
+          v-hasPermi="['algoManager:algorithm:run']"
           type="success"
           plain
           icon="el-icon-mouse"
           size="mini"
           @click="handleRun"
-          v-hasPermi="['algoManager:algorithm:run']"
         >算法运行</el-button>
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList()"></right-toolbar>
+      <right-toolbar :show-search.sync="showSearch" @queryTable="getList()" />
     </el-row>
 
     <el-table v-loading="loading" :data="algorithmList" @selection-change="handleSelectionChange">
@@ -127,14 +126,14 @@
       <el-table-column label="编号" align="center" prop="id" />
       <el-table-column label="算法类型" align="center" prop="type">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.process_type" :value="scope.row.type"/>
+          <dict-tag :options="dict.type.process_type" :value="scope.row.type" />
         </template>
       </el-table-column>
       <el-table-column label="算法子类型" align="center" prop="algoSubName" />
       <el-table-column label="名称" align="center" prop="name" />
       <el-table-column label="运行状态" align="center" prop="status">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.algo_run_status" :value="scope.row.status"/>
+          <dict-tag :options="dict.type.algo_run_status" :value="scope.row.status" />
         </template>
       </el-table-column>
       <el-table-column label="开始时间" align="center" prop="startTime" width="180">
@@ -154,31 +153,31 @@
         <template slot-scope="scope">
           <el-button
             v-show="scope.row.status == 0"
+            v-hasPermi="['algoManager:algorithm:edit']"
             size="mini"
             type="text"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
-            v-hasPermi="['algoManager:algorithm:edit']"
           >修改</el-button>
           <el-button
             v-show="scope.row.status == 2"
+            v-hasPermi="['algoManager:algorithm:edit']"
             size="mini"
             type="text"
             icon="el-icon-warning-outline"
             @click="viewResult(scope.row)"
-            v-hasPermi="['algoManager:algorithm:edit']"
           >查看结果</el-button>
           <el-button
+            v-hasPermi="['algoManager:algorithm:remove']"
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
-            v-hasPermi="['algoManager:algorithm:remove']"
           >删除</el-button>
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"
@@ -191,13 +190,13 @@
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="算法类型" prop="type">
-          <el-select v-model="form.type" placeholder="请选择算法类型" clearable filterable :disabled="form.status == 2" @change='changeFormType()'>
+          <el-select v-model="form.type" placeholder="请选择算法类型" clearable filterable :disabled="form.status == 2" @change="changeFormType()">
             <el-option
               v-for="dict in dict.type.process_type"
               :key="dict.value"
               :label="dict.label"
               :value="dict.value"
-            ></el-option>
+            />
           </el-select>
         </el-form-item>
         <el-form-item label="算法子类型" prop="subTypeId">
@@ -207,25 +206,24 @@
             clearable
             filterable
             :disabled="form.status == 2"
-            @change='changeFormSubType()'
+            @change="changeFormSubType()"
           >
             <el-option
               v-for="item in algoTypeList"
               :key="item.id"
               :label="item.name"
               :value="item.id"
-            >
-            </el-option>
+            />
           </el-select>
         </el-form-item>
         <template v-if="form.subTypeId">
-          <el-form-item v-for="item in form.ioSubList" :label="item.name" :key="item.id">
+          <el-form-item v-for="item in form.ioSubList" :key="item.id" :label="item.name">
             <!-- <file-upload v-model="form.path"/> -->
-            <image-preview v-if="form.status == 2 && imageList.includes(item.path.split('.').pop())" :src="item.path" :width="50" :height="50"/>
+            <image-preview v-if="form.status == 2 && imageList.includes(item.path.split('.').pop())" :src="item.path" :width="50" :height="50" />
             <template v-else-if="form.status == 2 && textList.includes(item.path.split('.').pop())">
               <div>
                 <!-- 显示文件内容 -->
-                <div class="file-content" v-show="fileContent">
+                <div v-show="fileContent" class="file-content">
                   {{ fileContent }}
                 </div>
               </div>
@@ -243,26 +241,25 @@
                 :key="inputFile.id"
                 :label="inputFile.name"
                 :value="inputFile.id"
-              >
-              </el-option>
+              />
             </el-select>
             <template v-if="form.status == 2">
               <el-button
+                v-hasPermi="['data:model:edit']"
                 size="mini"
                 type="text"
                 icon="el-icon-download"
                 @click="download(item.path)"
-                v-hasPermi="['data:model:edit']"
               >{{ "下载文件" }}
               </el-button>
             </template>
           </el-form-item>
         </template>
         <el-form-item label="名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入名称" :disabled="form.status == 2"/>
+          <el-input v-model="form.name" placeholder="请输入名称" :disabled="form.status == 2" />
         </el-form-item>
         <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" :disabled="form.status == 2"/>
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" :disabled="form.status == 2" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -274,16 +271,16 @@
 </template>
 
 <script>
-import { listAlgorithm, getAlgorithmDto, delAlgorithm, addOrUpdateDto, runAlgorithms } from "@/api/algoManager/algorithm";
-import { getAlgoSubOption } from "@/api/algoManager/algorithm";
-import { getIoSubList } from "@/api/conf/field";
-import { getFileList, getInputFileList } from "@/api/algoManager/file";
-import axios from 'axios';
-import { isExternal } from "@/utils/validate";
+import { listAlgorithm, getAlgorithmDto, delAlgorithm, addOrUpdateDto, runAlgorithms } from '@/api/algoManager/algorithm'
+import { getAlgoSubOption } from '@/api/algoManager/algorithm'
+import { getIoSubList } from '@/api/conf/field'
+import { getInputFileList } from '@/api/algoManager/file'
+import axios from 'axios'
+import { isExternal } from '@/utils/validate'
 
 export default {
-  name: "Algorithm",
-  dicts: ['process_type','algo_run_status'],
+  name: 'Algorithm',
+  dicts: ['process_type', 'algo_run_status'],
   data() {
     return {
       // 遮罩层
@@ -309,7 +306,7 @@ export default {
       // 输入文件表格数据
       inputFileList: [],
       // 弹出层标题
-      title: "",
+      title: '',
       // 是否显示弹出层
       open: false,
       // 查询参数
@@ -320,72 +317,64 @@ export default {
         subTypeId: null,
 
         name: null,
-        dictType: "process_type",
+        dictType: 'process_type',
         startTime: null,
         completedTime: null,
-        costSecond: null,
+        costSecond: null
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
         subTypeId: [
-          { required: true, message: "算法子类型不能为空", trigger: "blur" }
-        ],
+          { required: true, message: '算法子类型不能为空', trigger: 'blur' }
+        ]
       },
       typeMap: new Map(),
-      imageList: ["jpg", "jpeg", "png", "bmp", "gif"],
-      textList: ["txt", "doc", "hlp", "wps"],
-      fileContent: '',
-    };
+      imageList: ['jpg', 'jpeg', 'png', 'bmp', 'gif'],
+      textList: ['txt', 'doc', 'hlp', 'wps'],
+      fileContent: ''
+    }
   },
   created() {
-    this.getList();
-    this.getAlgoSubOption();
+    this.getList()
+    this.getAlgoSubOption()
   },
   activated() {
-    this.getList();
-    this.getAlgoSubOption();
+    this.getList()
+    this.getAlgoSubOption()
   },
   methods: {
     /** 查询算法列表 */
     getList() {
-      this.loading = true;
+      this.loading = true
       listAlgorithm(this.queryParams).then(response => {
-        this.algorithmList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
+        this.algorithmList = response.rows
+        this.total = response.total
+        this.loading = false
+      })
     },
 
     getAlgoSubOption() {
       getAlgoSubOption().then((resp) => {
-        this.algorithmSubList = resp.data;
-        this.createTypeMap();
-        console.info(resp);
-      });
+        this.algorithmSubList = resp.data
+        this.createTypeMap()
+        console.info(resp)
+      })
     },
 
-    // getFileList() {
-    //   getFileList().then((resp) => {
-    //     this.fileList = resp.data;
-    //     console.info(resp);
-    //     console.info(this);
-    //   });
-    // },
-
     getInputFileList() {
       getInputFileList(this.form.subTypeId).then((resp) => {
-        this.inputFileList = resp.data;
-        console.info(resp);
-        console.info(this);
-      });
+        this.inputFileList = resp.data
+        console.info(resp)
+        console.info(this)
+      })
     },
 
     // 取消按钮
     cancel() {
-      this.open = false;
-      this.reset();
+      this.open = false
+      this.reset()
     },
     // 表单重置
     reset() {
@@ -404,77 +393,78 @@ export default {
         remark: null,
         // 具体算法输入输出文件列表
         ioSubList: []
-      };
-      this.resetForm("form");
+      }
+      this.resetForm('form')
     },
     /** 搜索按钮操作 */
     handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
+      this.queryParams.pageNum = 1
+      this.getList()
     },
     /** 重置按钮操作 */
     resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
+      this.resetForm('queryForm')
+      this.handleQuery()
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
     handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加算法";
+      this.reset()
+      this.open = true
+      this.title = '添加算法'
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
-      this.reset();
+      this.reset()
       const id = row.id || this.ids
       getAlgorithmDto(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改算法";
-        this.algoTypeList = this.typeMap.get(this.form.type);
-      });
-      console.info(this);
+        this.form = response.data
+        this.open = true
+        this.title = '修改算法'
+        this.algoTypeList = this.typeMap.get(this.form.type)
+      })
+      console.info(this)
     },
     /** 查看结果按钮操作 */
     viewResult(row) {
-      this.reset();
+      this.reset()
       const id = row.id || this.ids
       getAlgorithmDto(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "查看结果";
-        this.algoTypeList = this.typeMap.get(this.form.type);
-        this.fetchFileContent(this.form.ioSubList);
-      });
-      console.info(this);
+        this.form = response.data
+        this.title = '查看结果'
+        this.algoTypeList = this.typeMap.get(this.form.type)
+        this.fetchFileContent(this.form.ioSubList)
+        this.getInputFileList()
+        this.open = true
+      })
+      console.info(this)
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs['form'].validate(valid => {
         if (valid) {
           addOrUpdateDto(this.form).then(response => {
-            this.$modal.msgSuccess("成功");
-            this.open = false;
-            this.getList();
-          });
+            this.$modal.msgSuccess('成功')
+            this.open = false
+            this.getList()
+          })
         }
-      });
+      })
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const ids = row.id || this.ids;
+      const ids = row.id || this.ids
       this.$modal.confirm('是否确认删除算法编号为"' + ids + '"的数据项?').then(function() {
-        return delAlgorithm(ids);
+        return delAlgorithm(ids)
       }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+        this.getList()
+        this.$modal.msgSuccess('删除成功')
+      }).catch(() => {})
     },
     /** 导出按钮操作 */
     handleExport() {
@@ -487,89 +477,87 @@ export default {
       const id = row.id || this.ids
       // debugger
       runAlgorithms(id).then(response => {
-        this.$modal.msgSuccess("成功");
-        this.getList();
-      });
+        this.$modal.msgSuccess('成功')
+        this.getList()
+      })
     },
-    
-    /**创建连接算法大类型和算法子类列表的map */
+
+    /** 创建连接算法大类型和算法子类列表的map */
     createTypeMap() {
-      this.typeMap = new Map();
+      this.typeMap = new Map()
       for (const algorithmSub of this.algorithmSubList) {
-        if(this.typeMap.has(algorithmSub.type)) {
+        if (this.typeMap.has(algorithmSub.type)) {
           this.typeMap.get(algorithmSub.type).push({
             id: algorithmSub.id,
             name: algorithmSub.name
-          });
-        }
-        else {
+          })
+        } else {
           this.typeMap.set(algorithmSub.type, [{
             id: algorithmSub.id,
             name: algorithmSub.name
-          }]);
+          }])
         }
       }
     },
 
     changeQueryType() {
-      this.queryParams.subTypeId = null;
-      this.algoTypeList = this.typeMap.get(this.queryParams.type);
+      this.queryParams.subTypeId = null
+      this.algoTypeList = this.typeMap.get(this.queryParams.type)
     },
 
     changeFormType() {
-      this.form.subTypeId = null;
-      this.algoTypeList = this.typeMap.get(this.form.type);
+      this.form.subTypeId = null
+      this.algoTypeList = this.typeMap.get(this.form.type)
     },
 
     changeFormSubType() {
-      if(this.form.subTypeId) {
+      if (this.form.subTypeId) {
         getIoSubList(this.form.subTypeId, this.form.id).then((resp) => {
-          this.form.ioSubList = resp.data;
-          console.info(resp);
-        });
-        this.getInputFileList();
-      }
-      else {
-        this.inputFileList = [];
+          this.form.ioSubList = resp.data
+          console.info(resp)
+        })
+        this.getInputFileList()
+      } else {
+        this.inputFileList = []
       }
     },
 
     download(path) {
-      this.$download.resource(path);
+      this.$download.resource(path)
     },
 
     // 拿到文本文件里的内容
     async fetchFileContent(ioSubList) {
       try {
-        let filePath;
-        for (let item of ioSubList) {
+        let filePath
+        for (const item of ioSubList) {
           if (this.textList.includes(item.path.split('.').pop())) {
-            filePath = item.path;
+            filePath = item.path
           }
         }
         if (filePath) {
-          const response = await axios.get(this.realSrc(filePath), { responseType: 'text' });
-          this.fileContent = response.data;
+          const response = await axios.get(this.realSrc(filePath), { responseType: 'text' })
+          this.fileContent = response.data
         }
         // const response = await axios.get(this.realSrc(filePath), { responseType: 'text' });
         // this.fileContent = response.data;
       } catch (error) {
-        console.error("Error fetching the file:", error);
-        alert('无法加载文件内容');
+        console.error('Error fetching the file:', error)
+        alert('无法加载文件内容')
       }
     },
 
     // 通过path得到绝对路径
     realSrc(src) {
       if (!src) {
-        return;
+        return
       }
-      let real_src = src.split(",")[0];
+      const real_src = src.split(',')[0]
       if (isExternal(real_src)) {
-        return real_src;
+        return real_src
       }
-      return process.env.VUE_APP_BASE_API + real_src;
-    },
+      return process.env.VUE_APP_BASE_API + real_src
+    }
   }
-};
+}
 </script>