提交代码

This commit is contained in:
jiang 2024-12-18 17:52:07 +08:00
parent 8ab0cabb4f
commit 9b86c0a7e4
6 changed files with 116 additions and 125 deletions

View File

@ -20,12 +20,12 @@ import Layout from '@/layout'
* roles: ['admin', 'common'] // 访问路由的角色权限
* permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限
* meta : {
noCache: true // 如果设置为true则不会被 <keep-alive> 缓存(默认 false)
title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
icon: 'svg-name' // 设置该路由的图标对应路径src/assets/icons/svg
breadcrumb: false // 如果设置为false则不会在breadcrumb面包屑中显示
activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
}
noCache: true // 如果设置为true则不会被 <keep-alive> 缓存(默认 false)
title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
icon: 'svg-name' // 设置该路由的图标对应路径src/assets/icons/svg
breadcrumb: false // 如果设置为false则不会在breadcrumb面包屑中显示
activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
}
*/
// 公共路由
@ -148,6 +148,20 @@ export const dynamicRoutes = [
}
]
},
{
path: '/dataCenter/evaluate/evaluate-details',
component: Layout,
hidden: true,
permissions: ['evaluateDetails:details:list'],
children: [
{
path: 'index/:evaluateId(\\d+)',
component: () => import('@/views/dataCenter/evaluate/child/evaluateDetails'),
name: 'Data',
meta: { title: '模型评价详情', activeMenu: '/dataCenter/evaluateDetails' }
}
]
},
{
path: '/dataCenter/dataSet-version',
component: Layout,
@ -221,8 +235,8 @@ export const dynamicRoutes = [
]
// 防止连续点击多次路由报错
let routerPush = Router.prototype.push;
let routerReplace = Router.prototype.replace;
let routerPush = Router.prototype.push
let routerReplace = Router.prototype.replace
// push
Router.prototype.push = function push(location) {
return routerPush.call(this, location).catch(err => err)

View File

@ -11,7 +11,7 @@
<script>
import LabelStudio from 'label-studio';
import 'label-studio/build/static/css/main.css';
import '@/assets/styles/labelStudio.scss';
import {agreement, manualAnnotate } from '../../../../api/dataCenter/annotationTask';
export default {
@ -179,84 +179,25 @@ export default {
</script>
<style scoped>
.label-studio-annotator {
width: 100%;
height: 100vh;
display: flex;
flex-direction: column;
}
.annotation-container {
flex-direction: column;
width: 100%;
height: 100%;
min-height: 500px; /* 设置最小高度 */
}
.button-container {
margin: 10px;
}
.agree-button, .disagree-button {
padding: 10px 20px;
margin: 0 5px;
border: none;
border-radius: 5px;
cursor: pointer;
}
.agree-button {
background-color: #4CAF50;
color: white;
}
.disagree-button {
background-color: #F44336;
color: white;
}
/* 弹出层样式 */
.layui-layer {
position: fixed;
z-index: 1000;
left: 0;
top: 0;
.label-studio-annotator{
width: 100%;
height: 100%;
}
.annotation-container{
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5); /* 半透明背景 */
display: flex;
justify-content: center;
align-items: center;
}
justify-content: center;
.layui-layer-content {
background-color: #fff;
padding: 20px;
border-radius: 5px;
width: 400px; /* 宽度 */
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.layui-layer-buttons {
display: flex;
justify-content: space-between;
margin-top: 10px;
}
.layui-btn {
padding: 10px 15px;
border: none;
border-radius: 5px;
cursor: pointer;
}
.layui-btn-primary {
background-color: #4CAF50;
color: white;
}
.layui-btn-danger {
background-color: #F44336;
color: white;
>div{
width: 100%;
height: 100%;
padding: 5px;
}
}
</style>

View File

@ -5,22 +5,22 @@
>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="正样本数" prop="justSqmple">
<el-input v-model="form.justSqmple" placeholder="请输入正样本数"/>
<el-input v-model="form.justSqmple" maxlength="10" placeholder="请输入正样本数"/>
</el-form-item>
<el-form-item label="负样本数" prop="loseSample">
<el-input v-model="form.loseSample" placeholder="请输入负样本数"/>
<el-input v-model="form.loseSample" maxlength="10" placeholder="请输入负样本数"/>
</el-form-item>
<el-form-item label="TP数量" prop="tpNum">
<el-input v-model="form.tpNum" placeholder="请输入TP数量"/>
<el-input v-model="form.tpNum" maxlength="10" placeholder="请输入TP数量"/>
</el-form-item>
<el-form-item label="TN数量" prop="tnNum">
<el-input v-model="form.tnNum" placeholder="请输入TN数量"/>
<el-input v-model="form.tnNum" maxlength="10" placeholder="请输入TN数量"/>
</el-form-item>
<el-form-item label="FP数量" prop="fpNum">
<el-input v-model="form.fpNum" placeholder="请输入FP数量"/>
<el-input v-model="form.fpNum" maxlength="10" placeholder="请输入FP数量"/>
</el-form-item>
<el-form-item label="FN数量" prop="fnNum">
<el-input v-model="form.fnNum" placeholder="请输入FN数量"/>
<el-input v-model="form.fnNum" maxlength="10" placeholder="请输入FN数量"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -39,7 +39,8 @@ export default {
open: { type: Boolean, required: true },
getList: { type: Function, required: true },
title: { type: String, required: true },
id: { type: [Number, null], default: 0 }
evaluateId: { type: [Number, null], default: 0 },
evaluateDetailId: { type: [Number, null], default: 0 }
},
computed: {
isOpen: {
@ -69,13 +70,13 @@ export default {
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' }
],
tnNum:[{ required: true, message: '请输入TN数量', trigger: 'blur' },
tnNum: [{ required: true, message: '请输入TN数量', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' }
],
fpNum:[{ required: true, message: '请输入FP数量', trigger: 'blur' },
fpNum: [{ required: true, message: '请输入FP数量', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' }
],
fnNum:[{ required: true, message: '请输入FN数量', trigger: 'blur' },
fnNum: [{ required: true, message: '请输入FN数量', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' }
]
}
@ -83,6 +84,11 @@ export default {
},
watch: {
isOpen(newVal) {
if (newVal && this.evaluateDetailId) {
getDetails(this.evaluateDetailId).then(res => {
this.form = res.data
})
}
}
},
methods: {
@ -90,12 +96,21 @@ export default {
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
this.form.evaluateId = this.id
addDetails(this.form).then(response => {
this.$modal.msgSuccess('新增成功')
this.isOpen = false
this.getList()
})
if (this.form.id != null) {
updateDetails(this.form).then(res => {
this.$modal.msgSuccess('修改成功')
this.isOpen = false
this.getList()
})
} else {
this.form.evaluateId = this.evaluateId
console.log(this.form)
addDetails(this.form).then(response => {
this.$modal.msgSuccess('新增成功')
this.isOpen = false
this.getList()
})
}
}
})
},

View File

@ -21,10 +21,10 @@
</el-select>
</el-form-item>
<el-form-item label="处理速度" prop="processSpeed">
<el-input v-model="form.processSpeed" placeholder="请输入处理速度"/>
<el-input v-model="form.processSpeed" maxlength="10" placeholder="请输入处理速度"/>
</el-form-item>
<el-form-item label="内存占用" prop="memoryUsage">
<el-input v-model="form.memoryUsage" placeholder="请输入内存占用"/>
<el-input v-model="form.memoryUsage" maxlength="10" placeholder="请输入内存占用"/>
</el-form-item>
<el-form-item label="环境条件" prop="enviroConditions">
<el-select v-model="form.enviroConditions" placeholder="请选择环境条件" clearable style="width: 100%">

View File

@ -1,10 +1,10 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="评价人id" prop="userId">
<el-form-item label="评价人" prop="userId">
<el-input
v-model="queryParams.userId"
placeholder="请输入评价人id"
placeholder="请输入评价人"
clearable
@keyup.enter.native="handleQuery"
/>
@ -23,7 +23,7 @@
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:details:add']"
v-hasPermi="['evaluateDetails:details:add']"
>新增
</el-button>
</el-col>
@ -35,7 +35,7 @@
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:details:edit']"
v-hasPermi="['evaluateDetails:details:edit']"
>修改
</el-button>
</el-col>
@ -47,7 +47,7 @@
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:details:remove']"
v-hasPermi="['evaluateDetails:details:remove']"
>删除
</el-button>
</el-col>
@ -56,32 +56,32 @@
<el-table v-loading="loading" :data="detailsList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="评价id" align="center" prop="evaluateId"/>
<el-table-column label="评价人id" align="center" prop="userId"/>
<el-table-column label="正样本数" align="center" prop="justSqmple"/>
<el-table-column label="负样本数" align="center" prop="loseSample"/>
<el-table-column label="TP数量" align="center" prop="tpNum"/>
<el-table-column label="TN数量" align="center" prop="tnNum"/>
<el-table-column label="FP数量" align="center" prop="fpNum"/>
<el-table-column label="FN数量" align="center" prop="fnNum"/>
<el-table-column type="index" label="序号" align="center" :index="indexMethod" width="50"/>
<el-table-column label="评价人" align="center" min-width="80" prop="userId"/>
<el-table-column label="正样本数" align="center" min-width="80" prop="justSqmple"/>
<el-table-column label="负样本数" align="center" min-width="80" prop="loseSample"/>
<el-table-column label="TP数量" align="center" min-width="80" prop="tpNum"/>
<el-table-column label="TN数量" align="center" min-width="80" prop="tnNum"/>
<el-table-column label="FP数量" align="center" min-width="80" prop="fpNum"/>
<el-table-column label="FN数量" align="center" min-width="80" prop="fnNum"/>
<el-table-column label="准确率" align="center" min-width="80" prop="accuracyRate"/>
<el-table-column label="召回率" align="center" min-width="80" prop="recallRate"/>
<el-table-column label="精确率" align="center" min-width="80" prop="accurateRate"/>
<el-table-column label="F1分数" align="center" min-width="80" prop="fgrade"/>
<el-table-column label="评价时间" align="center" prop="evaluteTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.evaluteTime, '{y}-{m}-{d}') }}</span>
<span>{{ parseTime(scope.row.evaluteTime) }}</span>
</template>
</el-table-column>
<el-table-column label="准确率" align="center" prop="accuracyRate"/>
<el-table-column label="召回率" align="center" prop="recallRate"/>
<el-table-column label="精确率" align="center" prop="accurateRate"/>
<el-table-column label="F1分数" align="center" prop="fGrade"/>
<el-table-column label="是否删除" align="center" prop="isActive"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:details:edit']"
v-hasPermi="['evaluateDetails:details:edit']"
>修改
</el-button>
<el-button
@ -89,7 +89,7 @@
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:details:remove']"
v-hasPermi="['evaluateDetails:details:remove']"
>删除
</el-button>
</template>
@ -103,16 +103,24 @@
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<add-evaluate-details :title="title" :get-list="getList" :open="open" :evaluate-id="evaluateId"
:evaluate-detail-id="id"
@dialog-cancel="handleCancel"
/>
</div>
</template>
<script>
import { listDetails, delDetails } from '@/api/dataCenter/evaluateDetails'
import addEvaluateDetails from './addEvaluateDetails.vue'
export default {
name: 'Details',
components: { addEvaluateDetails },
data() {
return {
evaluateId: null,
id: null,
//
loading: true,
@ -140,12 +148,18 @@ export default {
}
},
created() {
this.evaluateId = Number(this.$route.params && this.$route.params.evaluateId)
console.log(this.evaluateId)
this.getList()
},
methods: {
indexMethod(index) {
return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1
},
/** 查询模型评价详情列表 */
getList() {
this.loading = true
this.queryParams.evaluateId = this.evaluateId
listDetails(this.queryParams).then(response => {
this.detailsList = response.rows
this.total = response.total
@ -191,6 +205,9 @@ export default {
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
handleCancel() {
this.open = false
}
}
}

View File

@ -56,18 +56,17 @@
<el-table v-loading="loading" :data="evaluateList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column type="index" label="序号" align="center" :index="indexMethod" width="50"/>
<el-table-column label="模型名称" align="center" min-width="120" prop="evaluateName">
<template slot-scope="scope">
<router-link :to="{
path: '/dataCenter/dataSet-details/index/' + scope.row.datasetId,
query: { dataType: scope.row.dataType,_t: Date.now() }
}" class="link-type" @click=""
path: '/dataCenter/evaluate/evaluate-details/index/' + scope.row.id,}" class="link-type" @click=""
>
<span>{{ scope.row.evaluateName }}</span>
</router-link>
</template>
</el-table-column>
<el-table-column label="版本号" align="center" min-width="120" prop="evaluateVersion"/>
<el-table-column label="版本号" align="center" min-width="80" prop="evaluateVersion"/>
<el-table-column label="验证样本总数" align="center" min-width="80" prop="sampleAll"/>
<el-table-column label="准确率" align="center" min-width="80" prop="accuracyRate"/>
<el-table-column label="召回率" align="center" min-width="80" prop="recallRate"/>
@ -82,7 +81,7 @@
<el-table-column label="环境条件" align="center" min-width="120" prop="enviroConditions"/>
<el-table-column label="创建人" align="center" min-width="120" prop="createBy"/>
<el-table-column label="创建时间" align="center" min-width="120" prop="createTime"/>
<el-table-column label="操作" align="center" min-width="120" class-name="small-padding fixed-width">
<el-table-column label="操作" align="center" min-width="120" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
@ -123,7 +122,9 @@
<!-- 添加或修改模型评价对话框 -->
<custom-dialog :title="title" :get-list="getList" :open="open" :id="id" @dialog-cancel="handleCancel"/>
<add-evaluate-details :title="title" :get-list="getList" :open="addOpen" :id="id" @dialog-cancel="handleCancel"/>
<add-evaluate-details :title="title" :get-list="getList" :open="addOpen" :evaluate-id="id"
@dialog-cancel="handleCancel"
/>
</div>
</template>
@ -169,6 +170,9 @@ export default {
this.getList()
},
methods: {
indexMethod(index) {
return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1
},
/** 查询模型评价列表 */
getList() {
this.loading = true