CN-868 fix: 修复report customize类别下endTime选取逻辑不对的问题

This commit is contained in:
chenjinsong
2023-02-01 15:41:20 +08:00
parent 86c2c8364d
commit 5ece1b6c8e

View File

@@ -8,7 +8,7 @@
</div> </div>
<div class="right-box__container"> <div class="right-box__container">
<div class="container__form"> <div class="container__form">
<el-form ref="userForm" :model="editObject" :rules="rules" label-position="top" label-width="120px"> <el-form ref="reportForm" :model="editObject" :rules="rules" label-position="top" label-width="120px">
<!--name--> <!--name-->
<el-form-item :label="$t('report.name')" prop="name"> <el-form-item :label="$t('report.name')" prop="name">
<el-input id="account-input-name" v-model="editObject.name" maxlength="64" placeholder=" " show-word-limit size="small" type="text"></el-input> <el-input id="account-input-name" v-model="editObject.name" maxlength="64" placeholder=" " show-word-limit size="small" type="text"></el-input>
@@ -76,7 +76,6 @@
:disabled="!!editObject.id" :disabled="!!editObject.id"
:disabled-date="startDisabledDate" :disabled-date="startDisabledDate"
@change="startTimeChang" @change="startTimeChang"
@focus="startFocus"
prefix-icon="cn-icon cn-icon-shijian" prefix-icon="cn-icon cn-icon-shijian"
type="datetime" type="datetime"
placeholder=" " placeholder=" "
@@ -96,7 +95,6 @@
:disabled="!!editObject.id" :disabled="!!editObject.id"
:disabled-date="endDisabledDate" :disabled-date="endDisabledDate"
@change="endTimeChange" @change="endTimeChange"
@focus="endFocus"
prefix-icon="cn-icon cn-icon-shijian" prefix-icon="cn-icon cn-icon-shijian"
type="datetime" type="datetime"
placeholder=" " placeholder=" "
@@ -283,28 +281,8 @@ import { api } from '@/utils/api'
import _ from 'lodash' import _ from 'lodash'
import { get, post, put } from '@/utils/http' import { get, post, put } from '@/utils/http'
import { dateFormat, getMillisecond } from '@/utils/date-util' import { dateFormat, getMillisecond } from '@/utils/date-util'
import { ref } from 'vue' import { ref, getCurrentInstance } from 'vue'
const paramValidator = (rule, value, callback) => { import i18n from '@/i18n'
let validate = true
if (value && value.length > 0) {
const hasEmpty = value.some(v => {
return !v.value && v.value !== 0
})
validate = !hasEmpty
}
return validate
}
const nameValidator = (rule, value, callback) => {
let validate = true
const reg = /^[\u4e00-\u9fa5A-Za-z0-9\-\_]*$/
if (reg.test(value)) {
validate = true
} else {
validate = false
}
return validate
}
export default { export default {
name: 'ReportBox', name: 'ReportBox',
mixins: [rightBoxMixin], mixins: [rightBoxMixin],
@@ -313,32 +291,21 @@ export default {
currentCategoryId: Number currentCategoryId: Number
}, },
setup () { setup () {
const { proxy } = getCurrentInstance()
const startTime = ref('') const startTime = ref('')
const endTime = ref('') const endTime = ref('')
const focus = ref('')
const focusDate = ref('')
function endTimeChange (val) { function endTimeChange (val) {
endTime.value = val endTime.value = val
} }
function startTimeChang (val) { function startTimeChang (val) {
startTime.value = val startTime.value = val
} }
function startFocus (val) {
focus.value = val.target.value
}
function endFocus (val) {
focusDate.value = val.target.value
}
const endDisabledDate = (time) => { const endDisabledDate = (time) => {
if (time.getTime() > new Date()) { if (time.getTime() > new Date()) {
return true return true
} }
if (startTime.value != '' && startTime.value > time) { if (startTime.value !== '' && startTime.value > time) {
return true
}
if (focusDate.value != '' && endTime.value > time) {
return false
} else if (endTime.value != '' && endTime.value < time) {
return true return true
} }
} }
@@ -346,22 +313,71 @@ export default {
if (time.getTime() > new Date()) { if (time.getTime() > new Date()) {
return true return true
} }
if (focus.value != '' && startTime.value > time) { if (endTime.value !== '' && endTime.value < time) {
return false
} else if (startTime.value != '' && startTime.value > time) {
return true return true
} }
if (endTime.value != '' && endTime.value < time) {
return true
} }
const paramValidator = (rule, value, callback) => {
let validate = true
if (value && value.length > 0) {
const hasEmpty = value.some(v => {
return !v.value && v.value !== 0
})
validate = !hasEmpty
}
return validate
}
const nameValidator = (rule, value, callback) => {
let validate = true
const reg = /^[\u4e00-\u9fa5A-Za-z0-9\-\_]*$/
validate = reg.test(value)
return validate
}
const startTimeValidator = (rule, value, callback) => {
const form = proxy.$refs.reportForm
if (form.model.config.endTime) {
form.validateField('config.endTime', () => null)
}
callback()
}
const endTimeValidator = (rule, value, callback) => {
let validate = true
if (startTime.value !== '' && value <= startTime.value) {
validate = false
}
return validate
}
const rules = { // 表单校验规则
name: [
{ required: true, message: i18n.global.t('validate.required'), trigger: 'blur' },
{ validator: nameValidator, message: i18n.global.t('validate.onlyAllowNumberLetterChinese-_'), trigger: 'blur' }
],
categoryId: [
{ required: true, message: i18n.global.t('validate.required'), trigger: 'change' }
],
schedulerStart: [
{ required: true, message: i18n.global.t('validate.required'), trigger: 'change' }
],
'config.startTime': [
{ required: true, message: i18n.global.t('validate.required'), trigger: 'change' },
{ validator: startTimeValidator, trigger: 'change' }
],
'config.endTime': [
{ required: true, message: i18n.global.t('validate.required'), trigger: 'change' },
{ validator: endTimeValidator, message: i18n.global.t('validate.endTimeGreaterThanStart'), trigger: 'change' }
],
categoryParams: [
{ required: true, message: i18n.global.t('validate.required'), trigger: 'blur' },
{ validator: paramValidator, message: i18n.global.t('validate.required'), trigger: 'blur' }
]
} }
return { return {
endDisabledDate, endDisabledDate,
startDisabledDate, startDisabledDate,
startTimeChang, startTimeChang,
endTimeChange, endTimeChange,
startFocus, rules
endFocus
} }
}, },
data () { data () {
@@ -391,28 +407,6 @@ export default {
monthWeekdayCheckedAll: false, monthWeekdayCheckedAll: false,
monthWeekdayIsIndeterminate: false, monthWeekdayIsIndeterminate: false,
rules: { // 表单校验规则
name: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' },
{ validator: nameValidator, message: this.$t('validate.onlyAllowNumberLetterChinese-_'), trigger: 'blur' }
],
categoryId: [
{ required: true, message: this.$t('validate.required'), trigger: 'change' }
],
schedulerStart: [
{ required: true, message: this.$t('validate.required'), trigger: 'change' }
],
'config.startTime': [
{ required: true, message: this.$t('validate.required'), trigger: 'change' }
],
'config.endTime': [
{ required: true, message: this.$t('validate.required'), trigger: 'change' }
],
categoryParams: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' },
{ validator: paramValidator, message: this.$t('validate.required'), trigger: 'blur' }
]
},
paramsOptions: [] paramsOptions: []
} }
}, },
@@ -592,7 +586,7 @@ export default {
if (this.blockOperation.save) { return } if (this.blockOperation.save) { return }
this.blockOperation.save = true this.blockOperation.save = true
this.$refs.userForm.validate((valid) => { this.$refs.reportForm.validate((valid) => {
if (valid) { if (valid) {
let startTime = '' let startTime = ''
let endTime = '' let endTime = ''