提交代码

This commit is contained in:
jiang 2024-12-20 16:12:12 +08:00
parent b69ef1dd92
commit d9a58838ad
8 changed files with 131 additions and 89 deletions

View File

@ -158,7 +158,7 @@ export const dynamicRoutes = [
path: 'index/:evaluateId(\\d+)',
component: () => import('@/views/dataCenter/evaluate/child/evaluateDetails'),
name: 'Data',
meta: { title: '模型评价详情', activeMenu: '/dataCenter/evaluateDetails' }
meta: { title: '模型评价详情', activeMenu: '/dataCenter/evaluate/evaluateDetails' }
}
]
},

View File

@ -76,7 +76,7 @@
<el-table-column label="操作" align="center" min-width="140" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)"
v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
size="mini"
type="text"
@click="handleExamine(scope.row)"
@ -85,7 +85,7 @@
>审核
</el-button>
<el-button
v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)"
:disabled="scope.row.status0Count ===0"
size="mini"
type="text"
@ -94,7 +94,7 @@
>智能标注
</el-button>
<el-button
v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)"
size="mini"
type="text"
@click="handleAnnotation(scope.row)"

View File

@ -150,7 +150,9 @@ export default {
loadTaskList() {
getMyNoAnnotatedTask().then(res => {
this.taskList = res.data
console.log(this.taskList)
this.taskId = Number(this.$route.params && this.$route.params.taskId)
console.log(this.taskId)
this.selectTask(this.taskId)
})
},

View File

@ -76,7 +76,7 @@
<el-table-column label="操作" align="center" min-width="140" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)"
v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
size="mini"
type="text"
@click="handleExamine(scope.row)"
@ -85,7 +85,7 @@
>审核
</el-button>
<el-button
v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)"
:disabled="scope.row.status0Count ===0"
size="mini"
type="text"
@ -94,7 +94,7 @@
>智能标注
</el-button>
<el-button
v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)"
size="mini"
type="text"
@click="handleAnnotation(scope.row)"

View File

@ -76,7 +76,7 @@
<el-table-column label="操作" align="center" min-width="140" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)"
v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
size="mini"
type="text"
@click="handleExamine(scope.row)"
@ -85,7 +85,7 @@
>审核
</el-button>
<el-button
v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)"
:disabled="scope.row.status0Count ===0"
size="mini"
type="text"
@ -94,7 +94,7 @@
>智能标注
</el-button>
<el-button
v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)"
size="mini"
type="text"
@click="handleAnnotation(scope.row)"

View File

