Browse Source

首页质控(编码员)院区,科室,病区维度查询

zz 2 months ago
parent
commit
f59dfafdb3

+ 0 - 1
src/views/data/query/index.vue

@@ -604,7 +604,6 @@ export default {
 
         }
       })
-      console.log(this.tableOptions);
       this.exportFilter = false;
     },
     //获取搜索条件

+ 19 - 3
src/views/encoder/components/errors/TableBox.vue

@@ -15,7 +15,9 @@
           <el-checkbox label="AAA28">住院号码</el-checkbox>
           <el-checkbox label="AAA01">姓名</el-checkbox>
           <el-checkbox label="AAC01">出院时间</el-checkbox>
-          <el-checkbox label="AAC11N">出院科室</el-checkbox>
+          <el-checkbox label="YQ_CODE">出院院区</el-checkbox>
+          <el-checkbox label="AAC02C">出院科室</el-checkbox>
+          <el-checkbox label="AAC11C">出院病房</el-checkbox>
           <el-checkbox label="AEE08">编码员</el-checkbox>
           <el-checkbox label="AEE04">住院医师</el-checkbox>
           <el-checkbox label="ICD10_NAME">主要诊断名称</el-checkbox>
@@ -71,9 +73,23 @@
         align="center">
       </el-table-column>
       <el-table-column
-        v-if="codes.includes('AAC11N')"
+        prop="YQ_CODE"
+        label="出院院区"
+        width="160"
+        show-overflow-tooltip
+        align="center">
+      </el-table-column>
+      <el-table-column
         prop="AAC11N"
         label="出院科室"
+        width="160"
+        show-overflow-tooltip
+        align="center">
+      </el-table-column>
+      <el-table-column
+        prop="AAC11C"
+        label="出院病房"
+        width="160"
         show-overflow-tooltip
         align="center">
       </el-table-column>
@@ -214,4 +230,4 @@
     line-height: 26px;
   }
 }
-</style>
+</style>

+ 9 - 23
src/views/encoder/errors.vue

@@ -36,26 +36,7 @@ export default {
         ICD10_ID1: '',
         ICD10_NAME: ''
       },
