- 通过
- 不通过
+
+ 通过
+
+
+ 不通过
+
@@ -10,9 +19,9 @@
diff --git a/src/views/dataCenter/evaluate/child/addEvaluateDetails.vue b/src/views/dataCenter/evaluate/child/addEvaluateDetails.vue
index daa969f2..c4425062 100644
--- a/src/views/dataCenter/evaluate/child/addEvaluateDetails.vue
+++ b/src/views/dataCenter/evaluate/child/addEvaluateDetails.vue
@@ -63,21 +63,26 @@ 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: /^[0-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: /^[0-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: /^[0-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: /^[0-9]\d*$/, message: '只能输入正整数', trigger: 'blur' },
+ { validator: this.validateNegativeSamples, trigger: 'blur' }
]
}
}
@@ -85,27 +90,59 @@ export default {
watch: {
isOpen(newVal) {
if (newVal && this.evaluateDetailId) {
- getDetails(this.evaluateDetailId).then(res => {
+ getDetails(this.evaluateDetailId).then((res) => {
this.form = res.data
})
}
}
},
methods: {
+ validatePositiveSamples(rule, value, callback) {
+ console.log(this.form)
+ const { tpNum, fnNum, justSqmple } = this.form
+
+ // 转换为数值类型,避免字符串拼接导致的问题
+ const tp = Number(tpNum)
+ const fn = Number(fnNum)
+ const just = Number(justSqmple)
+
+ // 校验 TP + FN 是否等于正样本数
+ if (tp + fn !== just) {
+ callback(new Error('TP和FN之和必须等于正样本数'))
+ } else {
+ callback()
+ }
+ },
+
+ validateNegativeSamples(rule, value, callback) {
+ console.log(this.form)
+ const { tnNum, fpNum, loseSample } = this.form
+
+ // 转换为数值类型
+ const tn = Number(tnNum)
+ const fp = Number(fpNum)
+ const lose = Number(loseSample)
+
+ // 校验 TN + FP 是否等于负样本数
+ if (tn + fp !== lose) {
+ callback(new Error('FP和TN之和必须等于负样本数'))
+ } 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 => {
+ 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 => {
+ addDetails(this.form).then((response) => {
this.$modal.msgSuccess('新增成功')
this.isOpen = false
this.getList()
@@ -125,4 +162,5 @@ export default {
}
+
diff --git a/src/views/dataCenter/evaluate/child/evaluateDetails.vue b/src/views/dataCenter/evaluate/child/evaluateDetails.vue
index 0942fddf..fa491dd5 100644
--- a/src/views/dataCenter/evaluate/child/evaluateDetails.vue
+++ b/src/views/dataCenter/evaluate/child/evaluateDetails.vue
@@ -149,7 +149,6 @@ export default {
},
created() {
this.evaluateId = Number(this.$route.params && this.$route.params.evaluateId)
- console.log(this.evaluateId)
this.getList()
},
methods: {
diff --git a/src/views/dataCenter/library/child/uploadFiles.vue b/src/views/dataCenter/library/child/uploadFiles.vue
index 3db1346a..b715d3be 100644
--- a/src/views/dataCenter/library/child/uploadFiles.vue
+++ b/src/views/dataCenter/library/child/uploadFiles.vue
@@ -155,7 +155,7 @@ export default {
formData.append('fileUrl', this.fileUrl)
uploadFiles(formData)
- .then(() => {
+ .then(res => {
currentChunk++
const progress = Math.floor((currentChunk / totalChunks) * 100)
this.$set(this.uploadsNum, file.name, progress)
@@ -163,11 +163,17 @@ export default {
if (currentChunk < totalChunks) {
uploadNextChunk()
} else {
+ console.log(res)
+ console.log(this.$parent)
+ // 通过 $emit 触发父组件方法
+ this.$emit('file-uploaded', res.data);
+ console.log(res)
this.startNextUpload()
this.checkAllUploadsComplete()
}
})
- .catch(() => {
+ .catch(reason => {
+ console.log(reason)
this.$set(this.uploadFailed, file.name, true)
this.startNextUpload()
})
@@ -187,7 +193,6 @@ export default {
// 启动队列中的下一个文件上传(控制并发)
startNextUpload() {
if (!this.drawer) return // 如果停止上传,则不启动新任务
-
Object.keys(this.uploadsNum).forEach((fileName) => {
if (this.uploadsNum[fileName] === 100) {
delete this.uploadsNum[fileName]
diff --git a/src/views/dataCenter/library/components/file.vue b/src/views/dataCenter/library/components/file.vue
index dcf84e4f..75944e87 100644
--- a/src/views/dataCenter/library/components/file.vue
+++ b/src/views/dataCenter/library/components/file.vue
@@ -339,6 +339,9 @@ export default {
}
},
methods: {
+ uploadFileId(res){
+ console.log("file.vue",res)
+ },
/** 转换菜单数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 21890c37..05e82643 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -26,7 +26,7 @@
/>
-
@@ -82,7 +82,9 @@
-
+
- {{scope.row.isPermanent==1?"长期账号":"临时账号" }}
+ {{ scope.row.isPermanent == 1 ? '长期账号' : '临时账号' }}
- {{scope.row.approvalStatus==0?"未审批":"已审批" }}
+ {{ scope.row.approvalStatus == 0 ? '未审批' : '已审批' }}
@@ -127,7 +129,9 @@
-
+
修改
@@ -220,7 +224,7 @@
-
+
{{
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;
}
-
\ No newline at end of file
+