提交代码

This commit is contained in:
jiang 2024-11-27 17:47:15 +08:00
parent 5d0e5b692e
commit 959ed2c2c9
2 changed files with 64 additions and 51 deletions

View File

@ -41,4 +41,12 @@ export function getAnnotationDetails(data) {
})
}
export function listSelection(data) {
return request({
url: '/ai/annotationTask/list/listSelection',
method: 'get',
params: data
})
}

View File

@ -5,7 +5,7 @@
>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="名称" prop="taskName">
<el-input v-model="form.taskName" maxlength="20" placeholder="请输入版本名称"/>
<el-input v-model="form.taskName" maxlength="20" placeholder="请输入任务名称"/>
</el-form-item>
<el-form-item label="描述" prop="taskDesc">
<el-input
@ -24,10 +24,11 @@
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="标注类型" prop="annotateType" >
<el-form-item label="标注类型" prop="annotateType">
<el-select v-model="form.annotateType" placeholder="请选择标注类型" clearable style="width: 100%">
<el-option v-for="dict in dict.type.ai_annotate_type" :key="dict.value" :label="dict.label"
:value="dict.value"
@ -35,16 +36,18 @@
</el-select>
</el-form-item>
<el-form-item label="标签" prop="label" >
<treeselect v-model="form.label" :disable-branch-nodes="true" :multiple="true" :options="labelsListOptions" :normalizer="normalizer" placeholder="请选择父节点" />
<el-form-item label="标签" prop="label">
<treeselect v-model="form.label" :disable-branch-nodes="true" :multiple="true" :options="labelsListOptions"
:normalizer="normalizer" placeholder="请选择标签"
/>
</el-form-item>
<el-form-item label="是否启用标注团队" prop="isStartTeam" label-width="130px">
<el-switch
v-model="form.isStartTeam"
v-model="form.startTeam"
>
</el-switch>
</el-form-item>
<div v-show="form.isStartTeam">
<div v-show="form.startTeam">
<el-form-item label="选择标注人员" prop="isStartTeam" label-width="100px">
<el-button type="primary" @click="selectOpen=true">选择标注人员</el-button>
</el-form-item>
@ -103,19 +106,20 @@
import selectPersonnelDialog from '../child/selectPersonnelDialog.vue'
import { add } from '@/api/dataCenter/annotationTask'
import {listDataSetLabels } from "@/api/dataCenter/labels";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { listDataSetLabels } from '@/api/dataCenter/labels'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
dicts: ['ai_annotate_type'],
components: { selectPersonnelDialog, Treeselect},
components: { selectPersonnelDialog, Treeselect },
props: {
open: {
type: Boolean,
default: false,
required: true
},
datasetNum:{
datasetNum: {
type: Number,
default: 0,
required: true
@ -136,10 +140,10 @@ export default {
}
}
},
watch:{
isOpen(newVal, oldVal){
if (newVal){
this.getTreeselect();
watch: {
isOpen(newVal, oldVal) {
if (newVal) {
this.getTreeselect()
}
}
@ -149,12 +153,12 @@ export default {
tableData: [],
//
labelsListOptions: [],
labels:[],
labels: [],
selectOpen: false,
form: {}, //
rules: {
taskName: [
{ required: true, message: '版本名称不能为空', trigger: 'blur' }
{ required: true, message: '任务名称不能为空', trigger: 'blur' }
],
annotateType: [
{ required: true, message: '标注类型不能为空', trigger: 'blur' }
@ -162,7 +166,7 @@ export default {
label: [
{ required: true, message: '请选择标签', trigger: 'blur' }
],
data:[
data: [
{ required: true, message: '请选择时间', trigger: 'blur' }
]
}
@ -171,61 +175,62 @@ export default {
methods: {
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
delete node.children
}
return {
id: node.labelId,
label: node.labelName,
children: node.children
};
}
},
/** 查询样本标签管理下拉树结构 */
getTreeselect() {
listDataSetLabels({}).then(response => {
console.log(response)
this.labelsListOptions = [];
const menu = { labelId: 0, labelName: '主类目', children: [] };
menu.children = this.handleTree(response.data, "labelId");
this.labelsListOptions.push(menu);
});
this.labelsListOptions = []
const menu = { labelId: 0, labelName: '主类目', children: [] }
menu.children = this.handleTree(response.data, 'labelId')
this.labelsListOptions.push(menu)
})
},
getReviewerMax(row) {
// this.datasetNum tableData
const totalAssigned = this.tableData
.filter(item => item.type === '0' && item.id !== row.id)
.reduce((sum, item) => sum + item.num, 0);
return this.datasetNum - totalAssigned;
.filter(item => item.type === '0' && item.id !== row.id)
.reduce((sum, item) => sum + item.num, 0)
return this.datasetNum - totalAssigned
},
getLabelingMax(row) {
const totalAssigned = this.tableData
.filter(item => item.type === '1' && item.id !== row.id)
.reduce((sum, item) => sum + item.num, 0);
return this.datasetNum - totalAssigned;
.reduce((sum, item) => sum + item.num, 0)
return this.datasetNum - totalAssigned
},
//
submitForm() {
if (this.tableData.length === 0 && this.form.isStartTeam) {
this.$modal.msgWarning('请选择人员')
return;
return
}
this.$refs['form'].validate(valid => {
if (valid) {
this.form.labels=this.form.label.join(",")
if(this.form.isStartTeam){
let annotators = [];
let reviewers =[];
this.tableData.forEach((item) => {
if (item.type === '0') {
reviewers.push(item);
}
if (item.type === '1') {
annotators.push(item);
}
})
this.form.annotators = annotators;
this.form.reviewers = annotators;
this.form.labels = this.form.label.join(',')
this.form.isStartTeam = this.form.startTeam ? '1' : '0'
if (this.form.isStartTeam) {
let annotators = []
let reviewers = []
this.tableData.forEach((item) => {
if (item.type === '0') {
reviewers.push(item)
}
if (item.type === '1') {
annotators.push(item)
}
})
this.form.annotators = annotators
this.form.reviewers = annotators
}
this.form.datasetId = this.datasetId;
this.form.datasetId = this.datasetId
add(this.form).then(response => {
this.$modal.msgSuccess('发布成功')
this.cancel()
@ -235,11 +240,11 @@ export default {
},
updateData(data) {
this.tableData = []
let num = Math.max(data.selectReviewer.length,data.selectLabeling.length)
let num = Math.max(data.selectReviewer.length, data.selectLabeling.length)
let minNum = Math.floor(this.datasetNum / num) //
if (minNum < 1) {
this.$modal.msgWarning('每人最少分配1张');
return;
this.$modal.msgWarning('每人最少分配1张')
return
}
// Reviewer
let reviewerRemainder = this.datasetNum % data.selectReviewer.length //
@ -275,7 +280,7 @@ export default {
},
//
reset() {
this.tableData=[];
this.tableData = []
this.form = {} //
this.$refs.form.resetFields() // Element UI
},