Преглед изворни кода

Merge branch 'master' into 'master'

指标详情配置优化

See merge request lighter/vue-intergration-platform!88
huangshuhua пре 1 година
родитељ
комит
74a0546f4f

+ 1 - 1
src/views/target-management/target-comm/ReportDetails.vue

@@ -9,7 +9,7 @@
             <el-table :data="tableDisplayData" border style="width: 100%" stripe highlight-current-row height="600">
                 <el-table-column type="index" label="序号" width="80" />
                 <el-table-column prop="reportId" label="报表Id" width="120"></el-table-column>
-                <el-table-column prop="title" label="名称" width="200">
+                <el-table-column prop="title" label="名称" width="200" show-overflow-tooltip>
                     <template v-slot="scope">
                         <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.title"></el-input>
                         <span v-else>{{ scope.row.title }}</span>

+ 47 - 26
src/views/target-management/target-comm/ReportLevel.vue

@@ -3,27 +3,26 @@
     <template #header class="hd-cl">
       <!-- <el-button type="primary" icon="Edit" @click="editForm(ruleFormRef)" style="margin-left: 10px">编辑</el-button> -->
       <el-button type="primary" icon="Check" @click="submitForm(ruleFormRef)" style="margin-left: 10px">保存</el-button>
-      <el-button type="primary" icon="Refresh" @click="resetForm(ruleFormRef)"
-                 style="margin-left: 10px">重置
+      <el-button type="primary" icon="Refresh" @click="resetForm(ruleFormRef)" style="margin-left: 10px">重置
       </el-button>
     </template>
     <template #mainMaxContentHeight>
       <el-form ref="ruleFormRef" label-width="120px" :model="levelForm" class="demo-ruleForm" :size="formSize"
-               :disabled="isShowForm">
+        :disabled="isShowForm">
         <el-row>
           <el-col :span="12">
             <el-form-item label="分组类型名称" prop="levelName">
-              <el-input v-model="levelForm.levelName" minlength="0" maxlength="8" show-word-limit/>
+              <el-input v-model="levelForm.levelName" minlength="0" maxlength="8" show-word-limit />
             </el-form-item>
           </el-col>
           <el-col :span="6">
             <el-form-item label="分组类型id" prop="levelId">
-              <el-input v-model="levelForm.levelId" minlength="1" maxlength="256" show-word-limit/>
+              <el-input v-model="levelForm.levelId" minlength="1" maxlength="256" show-word-limit />
             </el-form-item>
           </el-col>
           <el-col :span="6">
             <el-form-item label="报表id" prop="reportId">
-              <el-input v-model="levelForm.reportId" minlength="1" maxlength="12" show-word-limit/>
+              <el-input v-model="levelForm.reportId" minlength="1" maxlength="12" show-word-limit />
             </el-form-item>
           </el-col>
         </el-row>
@@ -32,44 +31,44 @@
         <el-row>
           <el-col :span="6">
             <el-form-item label="第一分组id" prop="fstGroup">
-              <el-input v-model="levelForm.fstGroup" minlength="0" maxlength="12" show-word-limit/>
+              <el-input v-model="levelForm.fstGroup" minlength="0" maxlength="12" show-word-limit />
             </el-form-item>
           </el-col>
           <el-col :span="6">
             <el-form-item label="第一分组名称" prop="fstName">
-              <el-input v-model="levelForm.fstName" minlength="0" maxlength="24" show-word-limit/>
+              <el-input v-model="levelForm.fstName" minlength="0" maxlength="24" show-word-limit />
             </el-form-item>
           </el-col>
           <el-col :span="6">
             <el-form-item label="第二分组id" prop="sndGroup">
-              <el-input v-model="levelForm.sndGroup" minlength="0" maxlength="12" show-word-limit/>
+              <el-input v-model="levelForm.sndGroup" minlength="0" maxlength="12" show-word-limit />
             </el-form-item>
           </el-col>
           <el-col :span="6">
             <el-form-item label="第二分组名称" prop="sndName">
-              <el-input v-model="levelForm.sndName" minlength="0" maxlength="24" show-word-limit/>
+              <el-input v-model="levelForm.sndName" minlength="0" maxlength="24" show-word-limit />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="6">
             <el-form-item label="第三分组id" prop="trdGroup">
-              <el-input v-model="levelForm.trdGroup" minlength="0" maxlength="12" show-word-limit/>
+              <el-input v-model="levelForm.trdGroup" minlength="0" maxlength="12" show-word-limit />
             </el-form-item>
           </el-col>
           <el-col :span="6">
             <el-form-item label="第三分组名称" prop="trdName">
-              <el-input v-model="levelForm.trdName" minlength="0" maxlength="24" show-word-limit/>
+              <el-input v-model="levelForm.trdName" minlength="0" maxlength="24" show-word-limit />
             </el-form-item>
           </el-col>
           <el-col :span="6">
             <el-form-item label="第四分组id" prop="fthGroup">
