ソースを参照

Merge branch 'master' into 'master'

门诊统筹统计明细增加,指标报表维护更新分组类型维护

See merge request lighter/vue-intergration-platform!62
huangshuhua 1 年間 前
コミット
1126119693

+ 17 - 0
src/api/target-management/report-dict.js

@@ -62,4 +62,21 @@ export function saveReportBaseInfo(data) {
         method: 'post',
         data,
     })
+}
+
+// 保存指标分组基本信息
+export function saveTableGroupInfo(data) {
+    return request({
+        url: '/targetManagement/saveTableGroupInfo',
+        method: 'post',
+        data,
+    })
+}
+
+// 查询指标报表分组类型字典
+export function selectReportLevelDict() {
+    return request({
+        url: '/targetManagement/selectReportLevelDict',
+        method: 'get',
+    })
 }

+ 63 - 9
src/views/reports/OutpatientCoordination.vue

@@ -9,15 +9,38 @@
       <el-table :data="returnData.resultData" :height="tableHeight" stripe highlight-current-row>
         <el-table-column type="expand">
           <template #default="props">
-            <el-table :data="props.row.children" v-show="props.row.isChildren">
-              <template v-for="(col, index) in returnData.headTitle" :key="index">
-                <el-table-column v-if="col.prop === 'item'" :prop="col.prop" :label="col.label" fixed width="140">
-                </el-table-column>
-                <el-table-column v-else-if="col.prop === 'total'" :prop="col.prop" :label="col.label" fixed>
-                </el-table-column>
-                <el-table-column v-else :prop="col.prop" :label="col.label"></el-table-column>
-              </template>
-            </el-table>
+            <div v-if="props.row.isChildren">
+              <el-table :data="props.row.children">
+                <template v-for="(col, index) in returnData.headTitle" :key="index">
+                  <el-table-column v-if="col.prop === 'item'" :prop="col.prop" :label="col.label" fixed width="140">
+                  </el-table-column>
+                  <el-table-column v-else-if="col.prop === 'total'" :prop="col.prop" :label="col.label" fixed>
+                  </el-table-column>
+                  <el-table-column v-else :prop="col.prop" :label="col.label"></el-table-column>
+                </template>
+              </el-table>
+            </div>
+            <div v-else-if="props.row.isDept">
+              <el-header>
+                <el-button type="primary" icon="Download" @click="exportPage(props.row.children)"
+                  style="margin-left: 5px">导出</el-button>
+              </el-header>
+              <el-table :data="props.row.children.slice(pageSize * (currentPage - 1), pageSize * currentPage)">
+                <el-table-column prop="dept" label="科室" width="140"></el-table-column>
+                <el-table-column prop="doctor" label="医生" width="140"></el-table-column>
+                <el-table-column prop="patNo" label="门诊号" width="140"></el-table-column>
+                <el-table-column prop="times" label="门诊次数" width="140"></el-table-column>
+                <el-table-column prop="psnName" label="病人姓名" width="140"></el-table-column>
+                <el-table-column prop="cbd" label="参保地" width="140"></el-table-column>
+                <el-table-column prop="zd" label="诊断" width="270" show-overflow-tooltip></el-table-column>
+                <el-table-column prop="czr" label="操作人" width="140"></el-table-column>
+                <el-table-column prop="rq" label="结算时间" width="140"></el-table-column>
+              </el-table>
+              <el-pagination :current-page="currentPage" :page-size="pageSize" :page-sizes="[15, 30, 45, 60]"
+                :total="props.row.children.length" layout="total, sizes, prev, pager, next, jumper"
+                style="margin-top: 5px" @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"></el-pagination>
+            </div>
           </template>
         </el-table-column>
         <template v-for="(col, index) in returnData.headTitle" :key="index">
@@ -37,15 +60,27 @@ import { ElMessage } from 'element-plus'
 import store from '@/store'
 import { selectOutpatientCoordination } from '@/api/ybkf/yb-mztc'
 import PageLayer from '@/layout/PageLayer.vue'
