diff --git a/src/components/rightBox/report/ReportBox.vue b/src/components/rightBox/report/ReportBox.vue index df508ae8..936a2081 100644 --- a/src/components/rightBox/report/ReportBox.vue +++ b/src/components/rightBox/report/ReportBox.vue @@ -8,7 +8,7 @@
- + @@ -76,7 +76,6 @@ :disabled="!!editObject.id" :disabled-date="startDisabledDate" @change="startTimeChang" - @focus="startFocus" prefix-icon="cn-icon cn-icon-shijian" type="datetime" placeholder=" " @@ -96,7 +95,6 @@ :disabled="!!editObject.id" :disabled-date="endDisabledDate" @change="endTimeChange" - @focus="endFocus" prefix-icon="cn-icon cn-icon-shijian" type="datetime" placeholder=" " @@ -283,28 +281,8 @@ import { api } from '@/utils/api' import _ from 'lodash' import { get, post, put } from '@/utils/http' import { dateFormat, getMillisecond } from '@/utils/date-util' -import { ref } from 'vue' -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\-\_]*$/ - if (reg.test(value)) { - validate = true - } else { - validate = false - } - return validate -} - +import { ref, getCurrentInstance } from 'vue' +import i18n from '@/i18n' export default { name: 'ReportBox', mixins: [rightBoxMixin], @@ -313,32 +291,21 @@ export default { currentCategoryId: Number }, setup () { + const { proxy } = getCurrentInstance() + const startTime = ref('') const endTime = ref('') - const focus = ref('') - const focusDate = ref('') function endTimeChange (val) { endTime.value = val } function startTimeChang (val) { startTime.value = val } - function startFocus (val) { - focus.value = val.target.value - } - 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) { + if (startTime.value !== '' && startTime.value > time) { return true } } @@ -346,22 +313,71 @@ export default { if (time.getTime() > new Date()) { return true } - if (focus.value != '' && startTime.value > time) { - return false - } else if (startTime.value != '' && startTime.value > time) { + if (endTime.value !== '' && endTime.value < time) { 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 { endDisabledDate, startDisabledDate, startTimeChang, endTimeChange, - startFocus, - endFocus + rules } }, data () { @@ -391,28 +407,6 @@ export default { monthWeekdayCheckedAll: 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: [] } }, @@ -592,7 +586,7 @@ export default { if (this.blockOperation.save) { return } this.blockOperation.save = true - this.$refs.userForm.validate((valid) => { + this.$refs.reportForm.validate((valid) => { if (valid) { let startTime = '' let endTime = ''