提交代码

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'] // 访问路由的角色权限 * roles: ['admin', 'common'] // 访问路由的角色权限
* permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限 * permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限
* meta : { * meta : {
noCache: true // 如果设置为true则不会被 <keep-alive> 缓存(默认 false) noCache: true // 如果设置为true则不会被 <keep-alive> 缓存(默认 false)
title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字 title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
icon: 'svg-name' // 设置该路由的图标对应路径src/assets/icons/svg icon: 'svg-name' // 设置该路由的图标对应路径src/assets/icons/svg
breadcrumb: false // 如果设置为false则不会在breadcrumb面包屑中显示 breadcrumb: false // 如果设置为false则不会在breadcrumb面包屑中显示
activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。 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', path: '/dataCenter/dataSet-version',
component: Layout, component: Layout,
@ -221,8 +235,8 @@ export const dynamicRoutes = [
] ]
// 防止连续点击多次路由报错 // 防止连续点击多次路由报错
let routerPush = Router.prototype.push; let routerPush = Router.prototype.push
let routerReplace = Router.prototype.replace; let routerReplace = Router.prototype.replace
// push // push
Router.prototype.push = function push(location) { Router.prototype.push = function push(location) {
return routerPush.call(this, location).catch(err => err) return routerPush.call(this, location).catch(err => err)

View File

@ -11,7 +11,7 @@
<script> <script>
import LabelStudio from 'label-studio'; 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'; import {agreement, manualAnnotate } from '../../../../api/dataCenter/annotationTask';
export default { export default {
@ -179,84 +179,25 @@ export default {
</script> </script>
<style scoped> <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 { .button-container {
margin: 10px; margin: 10px;
} }
.label-studio-annotator{
.agree-button, .disagree-button { width: 100%;
padding: 10px 20px; height: 100%;
margin: 0 5px; }
border: none;
border-radius: 5px; .annotation-container{
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;
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: rgba(0, 0, 0, 0.5); /* 半透明背景 */
display: flex; display: flex;
justify-content: center;
align-items: center; align-items: center;
} justify-content: center;
.layui-layer-content { >div{
background-color: #fff; width: 100%;
padding: 20px; height: 100%;
border-radius: 5px; padding: 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;
} }
</style> </style>

View File

@ -5,22 +5,22 @@
> >
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="正样本数" prop="justSqmple"> <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>
<el-form-item label="负样本数" prop="loseSample"> <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>
<el-form-item label="TP数量" prop="tpNum"> <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>
<el-form-item label="TN数量" prop="tnNum"> <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>
<el-form-item label="FP数量" prop="fpNum"> <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>
<el-form-item label="FN数量" prop="fnNum"> <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-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -39,7 +39,8 @@ export default {
open: { type: Boolean, required: true }, open: { type: Boolean, required: true },
getList: { type: Function, required: true }, getList: { type: Function, required: true },
title: { type: String, 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: { computed: {
isOpen: { isOpen: {
@ -69,13 +70,13 @@ export default {
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' } { 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' } { 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' } { 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' } { pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' }
] ]
} }
@ -83,6 +84,11 @@ export default {
}, },
watch: { watch: {
isOpen(newVal) { isOpen(newVal) {
if (newVal && this.evaluateDetailId) {
getDetails(this.evaluateDetailId).then(res => {
this.form = res.data
})
}
} }
}, },
methods: { methods: {
@ -90,12 +96,21 @@ export default {
submitForm() { submitForm() {
this.$refs['form'].validate(valid => { this.$refs['form'].validate(valid => {
if (valid) { if (valid) {
this.form.evaluateId = this.id if (this.form.id != null) {
addDetails(this.form).then(response => { updateDetails(this.form).then(res => {
this.$modal.msgSuccess('新增成功') this.$modal.msgSuccess('修改成功')
this.isOpen = false this.isOpen = false
this.getList() 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-select>
</el-form-item> </el-form-item>
<el-form-item label="处理速度" prop="processSpeed"> <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>
<el-form-item label="内存占用" prop="memoryUsage"> <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>
<el-form-item label="环境条件" prop="enviroConditions"> <el-form-item label="环境条件" prop="enviroConditions">
<el-select v-model="form.enviroConditions" placeholder="请选择环境条件" clearable style="width: 100%"> <el-select v-model="form.enviroConditions" placeholder="请选择环境条件" clearable style="width: 100%">

View File

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

View File

@ -56,18 +56,17 @@
<el-table v-loading="loading" :data="evaluateList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="evaluateList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/> <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"> <el-table-column label="模型名称" align="center" min-width="120" prop="evaluateName">
<template slot-scope="scope"> <template slot-scope="scope">
<router-link :to="{ <router-link :to="{
path: '/dataCenter/dataSet-details/index/' + scope.row.datasetId, path: '/dataCenter/evaluate/evaluate-details/index/' + scope.row.id,}" class="link-type" @click=""
query: { dataType: scope.row.dataType,_t: Date.now() }
}" class="link-type" @click=""
> >
<span>{{ scope.row.evaluateName }}</span> <span>{{ scope.row.evaluateName }}</span>
</router-link> </router-link>
</template> </template>
</el-table-column> </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="sampleAll"/>
<el-table-column label="准确率" align="center" min-width="80" prop="accuracyRate"/> <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="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="enviroConditions"/>
<el-table-column label="创建人" align="center" min-width="120" prop="createBy"/> <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" 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"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
@ -123,7 +122,9 @@
<!-- 添加或修改模型评价对话框 --> <!-- 添加或修改模型评价对话框 -->
<custom-dialog :title="title" :get-list="getList" :open="open" :id="id" @dialog-cancel="handleCancel"/> <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> </div>
</template> </template>
@ -169,6 +170,9 @@ export default {
this.getList() this.getList()
}, },
methods: { methods: {
indexMethod(index) {
return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1
},
/** 查询模型评价列表 */ /** 查询模型评价列表 */
getList() { getList() {
this.loading = true this.loading = true