update code

main
haha 2024-08-17 23:06:31 +08:00
parent 9f7acbdaec
commit 86faa6878b
8 changed files with 147 additions and 314 deletions

View File

@ -39,3 +39,11 @@ export function isExternal(path: string) {
const isExternal = /^(https?:|http?:|mailto:|tel:)/.test(path); const isExternal = /^(https?:|http?:|mailto:|tel:)/.test(path);
return isExternal; return isExternal;
} }
export function toJson(d:any){
try {
return JSON.parse(d);
} catch (e) {
return {};
}
}

View File

@ -3,78 +3,41 @@
<div class="app-container model-detail"> <div class="app-container model-detail">
<!-- 算子新增表单 --> <!-- 算子新增表单 -->
<el-card v-loading="loading"> <el-card v-loading="loading">
<template #header <template #header><svg-icon icon-class="pause" style="width: 20px; height: 20px" /> 算子基本信息
><svg-icon icon-class="pause" style="width: 20px; height: 20px" /> 算子基本信息
</template> </template>
<el-row> <el-row>
<el-col :lg="12" :xs="24"> <el-col :lg="12" :xs="24">
<el-form ref="formRef" :model="formData" :rules="rules" label-width="80px"> <el-form ref="formRef" :model="formData" :rules="rules" label-width="80px">
<el-form-item label="算子名称" prop="operator_name"> <el-form-item label="算子名称" prop="operator_name">
<el-input <el-input v-model="formData.operator_name" maxlength="64" show-word-limit placeholder="请输入算子名称" />
v-model="formData.operator_name"
maxlength="64"
show-word-limit
placeholder="请输入算子名称"
/>
</el-form-item> </el-form-item>
<el-form-item label="算子类型" prop="oper_sub_type"> <el-form-item label="算子类型" prop="oper_sub_type">
<el-row style="width: 100%"> <el-row style="width: 100%">
<el-col :span="12"> <el-col :span="12">
<el-select <el-select v-model="formData.oper_main_type" placeholder="请选择算子主类型" style="width: 100%"
v-model="formData.oper_main_type" @change="handleChange">
placeholder="请选择算子主类型" <el-option v-for="item in listOpt.operTypeList" :key="item.oper_main_type"
style="width: 100%" :label="item.oper_main_type_name" :value="item.oper_main_type" />
@change="handleChange"
>
<el-option
v-for="item in listOpt.operTypeList"
:key="item.oper_main_type"
:label="item.oper_main_type_name"
:value="item.oper_main_type"
/>
</el-select> </el-select>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-select <el-select v-model="formData.oper_sub_type" placeholder="请选择算子子类型" style="width: 100%"
v-model="formData.oper_sub_type" @change="handleChangeRules">
placeholder="请选择算子子类型" <el-option v-for="item in listOpt.operSubTypeList" :key="item.oper_sub_type"
style="width: 100%" :label="item.oper_sub_type_name" :value="item.oper_sub_type" />
@change="handleChangeRules"
>
<el-option
v-for="item in listOpt.operSubTypeList"
:key="item.oper_sub_type"
:label="item.oper_sub_type_name"
:value="item.oper_sub_type"
/>
</el-select> </el-select>
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="算子说明" prop="operator_desc"> <el-form-item label="算子说明" prop="operator_desc">
<el-input <el-input v-model="formData.operator_desc" :rows="2" type="textarea" placeholder="请输入算子说明"
v-model="formData.operator_desc" maxlength="1024" />
:rows="2"
type="textarea"
placeholder="请输入算子说明"
maxlength="1024"
/>
</el-form-item> </el-form-item>
<el-form-item label="算子文件" prop="parameters"> <el-form-item label="算子文件" prop="parameters">
<el-upload <el-upload ref="uploadRef" class="upload-demo" :on-change="handleFileChange" :on-remove="handleFileRemove"
ref="uploadRef" :on-exceed="handleFileExceed" :auto-upload="false" :limit="1" accept="application/json">
class="upload-demo" <el-button type="primary"><el-icon class="el-icon--upload"> <i-ep-upload-filled />
:on-change="handleFileChange" </el-icon></el-button>
:on-remove="handleFileRemove"
:on-exceed="handleFileExceed"
:auto-upload="false"
:limit="1"
accept="application/json"
>
<el-button type="primary"
><el-icon class="el-icon--upload"> <i-ep-upload-filled /> </el-icon
>选择文件</el-button
>
<template #tip> <template #tip>
<div class="el-upload__tip"> <div class="el-upload__tip">
请上传大小不超过 <strong style="color: red">10M</strong>格式为 请上传大小不超过 <strong style="color: red">10M</strong>格式为
@ -88,16 +51,11 @@
<el-col :lg="12" :xs="24"> <el-col :lg="12" :xs="24">
<div style="padding-left: 35px" v-if="fileStatus"> <div style="padding-left: 35px" v-if="fileStatus">
<el-form label-width="100px" size="small"> <el-form label-width="100px" size="small">
<el-divider content-position="left" <el-divider content-position="left"><strong style="color: #409eff">算子文件预览</strong></el-divider>
><strong style="color: #409eff">算子文件预览</strong></el-divider <json-viewer :value="toJson(codeHtml)" copyable boxed sort theme="my-json-view jv-light" />
> <!--
<el-input <el-input v-model="codeHtml" placeholder="请输入算子文件JSON" :rows="10" disabled type="textarea" />
v-model="codeHtml" -->
placeholder="请输入算子文件JSON"
:rows="10"
disabled
type="textarea"
/>
</el-form> </el-form>
</div> </div>
</el-col> </el-col>
@ -113,7 +71,7 @@
<script setup lang="ts"> <script setup lang="ts">
import ConstApi from "@/api/const"; import ConstApi from "@/api/const";
import OperatorApi from "@/api/operator"; import OperatorApi from "@/api/operator";
import { toJson } from '@/utils/'
const router = useRouter(); const router = useRouter();
const formRef = ref(ElForm); // const formRef = ref(ElForm); //
const loading = ref(false); // const loading = ref(false); //
@ -290,21 +248,27 @@ onMounted(() => {
align-items: center; align-items: center;
} }
} }
.sp-file { .sp-file {
color: #29d; color: #29d;
} }
.tb-base-info { .tb-base-info {
line-height: 30px; line-height: 30px;
} }
:deep(.svg-icon) { :deep(.svg-icon) {
margin-right: 8px; margin-right: 8px;
} }
.card-footer { .card-footer {
position: fixed; position: fixed;
width: calc(100% - 215px); width: calc(100% - 215px);
bottom: 0px; bottom: 0px;
:deep(.el-card__body) { :deep(.el-card__body) {
padding: 10px; padding: 10px;
.el-pagination { .el-pagination {
justify-content: end; justify-content: end;
} }
@ -317,12 +281,15 @@ onMounted(() => {
color: #e36209; color: #e36209;
font-family: "Courier New", Courier, monospace; font-family: "Courier New", Courier, monospace;
background: #f5f5f5; background: #f5f5f5;
.green { .green {
color: #22863a; color: #22863a;
} }
.blue { .blue {
color: #005cc5; color: #005cc5;
} }
.black { .black {
color: #032f62; color: #032f62;
} }

View File

@ -3,12 +3,7 @@
<div class="app-container model-detail"> <div class="app-container model-detail">
<!-- 算子管理详情 --> <!-- 算子管理详情 -->
<el-card> <el-card>
<template #header <template #header><svg-icon icon-class="pause" style="width: 20px; height: 20px" />算子基本信息</template>
><svg-icon
icon-class="pause"
style="width: 20px; height: 20px"
/></template
>
<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-row>
<el-col :span="24"> <el-col :span="24">
@ -18,13 +13,11 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="算子主类型"> <el-form-item label="算子主类型">
{{ dataInfo.oper_main_type_name }}</el-form-item {{ dataInfo.oper_main_type_name }}</el-form-item>
>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="算子子类型"> <el-form-item label="算子子类型">
{{ dataInfo.oper_sub_type_name }}</el-form-item {{ dataInfo.oper_sub_type_name }}</el-form-item>
>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@ -38,37 +31,28 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="算子说明"> <el-form-item label="算子说明">
<el-input <el-input v-model="dataInfo.operator_desc" :disabled="true" placeholder="请输入数据集名称" :rows="3"
v-model="dataInfo.operator_desc" type="textarea" />
:disabled="true"
placeholder="请输入数据集名称"
:rows="3"
type="textarea"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="输入参数"> <el-form-item label="输入参数">
<el-input <json-viewer :value="toJson(dataInfo.parametersInputs)" copyable boxed sort
v-model="dataInfo.parametersInputs" theme="my-json-view jv-light" />
:disabled="true" <!--
placeholder="请填写输入参数" <el-input v-model="dataInfo.parametersInputs" :disabled="true" placeholder="请填写输入参数" :rows="8"
:rows="8" type="textarea" />-->
type="textarea"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="输出参数"> <el-form-item label="输出参数">
<el-input <json-viewer :value="toJson(dataInfo.parametersOutputs)" copyable boxed sort
v-model="dataInfo.parametersOutputs" theme="my-json-view jv-light" />
:disabled="true" <!--
placeholder="请填写输出参数" <el-input v-model="dataInfo.parametersOutputs" :disabled="true" placeholder="请填写输出参数" :rows="8"
:rows="8" type="textarea" />-->
type="textarea"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -76,21 +60,12 @@
</el-card> </el-card>
<el-row style="padding: 10px 15px"> <el-row style="padding: 10px 15px">
<el-col :lg="24" :xs="24"> <el-col :lg="24" :xs="24">
<el-button type="primary" @click="handlePushParams" <el-button type="primary" @click="handlePushParams"><i-ep-plus />添加算子程序</el-button>
><i-ep-plus />添加算子程序</el-button <el-button type="primary" @click="handleDownloadPs"><i-ep-download />文件例程下载</el-button>
>
<el-button type="primary" @click="handleDownloadPs"
><i-ep-download />文件例程下载</el-button
>
</el-col> </el-col>
</el-row> </el-row>
<el-card style="padding-bottom: 50px;"> <el-card style="padding-bottom: 50px;">
<template #header <template #header><svg-icon icon-class="pause" style="width: 20px; height: 20px" />算子程序信息</template>
><svg-icon
icon-class="pause"
style="width: 20px; height: 20px"
/></template
>
<el-table :data="pageData" stripe v-loading="tableLoading"> <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="cmpt_hardware_type" />
<el-table-column label="程序版本" align="left" prop="program_version" /> <el-table-column label="程序版本" align="left" prop="program_version" />
@ -98,19 +73,12 @@
<el-table-column label="上传用户" align="left" prop="user_name" /> <el-table-column label="上传用户" align="left" prop="user_name" />
<el-table-column label="操作" fixed="right" align="center" width="150"> <el-table-column label="操作" fixed="right" align="center" width="150">
<template #default="scope"> <template #default="scope">
<el-button text type="primary" size="small" @click="handleDelete(scope.row)" <el-button text type="primary" size="small" @click="handleDelete(scope.row)"><i-ep-delete />删除</el-button>
><i-ep-delete />删除</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination v-if="total > 0" v-model:total="total" v-model:page="queryParams.page_num"
v-if="total > 0" v-model:limit="queryParams.page_size" @pagination="handleQuery" />
v-model:total="total"
v-model:page="queryParams.page_num"
v-model:limit="queryParams.page_size"
@pagination="handleQuery"
/>
</el-card> </el-card>
<el-card class="card-footer"> <el-card class="card-footer">
<el-button @click="closeBack"><i-ep-close /> </el-button> <el-button @click="closeBack"><i-ep-close /> </el-button>
@ -122,7 +90,7 @@
<script setup lang="ts"> <script setup lang="ts">
import OperatorApi from "@/api/operator"; import OperatorApi from "@/api/operator";
import paramDialog from "../calculateParam/dialog.vue"; import paramDialog from "../calculateParam/dialog.vue";
import { toJson } from '@/utils/'
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const loading = ref(false); // const loading = ref(false); //
@ -172,12 +140,12 @@ function handleQuery() {
} }
/** 添加算子程序 */ /** 添加算子程序 */
function handlePushParams(){ function handlePushParams() {
paramDialogRef.value.show(dataInfo.value); paramDialogRef.value.show(dataInfo.value);
} }
/** 文件例程下载 */ /** 文件例程下载 */
function handleDownloadPs(){ function handleDownloadPs() {
ElMessage.error("【error】待提供"); ElMessage.error("【error】待提供");
} }
@ -211,22 +179,32 @@ onMounted(() => {
display: flex; display: flex;
align-items: center; align-items: center;
} }
:deep(.jv-my-json-view) {
width: 100%;
}
} }
.sp-file { .sp-file {
color: #29d; color: #29d;
} }
.tb-base-info { .tb-base-info {
line-height: 30px; line-height: 30px;
} }
:deep(.svg-icon) { :deep(.svg-icon) {
margin-right: 8px; margin-right: 8px;
} }
.card-footer { .card-footer {
position: fixed; position: fixed;
width: calc(100% - 215px); width: calc(100% - 215px);
bottom: 0px; bottom: 0px;
:deep(.el-card__body) { :deep(.el-card__body) {
padding: 10px; padding: 10px;
.el-pagination { .el-pagination {
justify-content: end; justify-content: end;
} }

View File

@ -1,12 +1,6 @@
<template> <template>
<div> <div>
<el-dialog <el-dialog :title="title" v-model="open" :loading="loading" width="880px" append-to-body>
: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 ref="formRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="算子名称"> <el-form-item label="算子名称">
{{ form.operator_name }} {{ form.operator_name }}
@ -18,45 +12,24 @@
</el-tag> </el-tag>
</el-form-item> </el-form-item>
<el-form-item label="适配硬件" prop="cmpt_hardware_type"> <el-form-item label="适配硬件" prop="cmpt_hardware_type">
<el-select <el-select v-model="form.cmpt_hardware_type" placeholder="请选择适配硬件类型" style="width: 100%">
v-model="form.cmpt_hardware_type"
placeholder="请选择适配硬件类型"
style="width: 100%"
>
<el-option v-for="item in listOpt" :key="item" :label="item" :value="item" /> <el-option v-for="item in listOpt" :key="item" :label="item" :value="item" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="程序版本" prop="program_version"> <el-form-item label="程序版本" prop="program_version">
<el-input <el-input v-model="form.program_version" type="number" placeholder="请输入程序版本" />
v-model="form.program_version"
type="number"
placeholder="请输入程序版本"
/>
</el-form-item> </el-form-item>
<!--整数@input="filterInput"--> <!--整数@input="filterInput"-->
<el-form-item label="程序文件" prop="program_file_name"> <el-form-item label="程序文件" prop="program_file_name">
<el-upload <el-upload ref="uploadRef" :action="uploadUrl" :headers="headersObject" v-model:file-list="fileList"
ref="uploadRef" class="upload-demo" :data="uploadData" :on-exceed="handleFileExceed" :before-upload="beforeUpload"
:action="uploadUrl" :on-success="uploadsuccess" :auto-upload="true" :limit="1" accept="application/x-gzip">
:headers="headersObject"
v-model:file-list="fileList"
class="upload-demo"
:data="uploadData"
:on-exceed="handleFileExceed"
:before-upload="beforeUpload"
:on-success="uploadsuccess"
:auto-upload="true"
:limit="1"
accept="application/x-gzip"
>
<!--el-upload-accept 多个以逗号隔开application/x-tar--> <!--el-upload-accept 多个以逗号隔开application/x-tar-->
<el-button type="primary" <el-button type="primary"><el-icon class="el-icon--upload"> <i-ep-upload-filled />
><el-icon class="el-icon--upload"> <i-ep-upload-filled /> </el-icon </el-icon></el-button>
>选择文件</el-button
>
<template #tip> <template #tip>
<div class="el-upload__tip"> <div class="el-upload__tip">
请上传大小不超过 <strong style="color: red">10M</strong>格式为 请上传大小不超过 <strong style="color: red">100M</strong>格式为
<strong style="color: red">gz</strong> 的文件 <strong style="color: red">gz</strong> 的文件
</div> </div>
</template> </template>
@ -131,8 +104,13 @@ const handleSubmit = useThrottleFn(() => {
// //
function beforeUpload(file) { function beforeUpload(file) {
if (file.size > 100 * 1048 * 1048) {
ElMessage.warning("上传文件不能大于10M");
return false;
}
uploadData.program_file_name = file.name; uploadData.program_file_name = file.name;
uploadData.file_content = file; uploadData.file_content = file;
return true;
} }
// //
@ -141,7 +119,7 @@ function handleFileExceed() {
} }
// //
function uploadsuccess(res,file){ function uploadsuccess(res, file) {
form.value.program_file_name = res.data.program_file_name; form.value.program_file_name = res.data.program_file_name;
formRef.value.validateField("program_file_name"); formRef.value.validateField("program_file_name");
} }

View File

@ -3,8 +3,7 @@
<div class="app-container model-detail"> <div class="app-container model-detail">
<!-- 用户新增/编辑表单 --> <!-- 用户新增/编辑表单 -->
<el-card v-loading="loading"> <el-card v-loading="loading">
<template #header <template #header><svg-icon icon-class="pause" style="width: 20px; height: 20px" />数据集基本信息
><svg-icon icon-class="pause" style="width: 20px; height: 20px" />数据集基本信息
</template> </template>
<el-form ref="formRef" :model="form" :rules="rules" label-width="120px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
<el-row> <el-row>
@ -15,11 +14,7 @@
</el-col> </el-col>
<el-col :lg="12" :xs="24"> <el-col :lg="12" :xs="24">
<el-form-item label="数据集版本" prop="dataset_version"> <el-form-item label="数据集版本" prop="dataset_version">
<el-input <el-input v-model="form.dataset_version" type="number" placeholder="请输入数据集版本" />
v-model="form.dataset_version"
type="number"
placeholder="请输入数据集版本"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -27,27 +22,15 @@
<el-col :lg="12" :xs="24"> <el-col :lg="12" :xs="24">
<el-form-item label="适合模型类型" prop="modl_sub_type"> <el-form-item label="适合模型类型" prop="modl_sub_type">
<el-select v-model="form.modl_sub_type" placeholder="请选择适合模型类型"> <el-select v-model="form.modl_sub_type" placeholder="请选择适合模型类型">
<el-option <el-option v-for="item in listOpt.modlSubTypeList" :key="item.modl_sub_type"
v-for="item in listOpt.modlSubTypeList" :label="item.modl_sub_type_name" :value="item.modl_sub_type" />
:key="item.modl_sub_type"
:label="item.modl_sub_type_name"
:value="item.modl_sub_type"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="12" :xs="24"> <el-col :lg="12" :xs="24">
<el-form-item label="数据集格式" prop="dats_dataset_format"> <el-form-item label="数据集格式" prop="dats_dataset_format">
<el-select <el-select v-model="form.dats_dataset_format" placeholder="请选择数据集格式">
v-model="form.dats_dataset_format" <el-option v-for="item in listOpt.datasetFormatList" :key="item" :label="item" :value="item" />
placeholder="请选择数据集格式"
>
<el-option
v-for="item in listOpt.datasetFormatList"
:key="item"
:label="item"
:value="item"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -56,12 +39,7 @@
<el-col :lg="12" :xs="24"> <el-col :lg="12" :xs="24">
<el-form-item label="标注类型" prop="dats_label_type"> <el-form-item label="标注类型" prop="dats_label_type">
<el-select v-model="form.dats_label_type" placeholder="请选择标注类型"> <el-select v-model="form.dats_label_type" placeholder="请选择标注类型">
<el-option <el-option v-for="item in listOpt.labelTypeList" :key="item" :label="item" :value="item" />
v-for="item in listOpt.labelTypeList"
:key="item"
:label="item"
:value="item"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -69,23 +47,15 @@
<el-form-item label="图像分辨率" prop="image_height"> <el-form-item label="图像分辨率" prop="image_height">
<el-row style="width: 100%"> <el-row style="width: 100%">
<el-col :lg="11"> <el-col :lg="11">
<el-input <el-input v-model="form.image_width" type="number" placeholder="请输入分辨率宽度">
v-model="form.image_width"
type="number"
placeholder="请输入分辨率宽度"
>
<template #prepend> </template> <template #prepend> </template>
</el-input> </el-input>
</el-col> </el-col>
<el-col :lg="2" class="font-center" <el-col :lg="2" class="font-center"><el-icon>
><el-icon><Rank /></el-icon <Rank />
></el-col> </el-icon></el-col>
<el-col :lg="11"> <el-col :lg="11">
<el-input <el-input v-model="form.image_height" type="number" placeholder="请输入分辨率高度">
v-model="form.image_height"
type="number"
placeholder="请输入分辨率高度"
>
<template #prepend> </template> <template #prepend> </template>
</el-input> </el-input>
</el-col> </el-col>
@ -96,12 +66,7 @@
<el-row> <el-row>
<el-col :lg="12" :xs="24"> <el-col :lg="12" :xs="24">
<el-form-item label="数据集描述" prop="dataset_desc"> <el-form-item label="数据集描述" prop="dataset_desc">
<el-input <el-input v-model="form.dataset_desc" placeholder="请输入数据集描述" :rows="2" type="textarea" />
v-model="form.dataset_desc"
placeholder="请输入数据集描述"
:rows="2"
type="textarea"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="12" :xs="24"> </el-col> <el-col :lg="12" :xs="24"> </el-col>
@ -109,20 +74,10 @@
<el-row> <el-row>
<el-col :lg="12" :xs="24"> <el-col :lg="12" :xs="24">
<el-form-item label="数据集参数文件" prop="dataset_parameters"> <el-form-item label="数据集参数文件" prop="dataset_parameters">
<el-upload <el-upload ref="uploadRef" class="upload-demo" :on-change="handleFileChange" :on-remove="handleFileRemove"
ref="uploadRef" :on-exceed="handleFileExceed" :auto-upload="false" :limit="1" accept="application/json">
class="upload-demo" <el-button type="primary"><el-icon class="el-icon--upload"> <i-ep-upload-filled />
:on-change="handleFileChange" </el-icon></el-button>
:on-remove="handleFileRemove"
:on-exceed="handleFileExceed"
:auto-upload="false"
:limit="1"
accept="application/json"
>
<el-button type="primary"
><el-icon class="el-icon--upload"> <i-ep-upload-filled /> </el-icon
>选择文件</el-button
>
<template #tip> <template #tip>
<div class="el-upload__tip"> <div class="el-upload__tip">
请上传大小不超过 <strong style="color: red">10M</strong>格式为 请上传大小不超过 <strong style="color: red">10M</strong>格式为
@ -134,16 +89,8 @@
</el-col> </el-col>
<el-col :lg="12" :xs="24"> <el-col :lg="12" :xs="24">
<div style="padding-left: 35px" v-if="fileStatus"> <div style="padding-left: 35px" v-if="fileStatus">
<el-divider content-position="left" <el-divider content-position="left"><strong style="color: #409eff">数据集参数文件预览</strong></el-divider>
><strong style="color: #409eff">数据集参数文件预览</strong></el-divider <el-input v-model="codeHtml" placeholder="请输入数据集参数JSON" :rows="10" disabled type="textarea" />
>
<el-input
v-model="codeHtml"
placeholder="请输入数据集参数JSON"
:rows="10"
disabled
type="textarea"
/>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -323,26 +270,33 @@ onMounted(() => {
align-items: center; align-items: center;
} }
} }
.sp-file { .sp-file {
color: #29d; color: #29d;
} }
.tb-base-info { .tb-base-info {
line-height: 30px; line-height: 30px;
} }
:deep(.svg-icon) { :deep(.svg-icon) {
margin-right: 8px; margin-right: 8px;
} }
.card-footer { .card-footer {
position: fixed; position: fixed;
width: calc(100% - 215px); width: calc(100% - 215px);
bottom: 0px; bottom: 0px;
:deep(.el-card__body) { :deep(.el-card__body) {
padding: 10px; padding: 10px;
.el-pagination { .el-pagination {
justify-content: end; justify-content: end;
} }
} }
} }
.font-center { .font-center {
text-align: center; text-align: center;
color: #cccccc; color: #cccccc;

View File

@ -3,35 +3,21 @@
<div class="app-container model-detail"> <div class="app-container model-detail">
<!-- 用户新增/编辑表单 --> <!-- 用户新增/编辑表单 -->
<el-card v-loading="loading"> <el-card v-loading="loading">
<template #header <template #header><svg-icon icon-class="pause" style="width: 20px; height: 20px" />添加PCIE设备</template>
><svg-icon
icon-class="pause"
style="width: 20px; height: 20px"
/>PCIE</template
>
<el-table :data="unregistedList" stripe> <el-table :data="unregistedList" stripe>
<el-table-column label="选择" width="60" align="center"> <el-table-column label="选择" width="60" align="center">
<template #default="scope"> <template #default="scope">
<el-radio <el-radio v-model="form.unregisted" :label="scope.row.uuid" @change.native="getCurrentRow(scope.row)">{{ ""
v-model="form.unregisted" }}</el-radio>
:label="scope.row.uuid"
@change.native="getCurrentRow(scope.row)"
>{{ "" }}</el-radio
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="pcie_index" label="PCLE序号" align="left" /> <el-table-column prop="pcie_index" label="PCIe序号" align="left" />
<el-table-column prop="hardware_chip" label="芯片信息" align="left" /> <el-table-column prop="hardware_chip" label="芯片信息" align="left" />
<el-table-column prop="hardware_model" label="设备型号" align="left" /> <el-table-column prop="hardware_model" label="设备型号" align="left" />
<el-table-column prop="cmpt_hardware_type" label="设备类型" align="left" /> <el-table-column prop="cmpt_hardware_type" label="设备类型" align="left" />
<el-table-column prop="manufacturer" label="厂商名称" align="left" /> <el-table-column prop="manufacturer" label="厂商名称" align="left" />
<el-table-column prop="software_version" label="服务程序版本" align="left" /> <el-table-column prop="software_version" label="服务程序版本" align="left" />
<el-table-column <el-table-column prop="connection_state" label="连接状态" align="left" v-if="false" />
prop="connection_state"
label="连接状态"
align="left"
v-if="false"
/>
</el-table> </el-table>
</el-card> </el-card>
<el-card v-loading="loading" style="margin-top: 12px"> <el-card v-loading="loading" style="margin-top: 12px">
@ -45,21 +31,10 @@
<el-input v-model="form.device_name" placeholder="请输入设备名称" /> <el-input v-model="form.device_name" placeholder="请输入设备名称" />
</el-form-item> </el-form-item>
<el-form-item label="设备描述" prop="device_desc"> <el-form-item label="设备描述" prop="device_desc">
<el-input <el-input v-model="form.device_desc" :rows="2" type="textarea" placeholder="请输入设备描述" />
v-model="form.device_desc"
:rows="2"
type="textarea"
placeholder="请输入设备描述"
/>
</el-form-item> </el-form-item>
<el-form-item label="详细信息" prop="infomation"> <el-form-item label="详细信息" prop="infomation">
<el-input <el-input v-model="form.infomation" :rows="3" disabled type="textarea" placeholder="请输入详细信息" />
v-model="form.infomation"
:rows="3"
disabled
type="textarea"
placeholder="请输入详细信息"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-col> </el-col>
@ -162,21 +137,27 @@ onMounted(() => {
align-items: center; align-items: center;
} }
} }
.sp-file { .sp-file {
color: #29d; color: #29d;
} }
.tb-base-info { .tb-base-info {
line-height: 30px; line-height: 30px;
} }
:deep(.svg-icon) { :deep(.svg-icon) {
margin-right: 8px; margin-right: 8px;
} }
.card-footer { .card-footer {
position: fixed; position: fixed;
width: calc(100% - 215px); width: calc(100% - 215px);
bottom: 0px; bottom: 0px;
:deep(.el-card__body) { :deep(.el-card__body) {
padding: 10px; padding: 10px;
.el-pagination { .el-pagination {
justify-content: end; justify-content: end;
} }

View File

@ -5,12 +5,8 @@
<template #header> <template #header>
<div class="flex justify-between"> <div class="flex justify-between">
<div> <div>
<el-button type="primary" @click="handleAddPcie()" <el-button type="primary" @click="handleAddPcie()"><i-ep-plus />PCLE设备</el-button>
><i-ep-plus />PCLE设备</el-button <el-button type="primary" @click="handleAddNet()"><i-ep-plus />网络设备</el-button>
>
<el-button type="primary" @click="handleAddNet()"
><i-ep-plus />网络设备</el-button
>
</div> </div>
<!-- <div> <!-- <div>
<el-form ref="queryFormRef" :model="queryParams" :inline="true"> <el-form ref="queryFormRef" :model="queryParams" :inline="true">
@ -36,70 +32,35 @@
</div> --> </div> -->
</div> </div>
</template> </template>
<el-table <el-table v-loading="loading" :data="pageData" stripe @selection-change="handleSelectionChange">
v-loading="loading"
:data="pageData"
stripe
@selection-change="handleSelectionChange"
>
<el-table-column label="设备名称" align="left" prop="device_name" width="250" /> <el-table-column label="设备名称" align="left" prop="device_name" width="250" />
<el-table-column label="芯片信息" align="left" prop="modl_net_type" /> <el-table-column label="芯片信息" align="left" prop="hardware_chip" />
<el-table-column label="推理任务名称" align="left" prop="infer_task_name" /> <el-table-column label="推理任务名称" align="left" prop="infer_task_name" />
<el-table-column label="模型名称" align="left" prop="model_name" /> <el-table-column label="模型名称" align="left" prop="model_name" />
<el-table-column label="模型类型" align="left" prop="modl_net_type" /> <el-table-column label="模型类型" align="left" prop="modl_net_type" />
<el-table-column <el-table-column label="连接状态" align="left" prop="connection_state" />
label="连接状态" <el-table-column label="工作状态" align="left" prop="working_state_name" />
align="left"
prop="connection_state"
/>
<el-table-column
label="工作状态"
align="left"
prop="working_state_name"
/>
<el-table-column label="CPU使用率" width="120" align="left" prop="cpu_usage"> <el-table-column label="CPU使用率" width="120" align="left" prop="cpu_usage">
<template #default="scope"> <template #default="scope">
<el-tag <el-tag :type="scope.row.cpu_usage > 1024 ? 'danger' : 'success'" effect="dark">
:type="scope.row.cpu_usage > 1024 ? 'danger' : 'success'"
effect="dark"
>
{{ scope.row.cpu_usage + " MB" }} {{ scope.row.cpu_usage + " MB" }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="内核温度" width="80" align="left" prop="tempurature"> <el-table-column label="内核温度" width="80" align="left" prop="tempurature">
<template #default="scope"> <template #default="scope">
<el-tag <el-tag :type="scope.row.tempurature > 80 ? 'danger' : 'success'" effect="plain">
:type="scope.row.tempurature > 80 ? 'danger' : 'success'"
effect="plain"
>
{{ scope.row.tempurature + " ℃" }} {{ scope.row.tempurature + " ℃" }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" fixed="right" width="320"> <el-table-column label="操作" fixed="right" width="320">
<template #default="scope"> <template #default="scope">
<el-button <el-button text type="primary" size="small" @click="handleDetail(scope.row)"><i-ep-view />详细</el-button>
text <el-button text type="primary" size="small" @click="handleUpdate(scope.row)"><i-ep-edit />修改</el-button>
type="primary" <el-button v-if="scope.row.id != 2" text type="primary" size="small"
size="small" @click="openUpGrades(scope.row)"><i-ep-upload />升级</el-button>
@click="handleDetail(scope.row)" <el-button text type="primary" size="small" @click="handleDelete(scope.row)"><i-ep-delete />删除</el-button>
><i-ep-view />详细</el-button
>
<el-button text type="primary" size="small" @click="handleUpdate(scope.row)"
><i-ep-edit />修改</el-button
>
<el-button
v-if="scope.row.id != 2"
text
type="primary"
size="small"
@click="openUpGrades(scope.row)"
><i-ep-upload />升级</el-button
>
<el-button text type="primary" size="small" @click="handleDelete(scope.row)"
><i-ep-delete />删除</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

View File

@ -64,6 +64,12 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="100">
<template #default="scope">
<el-button type="primary" text v-if="scope.row.available" size="default"></el-button>
<span v-else style="color: #888;">部署</span>
</template>
</el-table-column>
</el-table> </el-table>
<div v-if="info.state > 0" class="remark"></div> <div v-if="info.state > 0" class="remark"></div>
</el-card> </el-card>