Explorar el Código

人工质控前端页面调整

gyf hace 2 meses
padre
commit
debfe2086b

+ 1 - 1
src/views/recordsRoom/qc/caseViews.vue

@@ -178,7 +178,7 @@ import OutHospitalRecord from './components/OutHospitalRecord.vue'
 import CaseQualityBox from './components/CaseQualityBox2.vue'
 import DeathText from './components/DeathText.vue'
 import CreateControlResultDialogVue from './components/CreateControlResultDialog.vue'
-import { getTreeList, getBlMenuList, getCaseQuality, getCasePlatform, getAllCase, getLong, getTemporary, getPacsData, getBcData, getHomeData, getSurgeryData, getBlInfo, applyForReview } from '@/api/qc'
+import { getTreeList, getBlMenuList, getCaseQuality, getCasePlatform, getAllCase, getLong, getTemporary, getPacsData, getBcData, getHomeData, getSurgeryData, applyForReview } from '@/api/qc'
 import { getCaseExamineAppeal } from '@/api/admin'
 import { getToken, removeToken } from '@/utils/auth'
 

+ 113 - 92
src/views/recordsRoom/qc/components/CaseQualityBox2.vue

@@ -18,22 +18,33 @@
         <template>
           <!-- 病案首页 -->
           <div class="first-content" v-if="item.name === 'first'">
-            <div class="score-box score-box_bl" :class="{
-              scoreLevel_1_1: scoreLevel_ylzc == '优',
-              scoreLevel_2_2: scoreLevel_ylzc == '良',
-              scoreLevel_3_3: scoreLevel_ylzc == '中',
-              scoreLevel_4_4: scoreLevel_ylzc == '差',
-            }">
+            <div
+              class="score-box score-box_bl"
+              :class="{
+                scoreLevel_1_1: scoreLevel_ylzc == '优',
+                scoreLevel_2_2: scoreLevel_ylzc == '良',
+                scoreLevel_3_3: scoreLevel_ylzc == '中',
+                scoreLevel_4_4: scoreLevel_ylzc == '差',
+              }"
+            >
               <span>首页评分</span>
-              <span class="score">{{ controls.score.score }}</span>
-              <el-image v-if="scoreLevel_ylzc == '优'" class="level" style="width: 47px; height: 41px"
-                :src="require('../../../../assets/images/you.png')" fit="contain"></el-image>
-              <el-image v-if="scoreLevel_ylzc == '良'" class="level" style="width: 47px; height: 41px"
-                :src="require('../../../../assets/images/liang.png')" fit="contain"></el-image>
-              <el-image v-if="scoreLevel_ylzc == '中'" class="level" style="width: 47px; height: 41px"
-                :src="require('../../../../assets/images/zhong.png')" fit="contain"></el-image>
-              <el-image v-if="scoreLevel_ylzc == '差'" class="level" style="width: 47px; height: 41px"
-                :src="require('../../../../assets/images/cha.png')" fit="contain"></el-image>
+              <span class="score">{{ resultsList.score.score }}</span>
+              <el-image v-if="scoreLevel_ylzc == '优'" class="level" style="width: 47px; height: 41px" :src="require('../../../../assets/images/you.png')" fit="contain"></el-image>
+              <el-image
+                v-if="scoreLevel_ylzc == '良'"
+                class="level"
+                style="width: 47px; height: 41px"
+                :src="require('../../../../assets/images/liang.png')"
+                fit="contain"
+              ></el-image>
+              <el-image
+                v-if="scoreLevel_ylzc == '中'"
+                class="level"
+                style="width: 47px; height: 41px"
+                :src="require('../../../../assets/images/zhong.png')"
+                fit="contain"
+              ></el-image>
+              <el-image v-if="scoreLevel_ylzc == '差'" class="level" style="width: 47px; height: 41px" :src="require('../../../../assets/images/cha.png')" fit="contain"></el-image>
             </div>
             <div class="legend-box">
               <span class="qz">强制</span>
@@ -55,10 +66,8 @@
                       <span class="bold">字段:</span>
                       {{ items.error_name }}
                     </p>
-                    <el-image class="zsIcon" v-if="items.is_artificial == 1"
-                      :src="require('../../../../assets/images/zsicon.png')" fit="contain"></el-image>
-                    <el-image class="ysIcon" v-if="items.is_artificial == 0"
-                      :src="require('../../../../assets/images/ysicon.png')" fit="contain"></el-image>
+                    <el-image class="zsIcon" v-if="items.is_artificial == 0" :src="require('../../../../assets/images/zsicon.png')" fit="contain"></el-image>
+                    <el-image class="ysIcon" v-if="items.is_artificial == 1" :src="require('../../../../assets/images/ysicon.png')" fit="contain"></el-image>
                   </div>
                   <p>
                     <span class="bold">提示:</span>