@ -32,7 +32,7 @@
</template>
<script>
import { getDetails, addDetails, updateDetails } from '@/api/dataCenter/evaluateDetails'
import { getDetails, addDetails, updateDetails } from '@/api/dataCenter/evaluateDetails';
export default {
props: {
@ -45,16 +45,23 @@ export default {
computed: {
isOpen: {
get() {
return this.open
return this.open;
},
set(value) {
this.$emit('dialog-cancel')
this.$emit('dialog-cancel');
}
}
},
data() {
return {
form: {},
form: {
justSqmple: null,
loseSample: null,
tpNum: null,
tnNum: null,
fpNum: null,
fnNum: null
},
rules: {
justSqmple: [
{ required: true, message: '请输入正样本数', trigger: 'blur' },
@ -63,66 +70,95 @@ export default {
loseSample: [
{ required: true, message: '请输入负样本数', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' }
],
tpNum: [
{ required: true, message: '请输入TP数量', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' }
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' },
{ validator: this.validatePositiveSamples, trigger: 'blur' }
],
tnNum: [{ required: true, message: '请输入TN数量', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' }
fnNum: [
{ required: true, message: '请输入FN数量', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' },
{ validator: this.validatePositiveSamples, trigger: 'blur' }
],
fpNum: [{ required: true, message: '请输入FP数量', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' }
tnNum: [
{ required: true, message: '请输入TN数量', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' },
{ validator: this.validateNegativeSamples, trigger: 'blur' }
],
fnNum: [{ required: true, message: '请输入FN数量', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' }
fpNum: [
{ required: true, message: '请输入FP数量', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: 'blur' },
{ validator: this.validateNegativeSamples, trigger: 'blur' }
]
}
}
};
},
watch: {
isOpen(newVal) {
if (newVal && this.evaluateDetailId) {
getDetails(this.evaluateDetailId).then(res => {
this.form = res.data
})
getDetails(this.evaluateDetailId).then((res) => {
this.form = res.data;
});
}
}
},
methods: {
validatePositiveSamples(rule, value, callback) {
const { tpNum, fnNum, justSqmple } = this.form;
if (tpNum != null && fnNum != null && justSqmple != null) {
if (tpNum + fnNum !== parseInt(justSqmple, 10)) {
callback(new Error('TP和FN之和必须等于正样本数'));
} else {
callback();
}
} else {
callback();
}
},
validateNegativeSamples(rule, value, callback) {
const { tnNum, fpNum, loseSample } = this.form;
if (tnNum != null && fpNum != null && loseSample != null) {
if (tnNum + fpNum !== parseInt(loseSample, 10)) {
callback(new Error('FP和TN之和必须等于负样本数'));
} else {
callback();
}
} else {
callback();
}
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate(valid => {
this.$refs['form'].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateDetails(this.form).then(res => {
this.$modal.msgSuccess('修改成功')
this.isOpen = false
this.getList()
})
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()
})
this.form.evaluateId = this.evaluateId;
addDetails(this.form).then((response) => {
this.$modal.msgSuccess('新增成功');
this.isOpen = false;
this.getList();
});
}
}
})
});
},
cancel() {
this.isOpen = false
this.resetForm()
this.isOpen = false;
this.resetForm();
},
resetForm() {
this.form = {}
this.form = {};
}
}
}
};
</script>
<style scoped lang="scss"></style>

View File

@ -149,7 +149,6 @@ export default {
},
created() {
this.evaluateId = Number(this.$route.params && this.$route.params.evaluateId)
console.log(this.evaluateId)
this.getList()
},
methods: {

View File

@ -26,7 +26,7 @@
/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="queryParams.phonenumber" placeholder="请输入手机号码" clearable style="width: 240px"
<el-input v-model="queryParams.phonenumber" placeholder="请输入完整手机号码" clearable style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
@ -82,7 +82,9 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange" :selectable="checkSelectable" :row-class-name="getRowClassName">
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"
:selectable="checkSelectable" :row-class-name="getRowClassName"
>
<el-table-column type="selection" width="50" align="center"/>
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible"/>
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible"
@ -112,13 +114,13 @@
<el-table-column label="账号时效" align="center">
<template slot-scope="scope">
<span>{{scope.row.isPermanent==1?"长期账号":"临时账号" }}</span>
<span>{{ scope.row.isPermanent == 1 ? '长期账号' : '临时账号' }}</span>
</template>
</el-table-column>
<el-table-column v-if="config.registersConfig.approvalStatus" label="审批状态" align="center">
<template slot-scope="scope">
<span>{{scope.row.approvalStatus==0?"未审批":"已审批" }}</span>
<span>{{ scope.row.approvalStatus == 0 ? '未审批' : '已审批' }}</span>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
@ -127,7 +129,9 @@
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
<template slot-scope="scope" v-if="!hasSystemOrAuditrRole(scope.row.roles) && scope.row.userId !== 1 && scope.row.isBuiltIn !== '0'">
<template slot-scope="scope"
v-if="!hasSystemOrAuditrRole(scope.row.roles) && scope.row.userId !== 1 && scope.row.isBuiltIn !== '0'"
>
<el-button size="mini" type="text" icon="el-icon-edit" @click="confirmPassword(scope.row)"
v-hasPermi="['system:user:edit']"
>修改
@ -220,7 +224,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态">
<el-form-item label="状态">
<el-radio-group v-model="form.status">
<el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{
dict.label
@ -330,11 +334,11 @@ import {
import { getToken } from '@/utils/auth'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import {validateNewPassword } from '@/utils/validate'
import { validateNewPassword } from '@/utils/validate'
export default {
name: 'User',
dicts: ['sys_normal_disable', 'sys_user_sex', 'sys_login_type','sys_user_permanent'],
dicts: ['sys_normal_disable', 'sys_user_sex', 'sys_login_type', 'sys_user_permanent'],
components: { Treeselect },
data() {
return {
@ -428,7 +432,7 @@ export default {
trigger: ['blur', 'change']
}
],
deptId:[ { required: true, message: '请选择归属部门', trigger: 'blur' }],
deptId: [{ required: true, message: '请选择归属部门', trigger: 'blur' }],
phonenumber: [
{ required: true, message: '手机号不能为空', trigger: 'blur' },
{
@ -452,12 +456,14 @@ export default {
},
computed: {
config() {
return JSON.parse(localStorage.getItem('systemConfig')) || {registersConfig: {
return JSON.parse(localStorage.getItem('systemConfig')) || {
registersConfig: {
phoneRegisters: true,
emailRegisters: true,
verificationCode:true,
approvalStatus:true,
}}; // JSON
verificationCode: true,
approvalStatus: true
}
} // JSON
}
},
watch: {
@ -476,8 +482,8 @@ export default {
methods: {
/* 手机号码脱敏 */
hidePhone(phone) {
if (!phone) return '';
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
if (!phone) return ''
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
},
/* 表单登录权限自定义校验 */
validateLoginType(rule, value, callback) {
@ -585,13 +591,13 @@ export default {
//
handleSelectionChange(selection) {
//
const validSelection = selection.filter(row => this.checkSelectable(row));
const validSelection = selection.filter(row => this.checkSelectable(row))
// roleId
this.ids = validSelection.map(item => item.userId);
this.ids = validSelection.map(item => item.userId)
//
this.single = validSelection.length !== 1;
this.multiple = !validSelection.length;
this.single = validSelection.length !== 1
this.multiple = !validSelection.length
},
//
handleCommand(command, row) {
@ -641,7 +647,7 @@ export default {
this.form.password = ''
})
},
confirmPassword(row){
confirmPassword(row) {
this.$prompt('请输入密码,鉴别用户', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@ -650,14 +656,14 @@ export default {
inputErrorMessage: '用户密码长度必须介于 8 和 16 之间',
inputValidator: (value) => {
// validateNewPassword
const errorMessage=function(error) {
const errorMessage = function(error) {
if (error) {
return error.message;
return error.message
} else {
console.log('验证通过');
console.log('验证通过')
}
};
validateNewPassword(null, value, errorMessage);
}
validateNewPassword(null, value, errorMessage)
}
}).then(({ value }) => {
confirmPassword(value).then(response => {
@ -667,7 +673,7 @@ export default {
}).catch(() => {
})
},
confirmResetPwd(row){
confirmResetPwd(row) {
this.$prompt('请输入密码,鉴别用户', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@ -676,14 +682,14 @@ export default {
inputErrorMessage: '用户密码长度必须介于 8 和 16 之间',
inputValidator: (value) => {
// validateNewPassword
const errorMessage=function(error) {
const errorMessage = function(error) {
if (error) {
return error.message;
return error.message
} else {
console.log('验证通过');
console.log('验证通过')
}
};
validateNewPassword(null, value, errorMessage);
}
validateNewPassword(null, value, errorMessage)
}
}).then(({ value }) => {
confirmPassword(value).then(response => {
@ -703,14 +709,14 @@ export default {
inputErrorMessage: '用户密码长度必须介于 8 和 16 之间',
inputValidator: (value) => {
// validateNewPassword
const errorMessage=function(error) {
const errorMessage = function(error) {
if (error) {
return error.message;
return error.message
} else {
console.log('验证通过');
console.log('验证通过')
}
};
validateNewPassword(null, value, errorMessage);
}
validateNewPassword(null, value, errorMessage)
}
}).then(({ value }) => {
resetUserPwd(row.userId, value).then(response => {
@ -791,20 +797,19 @@ export default {
hasSystemOrAuditrRole(roles) {
if (!roles || !Array.isArray(roles)) {
return false; // roles false
return false // roles false
}
return roles.some(role => role.roleKey === 'systemAdmin' || role.roleKey === 'audit'); // roleKey admin
return roles.some(role => role.roleKey === 'systemAdmin' || role.roleKey === 'audit') // roleKey admin
},
//
checkSelectable(row) {
return !(row.userId === 1 || row.isBuiltIn === '0' || this.hasSystemOrAuditrRole(row.roles));
return !(row.userId === 1 || row.isBuiltIn === '0' || this.hasSystemOrAuditrRole(row.roles))
},
getRowClassName(row) {
return !this.checkSelectable(row) ? 'disabled-row' : '';
},
return !this.checkSelectable(row) ? 'disabled-row' : ''
}
}
}
@ -824,4 +829,4 @@ export default {
.disabled-row:hover td {
background-color: #f5f7fa !important;
}
</style>
</style>