人脸识别与大模型问答

This commit is contained in:
jiang 2024-09-27 18:18:23 +08:00
parent 746d819d7f
commit b8ad37a16a
8 changed files with 143 additions and 39 deletions

View File

@ -57,6 +57,18 @@ export function uploadImgFiles(formData) {
}) })
} }
// 删除菜单
export function uploadZipFiles(formData) {
return request({
url: '/ai/dataSet/uploadZipFiles',
method: 'post',
data: formData,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}

View File

@ -20,20 +20,26 @@ export function getModelsById(modelId) {
// 查询菜单列表 // 查询菜单列表
export function insertModel(data) { export function insertModel(formData) {
return request({ return request({
url: '/ai/dataSet/insertModel', url: '/ai/dataSet/insertModel',
method: 'post', method: 'post',
data: data data: formData,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}) })
} }
// 查询菜单列表 // 查询菜单列表
export function updateModel(data) { export function updateModel(formData) {
return request({ return request({
url: '/ai/dataSet/updateModel', url: '/ai/dataSet/updateModel',
method: 'post', method: 'post',
data: data data: formData,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}) })
} }

View File

@ -90,11 +90,37 @@ export const constantRoutes = [
component: () => import('@/views/dataSet/dataSetCategory/index'), component: () => import('@/views/dataSet/dataSetCategory/index'),
hidden: true hidden: true
}, },
{
path: '/dataSetAlgorithm',
component: () => import('@/views/dataSet/dataSetCategory/index'),
hidden: true
},
{ {
path: '/dataSetFile', path: '/dataSetFile',
component: () => import('@/views/dataSet/dataSetFile/index'), component: () => import('@/views/dataSet/dataSetFile/index'),
hidden: true hidden: true
}, },
{
path: '/dataSetLabel',
component: () => import('@/views/dataSet/dataSetLabel/index'),
hidden: true
},
{
path: '/dataSetLog',
component: () => import('@/views/dataSet/dataSetLog/index'),
hidden: true
},
{
path: '/dataSetModel',
component: () => import('@/views/dataSet/dataSetModel/index'),
hidden: true
},
{
path: '/dataSetTask',
component: () => import('@/views/dataSet/dataSetTask/index'),
hidden: true
},
{ {
path: '/dataSetFile/dataset', path: '/dataSetFile/dataset',
name: 'details', name: 'details',

View File

@ -138,7 +138,7 @@ service.interceptors.response.use(res => {
}).then(() => { }).then(() => {
isRelogin.show = false isRelogin.show = false
store.dispatch('LogOut').then(() => { store.dispatch('LogOut').then(() => {
location.href = '/index' location.href = '/login'
}) })
}).catch(() => { }).catch(() => {
isRelogin.show = false isRelogin.show = false

View File

@ -36,7 +36,7 @@
<el-col :span="5" style="text-align: left"> <el-col :span="5" style="text-align: left">
<el-checkbox v-model="checked" style="margin-right: 5%;color: #FFFFFF" @change="changItem">全选</el-checkbox> <el-checkbox v-model="checked" style="margin-right: 5%;color: #FFFFFF" @change="changItem">全选</el-checkbox>
<el-button size="mini" @click="handleUpdate()">移动文件</el-button> <el-button size="mini" @click="handleUpdate()">移动文件</el-button>
<el-button type="primary" size="mini" @click="handleDelete">删除文件</el-button> <el-button type="primary" size="mini" @click="handleDelete()">删除文件</el-button>
<el-button type="primary" size="mini" @click="back()">返回</el-button> <el-button type="primary" size="mini" @click="back()">返回</el-button>
</el-col> </el-col>
<el-col :span="14" style="text-align: center"> <el-col :span="14" style="text-align: center">
@ -320,26 +320,24 @@ export default {
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.fileIds = []; this.fileIds = [];
Object.values(this.backLayout).forEach((item) => { if (row) {
if (item.checked) { this.fileIds.push(row.fileId);
this.fileIds.push(item.fileId); } else {
} Object.values(this.backLayout).forEach((item) => {
}) if (item.checked) {
this.fileIds.push(item.fileId);
}
})
}
if (!row && this.fileIds.length === 0) {
this.$modal.msgWarning("请选择数据");
return;
}
this.reset(); this.reset();
this.getAllDatasets(); this.getAllDatasets();
this.open = true; this.open = true;
this.title = "选择数据集"; this.title = "选择数据集";
this.fileId = row.fileId;
},
handleCopy(row) {
this.reset();
this.getTreeselect();
getDatasetById(row.datasetId).then(response => {
this.form = response.data;
this.form.datasetId = undefined;
this.open = true;
this.title = "复制数据";
});
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm: function () { submitForm: function () {
@ -348,10 +346,9 @@ export default {
return return
} }
let data = { let data = {
fileIds: this.fileId || this.fileIds, fileIds: this.fileIds,
datasetId: this.datasetId datasetId: this.datasetId
} }
console.log(data);
updateFile(data).then(response => { updateFile(data).then(response => {
this.checked = false; this.checked = false;
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
@ -367,6 +364,10 @@ export default {
this.fileIds.push(item.fileId); this.fileIds.push(item.fileId);
} }
}) })
if (!row && this.fileIds.length === 0) {
this.$modal.msgWarning("请选择数据");
return;
}
const fileIds = row.fileId || this.fileIds const fileIds = row.fileId || this.fileIds
this.$modal.confirm('是否确认删除数据项?').then(function () { this.$modal.confirm('是否确认删除数据项?').then(function () {
return deleteFile(fileIds); return deleteFile(fileIds);

View File

@ -103,7 +103,7 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="数据集名称" prop="datasetName"> <el-form-item label="数据集名称" prop="datasetName">
<el-input v-model="form.datasetName" placeholder="请输入数据集名称"/> <el-input v-model="form.datasetName" placeholder="请输入数据集名称" maxlength="30"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
@ -130,7 +130,7 @@
type="textarea" type="textarea"
:autosize="{ minRows: 2, maxRows: 4}" :autosize="{ minRows: 2, maxRows: 4}"
placeholder="请输入内容" placeholder="请输入内容"
v-model="form.description"></el-input> v-model="form.description" maxlength="200"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -299,9 +299,8 @@ import {
} from "@/api/dataSet/dataSetFile" } from "@/api/dataSet/dataSetFile"
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import {getCategories, uploadImgFiles} from "@/api/dataSet/dataSet"; import {getCategories, uploadImgFiles, uploadZipFiles} from "@/api/dataSet/dataSet";
import {parseTime} from "@/utils/ruoyi"; import {parseTime} from "@/utils/ruoyi";
import {Loading} from "element-ui";
export default { export default {
name: "index", name: "index",
@ -471,7 +470,7 @@ export default {
getTreeselect() { getTreeselect() {
getCategories({}).then(response => { getCategories({}).then(response => {
this.menuOptions = []; this.menuOptions = [];
const menu = {datasetId: 0, categoryName: '主类目', children: []}; const menu = {categoryId: 0, categoryName: '主类目', children: []};
menu.children = this.handleTree(response.data, "categoryId"); menu.children = this.handleTree(response.data, "categoryId");
this.menuOptions.push(menu); this.menuOptions.push(menu);
}); });
@ -579,7 +578,6 @@ export default {
} }
, ,
submitFile() { submitFile() {
if (!this.selectedDataset) { if (!this.selectedDataset) {
this.$modal.msgWarning("请选择数据集"); this.$modal.msgWarning("请选择数据集");
return; return;
@ -589,7 +587,7 @@ export default {
let formData = new FormData(); let formData = new FormData();
formData.append('datasetId', this.selectedDataset); formData.append('datasetId', this.selectedDataset);
if (this.fileImgList.length === 0) { if (this.fileImgList.length === 0) {
this.$modal.msgWarning("文件"); this.$modal.msgWarning("请选择文件");
return; return;
} }
Object.values(this.fileImgList).forEach((file) => { Object.values(this.fileImgList).forEach((file) => {
@ -602,6 +600,22 @@ export default {
this.getList(); this.getList();
}) })
} else { } else {
let formData = new FormData();
formData.append('datasetId', this.selectedDataset);
if (this.fileZipList.length === 0) {
this.$modal.msgWarning("请选择文件");
return;
}
Object.values(this.fileZipList).forEach((file) => {
formData.append('files', file.raw);
});
uploadZipFiles(formData).then(response => {
this.$modal.closeLoading();
this.$modal.msgSuccess("上传成功");
this.openFile = false;
this.getList();
})
} }
}, },

View File

@ -53,13 +53,19 @@
</el-table-column> </el-table-column>
<el-table-column label="模型文件" min-width="120" align="center"> <el-table-column label="模型文件" min-width="120" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" @click="handleDetails(scope.row)">下载</el-button> <el-button size="mini" type="text"
@click="downloadFile('https://largesrevice.oss-cn-beijing.aliyuncs.com/'+scope.row.modelAddress,'')">
下载
</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="使用手册" min-width="120" align="center"> <el-table-column label="使用手册" min-width="120" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" @click="handleDetails(scope.row)">下载</el-button> <el-button size="mini" type="text"
<el-button size="mini" type="text" @click="handleDetails(scope.row)">查看</el-button> @click="downloadFile('https://largesrevice.oss-cn-beijing.aliyuncs.com/'+scope.row.userGuide,'')">
下载
</el-button>
<!-- <el-button size="mini" type="text" @click="downloadFile('https://largesrevice.oss-cn-beijing.aliyuncs.com/'+scope.row.userGuide,'')">查看</el-button>-->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" min-width="120" align="center"> <el-table-column label="操作" min-width="120" align="center">
@ -348,14 +354,27 @@ export default {
submitForm: function () { submitForm: function () {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
console.log(this.form)
let formData = new FormData();
for (let key in this.form) {
if (this.form.hasOwnProperty(key)) {
formData.append(key, this.form[key]);
}
}
Object.values(this.fileModelList).forEach((item) => {
formData.append("modelFile", item.raw)
})
Object.values(this.fileUserManualList).forEach((item) => {
formData.append("userGuideFile", item.raw)
})
if (this.form.modelId != undefined) { if (this.form.modelId != undefined) {
updateModel(this.form).then(response => { updateModel(formData).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}); });
} else { } else {
insertModel(this.form).then(response => { insertModel(formData).then(response => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
this.getList(); this.getList();
@ -373,9 +392,14 @@ export default {
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
}).catch(() => { }).catch(() => {
}); });
}, }, downloadFile(url, filename) {
handleDetails(row) { var element = document.createElement('a');
element.href = url;
element.download = filename;
element.style.display = 'none';
document.body.appendChild(element);
element.click(); //
element.parentNode.removeChild(element); // DOM
} }
} }
} }

View File

@ -1,5 +1,17 @@
<template> <template>
<div class="body-container"> <div class="body-container">
<el-menu class="el-menu-demo" mode="horizontal"
style="position: absolute;top:50px;left: 50px; background-color: transparent;width: 50%;font-size: 20px;border-bottom:none">
<el-submenu index="1" style="background-color: transparent">
<template slot="title">样本库</template>
<el-menu-item index="2-1" @click="handleClick('/dataSetCategory');">样本类型管理</el-menu-item>
<el-menu-item index="2-2" @click="handleClick('/dataSetFile');">数据集管理</el-menu-item>
<el-menu-item index="2-2" @click="handleClick('/dataSetTask');">标注任务分配</el-menu-item>
<el-menu-item index="2-2" @click="handleClick('/dataSetLog');">标注日志</el-menu-item>
<el-menu-item index="2-3" @click="handleClick('/dataSetModel');">模型管理</el-menu-item>
<el-menu-item index="2-3" @click="handleClick('/dataSetAlgorithm');">算法评价</el-menu-item>
</el-submenu>
</el-menu>
<div id="main"> <div id="main">
<div id="main-left"> <div id="main-left">
<div id="left-top"> <div id="left-top">
@ -47,6 +59,15 @@ export default {
introVideo, introVideo,
routeIcon, routeIcon,
rectAccessCountByMonth, rectAccessCountByMonth,
},
methods:{
handleClick(route) {
if (route === 'showPopup') {
this.showPopup();
} else {
this.$router.push(route);
}
},
} }
} }
</script> </script>