|
@@ -8,57 +8,100 @@
|
|
|
@click="resetForm(sqlFormRef)">重置</el-button>
|
|
|
</template>
|
|
|
<template #main>
|
|
|
- <el-form ref="sqlFormRef" :model="sqlForm" :rules="rules" label-width="120px" class="demo-ruleForm"
|
|
|
- :size="formSize" status-icon>
|
|
|
+ <el-form ref="targetFormRef" :model="sqlForm" :rules="rules" label-width="120px" class="demo-ruleForm"
|
|
|
+ :size="formSize" status-icon :disabled="isTargetForm">
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="指标名称" prop="name" :disabled="true">
|
|
|
+ <el-form-item label="指标名称" prop="name">
|
|
|
<el-input v-model="sqlForm.name" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="4">
|
|
|
- <el-form-item label="指标编码" prop="id" :disabled="true">
|
|
|
+ <el-form-item label="指标编码" prop="id">
|
|
|
<el-input v-model="sqlForm.id" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="4">
|
|
|
- <el-form-item label="父级编码" prop="pid" :disabled="true">
|
|
|
+ <el-form-item label="父级编码" prop="pid">
|
|
|
<el-input v-model="sqlForm.pid" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="4">
|
|
|
- <el-form-item label="序号" prop="sort" :disabled="true">
|
|
|
+ <el-form-item label="序号" prop="sort">
|
|
|
<el-input v-model="sqlForm.sort" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
+ </el-form>
|
|
|
+ <el-form ref="sqlFormRef" :model="sqlForm" :rules="rules" label-width="120px" class="demo-ruleForm"
|
|
|
+ :size="formSize" status-icon>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="开始时间" prop="startTime">
|
|
|
+ <el-date-picker v-model="sqlForm.startTime" type="date" label="选择时间" placeholder="选择开始时间"
|
|
|
+ format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="结束时间" prop="endTime">
|
|
|
+ <el-date-picker v-model="sqlForm.endTime" type="date" label="选择时间" placeholder="选择结束时间"
|
|
|
+ format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="分子指标ID" prop="childId">
|
|
|
+ <el-input v-model="sqlForm.childId" minlength="1" maxlength="9" show-word-limit
|
|
|
+ placeholder="没有分子请填写 /">
|
|
|
+ <template #prepend>zb_</template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="分母指标ID" prop="momId">
|
|
|
+ <el-input v-model="sqlForm.momId" minlength="1" maxlength="9" show-word-limit
|
|
|
+ placeholder="没有分母请填写 /">
|
|
|
+ <template #prepend>zb_</template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="分子指标名称" prop="childName">
|
|
|
+ <el-input v-model="sqlForm.childName" minlength="1" maxlength="512" show-word-limit
|
|
|
+ placeholder="没有分子请填写 /" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="分母指标名称" prop="momName">
|
|
|
+ <el-input v-model="sqlForm.momName" minlength="1" maxlength="512" show-word-limit
|
|
|
+ placeholder="没有分母请填写 /" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="开始时间">
|
|
|
- <el-form-item prop="startTime">
|
|
|
- <el-date-picker v-model="sqlForm.startTime" type="date" label="选择时间" placeholder="选择时间"
|
|
|
- format="YYYYMMDD" value-format="YYYYMMDD" />
|
|
|
- </el-form-item>
|
|
|
+ <el-form-item label="分子聚合函数" prop="childGather">
|
|
|
+ <el-input v-model="sqlForm.childGather" minlength="1" maxlength="256" show-word-limit
|
|
|
+ placeholder="没有分子请填写 /" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="结束时间">
|
|
|
- <el-form-item prop="endTime">
|
|
|
- <el-date-picker v-model="sqlForm.endTime" type="date" label="选择时间" placeholder="选择时间"
|
|
|
- format="YYYYMMDD" value-format="YYYYMMDD" />
|
|
|
- </el-form-item>
|
|
|
+ <el-form-item label="分母聚合函数" prop="momGather">
|
|
|
+ <el-input v-model="sqlForm.momGather" minlength="1" maxlength="256" show-word-limit
|
|
|
+ placeholder="没有分母请填写 /" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="公式-分子" prop="calcChild">
|
|
|
- <el-input v-model="sqlForm.calcChild" type="textarea" :rows="24" />
|
|
|
+ <el-input v-model="sqlForm.calcChild" type="textarea" :rows="20" placeholder="没有分子请填写 /" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="公式-分母" prop="calcMom">
|
|
|
- <el-input v-model="sqlForm.calcMom" type="textarea" :rows="24" />
|
|
|
+ <el-input v-model="sqlForm.calcMom" type="textarea" :rows="20" placeholder="没有分母请填写 /" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -92,13 +135,19 @@
|
|
|
</el-row>
|
|
|
</template>
|
|
|
<script setup name="SqlEditPage" lang="ts">
|
|
|
-import { ref, watch, onMounted, nextTick } from 'vue'
|
|
|
+import { ref, onMounted, nextTick } from 'vue'
|
|
|
import type { FormInstance, FormRules } from 'element-plus'
|
|
|
import PageLayer from '../../../layout/PageLayer.vue'
|
|
|
import { ElMessage } from 'element-plus'
|
|
|
-import { targetSqlExecute, targetSqlSave } from '../../../api/target-management/target-sql'
|
|
|
+import { seltYearAndNowLast } from '../../../data/shortcuts'
|
|
|
+import { formatDate } from '../../../utils/date'
|
|
|
+import { targetSqlExecute, targetSqlSave, selectTargetSql } from '../../../api/target-management/target-sql'
|
|
|
|
|
|
const formSize = ref('default')
|
|
|
+const isTargetForm = ref(true)
|
|
|
+const start = formatDate(seltYearAndNowLast[0].value[0])
|
|
|
+const end = formatDate(seltYearAndNowLast[1].value[1])
|
|
|
+const targetFormRef = ref<FormInstance>()
|
|
|
const sqlFormRef = ref<FormInstance>()
|
|
|
let sqlForm = $ref({
|
|
|
id: '', // 指标编码
|
|
@@ -109,6 +158,12 @@ let sqlForm = $ref({
|
|
|
endTime: '', // 总分
|
|
|
calcChild: '', // 计算分子sql
|
|
|
calcMom: '', // 计算分母sql
|
|
|
+ childId: '', // 计算分子指标ID
|
|
|
+ momId: '', // 计算分母指标ID
|
|
|
+ childName: '', // 计算分子指标名称
|
|
|
+ momName: '', // 计算分母指标名称
|
|
|
+ childGather: '', // 计算分子聚合sql
|
|
|
+ momGather: '', // 计算分母聚合sql
|
|
|
childResult: '', // 计算分子结果
|
|
|
momResult: '', // 计算分母结果
|
|
|
calcResult: '' // 计算结果
|
|
@@ -124,19 +179,45 @@ const props = defineProps({
|
|
|
onMounted(() => {
|
|
|
nextTick(() => {
|
|
|
sqlForm = props.sqlEditData
|
|
|
+ sqlForm.startTime = start + ' 00:00:00'
|
|
|
+ sqlForm.endTime = end + ' 23:59:59'
|
|
|
+ // 如果存在指标报表分子分母id,则查询分子分母指标报表信息
|
|
|
+ if (sqlForm.childId || sqlForm.momId) {
|
|
|
+ selectTargetSql(sqlForm)
|
|
|
+ .then((res: any) => {
|
|
|
+ let childRef = res.reportChild
|
|
|
+ let momRef = res.reportMom
|
|
|
+ if (childRef) {
|
|
|
+ sqlForm.childId = childRef.reportId.replaceAll('zb_', '')
|
|
|
+ sqlForm.childGather = childRef.gatherSql
|
|
|
+ sqlForm.childName = childRef.reportName
|
|
|
+ sqlForm.calcChild = childRef.baseSql
|
|
|
+ }
|
|
|
+ if (momRef) {
|
|
|
+ sqlForm.momId = momRef.reportId.replaceAll('zb_', '')
|
|
|
+ sqlForm.momGather = momRef.gatherSql
|
|
|
+ sqlForm.momName = momRef.reportName
|
|
|
+ sqlForm.calcMom = momRef.baseSql
|
|
|
+ }
|
|
|
+ if (childRef && !momRef) {
|
|
|
+ sqlForm.momId = '/'
|
|
|
+ sqlForm.momGather = '/'
|
|
|
+ sqlForm.momName = '/'
|
|
|
+ sqlForm.calcMom = '/'
|
|
|
+ }
|
|
|
+ if (!childRef && momRef) {
|
|
|
+ sqlForm.childId = '/'
|
|
|
+ sqlForm.childGather = '/'
|
|
|
+ sqlForm.childName = '/'
|
|
|
+ sqlForm.calcChild = '/'
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
})
|
|
|
})
|
|
|
|
|
|
-watch(
|
|
|
- () => sqlForm,
|
|
|
- () => {
|
|
|
-
|
|
|
- })
|
|
|
-
|
|
|
const resetForm = (formEl: FormInstance | undefined) => {
|
|
|
if (!formEl) return
|
|
|
- sqlForm.startTime = ''
|
|
|
- sqlForm.endTime = ''
|
|
|
sqlForm.childResult = ''
|
|
|
sqlForm.momResult = ''
|
|
|
sqlForm.calcResult = ''
|
|
@@ -149,8 +230,29 @@ const rules = ref<FormRules>({
|
|
|
endTime: [
|
|
|
{ required: true, message: '请选择指标查询结束时间', trigger: 'blur' },
|
|
|
],
|
|
|
+ childId: [
|
|
|
+ { required: true, message: '请填写分子指标ID', trigger: 'blur' },
|
|
|
+ ],
|
|
|
+ momId: [
|
|
|
+ { required: true, message: '请填写分母指标ID', trigger: 'blur' },
|
|
|
+ ],
|
|
|
+ childName: [
|
|
|
+ { required: true, message: '请填写分子指标名称', trigger: 'blur' },
|
|
|
+ ],
|
|
|
+ momName: [
|
|
|
+ { required: true, message: '请填写分母指标名称', trigger: 'blur' },
|
|
|
+ ],
|
|
|
+ childGather: [
|
|
|
+ { required: true, message: '请填写分子聚合函数', trigger: 'blur' },
|
|
|
+ ],
|
|
|
+ momGather: [
|
|
|
+ { required: true, message: '请填写分母聚合函数', trigger: 'blur' },
|
|
|
+ ],
|
|
|
calcChild: [
|
|
|
- { required: true, message: '请填写sql语句', trigger: 'blur' },
|
|
|
+ { required: true, message: '请填写分子sql语句', trigger: 'blur' },
|
|
|
+ ],
|
|
|
+ calcMom: [
|
|
|
+ { required: true, message: '请填写分母sql语句', trigger: 'blur' },
|
|
|
],
|
|
|
})
|
|
|
|
|
@@ -159,6 +261,8 @@ const submitForm = async (formEl: FormInstance | undefined) => {
|
|
|
|
|
|
await formEl.validate((valid: boolean, field: any) => {
|
|
|
if (valid) {
|
|
|
+ sqlForm.childId = 'zb_' + sqlForm.childId.replaceAll('zb_', '')
|
|
|
+ sqlForm.momId = 'zb_' + sqlForm.momId.replaceAll('zb_', '')
|
|
|
targetSqlSave(sqlForm)
|
|
|
.then((res: any) => {
|
|
|
let r = JSON.parse(JSON.stringify(res))
|
|
@@ -246,4 +350,8 @@ const sqlExecute = (formEl: FormInstance | undefined) => {
|
|
|
.hd-cl {
|
|
|
margin-bottom: 1px !important;
|
|
|
}
|
|
|
+
|
|
|
+:deep(.el-drawer__header) {
|
|
|
+ margin-bottom: 12px !important;
|
|
|
+}
|
|
|
</style>
|