提交代码

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+)', path: 'index/:evaluateId(\\d+)',
component: () => import('@/views/dataCenter/evaluate/child/evaluateDetails'), component: () => import('@/views/dataCenter/evaluate/child/evaluateDetails'),
name: 'Data', 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"> <el-table-column label="操作" align="center" min-width="140" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)" v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
size="mini" size="mini"
type="text" type="text"
@click="handleExamine(scope.row)" @click="handleExamine(scope.row)"
@ -85,7 +85,7 @@
>审核 >审核
</el-button> </el-button>
<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" :disabled="scope.row.status0Count ===0"
size="mini" size="mini"
type="text" type="text"
@ -94,7 +94,7 @@
>智能标注 >智能标注
</el-button> </el-button>
<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" size="mini"
type="text" type="text"
@click="handleAnnotation(scope.row)" @click="handleAnnotation(scope.row)"

View File

@ -150,7 +150,9 @@ export default {
loadTaskList() { loadTaskList() {
getMyNoAnnotatedTask().then(res => { getMyNoAnnotatedTask().then(res => {
this.taskList = res.data this.taskList = res.data
console.log(this.taskList)
this.taskId = Number(this.$route.params && this.$route.params.taskId) this.taskId = Number(this.$route.params && this.$route.params.taskId)
console.log(this.taskId)
this.selectTask(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"> <el-table-column label="操作" align="center" min-width="140" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)" v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
size="mini" size="mini"
type="text" type="text"
@click="handleExamine(scope.row)" @click="handleExamine(scope.row)"
@ -85,7 +85,7 @@
>审核 >审核
</el-button> </el-button>
<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" :disabled="scope.row.status0Count ===0"
size="mini" size="mini"
type="text" type="text"
@ -94,7 +94,7 @@
>智能标注 >智能标注
</el-button> </el-button>
<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" size="mini"
type="text" type="text"
@click="handleAnnotation(scope.row)" @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"> <el-table-column label="操作" align="center" min-width="140" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
v-if="scope.row.annotatorIds.split(',').map(Number).includes(getUserId)" v-if="scope.row.reviewerIds.split(',').map(Number).includes(getUserId)"
size="mini" size="mini"
type="text" type="text"
@click="handleExamine(scope.row)" @click="handleExamine(scope.row)"
@ -85,7 +85,7 @@
>审核 >审核
</el-button> </el-button>
<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" :disabled="scope.row.status0Count ===0"
size="mini" size="mini"
type="text" type="text"
@ -94,7 +94,7 @@
>智能标注 >智能标注
</el-button> </el-button>
<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" size="mini"
type="text" type="text"
@click="handleAnnotation(scope.row)" @click="handleAnnotation(scope.row)"

View File

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

View File

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

View File

@ -26,7 +26,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <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" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
@ -82,7 +82,9 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row> </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 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="userId" prop="userId" v-if="columns[0].visible"/>
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].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"> <el-table-column label="账号时效" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.isPermanent==1?"长期账号":"临时账号" }}</span> <span>{{ scope.row.isPermanent == 1 ? '长期账号' : '临时账号' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="config.registersConfig.approvalStatus" label="审批状态" align="center"> <el-table-column v-if="config.registersConfig.approvalStatus" label="审批状态" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.approvalStatus==0?"未审批":"已审批" }}</span> <span>{{ scope.row.approvalStatus == 0 ? '未审批' : '已审批' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160"> <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
@ -127,7 +129,9 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width"> <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)" <el-button size="mini" type="text" icon="el-icon-edit" @click="confirmPassword(scope.row)"
v-hasPermi="['system:user:edit']" v-hasPermi="['system:user:edit']"
>修改 >修改
@ -452,12 +456,14 @@ export default {
}, },
computed: { computed: {
config() { config() {
return JSON.parse(localStorage.getItem('systemConfig')) || {registersConfig: { return JSON.parse(localStorage.getItem('systemConfig')) || {
registersConfig: {
phoneRegisters: true, phoneRegisters: true,
emailRegisters: true, emailRegisters: true,
verificationCode: true, verificationCode: true,
approvalStatus:true, approvalStatus: true
}}; // JSON }
} // JSON
} }
}, },
watch: { watch: {
@ -476,8 +482,8 @@ export default {
methods: { methods: {
/* 手机号码脱敏 */ /* 手机号码脱敏 */
hidePhone(phone) { hidePhone(phone) {
if (!phone) return ''; if (!phone) return ''
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'); return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
}, },
/* 表单登录权限自定义校验 */ /* 表单登录权限自定义校验 */
validateLoginType(rule, value, callback) { validateLoginType(rule, value, callback) {
@ -585,13 +591,13 @@ export default {
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
// //
const validSelection = selection.filter(row => this.checkSelectable(row)); const validSelection = selection.filter(row => this.checkSelectable(row))
// roleId // roleId
this.ids = validSelection.map(item => item.userId); this.ids = validSelection.map(item => item.userId)
// //
this.single = validSelection.length !== 1; this.single = validSelection.length !== 1
this.multiple = !validSelection.length; this.multiple = !validSelection.length
}, },
// //
handleCommand(command, row) { handleCommand(command, row) {
@ -652,12 +658,12 @@ export default {
// validateNewPassword // validateNewPassword
const errorMessage = function(error) { const errorMessage = function(error) {
if (error) { if (error) {
return error.message; return error.message
} else { } else {
console.log('验证通过'); console.log('验证通过')
} }
}; }
validateNewPassword(null, value, errorMessage); validateNewPassword(null, value, errorMessage)
} }
}).then(({ value }) => { }).then(({ value }) => {
confirmPassword(value).then(response => { confirmPassword(value).then(response => {
@ -678,12 +684,12 @@ export default {
// validateNewPassword // validateNewPassword
const errorMessage = function(error) { const errorMessage = function(error) {
if (error) { if (error) {
return error.message; return error.message
} else { } else {
console.log('验证通过'); console.log('验证通过')
} }
}; }
validateNewPassword(null, value, errorMessage); validateNewPassword(null, value, errorMessage)
} }
}).then(({ value }) => { }).then(({ value }) => {
confirmPassword(value).then(response => { confirmPassword(value).then(response => {
@ -705,12 +711,12 @@ export default {
// validateNewPassword // validateNewPassword
const errorMessage = function(error) { const errorMessage = function(error) {
if (error) { if (error) {
return error.message; return error.message
} else { } else {
console.log('验证通过'); console.log('验证通过')
} }
}; }
validateNewPassword(null, value, errorMessage); validateNewPassword(null, value, errorMessage)
} }
}).then(({ value }) => { }).then(({ value }) => {
resetUserPwd(row.userId, value).then(response => { resetUserPwd(row.userId, value).then(response => {
@ -791,20 +797,19 @@ export default {
hasSystemOrAuditrRole(roles) { hasSystemOrAuditrRole(roles) {
if (!roles || !Array.isArray(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) { 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) { getRowClassName(row) {
return !this.checkSelectable(row) ? 'disabled-row' : ''; return !this.checkSelectable(row) ? 'disabled-row' : ''
}, }
} }
} }