@@ -67,12 +76,10 @@
                 </div>
               </div>
               <div class="btn-content">
-                <div v-if="items.type === 3" class="rebuttal" @click="fetchAppealInfo('appeal', items, 3, MEDRECID)">驳回
-                </div>
+                <div v-if="items.type === 3" class="rebuttal" @click="fetchAppealInfo('appeal', items, 3, MEDRECID)">驳回</div>
                 <div class="btn-right">
                   <div v-if="items.type === 0" class="appeal" @click="openAppealDialog('reject', items, 2)">申诉</div>
-                  <div v-if="items.type === 0 || items.type === 3" @click="handleIgnore(items, MED_REC_ID, 3)"
-                    class="ignore">忽略</div>
+                  <div v-if="items.type === 0 || items.type === 3" @click="handleIgnore(items, MED_REC_ID, 1, index)" class="ignore">忽略</div>
                   <div v-if="items.type === 2" class="appeal_in_progress">申诉中</div>
                 </div>
               </div>
@@ -81,22 +88,33 @@
           </div>
           <!-- 编码员 -->
           <div class="first-content" v-if="item.name === 'third'">
-            <div class="score-box score-box_bl" :class="{
-              scoreLevel_1_1: scoreLevel_ylzc == '优',
-              scoreLevel_2_2: scoreLevel_ylzc == '良',
-              scoreLevel_3_3: scoreLevel_ylzc == '中',
-              scoreLevel_4_4: scoreLevel_ylzc == '差',
-            }">
+            <div
+              class="score-box score-box_bl"
+              :class="{
+                scoreLevel_1_1: scoreLevel_ylzc == '优',
+                scoreLevel_2_2: scoreLevel_ylzc == '良',
+                scoreLevel_3_3: scoreLevel_ylzc == '中',
+                scoreLevel_4_4: scoreLevel_ylzc == '差',
+              }"
+            >
               <span>首页评分</span>
               <span class="score">{{ controls.score.score }}</span>
-              <el-image v-if="scoreLevel_ylzc == '优'" class="level" style="width: 47px; height: 41px"
-                :src="require('../../../../assets/images/you.png')" fit="contain"></el-image>
-              <el-image v-if="scoreLevel_ylzc == '良'" class="level" style="width: 47px; height: 41px"
-                :src="require('../../../../assets/images/liang.png')" fit="contain"></el-image>
-              <el-image v-if="scoreLevel_ylzc == '中'" class="level" style="width: 47px; height: 41px"
-                :src="require('../../../../assets/images/zhong.png')" fit="contain"></el-image>
-              <el-image v-if="scoreLevel_ylzc == '差'" class="level" style="width: 47px; height: 41px"
-                :src="require('../../../../assets/images/cha.png')" fit="contain"></el-image>
+              <el-image v-if="scoreLevel_ylzc == '优'" class="level" style="width: 47px; height: 41px" :src="require('../../../../assets/images/you.png')" fit="contain"></el-image>
+              <el-image
+                v-if="scoreLevel_ylzc == '良'"
+                class="level"
+                style="width: 47px; height: 41px"
+                :src="require('../../../../assets/images/liang.png')"
+                fit="contain"
+              ></el-image>
+              <el-image
+                v-if="scoreLevel_ylzc == '中'"
+                class="level"
+                style="width: 47px; height: 41px"
+                :src="require('../../../../assets/images/zhong.png')"
+                fit="contain"
+              ></el-image>
+              <el-image v-if="scoreLevel_ylzc == '差'" class="level" style="width: 47px; height: 41px" :src="require('../../../../assets/images/cha.png')" fit="contain"></el-image>
             </div>
             <div class="legend-box">
               <span class="qz">强制</span>
@@ -120,24 +138,20 @@
                     </p>
                     <!-- <el-image class="zsIcon" :src="require('../../../../assets/images/zsicon.png')"
                       fit="contain"></el-image> -->
-                    <el-image class="zsIcon" v-if="items.is_artificial == 1"
-                      :src="require('../../../../assets/images/zsicon.png')" fit="contain"></el-image>
-                    <el-image class="ysIcon" v-if="items.is_artificial == 0"
-                      :src="require('../../../../assets/images/ysicon.png')" fit="contain"></el-image>
+                    <el-image class="zsIcon" v-if="items.is_artificial == 0" :src="require('../../../../assets/images/zsicon.png')" fit="contain"></el-image>
+                    <el-image class="ysIcon" v-if="items.is_artificial == 1" :src="require('../../../../assets/images/ysicon.png')" fit="contain"></el-image>
                   </div>
                   <p>
                     <span class="bold">提示:</span>
