CN-599 feat: 新报告功能

This commit is contained in:
chenjinsong
2022-06-08 18:32:52 +08:00
parent 996adc1483
commit e516258a2a
9 changed files with 131 additions and 63 deletions

View File

@@ -18,7 +18,6 @@
<el-select id="account-input-roleIds"
v-model="editObject.config.timeConfig.type"
class="right-box__select"
clearable
collapse-tags
:disabled="!!editObject.id"
placeholder=""
@@ -66,7 +65,7 @@
</div>
</el-form-item>
<!--startTime-->
<el-form-item :label="$t('report.dataStartTime')" prop="startTime" v-if="editObject.config.timeConfig.type === 'customize'">
<el-form-item :label="$t('report.dataStartTime')" prop="config.startTime" v-if="editObject.config.timeConfig.type === 'customize'">
<div class="demo-datetime-picker">
<div class="block">
<el-date-picker
@@ -83,7 +82,7 @@
</div>
</el-form-item>
<!--endTime-->
<el-form-item :label="$t('report.dataEndTime')" prop="endTime" v-if="editObject.config.timeConfig.type === 'customize'">
<el-form-item :label="$t('report.dataEndTime')" prop="config.endTime" v-if="editObject.config.timeConfig.type === 'customize'">
<div class="demo-datetime-picker">
<div class="block">
<el-date-picker
@@ -100,7 +99,7 @@
</div>
</el-form-item >
<el-form-item class="el-height">
<el-checkbox v-model="scheduleChecked" :disabled="editObject.config.timeConfig.type === 'customize' || editObject.id" :label="$t('report.enableTimeSchedule')" size="large" />
<el-checkbox v-model="scheduleChecked" :disabled="editObject.config.timeConfig.type === 'customize' || !!editObject.id" :label="$t('report.enableTimeSchedule')" size="large" />
</el-form-item>
<!--Enable time schedule-->
<el-form-item prop="enableTimeSchedule" v-if="scheduleChecked">
@@ -170,7 +169,7 @@
size="small"
@change="()=>{ this.$forceUpdate() }">
<template v-for="time in weekOptions" :key="time.value">
<el-option :label="time.name" :value="time.value"></el-option>
<el-option :label="$t(time.name)" :value="time.value"></el-option>
</template>
</el-select>
<div class="enable-month-week">
@@ -216,7 +215,7 @@
</div>
</el-form-item>
<!--categoryType-->
<el-form-item :label="$t('report.categoryType')" prop="categoryType">
<el-form-item :label="$t('report.categoryType')" prop="categoryId">
<el-select id="account-input-roleIds"
v-model="editObject.categoryId"
class="right-box__select"
@@ -232,6 +231,12 @@
</template>
</el-select>
</el-form-item>
<!-- 参数 -->
<el-form-item :label="$t('config.operationlog.params')" prop="params" v-if="categoryParams.length > 0">
<el-input v-model="param.value" placeholder="" v-for="(param, index) in categoryParams" :key="index" size="small" style="vertical-align: unset;" :disabled="!!editObject.id">
<template #prepend>{{param.key}}</template>
</el-input>
</el-form-item>
</el-form>
</div>
</div>
@@ -252,13 +257,14 @@ import { storageKey, report } from '@/utils/constants'
import { api } from '@/utils/api'
import _ from 'lodash'
import { post, put } from '@/utils/http'
import { getMillisecond } from '@/utils/date-util'
import { dateFormat, getMillisecond } from '@/utils/date-util'
export default {
name: 'ReportBox',
mixins: [rightBoxMixin],
props: {
categoryList: Array
categoryList: Array,
currentCategoryId: Number
},
data () {
return {
@@ -287,9 +293,23 @@ export default {
monthWeekdayCheckedAll: false,
monthWeekdayIsIndeterminate: false,
categoryParams: [],
rules: { // 表单校验规则
name: [
{ required: true, message: this.$t('validate.required'), 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' }
]
}
}
@@ -301,6 +321,18 @@ export default {
scheduleChecked (n) {
this.editObject.config.isScheduler = n ? 1 : 0
},
'editObject.categoryId': {
handler (n) {
const category = this.categoryList.find(c => c.id === n)
if (category && category.config && category.config.queryParam) {
this.categoryParams = Object.keys(category.config.queryParam).map(key => {
return { key: key, value: category.config.queryParam[key] }
})
} else {
this.categoryParams = []
}
}
},
object: {
deep: true,
immediate: true,
@@ -310,6 +342,21 @@ export default {
if (n.config.schedulerConfig && n.config.schedulerConfig.type) {
this.scheduleType = n.config.schedulerConfig.type
}
if (n.schedulerStart) {
this.editObject.schedulerStart = dateFormat(this.editObject.schedulerStart, this.dateFormat)
}
if (n.schedulerEnd) {
this.editObject.schedulerEnd = dateFormat(this.editObject.schedulerEnd, this.dateFormat)
}
if (n.id) {
if (n.config.queryParam && Object.keys(n.config.queryParam).length > 0) {
this.categoryParams = Object.keys(n.config.queryParam).map(key => {
return { key: key, value: n.config.queryParam[key] }
})
}
} else if (this.currentCategoryId) {
this.editObject.categoryId = this.currentCategoryId
}
}
}
},
@@ -352,7 +399,6 @@ export default {
schedulerEnd = getMillisecond(this.editObject.schedulerEnd)
}
console.info(this.editObject.config)
const copyObject = _.cloneDeep(this.editObject)
if (startTime) {
copyObject.config.startTime = startTime
@@ -366,6 +412,13 @@ export default {
if (schedulerEnd) {
copyObject.schedulerEnd = schedulerEnd
}
if (this.categoryParams.length > 0) {
const queryParam = {}
this.categoryParams.forEach(p => {
queryParam[p.key] = p.value
})
copyObject.config.queryParam = queryParam
}
copyObject.config = JSON.stringify(copyObject.config)
if (valid) {
if (copyObject.id) {