update code

main
haha 2024-07-31 00:33:09 +08:00
parent 74d7f0b760
commit 1b6cba1a1c
4 changed files with 741 additions and 591 deletions

View File

@ -3,9 +3,9 @@ VITE_APP_PORT = 3000
# 代理前缀
VITE_APP_BASE_API = '/api'
VITE_APP_API_URL = http://62.234.3.186/mk/ai/api
#VITE_APP_API_URL = http://62.234.3.186/mk/ai/api
# 线上接口地址
#VITE_APP_API_URL = http://10.5.1.137:8800
VITE_APP_API_URL = http://10.5.1.137:8800
# 开发接口地址
# VITE_APP_API_URL = http://localhost:8989

View File

@ -47,12 +47,28 @@ const download=(id)=>{
method: "get"
});
}
//上传数据文件
const upload = (file) => {
debugger
const formData = new FormData();
formData.append("file_name", file.name);
formData.append("file_content",file)
formData.append("file",file)
return request({
url: `/models/upload`,
method: "post",
data: formData,
headers: {
"Content-Type": "multipart/form-data",
},
});
}
export default {
list,
add,
deleteModel,
findOne,
adaptOperators,
download
download,
upload
}

View File

@ -13,18 +13,17 @@
<el-row>
<el-col :span="14">
<el-form-item label="模型类型" prop="modl_main_type">
<el-select v-model="upForm.modl_main_type" placeholder="请选择"
@change="doMainTypeChange">
<el-option v-for="(it, idx) in listOpt.modelType" :key="idx"
:label="it.modl_main_type_name" :value="it.modl_main_type" />
<el-select v-model="upForm.modl_main_type" placeholder="请选择" @change="doMainTypeChange">
<el-option v-for="(it, idx) in listOpt.modelType" :key="idx" :label="it.modl_main_type_name"
:value="it.modl_main_type" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="" prop="modl_sub_type" class="form-item-sub-type">
<el-select v-model="upForm.modl_sub_type" placeholder="请选择">
<el-option v-for="(it, idx) in listOpt.modelSubType" :key="idx"
:label="it.modl_sub_type_name" :value="it.modl_sub_type" />
<el-option v-for="(it, idx) in listOpt.modelSubType" :key="idx" :label="it.modl_sub_type_name"
:value="it.modl_sub_type" />
</el-select>
</el-form-item>
</el-col>
@ -39,9 +38,9 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="版本描述">
<el-input v-model="upForm.desc" type="textarea" style="width:100%;" :rows="4"
placeholder="请输入版本描述" />
<el-form-item label="模型描述">
<el-input v-model="upForm.model_desc" type="textarea" style="width:100%;" :rows="4"
placeholder="请输入模型描述" />
</el-form-item>
</el-col>
@ -49,21 +48,31 @@
<el-row>
<el-col :span="12">
<el-form-item label="算法框架" prop="modl_framework">
<el-select v-model="upForm.modl_framework" placeholder="请选择"
style="width: 48%;margin-left:2%;">
<el-option v-for="(it, idx) in listOpt.modelFramework" :label="it" :value="it"
:key="idx" />
<el-select v-model="upForm.modl_framework" placeholder="请选择" style="width: 48%;margin-left:2%;">
<el-option v-for="(it, idx) in listOpt.modelFramework" :label="it" :value="it" :key="idx" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="模型网络" prop="modl_net_type">
<el-select v-model="upForm.modl_net_type" placeholder="请选择" style="width: 48%;margin-left:2%;">
<el-option v-for="(it,idx) in listOpt.modelNetType" :label="it" :value="it" :key="idx" />
<el-col :span="12" class="div-mode-type">
<el-row>
<el-col :span="14">
<el-form-item label="模型网络" prop="modl_net_main_type">
<el-select v-model="upForm.modl_net_main_type" placeholder="请选择" @change="doNetMainTypeChange">
<el-option v-for="(it, idx) in listOpt.modelNetType" :label="it.model_net_serial"
:value="it.model_net_serial" :key="idx" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="" prop="modl_net_type" class="form-item-sub-type">
<el-select v-model="upForm.modl_net_type" placeholder="请选择">
<el-option v-for="(it, idx) in listOpt.modelNetSubType" :label="it" :value="it" :key="idx" />
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row>
@ -81,28 +90,33 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="网络参数">
<el-upload v-model:file-list="fileList" class="upload-demo"
action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15" :limit="1">
<el-button type="primary">请选择文件</el-button>
<el-form-item label="网络参数" prop="model_file_list">
<el-upload ref="uploadRef1" class="uploadFile1" :http-request="handleFileChange"
:on-remove="handleFileRemove" :on-exceed="handleFileExceed" :auto-upload-demo="false" :limit="1"
accept=".onnx,.ts">
<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">
请上传大小不超过<span style="color:coral">10M</span>,格式为<span
style="color:coral">onnx/ts</span>的文件
请上传大小不超过<span style="color:coral">10M</span>,格式为<span style="color:coral">onnx/ts</span>的文件
</div>
</template>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="网络配置">
<el-upload v-model:file-list="fileList" class="upload-demo"
action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15" :limit="1">
<el-button type="primary">请选择文件</el-button>
<el-col :span="12" style="position: relative;">
<el-button v-if="upForm.model_parameters" style="position: absolute;left:240px;z-index:999">
<i-ep-view />
查看配置</el-button>
<el-form-item label="网络配置" prop="model_parameters">
<el-upload class="upload-demo" ref="uploadRef2" :on-remove="handleFileRemoveCfg"
:on-exceed="handleFileExceed" :auto-upload-demo="false" :http-request="handleUploadCfg" :limit="1"
accept=".json">
<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">
请上传大小不超过<span style="color:coral">10M</span>,格式为<span
style="color:coral">json</span>的文件
请上传大小不超过<span style="color:coral">10M</span>,格式为<span style="color:coral">json</span>的文件
</div>
</template>
</el-upload>
@ -140,8 +154,11 @@ let listOpt = reactive({
modelNetType: [],
modelFileType: [],
modelSubType: [],
modelNetSubType: [],
upFiles: [],
})
let fileList = ref([])
const uploadRef1 = ref()
const doSave = () => {
uploadForm.value?.validate((valid) => {
@ -155,7 +172,6 @@ const doSave = () => {
}
});
}
const doBack = () => {
router.push({ path: "/modelMgr/index" })
@ -167,11 +183,14 @@ let upForm = reactive({
model_desc: '',
modl_main_type: '',
modl_sub_type: '',
modl_net_main_type: '',
modl_net_type: '',
modl_framework: '',
modl_file_type: '',
model_parameters: {},
model_file_list: []
model_parameters: null,
model_file_list: [
]
})
const logList = reactive([{
date: '2024-05-06 18:34:36', log: '系统已启动编译'
@ -185,11 +204,106 @@ const upRules = computed(() => {
modl_sub_type: [{ required: true, trigger: "blur", message: "请选择子类型", }],
model_version: [{ required: true, trigger: "blur", message: "请输入模型版本", }],
modl_framework: [{ required: true, trigger: "blur", message: "请选择算法框架", }],
modl_net_main_type: [{ required: true, trigger: "blur", message: "请选择主模型网络", }],
modl_net_type: [{ required: true, trigger: "blur", message: "请选择模型网络", }],
modl_file_type: [{ required: true, trigger: "blur", message: "请选择文件类型", }],
model_file_list: [{ required: true, trigger: "blur", message: "请上传网络参数", }],
model_parameters: [{ required: true, trigger: "blur", message: "请上传网络配置", }],
}
});
const handleFileRemoveCfg = (a, b) => {
upForm.model_parameters = null;
}
const handleUploadCfg = (file) => {
if (file.file.size > 10 * 1024 * 1024) {
ElMessage.warning("文件大小不能超10M");
file.onError("文件大小不能超10M")
return;
}
let ext = file.file.name.split(".").pop().toLowerCase();
if (["json"].indexOf(ext) == -1) {
ElMessage.warning("请上传json格式文件");
file.onError("请上传json格式文件")
return;
}
// FileReader
let reader = new FileReader();
// FileReader
if (typeof FileReader === "undefined") {
ElMessage.warning("您的浏览器不支持文件读取。");
file.onError("您的浏览器不支持文件读取。")
return;
}
uploadFile(file).then((res) => {
if (isJSON(res)) {
upForm.model_parameters = JSON.parse(res);
}
});
}
/** 解析json */
function isJSON(str) {
try {
//
JSON.parse(str);
return true;
} catch (error) {
return false;
}
}
//
function uploadFile(file) {
return new Promise(function (resolve, reject) {
let reader = new FileReader();
reader.readAsArrayBuffer(file.file);
reader.onload = function (e) {
var ints = new Uint8Array(e.target.result); //使Uint8Array
let snippets = new TextDecoder("UTF-8").decode(ints); //
resolve(snippets);
};
});
}
//
function handleFileChange(file, b) {
if (file.file.size > 10 * 1024 * 1024) {
ElMessage.warning("文件大小不能超10M");
file.onError("文件大小不能超10M")
return;
}
let ext = file.file.name.split(".").pop().toLowerCase();
if (["onnx", "ts"].indexOf(ext) == -1) {
ElMessage.warning("请上传onnx/ts格式文件");
file.onError("请上传onnx/ts格式文件")
return;
}
ModelApi.upload(file.file).then((res) => {
listOpt.upFiles.push({
name: file.file.name,
serverName: res.data.data.file_name
})
debugger
upForm.model_file_list = listOpt.upFiles.map(it => it.serverName);
});
}
function handleFileExceed() {
ElMessage.warning("超过上传上限!");
}
function handleFileRemove(a, b, c) {
let tmps = listOpt.upFiles.filter(d => d.name == a.name);
if (tmps.length > 0) {
let idx = listOpt.upFiles.indexOf(tmps[0]);
listOpt.upFiles.splice(idx, 1);
}
upForm.model_file_list = listOpt.upFiles.map(it => it.serverName);
}
const initData = () => {
let ajaxs = [];
ajaxs.push(ConstApi.modlMainType());
@ -199,7 +313,11 @@ const initData = () => {
request.all(ajaxs).then(res => {
listOpt.modelType = res[0].data?.data?.modl_main_type_list || [];
listOpt.modelFramework = res[1].data?.data?.modl_framework_list || [];
listOpt.modelNetType = res[2].data?.data?.model_net_type_list || [];
listOpt.modelNetType = (res[2].data?.data?.modl_net_type_list || []).map(it => {
it.selected = false;
it.subSelect = "";
return it;
});
listOpt.modelFileType = res[3].data?.data?.modl_file_type_list || [];
});
}
@ -207,6 +325,14 @@ const doMainTypeChange = () => {
let mainType = upForm.modl_main_type;
let subList = listOpt.modelType.filter(d => d.modl_main_type == mainType);
listOpt.modelSubType = subList.length > 0 ? subList[0].modl_sub_type_list || [] : [];
if (listOpt.modelSubType.filter(d => d.modl_sub_type == upForm.modl_sub_type).length == 0) {
upForm.modl_sub_type = '';
}
}
const doNetMainTypeChange = () => {
let tmps = listOpt.modelNetType.filter(d => d.model_net_serial == upForm.modl_net_main_type);
listOpt.modelNetSubType = tmps.length > 0 ? tmps[0].model_net_type_list : [];
upForm.modl_net_type = '';
}
onMounted(() => {
initData();

806
yarn.lock

File diff suppressed because it is too large Load Diff