提交代码
parent
6e7ab962f2
commit
45ce30d5d0
|
@ -278,7 +278,7 @@ class MenuAPI {
|
|||
meta: {
|
||||
title: "算子程序管理",
|
||||
icon: "oper",
|
||||
hidden: false,
|
||||
hidden: true,
|
||||
roles: ["ADMIN", "GUEST"],
|
||||
keepAlive: true,
|
||||
alwaysShow: false,
|
||||
|
|
|
@ -16,6 +16,14 @@ const addTool=(data)=>{
|
|||
data:data
|
||||
});
|
||||
}
|
||||
//创建第三方工具链的参数
|
||||
const addToolParams=(data)=>{
|
||||
return request({
|
||||
url: `/tool_chains/params`,
|
||||
method: "post",
|
||||
data:data
|
||||
});
|
||||
}
|
||||
//获取第三方工具链的详细参数
|
||||
const paramsInfo=(id)=>{
|
||||
return request({
|
||||
|
@ -45,6 +53,13 @@ const deleteTool=(id)=>{
|
|||
method: "delete"
|
||||
});
|
||||
}
|
||||
//删除第三方工具链的参数
|
||||
const deleteToolParams=(id)=>{
|
||||
return request({
|
||||
url: `/tool_chains/params/${id}`,
|
||||
method: "delete"
|
||||
});
|
||||
}
|
||||
//获取第三方工具链的工作状态列表
|
||||
const toolChains=(id)=>{
|
||||
return request({
|
||||
|
@ -64,10 +79,12 @@ const editTool=(id,data)=>{
|
|||
export default {
|
||||
paramsList,
|
||||
addTool,
|
||||
addToolParams,
|
||||
paramsInfo,
|
||||
toolStatusList,
|
||||
unregistedList,
|
||||
deleteTool,
|
||||
deleteToolParams,
|
||||
toolChains,
|
||||
editTool
|
||||
}
|
|
@ -45,7 +45,7 @@
|
|||
<el-table-column label="算子子类型" align="left" prop="oper_sub_type_name" width="180" />
|
||||
<el-table-column label="算子说明" align="left" prop="operator_desc" />
|
||||
<el-table-column label="创建时间" width="180" align="left" prop="create_time" />
|
||||
<el-table-column label="操作" fixed="right" align="center" width="220">
|
||||
<el-table-column label="操作" fixed="right" align="center" width="280">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
text
|
||||
|
@ -57,6 +57,9 @@
|
|||
<el-button text type="primary" size="small" @click="handleDelete(scope.row.operator_id)"
|
||||
><i-ep-delete />删除</el-button
|
||||
>
|
||||
<el-button text type="primary" size="small" @click="handlePushParams(scope.row)"
|
||||
><i-ep-plus />添加算子程序</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -69,11 +72,13 @@
|
|||
@pagination="handleQuery"
|
||||
/>
|
||||
</el-card>
|
||||
<paramDialog ref="paramDialogRef"></paramDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import OperatorApi from '@/api/operator'
|
||||
import paramDialog from "../calculateParam/dialog.vue";
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
|
@ -90,6 +95,7 @@ const queryParams = reactive({
|
|||
operator_name:null,
|
||||
oper_main_type:null
|
||||
});
|
||||
const paramDialogRef = ref(""); // 算子程序子组件
|
||||
|
||||
/** 查询 */
|
||||
function handleQuery() {
|
||||
|
@ -134,6 +140,11 @@ function handleDelete(id?: number) {
|
|||
});
|
||||
}
|
||||
|
||||
/** 添加算子程序 */
|
||||
function handlePushParams(data){
|
||||
paramDialogRef.value.show(data);
|
||||
}
|
||||
|
||||
/** 查看算子 */
|
||||
function handleDetail(operator_id?: number) {
|
||||
router.push({path:"/operatorLibrary/calculateDetail",query:{id:operator_id}})
|
||||
|
|
|
@ -9,16 +9,34 @@
|
|||
style="width: 20px; height: 20px"
|
||||
/>算子基本信息</template
|
||||
>
|
||||
<el-row>
|
||||
<el-col :lg="12" :xs="24">
|
||||
<el-form ref="formRef" v-loading="loading" label-width="100px" size="small">
|
||||
<el-form ref="formRef" v-loading="loading" label-width="100px" size="small">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="算子名称">{{ dataInfo.operator_name }}</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="算子主类型">
|
||||
{{ dataInfo.oper_main_type_name }}</el-form-item
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="算子子类型">
|
||||
{{ dataInfo.oper_sub_type_name }}</el-form-item
|
||||
>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="创建人"> {{ dataInfo.user_name }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="创建时间"> {{ dataInfo.create_time }}</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="算子说明">
|
||||
<el-input
|
||||
v-model="dataInfo.operator_desc"
|
||||
|
@ -28,39 +46,82 @@
|
|||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建人"> {{ dataInfo.user_name }}</el-form-item>
|
||||
<el-form-item label="创建时间"> {{ dataInfo.create_time }}</el-form-item>
|
||||
<el-form-item label="算子参数">
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="输入参数">
|
||||
<el-input
|
||||
v-model="dataInfo.parametersJson"
|
||||
v-model="dataInfo.parametersInputs"
|
||||
:disabled="true"
|
||||
placeholder="请输入算子参数"
|
||||
:rows="10"
|
||||
placeholder="请填写输入参数"
|
||||
:rows="8"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="输出参数" prop="nickname33">
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="输出参数">
|
||||
<el-input
|
||||
v-model="dataInfo.usernamedd3"
|
||||
v-model="dataInfo.parametersOutputs"
|
||||
:disabled="true"
|
||||
placeholder="请输入数据集名称"
|
||||
:rows="3"
|
||||
placeholder="请填写输出参数"
|
||||
:rows="8"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item> -->
|
||||
</el-form>
|
||||
</el-col>
|
||||
<el-col :lg="12" :xs="24"> </el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-row style="padding: 10px 15px">
|
||||
<el-col :lg="24" :xs="24">
|
||||
<el-button type="primary" @click="handlePushParams"
|
||||
><i-ep-plus />添加算子程序</el-button
|
||||
>
|
||||
<el-button type="primary" @click="handleDownloadPs"
|
||||
><i-ep-download />文件例程下载</el-button
|
||||
>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-card style="padding-bottom: 50px;">
|
||||
<template #header
|
||||
><svg-icon
|
||||
icon-class="pause"
|
||||
style="width: 20px; height: 20px"
|
||||
/>算子程序信息</template
|
||||
>
|
||||
<el-table :data="pageData" stripe v-loading="tableLoading">
|
||||
<el-table-column label="程序适应硬件" align="left" prop="cmpt_hardware_type" />
|
||||
<el-table-column label="程序版本" align="left" prop="program_version" />
|
||||
<el-table-column label="创建时间" align="left" prop="create_time" />
|
||||
<el-table-column label="上传用户" align="left" prop="user_name" />
|
||||
<el-table-column label="操作" fixed="right" align="center">
|
||||
<template #default="scope">
|
||||
<el-button text type="primary" size="small" @click="handleDelete(scope.row)"
|
||||
><i-ep-delete />删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-if="total > 0"
|
||||
v-model:total="total"
|
||||
v-model:page="queryParams.page_num"
|
||||
v-model:limit="queryParams.page_size"
|
||||
@pagination="handleQuery"
|
||||
/>
|
||||
</el-card>
|
||||
<el-card class="card-footer">
|
||||
<el-button @click="closeBack"><i-ep-close />取 消</el-button>
|
||||
</el-card>
|
||||
<paramDialog ref="paramDialogRef"></paramDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import OperatorApi from "@/api/operator";
|
||||
import paramDialog from "../calculateParam/dialog.vue";
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
@ -68,19 +129,70 @@ const loading = ref(false); // 加载状态
|
|||
// 算子表单数据
|
||||
const dataInfo = ref({});
|
||||
|
||||
const queryParams = reactive({
|
||||
page_num: 1,
|
||||
page_size: 10,
|
||||
operation_id: null,
|
||||
});
|
||||
const total = ref(0); // 数据总数
|
||||
const pageData = ref([]); // 分页数据
|
||||
const tableLoading = ref(false); // 加载状态
|
||||
const paramDialogRef = ref(""); // 算子程序子组件
|
||||
|
||||
/** 返回默认页面 */
|
||||
function closeBack() {
|
||||
router.push({ path: "/operatorLibrary/calculate" });
|
||||
}
|
||||
|
||||
/** 删除算子程序 */
|
||||
function handleDelete(program_id) {
|
||||
ElMessageBox.confirm("确认删除算子程序?", "警告", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}).then(function () {
|
||||
OperatorApi.deletePrograms(program_id).then((res) => {
|
||||
ElMessage.success("删除成功");
|
||||
handleQuery();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/** 查询算子程序 */
|
||||
function handleQuery() {
|
||||
tableLoading.value = true;
|
||||
OperatorApi.getPrograms(queryParams)
|
||||
.then((res) => {
|
||||
pageData.value = res.data.data.program_list;
|
||||
total.value = res.data.data.total;
|
||||
})
|
||||
.finally(() => {
|
||||
tableLoading.value = false;
|
||||
});
|
||||
}
|
||||
|
||||
/** 添加算子程序 */
|
||||
function handlePushParams(){
|
||||
paramDialogRef.value.show(dataInfo.value);
|
||||
}
|
||||
|
||||
/** 文件例程下载 */
|
||||
function handleDownloadPs(){
|
||||
ElMessage.error("【error】待提供!");
|
||||
}
|
||||
|
||||
/** 初始化数据 */
|
||||
function initData() {
|
||||
let id = route.query.id;
|
||||
loading.value = true;
|
||||
queryParams.operation_id = id;
|
||||
handleQuery();
|
||||
OperatorApi.findOne(id)
|
||||
.then((res) => {
|
||||
//JSON转换
|
||||
res.data.data.parametersJson = JSON.stringify(res.data.data.parameters);
|
||||
let parameters = res.data.data.parameters;
|
||||
res.data.data.parametersInputs = JSON.stringify(parameters.inputs);
|
||||
res.data.data.parametersOutputs = JSON.stringify(parameters.outputs);
|
||||
dataInfo.value = res.data.data;
|
||||
})
|
||||
.finally(() => {
|
||||
|
|
|
@ -0,0 +1,154 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-dialog
|
||||
:title="title"
|
||||
v-model="open"
|
||||
:loading="loading"
|
||||
width="880px"
|
||||
append-to-body
|
||||
>
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="算子名称">
|
||||
{{ form.operator_name }}
|
||||
</el-form-item>
|
||||
<el-form-item label="算子类型">
|
||||
{{ form.oper_main_type_name
|
||||
}}<el-tag effect="plain">
|
||||
{{ form.oper_sub_type_name }}
|
||||
</el-tag>
|
||||
</el-form-item>
|
||||
<el-form-item label="适配硬件" prop="cmpt_hardware_type">
|
||||
<el-select
|
||||
v-model="form.cmpt_hardware_type"
|
||||
placeholder="请选择适配硬件类型"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option v-for="item in listOpt" :key="item" :label="item" :value="item" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="程序版本" prop="program_version">
|
||||
<el-input
|
||||
v-model="form.program_version"
|
||||
type="number"
|
||||
placeholder="请输入程序版本"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="程序文件" prop="program_file_name">
|
||||
<el-upload
|
||||
v-model:file-list="fileList"
|
||||
action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
|
||||
ref="uploadRef"
|
||||
class="upload-demo"
|
||||
:on-exceed="handleFileExceed"
|
||||
:on-change="handleFileChange"
|
||||
:auto-upload="false"
|
||||
:limit="1"
|
||||
accept="application/x-tar"
|
||||
>
|
||||
<el-button type="primary"
|
||||
><el-icon class="el-icon--upload"> <i-ep-upload-filled /> </el-icon
|
||||
>选择文件</el-button
|
||||
>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip">
|
||||
请上传大小不超过 <strong style="color: red">10M</strong>,格式为
|
||||
<strong style="color: red">tar</strong> 的文件
|
||||
</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="handleSubmit">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script setup name="calculateParam">
|
||||
import ConstApi from "@/api/const";
|
||||
import OperatorApi from "@/api/operator";
|
||||
|
||||
const open = ref(false); // 表单数据
|
||||
const form = ref({}); // 表单数据
|
||||
const title = ref("添加算子程序"); // 标题
|
||||
const formRef = ref(ElForm); // 表单
|
||||
const loading = ref(false); // 加载状态
|
||||
const fileList = ref([]); // 文件列表
|
||||
const uploadRef = ref(""); // 上传组件
|
||||
|
||||
// 基础数据列表
|
||||
let listOpt = ref([]);
|
||||
|
||||
// 校验规则
|
||||
const rules = reactive({
|
||||
cmpt_hardware_type: [
|
||||
{ required: true, message: "适配硬件不能为空", trigger: "change" },
|
||||
],
|
||||
program_version: [{ required: true, message: "程序版本不能为空", trigger: "blur" }],
|
||||
program_file_name: [{ required: true, message: "程序文件不能为空", trigger: "blur" }],
|
||||
});
|
||||
|
||||
/** 表单提交 */
|
||||
const handleSubmit = useThrottleFn(() => {
|
||||
formRef.value.validate((valid) => {
|
||||
if (valid) {
|
||||
loading.value = true;
|
||||
OperatorApi.addPrograms(form)
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
ElMessage.success("保存成功");
|
||||
cancel();
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
}
|
||||
});
|
||||
}, 3000);
|
||||
|
||||
// 文件上传
|
||||
function handleFileChange(file) {
|
||||
formRef.value.validateField("program_file_name");
|
||||
}
|
||||
|
||||
// 文件超出限制
|
||||
function handleFileExceed() {
|
||||
ElMessage.warning("已达到上传文件限制,请删除后继续上传!");
|
||||
}
|
||||
|
||||
/** 返回默认页面 */
|
||||
function cancel() {
|
||||
open.value = false;
|
||||
}
|
||||
|
||||
// 初始化选项列表
|
||||
const initPageData = () => {
|
||||
ConstApi.cmptHardwareType().then((res) => {
|
||||
listOpt.value = res.data.data.cmpt_hardware_type_list || [];
|
||||
});
|
||||
};
|
||||
|
||||
/** 页面初始化 */
|
||||
function show(data) {
|
||||
initPageData();
|
||||
form.value.operator_id = data.operator_id;
|
||||
form.value.operator_name = data.operator_name;
|
||||
form.value.oper_main_type_name = data.oper_main_type_name;
|
||||
form.value.oper_sub_type_name = data.oper_sub_type_name;
|
||||
open.value = true;
|
||||
}
|
||||
|
||||
/** 子组件默认包含是私有 */
|
||||
defineExpose({
|
||||
show,
|
||||
});
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.el-tag--plain {
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
|
@ -13,10 +13,7 @@
|
|||
<el-row>
|
||||
<el-col :lg="12" :xs="12">
|
||||
<el-form-item label="工具链名称" prop="tool_name">
|
||||
<el-input
|
||||
v-model="baseForm.tool_name"
|
||||
placeholder="请输入工具链名称"
|
||||
/>
|
||||
<el-input v-model="baseForm.tool_name" placeholder="请输入工具链名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12" :xs="12">
|
||||
|
@ -95,7 +92,7 @@
|
|||
>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-card v-loading="loading">
|
||||
<el-card v-loading="loading" style="padding-bottom: 50px;">
|
||||
<template #header
|
||||
><svg-icon
|
||||
icon-class="pause"
|
||||
|
@ -105,7 +102,7 @@
|
|||
<el-table :data="pageData" style="width: 100%" stripe v-loading="queryLoading">
|
||||
<el-table-column prop="params_name" label="运行参数名称" align="left" />
|
||||
<el-table-column prop="params_desc" label="运行参数描述" align="left" />
|
||||
<el-table-column prop="params_desc1" label="匹配模型网络名称" align="left" />
|
||||
<el-table-column prop="modl_sub_type_name" label="适用模型类型" align="left" />
|
||||
<el-table-column prop="user_name" label="创建用户" align="left" />
|
||||
<el-table-column prop="create_time" label="创建时间" align="left" />
|
||||
<el-table-column label="操作" fixed="right" align="center">
|
||||
|
@ -197,8 +194,15 @@
|
|||
v-loading="infoLoading"
|
||||
>
|
||||
<el-form label-width="108px">
|
||||
<el-form-item label="适用模型类型">
|
||||
{{dataInfo.modl_sub_type_name}}
|
||||
</el-form-item>
|
||||
<el-form-item label="运行参数名称">
|
||||
<el-input v-model="dataInfo.params_name" disabled placeholder="请输入运行参数名称" />
|
||||
<el-input
|
||||
v-model="dataInfo.params_name"
|
||||
disabled
|
||||
placeholder="请输入运行参数名称"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="运行参数描述">
|
||||
<el-input
|
||||
|
@ -298,7 +302,7 @@ const handleSubmit = useThrottleFn(() => {
|
|||
baseFormRef.value.validate((valid: any) => {
|
||||
if (valid) {
|
||||
loading.value = true;
|
||||
ToolChainshApi.editTool(baseForm.tool_id,baseForm)
|
||||
ToolChainshApi.editTool(baseForm.tool_id, baseForm)
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
ElMessage.success("修改成功");
|
||||
|
@ -317,17 +321,17 @@ const handleSubmitFile = useThrottleFn(() => {
|
|||
formRef.value.validate((valid: any) => {
|
||||
if (valid) {
|
||||
ElMessage.error("缺少接口");
|
||||
// formLoading.value = true;
|
||||
// ToolChainshApi.editTool(baseForm.tool_id,baseForm)
|
||||
// .then((res) => {
|
||||
// if (res.data.code == 0) {
|
||||
// ElMessage.success("修改成功");
|
||||
// closeBack();
|
||||
// }
|
||||
// })
|
||||
// .finally(() => {
|
||||
// formLoading.value = false;
|
||||
// });
|
||||
formLoading.value = true;
|
||||
ToolChainshApi.addToolParams(form)
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
ElMessage.success("修改成功");
|
||||
closeBack();
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
formLoading.value = false;
|
||||
});
|
||||
}
|
||||
});
|
||||
}, 3000);
|
||||
|
@ -434,9 +438,11 @@ function handleDelete(row: { [key: string]: any }) {
|
|||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}).then(function () {
|
||||
ToolChainshApi.deleteTool(row.tool_id).then((res) => {
|
||||
ElMessage.error("缺少接口");
|
||||
handleQuery();
|
||||
ToolChainshApi.deleteToolParams(row.params_id).then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
ElMessage.success("删除运行参数成功");
|
||||
handleQuery();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -453,7 +459,7 @@ function initData() {
|
|||
.finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
handleQuery();
|
||||
handleQuery();
|
||||
}
|
||||
|
||||
/** 查询运行参数列表 */
|
||||
|
|
Loading…
Reference in New Issue