-                    {{ items.desc }}
+                    {{ items.basises }}
                   </p>
                 </div>
               </div>
               <div class="btn-content">
-                <div v-if="items.type === 3" class="rebuttal" @click="fetchAppealInfo('appeal', items, 3, MEDRECID)">驳回
-                </div>
+                <div v-if="items.type === 3" class="rebuttal" @click="fetchAppealInfo('appeal', items, 3, MEDRECID)">驳回</div>
                 <div class="btn-right">
                   <div v-if="items.type === 0" class="appeal" @click="openAppealDialog('reject', items, 2)">申诉</div>
-                  <div v-if="items.type === 0 || items.type === 3" @click="handleIgnore(items, MED_REC_ID, 3)"
-                    class="ignore">忽略</div>
+                  <div v-if="items.type === 0 || items.type === 3" @click="handleIgnore(items, MED_REC_ID, 3, index)" class="ignore">忽略</div>
                   <div v-if="items.type === 2" class="appeal_in_progress">申诉中</div>
                 </div>
               </div>
@@ -146,8 +160,7 @@
           </div>
           <!-- 住院病历 -->
           <div class="second-content" v-if="item.name === 'second'">
-            <div class="score-box"
-              :class="scoreLevel == '甲' ? 'scoreLevel_1' : scoreLevel == '乙' ? 'scoreLevel_2' : scoreLevel == '丙' ? 'scoreLevel_3' : ''">
+            <div class="score-box" :class="scoreLevel == '甲' ? 'scoreLevel_1' : scoreLevel == '乙' ? 'scoreLevel_2' : scoreLevel == '丙' ? 'scoreLevel_3' : ''">
               <span style="margin-top: -10px">
                 病案评分
                 <span class="score-f">{{ data.score }}</span>
@@ -165,32 +178,26 @@
                       <span class="bold">字段:</span>
                       {{ items.error_field }}
                     </p>
-                    <el-image class="zsIcon" v-if="items.is_artificial == 1"
-                      :src="require('../../../../assets/images/zsicon.png')" fit="contain"></el-image>
-                    <el-image class="ysIcon" v-if="items.is_artificial == 0"
-                      :src="require('../../../../assets/images/ysicon.png')" fit="contain"></el-image>
+                    <el-image class="zsIcon" v-if="items.is_artificial == 0" :src="require('../../../../assets/images/zsicon.png')" fit="contain"></el-image>
+                    <el-image class="ysIcon" v-if="items.is_artificial == 1" :src="require('../../../../assets/images/ysicon.png')" fit="contain"></el-image>
                   </div>
                   <p>
                     <span class="bold">提示:</span>
-                    {{ items.notice }}
+                    {{ items.desc }}
                   </p>
                 </div>
               </div>
               <div class="gist" @click="clickListItem(index)">
                 <div class="gist-zkyj">质控依据&gt;&gt;</div>
               </div>
-              <div class="gist-center">
-                {{ items.basis.length ? items.basis[0].desc : '' }}
+              <div class="gist-center" v-if="items.show">
+                {{ items.notice ? items.notice : '' }}
               </div>
               <div class="btn-content">
-                <div v-if="items.appeal_type === 3" class="rebuttal"
-                  @click="fetchAppealInfo('appeal', items, 3, MEDRECID)">驳回
-                </div>
+                <div v-if="items.appeal_type === 3" class="rebuttal" @click="fetchAppealInfo('appeal', items, 3, MEDRECID)">驳回</div>
                 <div class="btn-right">
-                  <div v-if="items.appeal_type === 0" class="appeal" @click="openAppealDialog('reject', items, 2)">申诉
-                  </div>
-                  <div v-if="items.appeal_type === 0 || items.appeal_type === 3"
-                    @click="handleIgnore(items, MED_REC_ID, 3)" class="ignore">忽略</div>
+                  <div v-if="items.appeal_type === 0" class="appeal" @click="openAppealDialog('reject', items, 2)">申诉</div>
+                  <div v-if="items.appeal_type === 0 || items.appeal_type === 3" @click="handleIgnore(items, MED_REC_ID, 2, index)" class="ignore">忽略</div>
                   <div v-if="items.appeal_type === 2" class="appeal_in_progress">申诉中</div>
                 </div>
               </div>