-              <el-input v-model="levelForm.fthGroup" minlength="0" maxlength="12" show-word-limit/>
+              <el-input v-model="levelForm.fthGroup" minlength="0" maxlength="12" show-word-limit />
             </el-form-item>
           </el-col>
           <el-col :span="6">
             <el-form-item label="第四分组名称" prop="fthName">
-              <el-input v-model="levelForm.fthName" minlength="0" maxlength="24" show-word-limit/>
+              <el-input v-model="levelForm.fthName" minlength="0" maxlength="24" show-word-limit />
             </el-form-item>
           </el-col>
         </el-row>
@@ -77,12 +76,11 @@
           <el-col :span="6">
             <el-form-item label="报表类型" prop="levelType">
               <el-select v-model="levelForm.levelType" placeholder="请选择报表类型方式" clearable>
-                <el-option v-for="item in levelTypeList" :key="item.code" :label="item.name"
-                           :value="item.code">
+                <el-option v-for="item in levelTypeList" :key="item.code" :label="item.name" :value="item.code">
                   <span style="float: left">{{ item.code }}</span>
                   <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px; ">
-                                        {{ item.name }}
-                                    </span>
+                    {{ item.name }}
+                  </span>
                 </el-option>
               </el-select>
             </el-form-item>
@@ -90,7 +88,7 @@
           <el-col :span="6">
             <el-form-item label="是否有效" prop="flag">
               <el-switch v-model="levelForm.flag" active-value="Y" inactive-value="N" active-color="#13ce66"
-                         inactive-color="#ff4949"/>
+                inactive-color="#ff4949" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -99,10 +97,11 @@
   </PageLayer>
 </template>
 <script setup name="ReportLevel" lang="ts">
-import {ref, onMounted, nextTick, reactive} from 'vue'
+import { ref, onMounted, nextTick, watch } from 'vue'
 import PageLayer from '../../../layout/PageLayer.vue'