-      tableData: [
-        // {
-        //   "field_name": "健康卡号",
-        //   "desc": "健康卡号未填写",
-        //   "AAA28": "00260972",
-        //   "AAA01": "",
-        //   "ZYH": "809257",
-        //   "AAC01": "2023-08-07 09:15:00",
-        //   "AAC11N": "神经外科",
-        //   "AEE08": "张三",
-        //   "AEE03": "李一",
-        //   "AEE04": "周一",
-        //   "ICD10_ID1": "S06.500x002",
-        //   "ICD10_NAME": "创伤性硬脑膜下血肿",
-        //   "ICD9_ID1": "01.2408",
-        //   "ICD9_NAME": "颅内血肿清除术",
-        //   "level": "强制",
-        //   "type": "患者基本信息"
-        // }
-      ],
+      tableData: [],
       paginationData: {
         page: 1,
         page_size: 10,
@@ -64,9 +45,12 @@ export default {
     }
   },
   created() {
-    const { start_time, end_time, dep_id } = this.$route.query
+    const { start_time, end_time, dep_id,YQ_CODES,KS_IDS,BQ_IDS } = this.$route.query
     this.$set(this.formInline, 'AAC01', [start_time, end_time])
-    this.$set(this.formInline, 'AAC11C', dep_id)
+    //this.$set(this.formInline, 'AAC11C', dep_id)
+    this.$set(this.formInline, 'YQ_CODES', YQ_CODES)
+    this.$set(this.formInline, 'KS_IDS', KS_IDS)
+    this.$set(this.formInline, 'BQ_IDS', BQ_IDS)
     this.getList()
   },
   methods: {
@@ -87,7 +71,9 @@ export default {
         params.start_time = AAC01[0]
         params.end_time = AAC01[1]
       }
-      console.log(params);
+      params.YQ_CODE = this.formInline.YQ_CODE;
+      params.KS_IDS = this.formInline.KS_IDS;
+      params.BQ_IDS = this.formInline.BQ_IDS;
       this.$axios.post('/bmy/bmyQualityList', params).then(res => {
         this.tableData = res.data.data
         this.paginationData.total = res.data.count

+ 114 - 117
src/views/encoder/index.vue

@@ -3,6 +3,37 @@
     <!-- 搜索栏 -->
     <div class="bg-card" style="margin-bottom: 18px">
       <el-form :inline="true" :model="formInline" class="demo-form-inline">
+
+        <el-form-item label="所属院区" style="margin-bottom: 0">
+          <el-select class="width150"  v-model="formInline.YQ_CODES" placeholder="请选择所属院区" multiple>
+            <el-option v-for="(item,index) in searchInfoOptions.yqArray" :label="item.YQ_NAME" :value="item.id" :key="index">
+            </el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="所属科室" style="margin-bottom: 0">
+          <el-cascader
+            multiple
+            v-model="formInline.KS_IDS"
+            :options="searchInfoOptions.depArray"
+            :props="cascaderProps"
+            :show-all-levels="false"
+            @change="handleChange"
+            clearable
+          ></el-cascader>
+        </el-form-item>
+        <el-form-item label="所属病区" style="margin-bottom: 0">
+          <el-cascader
+            v-model="formInline.BQ_IDS"
+            :options="searchInfoOptions.bqArray"
+            :props="cascaderProps"
+            @change="handleChange"
+            multiple
+            clearable
+            collapse-tags
+          ></el-cascader>
+        </el-form-item>
+
         <el-form-item label="出院日期" style="margin-bottom: 0">
           <el-date-picker v-model="formInline.start_time" type="date" placeholder="出院开始日期" value-format="yyyyMMdd" format="yyyy年MM月dd日" />
         </el-form-item>
@@ -16,7 +47,7 @@
       </el-form>
     </div>
     <!-- 汇总统计 -->
-    <div class="bg-card" style="margin-bottom: 24px; padding">
+    <div class="bg-card" style="margin-bottom: 24px;">
       <CardTitle title="汇总统计">
         <el-image
           class="title_arrow"
@@ -130,7 +161,7 @@
       </el-collapse-transition>
     </div>
     <!-- 缺陷详情 -->
-    <div class="bg-card" style="margin-bottom: 24px; padding">
+    <div class="bg-card" style="margin-bottom: 24px;">
       <CardTitle title="缺陷详情">
         <el-image
           class="title_arrow"
@@ -156,11 +187,6 @@
                     <el-option label="费用信息" :value="2"></el-option>
                   </el-select>
                 </el-form-item>
-                <el-form-item label="出院科室">
-                  <el-select v-model="qxxqData.dep_id" clearable filterable placeholder="全部">
-                    <el-option v-for="(item, index) in departmentList" :label="item.dep_name" :value="item.dep_id" :key="'dep' + index"></el-option>
-                  </el-select>
-                </el-form-item>
                 <el-form-item label="缺陷分类">
                   <el-select v-model="qxxqData.level" clearable filterable placeholder="全部">
                     <el-option v-for="(item, index) in levels" :label="item.label" :value="item.value" :key="'dj' + index"></el-option>
@@ -180,13 +206,6 @@
               </el-form>
             </el-col>
             <el-col :span="14">
-              <!-- <div class="mb20">
-                <el-radio-group v-model="qxxqData.radio" text-color="#185DA6" fill="#ffffff" @change="handleRadioChange">
-                  <el-radio-button :label="1">缺陷问题(前十)</el-radio-button>
-                  <el-radio-button :label="2">缺陷问题</el-radio-button>
-                </el-radio-group>
-              </div> -->
-              <!-- 表格 -->
               <el-table :data="tableData" class="mb20" style="width: 100%; margin-top: -20px">
                 <el-table-column type="index" label="序号" width="80" align="center">
                   <template slot-scope="scope">
@@ -232,7 +251,7 @@
       </el-collapse-transition>
     </div>
     <!-- 医师排名 -->
-    <div class="bg-card" style="margin-bottom: 24px; padding">
+    <div class="bg-card" style="margin-bottom: 24px;">
       <CardTitle title="医师排名">
         <el-image
           class="title_arrow"
@@ -301,6 +320,8 @@
         </div>
       </el-collapse-transition>
     </div>
+    <el-dialog title="所属科室多选" :visible.sync="ksSearchDialog" width="1000px"  center custom-class="custom-dialog">
+    </el-dialog>
   </div>
 </template>
 
@@ -313,6 +334,58 @@ export default {
   },
   data() {
     return {
+      ksSearchDialog:false,
+      selectedValue: [], // 绑定选中的路径数组
+      cascaderProps: {
+        checkStrictly: true, // 允许独立选择任意层级
+        multiple: true,      // 开启多选模式
+        label: 'label',
+        value: 'id',
+        children: 'children',
+        emitPath: false,     // 是否返回完整路径(true 返回路径数组,false 只返回末节点值)
+      },
+      options: [ // 树形结构数据
+        {
+          value: 'beijing',
+          label: '北京',
+          children: [
+            {
+              value: 'chaoyang',
+              label: '朝阳区',
+              children: [
+                { value: 'sanlitun', label: '三里屯' },
+                { value: 'wangjing', label: '望京' }
+              ]
+            },
+            {
+              value: 'haidian',
+              label: '海淀区',
+              children: [
+                { value: 'zhongguancun', label: '中关村' }
+              ]
+            }
+          ]
+        },
+        {
+          value: 'shanghai',
+          label: '上海',
+          children: [
+            {
+              value: 'pudong',
+              label: '浦东新区',
+              children: [
+                { value: 'lujiazui', label: '陆家嘴' }
+              ]
+            }
+          ]
+        }
+      ],
+      search:{},//搜索内容
+      searchInfoOptions:{//获取搜索的options
+        yqArray:[],//院区options
+        depArray:[],//科室options
+        bqArray:[],//病区options
+      },
       levels: [
         {
           label: '强制',
@@ -388,122 +461,25 @@ export default {
       //     "proportion": "77.07",
       //     "avg_score": 88
       //   },
-      //   {
-      //     "docker_name": "杜晓峰",
-      //     "bl_sum": 28,
-      //     "qx_sum": 22,
-      //     "sum_score": 2800,
-      //     "df_score": 2158,
-      //     "kf_score": 642,
-      //     "proportion": "77.07",
-      //     "avg_score": 88
-      //   },
-      //   {
-      //     "docker_name": "杜晓峰",
-      //     "bl_sum": 28,
-      //     "qx_sum": 22,
-      //     "sum_score": 2800,
-      //     "df_score": 2158,
-      //     "kf_score": 642,
-      //     "proportion": "77.07",
-      //     "avg_score": 88
-      //   },
-      //   {
-      //     "docker_name": "杜晓峰",
-      //     "bl_sum": 28,
-      //     "qx_sum": 22,
-      //     "sum_score": 2800,
-      //     "df_score": 2158,
-      //     "kf_score": 642,
-      //     "proportion": "77.07",
-      //     "avg_score": 88
-      //   },
-      //   {
-      //     "docker_name": "杜晓峰",
-      //     "bl_sum": 28,
-      //     "qx_sum": 22,
-      //     "sum_score": 2800,
-      //     "df_score": 2158,
-      //     "kf_score": 642,
-      //     "proportion": "77.07",
-      //     "avg_score": 88
-      //   },
-      //   {
-      //     "docker_name": "杜晓峰",
-      //     "bl_sum": 28,
-      //     "qx_sum": 22,
-      //     "sum_score": 2800,
-      //     "df_score": 2158,
-      //     "kf_score": 642,
-      //     "proportion": "77.07",
-      //     "avg_score": 88
-      //   },
-      //   {
-      //     "docker_name": "杜晓峰",
-      //     "bl_sum": 28,
-      //     "qx_sum": 22,
-      //     "sum_score": 2800,
-      //     "df_score": 2158,
-      //     "kf_score": 642,
-      //     "proportion": "77.07",
-      //     "avg_score": 88
-      //   },
-      //   {
-      //     "docker_name": "杜晓峰",
-      //     "bl_sum": 28,
-      //     "qx_sum": 22,
-      //     "sum_score": 2800,
-      //     "df_score": 2158,
-      //     "kf_score": 642,
-      //     "proportion": "77.07",
-      //     "avg_score": 88
-      //   },
-      //   {
-      //     "docker_name": "杜晓峰",
-      //     "bl_sum": 28,
-      //     "qx_sum": 22,
-      //     "sum_score": 2800,
-      //     "df_score": 2158,
-      //     "kf_score": 642,
-      //     "proportion": "77.07",
-      //     "avg_score": 88
-      //   },
-      //   {
-      //     "docker_name": "杜晓峰",
-      //     "bl_sum": 28,
-      //     "qx_sum": 22,
-      //     "sum_score": 2800,
-      //     "df_score": 2158,
-      //     "kf_score": 642,
-      //     "proportion": "77.07",
-      //     "avg_score": 88
-      //   },
-      //   {
-      //     "docker_name": "杜晓峰",
-      //     "bl_sum": 28,
-      //     "qx_sum": 22,
-      //     "sum_score": 2800,
-      //     "df_score": 2158,
-      //     "kf_score": 642,
-      //     "proportion": "77.07",
-      //     "avg_score": 88
-      //   }
       // ],
     };
   },
   async mounted() {
+    /*
     const year = new Date().getFullYear();
     const month = new Date().getMonth() + 1 > 10 ?  new Date().getMonth() + 1 : `0${new Date().getMonth() + 1}`;
     const day = new Date().getDate() < 10 ? `0${new Date().getDate()}` : new Date().getDate();
     this.$set(this.formInline, 'start_time', `${year}0101`);
     this.$set(this.formInline, 'end_time', `${year}${month}${day}`);
-    this.getDepartmentData();
+     */
+    //this.getDepartmentData();
     await this.getTongjiData()
     this.tongjiPie();
     this.qxxqPie();
     this.getQuexianData();
     this.getDoctorRank();
     this.getFieldList();
+    this.getSearchOptions();//获取搜索options
   },
   beforeRouteEnter(to, from, next) {
 
@@ -520,6 +496,20 @@ export default {
     next()
     },
   methods: {
+    //
+    handleChange(){
+
+    },
+    //获取搜索内容
+    getSearchOptions(){
+      this.$axios_new.post('/api/bmy/getSearchOptions').then(res => {
+        this.searchInfoOptions.yqArray = res.data.yqArray;//院区
+        this.searchInfoOptions.depArray = res.data.depArray;//科室
+        this.searchInfoOptions.bqArray = res.data.bqArray;//病区
+        this.formInline.start_time = res.data.start_time;//开始时间
+        this.formInline.end_time = res.data.end_time;//结束时间
+      });
+    },
     // 获取缺陷字段选项
     getFieldList() {
       this.$axios_new.post('/api/bmy/errorFieldList').then(res => {
@@ -535,7 +525,13 @@ export default {
     // 缺陷详情列表
     toPage(row) {
       const { start_time, end_time } = this.formInline;
-      this.$router.push({ name: 'EncoderErrors', query: { rule_id: row.error_rule, start_time, end_time, ...this.qxxqData, is_qx: 2 } });
+      const search = this.formInline;
+      this.$router.push({ name: 'EncoderErrors',
+        query: { rule_id: row.error_rule, start_time, end_time, ...this.qxxqData, is_qx: 2,
+          YQ_CODES:search.YQ_CODES,
+          KS_IDS:search.KS_IDS,
+          BQ_IDS:search.BQ_IDS
+        } });
     },
     // 全局筛选
     async onGobalSearch() {
@@ -559,6 +555,7 @@ export default {
         page_size: size,
         ...this.formInline,
       };
+      //获取缺陷数据
       this.$axios_new.post('/api/bmy/qualityData', params).then(res => {
         let arr = [];
         if (res.data.data.length < 10) {