@@ -211,12 +218,10 @@
       <div class="reason" style="margin-top: 20px">
         <el-form :model="appealForm" :rules="appealRules" ref="appealFormRef" label-width="80px">
           <el-form-item :label="formLabels.doctor" prop="doctor">
-            <el-input v-model="appealForm.doctor" :placeholder="formPlaceholders.doctor"
-              :disabled="dialogType === 'appeal'"></el-input>
+            <el-input v-model="appealForm.doctor" :placeholder="formPlaceholders.doctor" :disabled="dialogType === 'appeal'"></el-input>
           </el-form-item>
           <el-form-item :label="formLabels.reason" prop="reason">
-            <el-input type="textarea" v-model="appealForm.reason" :placeholder="formPlaceholders.reason"
-              :disabled="dialogType === 'appeal'" :rows="2"></el-input>
+            <el-input type="textarea" v-model="appealForm.reason" :placeholder="formPlaceholders.reason" :disabled="dialogType === 'appeal'" :rows="2"></el-input>
           </el-form-item>
         </el-form>
       </div>
@@ -238,7 +243,7 @@
 </template>
 
 <script>
-import { examineAppeal, getCaseQualityBazb, getNumberInfo,getAppealData } from '@/api/qc';
+import { examineAppeal, getCaseQualityBazb, getAppealData, getNumberInfo } from '@/api/qc';
 export default {
   props: {
     caseShow: {
@@ -285,7 +290,8 @@ export default {
         {
           label: '编码员',
           name: 'third',
-          hasMessage: false,
+          hasMessage: true,
+          medical: '',
         },
       ],
       dialogVisible: false,
@@ -309,13 +315,13 @@ export default {
       },
       localCaseShow: this.caseShow,
       data: {
-        score: 95, // 示例数据
+        score: 100, // 示例数据
         data: [], // 示例数据
       },
       tableData: [], // 初始化 tableData
       resultsData: [],
       value1: null, // 初始化 value1
-      is_show: true,
+      is_show: false,
       appeal_document: '',
       appeal_docter: '',
       controls: {
@@ -340,8 +346,6 @@ export default {
         second: false,
         third: false,
       },
-      medical: null,
-      errorV2: null,
       buttonText: '提交',
       zd_field_name: '',
       ts_desc: '',
@@ -403,22 +407,24 @@ export default {
         console.log('MED_REC_ID 已更新:', newVal);
         this.qualityBazb(newVal);
         this.getData(newVal);
+        this.getMessageNum(newVal);
       }
     },
   },
   created() {
-    getNumberInfo().then(res => {
-      this.medical = res.data.medicalRecord;
-      this.errorV2 = res.data.errorV2;
-      this.tabList[0].medical = this.medical;
-      this.tabList[1].medical = this.errorV2;
-    });
   },
   mounted() {
     this.getTableData();
     this.controlData.ZYH = this.$route.query.ZYH;
   },
   methods: {
+    getMessageNum(newVal){
+      getNumberInfo({ZYH: newVal}).then(res => {
+        this.tabList[0].medical = res.data.errorV2;
+        this.tabList[1].medical = res.data.medicalRecord;
+        this.tabList[2].medical = res.data.homeQuality;
+      });
+    },
     hasMessage(tabName) {
       return this.messageStatus[tabName];
     },
@@ -568,7 +574,12 @@ export default {
     openAppealDialog(type, items, index) {
       console.log(items, index, 'items');
       this.zd_field_name = items.error_name || items.field_name || items.error_field;
-      this.ts_desc = items.notice || items.error_name || items.desc;
+      if (items.cate === 3) {
+        this.ts_desc = items.basises;
+      } else {
+        this.ts_desc = items.desc;
+      }
+
       this.cate_type = items.cate;
       this.dialogType = type;
       this.currentId = items.error_rule || items.rule_id;
@@ -597,7 +608,11 @@ export default {
     },
     async fetchAppealInfo(type, items, index, MEDRECID) {
       this.zd_field_name = items.error_name || items.field_name || items.error_field;
-      this.ts_desc = items.notice || items.error_name || items.desc;
+      if (items.cate === 3) {
+        this.ts_desc = items.basises;
+      } else {
+        this.ts_desc = items.desc;
+      }
       this.savedItems = items;
       this.savedIndex = index;
       this.dialogType = type;
@@ -660,34 +675,36 @@ export default {
         this.openAppealDialog('reject', this.savedItems, this.savedIndex);
       }
     },
-    handleIgnore(items, MEDRECID) {
+    handleIgnore(items, MEDRECID, type, index) {
       const pramse = {
         id: items.error_rule || items.rule_id,
-        type: items.appeal_type || items.type,
-        cate: items.cate,
+        type: type,
+        cate: 1,
         ZYH: MEDRECID,
       };
 
       examineAppeal(pramse).then(res => {
-        this.qualityBazb(MEDRECID);
         console.log(res, 'examineAppeal for ignore');
         this.$message({
           message: '忽略成功',
           type: 'success',
         });
       });
+
+      if (type == 1) {
+        this.resultsList.list.splice(index, 1);
+      } else if (type == 2) {
+        this.medicalRecord.splice(index, 1);
+      } else if (type == 3) {
+        this.controls.list.splice(index, 1);
+      }
     },
     clickListItem(idx) {
-      console.log(idx, '0000');
-
-      let tableData = this.tableData;
+      let tableData = this.medicalRecord;
       tableData[idx].show = !tableData[idx].show;
-      this.is_show = false;
       this.$nextTick(() => {
-        this.tableData = tableData;
-        this.is_show = true;
+        this.medicalRecord = tableData;
       });
-      console.log(tableData);
     },
     qualityBazb(newVal) {
       const params = {
@@ -695,6 +712,10 @@ export default {
       };
       getCaseQualityBazb(params).then(res => {
         if (res && res.data) {
+          this.data.score = res.data.score;
+          for(let i=0; i<res.data.data.length; i++) {
+            res.data.data[i].show = false;
+          }
           this.$nextTick(() => {
             this.medicalRecord = res.data.data;
           });
@@ -1272,7 +1293,7 @@ export default {
       border-right: 3px solid rgb(52, 140, 235);
     }
 
-    &>div {
+    & > div {
       font-size: 14px;
     }
   }

+ 8 - 28
src/views/recordsRoom/qc/medicalRecord.vue

@@ -78,23 +78,13 @@
       </el-table-column>
       <el-table-column prop="bedNumber" label="床号" width="70" />
       <el-table-column prop="admissionCount" label="住院次数" width="80" />
-      <el-table-column prop="homePageIssue" label="首页问题" width="80">
+      <el-table-column prop="homePageIssue" label="问题数量" width="80">
         <template #default="{ row }">
           <div class="message-badge">
             <!-- 显示病历问题的值 -->
-            <span>{{ row.homePageIssue }}</span>
+            <span>{{ row.count }}</span>
             <!-- 消息提示标识 -->
-            <span v-if="row.medicalRecordIssue" class="dot">{{ medicalRecord }}</span>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column prop="medicalRecordIssue" label="病历问题" width="80">
-        <template #default="{ row }">
-          <div class="message-badge">
-            <!-- 显示病历问题的值 -->
-            <span>{{ row.medicalRecordIssue }}</span>
-            <!-- 消息提示标识 -->
-            <span v-if="row.medicalRecordIssue" class="dot">{{ errorV2 }}</span>
+            <span v-if="row.counts" class="dot">{{ row.counts }}</span>
           </div>
         </template>
       </el-table-column>
@@ -114,23 +104,13 @@
       </el-table-column>
       <el-table-column prop="bedNumber" label="床号" width="70" />
       <el-table-column prop="admissionCount" label="住院次数" width="80" />
-      <el-table-column prop="homePageIssue" label="首页问题" width="80">
-        <template #default="{ row }">
-          <div class="message-badge">
-            <!-- 显示病历问题的值 -->
-            <span>{{ row.homePageIssue }}</span>
-            <!-- 消息提示标识 -->
-            <span v-if="row.medicalRecordIssue" class="dot">{{ medicalRecord }}</span>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column prop="medicalRecordIssue" label="病历问题" width="80">
+      <el-table-column prop="homePageIssue" label="问题数量" width="80">
         <template #default="{ row }">
           <div class="message-badge">
             <!-- 显示病历问题的值 -->
-            <span>{{ row.medicalRecordIssue }}</span>
+            <span>{{ row.count }}</span>
             <!-- 消息提示标识 -->
-            <span v-if="row.medicalRecordIssue" class="dot">{{ errorV2 }}</span>
+            <span v-if="row.counts" class="dot">{{ row.counts }}</span>
           </div>
         </template>
       </el-table-column>
@@ -283,8 +263,8 @@ export default {
               medicalRecordNumber: item.MED_REC_ID, // 病案号
               bedNumber: item.CWH, // 床号
               admissionCount: item.AAA29, // 住院次数
-              homePageIssue: item.error, // 首页问题
-              medicalRecordIssue: item.medical, // 病历问题
+              count: item.count, // 问题数量
+              counts: item.counts, // 人工质控问题数量
               status: item.in_hospital, // 状态
             }));
             this.total = res.data.count; // 更新总条数