各周报的校验添加

This commit is contained in:
chen 2024-08-09 15:40:47 +08:00
parent 943a2a05ee
commit 304b56beb4
7 changed files with 138 additions and 13 deletions

View File

@ -7,7 +7,7 @@
<div class="page-content">
<div class="panel">
<div class="panel-body">
<el-form :model="formAll" label-width="100px" ref="formName">
<el-form :model="formAll" :rules="rules" label-width="100px" ref="formName">
<el-form-item label="项目编号" prop="projectNo">
<el-select class="form-input" filterable placeholder="请选择" v-model="formAll.ls[0].projectNo" :disabled="true">
@ -26,7 +26,7 @@
</el-select>
</el-form-item>
<el-form-item label="本周进展" prop="thisWeek">
<el-form-item label="本周进展" prop="ls[0].thisWeek">
<el-input
class="form-input"
placeholder="请输入内容"
@ -36,7 +36,7 @@
>
</el-input>
</el-form-item>
<el-form-item label="下周计划" prop="nextWeek">
<el-form-item label="下周计划" prop="ls[0].nextWeek">
<el-input
class="form-input"
placeholder="请输入内容"
@ -88,6 +88,14 @@ export default {
projectNo: '',
NowUserId: '',
draftManId: '',
rules: {
'ls[0].thisWeek': [
{ required: true, message: '本周进展不能为空', trigger: 'blur' }
],
'ls[0].nextWeek': [
{ required: true, message: '下周计划不能为空', trigger: 'blur' }
]
},
projectManagerData: '',
expandRight: false,
app: app,

View File

@ -34,6 +34,7 @@
class="form-input"
placeholder="请输入内容"
v-model="formModel.workload"
@change="validateWorkload"
>
</el-input>
</el-form-item>
@ -267,6 +268,17 @@ export default {
}
return dest
},
// 0.5
validateWorkload() {
if (this.formModel.workload !== null) {
const value = parseFloat(this.formModel.workload);
if (value % 0.5 !== 0) {
// Adjust value to the nearest multiple of 0.5
this.formModel.workload = Math.round(value * 2) / 2;
this.$message.error('工作量必须是0.5的倍数');
}
}
},
addFile () {
this.formModel.reimburseDetail.push({
time: '',

View File

@ -245,6 +245,40 @@ export default {
},
]
},
validateMultipleOfHalf(rule, value, callback) {
if (value === undefined || value === null || value === '') {
return callback(new Error('请输入一个值'));
}
const num = parseFloat(value);
if (isNaN(num)) {
return callback(new Error('工作量必须为数字值'));
}
if ((num * 2) % 1 !== 0) {
return callback(new Error('工作量必须是 0.5 的倍数'));
}
callback(); //
},
validateMultipleOfHalf1(rule, value, callback) {
if (value === undefined || value === null || value === '') {
return callback(new Error('请输入一个值'));
}
const num = parseFloat(value);
if (isNaN(num)) {
return callback(new Error('周数必须为数字值'));
}
if (num <= 0 || num % 1 !== 0) {
return callback(new Error('周数必须是正整数'));
}
callback(); //
},
initFormSchema () {
this.formSchema = [
{
@ -287,16 +321,22 @@ export default {
title: '项目名称',
model: 'projectName',
span: 7,
// rules: [
// {type: 'number', message: ''}
// ],
rules: [
{required: true, message: '项目名称不能为空'}
],
externalValue: {}
},
{
type: 'custom-input',
title: '工作量(人日)',
title: '工作量',
model: 'workload',
span: 5,
rules: [
{ required: true, message: '工作量不能为空' },
{ type: 'number',
validator: this.validateMultipleOfHalf,
trigger: 'blur'}
],
externalValue: {}
},
{
@ -304,6 +344,12 @@ export default {
title: '周数',
model: 'week',
span: 5,
rules: [
{required: true, message: '周数不能为空'},
{ type: 'number',
validator: this.validateMultipleOfHalf1,
trigger: 'blur'}
],
externalValue: {}
},
{
@ -311,6 +357,9 @@ export default {
title: '本周进展',
model: 'thisWeek',
span: 24,
rules: [
{required: true, message: '本周进展不能为空'}
],
externalValue: {}
},
{
@ -318,6 +367,9 @@ export default {
title: '下周计划',
model: 'nextWeek',
span: 24,
rules: [
{required: true, message: '下周计划不能为空'}
],
externalValue: {}
},
{

View File

@ -18,7 +18,7 @@
<div class="page-content">
<div class="panel">
<div class="panel-body">
<el-form :model="formModel" label-width="100px" ref="formName">
<el-form :model="formModel" :rules="rules" label-width="100px" ref="formName">
<el-form-item label="部门" prop="deptId">
<el-select class="form-input" filterable placeholder="请选择" v-model="formModel.deptId" :disabled="true">
<el-option
@ -48,6 +48,7 @@
class="form-input"
placeholder="请输入内容"
v-model="formModel.projectNo"
:disabled="true"
>
</el-input>
</el-form-item>
@ -59,6 +60,7 @@
class="form-input"
placeholder="请输入内容"
v-model="formModel.projectName"
:disabled="true"
>
</el-input>
</el-form-item>
@ -103,7 +105,7 @@
class="form-input"
placeholder="请输入内容"
v-model.number="formModel.workload"
@change="moneyChange"
@change="validateWorkload"
>
</el-input>
</el-form-item>
@ -174,6 +176,14 @@ export default {
nextWeek: '',
userId: '',
workload: '',
rules: {
thisWeek: [
{ required: true, message: '本周进展不能为空', trigger: 'blur' }
],
nextWeek: [
{ required: true, message: '下周计划不能为空', trigger: 'blur' }
]
},
projectName: '',
money: '',
projectNo: '',
@ -417,6 +427,17 @@ export default {
fileList: [] //
})
},
// 0.5
validateWorkload() {
if (this.formModel.workload !== null) {
const value = parseFloat(this.formModel.workload);
if (value % 0.5 !== 0) {
// Adjust value to the nearest multiple of 0.5
this.formModel.workload = Math.round(value * 2) / 2;
this.$message.error('工作量必须是0.5的倍数');
}
}
},
deleteFile (index) {
if (this.formModel.reimburseDetail.length === 1) {
this.$message.warning('报销明细不能为空!')

View File

@ -18,7 +18,7 @@
<div class="page-content">
<div class="panel">
<div class="panel-body">
<el-form :model="formModel" label-width="100px" ref="formName">
<el-form :model="formModel" :rules="rules" label-width="100px" ref="formName">
<el-form-item label="项目编号" prop="projectNo">
<el-input
class="form-input"
@ -60,6 +60,7 @@
class="form-input"
placeholder="请输入内容"
v-model="formModel.execute"
@change="validateExecute"
>
</el-input>
</el-form-item>
@ -293,6 +294,17 @@ export default {
}
})
},
//
validateExecute() {
if (this.formModel.execute !== null) {
const value = parseFloat(this.formModel.execute);
if (value <= 0 || !Number.isInteger(value)) {
this.$message.error('必须是正整数');
} else {
this.formModel.execute = value;
}
}
},
//
getAllPeople () {
// Api.PersonnelManagement.personListNew(1, 10000).then((result) => {

View File

@ -7,7 +7,7 @@
<div class="page-content">
<div class="panel">
<div class="panel-body">
<el-form :model="formAll" label-width="100px" ref="formName">
<el-form :model="formAll" :rules="rules" label-width="100px" ref="formName">
<el-form-item label="执行部门" prop="ext.deptName">
<el-select class="form-input" filterable placeholder="请选择" v-model="formAll.ls[0].ext.deptName" :disabled="true">
@ -31,7 +31,7 @@
</el-select>
</el-form-item>
<el-form-item label="本周进展" prop="thisWeek">
<el-form-item label="本周进展" prop="ls[0].thisWeek">
<el-input
class="form-input"
placeholder="请输入内容"
@ -41,7 +41,7 @@
>
</el-input>
</el-form-item>
<el-form-item label="下周计划" prop="nextWeek">
<el-form-item label="下周计划" prop="ls[0].nextWeek">
<el-input
class="form-input"
placeholder="请输入内容"
@ -92,6 +92,14 @@ export default {
money: '',
projectNo: '',
NowUserId: '',
rules: {
'ls[0].thisWeek': [
{ required: true, message: '本周进展不能为空', trigger: 'blur' }
],
'ls[0].nextWeek': [
{ required: true, message: '下周计划不能为空', trigger: 'blur' }
]
},
draftManId: '',
projectManagerData: '',
expandRight: false,

View File

@ -39,6 +39,7 @@
class="form-input"
placeholder="请输入内容"
v-model="formModel.workload"
@change="validateWorkload"
>
</el-input>
</el-form-item>
@ -255,6 +256,17 @@ export default {
}
})
},
// 0.5
validateWorkload() {
if (this.formModel.workload !== null) {
const value = parseFloat(this.formModel.workload);
if (value % 0.5 !== 0) {
// Adjust value to the nearest multiple of 0.5
this.formModel.workload = Math.round(value * 2) / 2;
this.$message.error('工作量必须是0.5的倍数');
}
}
},
//
assembleOrgData (source) {
let dest = []