+import { Export } from '@/utils/ExportExcel'
 
 export default {
   setup() {
     const windowSize = store.state.app.windowSize;
     const tableHeight = windowSize.h / 1.02;
+    const pageSize = ref(15)
+    const currentPage = ref(1)
+    const handleSizeChange = (val) => {
+      pageSize.value = val
+    }
+    const handleCurrentChange = (val) => {
+      currentPage.value = val
+    }
     const queryTerm = reactive({
       month: formatMonth1(new Date()),
     });
     const returnData = ref([]);
+    onMounted(() => {
+      query()
+    });
     const query = () => {
       if (queryTerm.month) {
         queryTerm.month = formatMonth1(queryTerm.month);
@@ -66,11 +101,30 @@ export default {
           returnData.value = [];
         });
     };
+    const exportPage = (data) => {
+      const title = {
+        dept: "科室",
+        doctor: "医生",
+        patNo: "门诊号",
+        times: "门诊次数",
+        psnName: "病人姓名",
+        cbd: "参保地",
+        zd: "诊断",
+        czr: "操作人",
+        rq: "结算时间",
+      };
+      Export(data, title, '门诊统筹数据导出');
+    }
     return {
       queryTerm,
+      pageSize,
+      currentPage,
+      handleSizeChange,
+      handleCurrentChange,
       returnData,
       tableHeight,
       query,
+      exportPage,
     };
   },
   components: { PageLayer }

+ 7 - 1
src/views/target-management/target-comm/ReportLevel.vue

@@ -1,7 +1,7 @@
 <template>
     <PageLayer>
         <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="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>
@@ -101,6 +101,7 @@
 import { ref, onMounted, nextTick } from 'vue'
 import PageLayer from '../../../layout/PageLayer.vue'
 import type { FormInstance, FormRules } from 'element-plus'
+import { saveTableGroupInfo } from '../../../api/target-management/report-dict'
 
 const props = defineProps({
     reportLevelDetail: {
@@ -149,6 +150,11 @@ const editForm = (formEl: FormInstance | undefined) => {
 // ---------- 保存报表 ------------
 const submitForm = async (formEl: FormInstance | undefined) => {
     if (!formEl) return
+
+    await saveTableGroupInfo(levelForm).then((res: any) => {
+        console.log(res)
+    })
+
 }
 
 // ---------- 重置报表 ------------

+ 50 - 3
src/views/target-management/target-dict/TargetReportConfig.vue

@@ -63,7 +63,18 @@
                             </el-col>
                             <el-col :span="6">
                                 <el-form-item label="报表分组类型" prop="level">
-                                    <el-input v-model="reportForm.level" minlength="1" maxlength="12" show-word-limit />
+                                    <!-- <el-input v-model="reportForm.level" minlength="1" maxlength="12" show-word-limit /> -->
+                                    <el-select v-model="reportForm.level" 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>
+                                            <span
+                                                style="float: right; color: var(--el-text-color-secondary); font-size: 13px; ">
+                                                {{ item.levelName }}
+                                            </span>
+                                        </el-option>
+                                    </el-select>
                                 </el-form-item>
                             </el-col>
                         </el-row>
@@ -145,7 +156,7 @@
                         </el-row>
                     </el-form>
                     <el-dialog v-model="showReportLevel" :close-on-click-modal="false" :close-on-press-escape="false"
-                        :title="reportLevelTitle" width="80%" height="70%">
+                        :title="reportLevelTitle" width="80%" height="50%">
                         <ReportLevel :reportLevelDetail="reportLevelDetail" />
                     </el-dialog>
                 </template>
@@ -160,7 +171,7 @@ import PageLayer from '../../../layout/PageLayer.vue'
 import { ElMessage } from 'element-plus'
 import { formatDate } from '../../../utils/date'
 import type { FormInstance, FormRules } from 'element-plus'
-import { selectReportDictTree, selectReportDict, selectReportType, reportSqlExecute, selectReportLevel, saveReportBaseInfo } from '../../../api/target-management/report-dict'
+import { selectReportDictTree, selectReportDict, selectReportType, reportSqlExecute, selectReportLevel, saveReportBaseInfo, selectReportLevelDict } from '../../../api/target-management/report-dict'
 import ReportLevel from '../target-comm/ReportLevel.vue'
 import { queryDept } from '../../../api/public-api'
 
@@ -184,6 +195,15 @@ const reportTypeList = ref([
     }
 ])
 
+const levelList = ref([
+    {
+        id: '',
+        levelId: '',
+        reportId: '',
+        levelName: '',
+    }
+])
+
 const deptMethod = (val: string) => {
     queryDept(val).then((res: any) => {
         deptWardList.value = res
@@ -232,6 +252,7 @@ onMounted(() => {
         queryReportDictTree()
         deptMethod('')
         reportTypeQt()
+        levelTypeQt()
     })
 })
 
@@ -274,6 +295,32 @@ const reportTypeQt = () => {
         });
 }
 
+// 查询指标分组类型字典
+const levelTypeQt = () => {
+    selectReportLevelDict()
+        .then((res: any) => {
+            console.log(res)
+            levelList.value = res
+        });
+}
+
+// 指标分组类型字典内容检索
+const levelFilterMethod = (key: any) => {
+    //`这一步一定要加上,不然输入框会有问题`!!!!!
+    reportForm.level = key
+    if (key) {
+        levelList.value = levelList.value.filter((item: any) => {
+            let flag = true
+            if (item.levelName.indexOf(key) === -1 && item.reportId.indexOf(key.toLowerCase()) === -1) {
+                flag = false
+            }
+            return flag
+        })
+    } else {
+        levelTypeQt()
+    }
+}
+
 // ------  接收树页面传来的数据 -------
 const treeNodeClick = async (data: any, node: any, obj: any) => {
     if (node.data) {