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,7 +281,43 @@ 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'
import i18n from '@/i18n'
export default {
name: 'ReportBox',
mixins: [rightBoxMixin],
props: {
categoryList: Array,
currentCategoryId: Number
},
setup () {
const { proxy } = getCurrentInstance()
const startTime = ref('')
const endTime = ref('')
function endTimeChange (val) {
endTime.value = val
}
function startTimeChang (val) {
startTime.value = val
}
const endDisabledDate = (time) => {
if (time.getTime() > new Date()) {
return true
}
if (startTime.value !== '' && startTime.value > time) {
return true
}
}
const startDisabledDate = (time) => {
if (time.getTime() > new Date()) {
return true
}
if (endTime.value !== '' && endTime.value < time) {
return true
}
}
const paramValidator = (rule, value, callback) => { const paramValidator = (rule, value, callback) => {
let validate = true let validate = true
if (value && value.length > 0) { if (value && value.length > 0) {
@@ -297,71 +331,53 @@ const paramValidator = (rule, value, callback) => {
const nameValidator = (rule, value, callback) => { const nameValidator = (rule, value, callback) => {
let validate = true let validate = true
const reg = /^[\u4e00-\u9fa5A-Za-z0-9\-\_]*$/ const reg = /^[\u4e00-\u9fa5A-Za-z0-9\-\_]*$/
if (reg.test(value)) { validate = reg.test(value)
validate = true return validate
} else { }
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 validate = false
} }
return validate return validate
} }
const rules = { // 表单校验规则
export default { name: [
name: 'ReportBox', { required: true, message: i18n.global.t('validate.required'), trigger: 'blur' },
mixins: [rightBoxMixin], { validator: nameValidator, message: i18n.global.t('validate.onlyAllowNumberLetterChinese-_'), trigger: 'blur' }
props: { ],
categoryList: Array, categoryId: [
currentCategoryId: Number { required: true, message: i18n.global.t('validate.required'), trigger: 'change' }
}, ],
setup () { schedulerStart: [
const startTime = ref('') { required: true, message: i18n.global.t('validate.required'), trigger: 'change' }
const endTime = ref('') ],
const focus = ref('') 'config.startTime': [
const focusDate = ref('') { required: true, message: i18n.global.t('validate.required'), trigger: 'change' },
function endTimeChange (val) { { validator: startTimeValidator, trigger: 'change' }
endTime.value = val ],
} 'config.endTime': [
function startTimeChang (val) { { required: true, message: i18n.global.t('validate.required'), trigger: 'change' },
startTime.value = val { validator: endTimeValidator, message: i18n.global.t('validate.endTimeGreaterThanStart'), trigger: 'change' }
} ],
function startFocus (val) { categoryParams: [
focus.value = val.target.value { required: true, message: i18n.global.t('validate.required'), trigger: 'blur' },
} { validator: paramValidator, message: i18n.global.t('validate.required'), trigger: 'blur' }
function endFocus (val) { ]
focusDate.value = val.target.value
}
const endDisabledDate = (time) => {
if (time.getTime() > new Date()) {
return true
}
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
}
}
const startDisabledDate = (time) => {
if (time.getTime() > new Date()) {
return true
}
if (focus.value != '' && startTime.value > time) {
return false
} else if (startTime.value != '' && startTime.value > time) {
return true
}
if (endTime.value != '' && endTime.value < time) {
return true
}
} }
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 = ''