diff --git a/src/api/dataCenter/annotationTask.js b/src/api/dataCenter/annotationTask.js index fe04697b..601ae2eb 100644 --- a/src/api/dataCenter/annotationTask.js +++ b/src/api/dataCenter/annotationTask.js @@ -41,4 +41,12 @@ export function getAnnotationDetails(data) { }) } +export function listSelection(data) { + return request({ + url: '/ai/annotationTask/list/listSelection', + method: 'get', + params: data + }) +} + diff --git a/src/views/dataCenter/dataSet/child/annotationTaskDialog.vue b/src/views/dataCenter/dataSet/child/annotationTaskDialog.vue index a57b798b..12965a64 100644 --- a/src/views/dataCenter/dataSet/child/annotationTaskDialog.vue +++ b/src/views/dataCenter/dataSet/child/annotationTaskDialog.vue @@ -5,7 +5,7 @@ > - + + end-placeholder="结束日期" + > - + - - + + -
+
选择标注人员 @@ -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 的重置方法 },