-import type {FormInstance, FormRules} from 'element-plus'
-import {saveTableGroupInfo} from '../../../api/target-management/report-dict'
+import type { FormInstance, FormRules } from 'element-plus'
+import { ElMessage } from 'element-plus'
+import { saveTableGroupInfo } from '../../../api/target-management/report-dict'
 
 const props = defineProps({
   reportLevelDetail: {
@@ -115,8 +114,8 @@ const formSize = ref('default')
 const isShowForm = ref(false)
 const ruleFormRef = ref<FormInstance>()
 const levelTypeList = [
-  {'code': '1', 'name': '表格类型'},
-  {'code': '2', 'name': '图表类型'},
+  { 'code': '1', 'name': '表格类型' },
+  { 'code': '2', 'name': '图表类型' },
 ]
 
 let levelForm = ref({
@@ -135,6 +134,10 @@ let levelForm = ref({
   levelType: '1', // 报表分组类型方式(1:表格展示形式, 2:图形钻取形式)
 })
 
+watch(() => props.reportLevelDetail, () => {
+  levelForm.value = props.reportLevelDetail as any
+})
+
 onMounted(() => {
   nextTick(() => {
     levelForm.value = props.reportLevelDetail as any
@@ -151,8 +154,26 @@ const editForm = (formEl: FormInstance | undefined) => {
 const submitForm = async (formEl: FormInstance | undefined) => {
   if (!formEl) return
 
-  await saveTableGroupInfo(levelForm).then((res: any) => {
-    console.log(res)
+  if (levelForm.value.levelId === 'group_zb' || levelForm.value.levelId === 'group_ks' || levelForm.value.levelId === 'group_dept') {
+    ElMessage({
+      type: "info",
+      message: "固定报表分组类型无需保存!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+
+  await saveTableGroupInfo(levelForm.value).then((res: any) => {
+    if (res.cg) {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      return
+    }
   })
 
 }

+ 18 - 7
src/views/target-management/target-dict/TargetDictInfo.vue

@@ -8,8 +8,8 @@
                 <template #header class="hd-cl">
                     <el-date-picker v-model="dateRange" type="daterange" range-separator="至" start-placeholder="开始日期"
                         end-placeholder="结束日期" :shortcuts="shortcuts"> </el-date-picker>
-                    <el-select-v2 ref="deptInfoRef" v-model="queryParam.deptId" clearable remote filterable
-                        :remote-method="deptMethod" :options="deptWardList" :placeholder="'请选择科室'" />
+                    <!-- <el-select-v2 ref="deptInfoRef" v-model="queryParam.deptId" clearable remote filterable
+                        :remote-method="deptMethod" :options="deptWardList" :placeholder="'请选择科室'" /> -->
                     <el-input v-model="queryParam.calcChild" v-if="isShowSql"></el-input>
                     <el-input v-model="queryParam.calcMom" v-if="isShowSql"></el-input>
                     <el-button icon="Search" type="primary" @click="selectTargetDictInfo"
@@ -105,6 +105,7 @@ import { queryDept } from '../../../api/public-api'
 import XcTable from '../../../components/xiao-chan/xc-table/XcTable.vue'
 import { formatDate, getDateRangeFormatDate } from '../../../utils/date'
 import { shortcuts, clockinShortcuts } from '../../../data/shortcuts'
+import { clone } from '../../../utils/clone'
 
 const targetTreeData = ref({
     data: [{}],
@@ -216,7 +217,7 @@ const treeNodeClick = async (data: any, node: any, obj: any) => {
 
         // 查询指标的分子、分母sql
         queryParam.childId = targetForm.value.childId
-        queryParam.momId = node.data.momId
+        queryParam.momId = targetForm.value.momId
         let selectTargetSqlRes: any = await selectTargetSql(queryParam)
         let { reportChild } = selectTargetSqlRes
         let { reportMom } = selectTargetSqlRes
@@ -320,8 +321,11 @@ const calcTargetDictInfo = (queryParam: any) => {
                             }
                         }
                     })
-                    returnData.data = res.dataList
-                    returnData.total = res.dataList.length
+                    if (res.dataList.length > 0) {
+                        let dd = clearNullData(clone(res.dataList))
+                        returnData.data = dd
+                        returnData.total = dd.length
+                    }
                 });
         } else {
             ElMessage({
@@ -366,8 +370,11 @@ const calcTargetDictInfo = (queryParam: any) => {
                             }
                         }
                     })
-                    returnData.data = res.dataList
-                    returnData.total = res.dataList.length
+                    if (res.dataList.length > 0) {
+                        let dd = clearNullData(clone(res.dataList))
+                        returnData.data = dd
+                        returnData.total = dd.length
+                    }
                 });
         } else {
             ElMessage({
@@ -447,6 +454,10 @@ const exportData = (id: string, name: string) => {
 
 }
 
+const clearNullData = (array: any) => {
+    return array.filter((item: any) => item !== null);
+}
+
 </script>
 <style lang="scss" scoped deep>
 .hd-cl {

+ 23 - 4
src/views/target-management/target-dict/TargetReportConfig.vue

@@ -62,11 +62,11 @@
                             </el-col>
                             <el-col :span="6">
                                 <el-form-item label="报表分组类型" prop="level">
-                                    <el-select v-model="reportForm.level" filterable :filter-method="levelFilterMethod"
+                                    <el-select v-model="levelId" filterable :filter-method="levelFilterMethod"
                                         value-key="id" placeholder="请选择报表分组类型">
                                         <el-option v-for="item in levelList" :key="item.reportId"
-                                            :label="item.levelName" :value="item.reportId">
-                                            <span style="float: left">{{ item.reportId }}</span>
+                                            :label="item.levelName" :value="item.levelId">
+                                            <span style="float: left">{{ item.levelId }}</span>
                                             <span
                                                 style="float: right; color: var(--el-text-color-secondary); font-size: 13px; ">
                                                 {{ item.levelName }}
@@ -193,6 +193,7 @@ const nowDay = new Date()
 const ds = formatDate(nowDay)
 const formSize = ref('default')
 const ruleFormRef = ref<FormInstance>()
+const levelId = ref('')
 const reportTypeList = ref([
     {
         reportType: '',
@@ -348,6 +349,8 @@ const treeNodeClick = async (data: any, node: any, obj: any) => {
             // 查询指标字典
             let selectReportDictRes = await selectReportDict(queryParam)
             reportForm.value = selectReportDictRes[0]
+            // 回显报表分组类型
+            levelId.value = reportForm.value.level
         }
     }
 }
@@ -402,6 +405,16 @@ const submitForm = async (formEl: FormInstance | undefined) => {
                 });
                 return
             }
+            // level需要指定
+            if (levelId.value) {
+                reportForm.value.level = levelId.value
+            } else {
+                if (reportForm.value.reportType === 'zb') {
+                    reportForm.value.level = 'group_zb'
+                } else {
+                    reportForm.value.level = 'group_ks'
+                }
+            }
 
             saveReportBaseInfo(reportForm.value).then((res: any) => {
                 ElMessage({
@@ -505,7 +518,13 @@ const reportLevel = () => {
         });
         return
     }
-
+    if (!reportForm.value.level) {
+        if (reportForm.value.reportType === 'zb') {
+            reportForm.value.level = 'group_zb'
+        } else {
+            reportForm.value.level = 'group_ks'
+        }
+    }
     const param = {
         reportId: reportForm.value.reportId,
         level: reportForm.value.level,