Sfoglia il codice sorgente

新增病案首页质控栏单独页

gaohaiyong 1 anno fa
parent
commit
07582d0a16

+ 1 - 1
src/permission.js

@@ -8,7 +8,7 @@ import getPageTitle from '@/utils/get-page-title';
 
 NProgress.configure({ showSpinner: false }); // NProgress Configuration
 
-const whiteList = ['/login', '/whitelist-search', '/whitelist-caseViews', '/whitelist-chargeDetails', '/whitelist-details', '/whitelist-caseControl']; // no redirect whitelist
+const whiteList = ['/login', '/whitelist-search', '/whitelist-caseViews', '/whitelist-chargeDetails', '/whitelist-details', '/whitelist-caseControl','/whitelist-qualityResults']; // no redirect whitelist
 
 router.beforeEach(async (to, from, next) => {
   // start progress bar

+ 12 - 1
src/router/index.js

@@ -727,6 +727,17 @@ export const constantRoutes = [
           nocopy: true
         },
       },
+      {
+        path: '/whitelist-qualityResults',
+        name: 'WhitelistQualityResults',
+        component: () => import('@/views/data/query/qualityResults'),
+        hidden: true,
+        meta: { 
+          keepAlive: 0,
+          canMultipleOpen: true,
+          nocopy: true
+        },
+      },
     ]
   }
 ];
@@ -740,7 +751,7 @@ const createRouter = () =>
 
 const router = createRouter();
 
-const whiteList = ['/login','/404', '/whitelist-search', '/whitelist-caseViews', '/whitelist-chargeDetails', '/whitelist-details', '/whitelist-caseControl']; // 添加路由白名单
+const whiteList = ['/login','/404', '/whitelist-search', '/whitelist-caseViews', '/whitelist-chargeDetails', '/whitelist-details', '/whitelist-caseControl','/whitelist-qualityResults']; // 添加路由白名单
 //路由判断
 router.beforeEach(async (to, from, next) => {
   const hasToken = getToken();

+ 234 - 0
src/views/data/query/components/CaseQualityBox.vue

@@ -0,0 +1,234 @@
+<template>
+  <div ref="box" class="box" :style="{width: width ? width + 'px' : '100%'}" :class="{'nocopy': $route.meta.nocopy}">
+    <!-- 评分 -->
+    <div class="storeBox">
+      <div class="text">{{ data.score }}</div>
+      <div class="spa">
+        <!-- 0优 1良 2中 3差 -->
+        <div class="spaview" v-if="data.score>=97">优</div>
+        <div class="spaview" v-else-if="data.score>=90&&data.score<=96">良</div>
+        <div class="spaview" v-else-if="data.score>=75&&data.score<=89">中</div>
+        <div class="spaview" v-else>差</div>
+      </div>
+    </div>
+
+    <!-- end -->
+    <!-- 强制 -->
+    <div class="flexNox">
+      <div class="Yradio">
+        <div class="Yradiobox"></div>
+        强制
+      </div>
+      <div class="Rradio">
+        <div class="Rradiobox"></div>
+        建议
+      </div>
+    </div>
+
+    <!-- end -->
+    <div class="cont-reight-bottom" v-for="(item, index) in data.error" :key="index">
+      <div v-if="item.category == 0 || item.category == 1" class="cont-reight-bottom-title">
+        {{ item.category == 0 ? 'A类' : 'B类' }}
+        <br />
+        -{{ item.down }}
+      </div>
+      <div v-else class="cont-reight-bottom-title-null">
+        {{ item.category == 2 ? 'C类' : 'D类' }}
+        <br />
+        -{{ item.down }}
+      </div>
+      <div class="cont-reight-bottom-conter">
+        <p>字段:{{ item.error_name }}</p>
+        <p>提示:{{ item.desc }}</p>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+  export default {
+    props: {
+      data: {
+        type: Object,
+        default() {
+          return {
+            data: {}
+          }
+        }
+      },
+      type:{
+        type: String,
+        default() {
+          return ''
+        }
+      },
+      height: {
+        type: Number,
+        default() {
+          return 0
+        }
+      },
+      width: {
+        type: Number,
+        default() {
+          return 0
+        }
+      }
+    },
+    computed: {
+      scrollHeight() {
+        return `calc(100vh - 320px)`
+      }
+    },
+    methods: {
+      onScroll(index) {
+        const el = this.$el.querySelector(`.category${index}`);
+        const node = el.parentNode.parentNode.parentNode
+        this.$refs["scrollRef"].wrap.scrollTop = node.offsetTop;
+      }
+    }
+  }
+</script>
+<style lang="scss" scoped>
+  
+::v-deep .el-scrollbar__wrap {
+  overflow-x: hidden;
+}
+::v-deep .el-divider--horizontal {
+  margin: 10px 0;
+}
+.box{
+  padding: 16px;
+  background: #FFFFFF;
+  border-radius: 5px;
+  width: 100%;
+  background: #ffffff;
+  border: 1px solid #e2e2e2;
+  box-sizing: border-box;
+}
+
+.storeBox {
+  height: 80px;
+  line-height: 80px;
+  font-size: 30px;
+  text-align: center;
+  align-items: center;
+  position: relative;
+  margin: 30px auto;
+  border: 1px solid #ccc;
+  box-sizing: border-box;
+  overflow: hidden;
+  .text {
+    font-size: 30px;
+  }
+  .spa {
+    overflow: hidden;
+  }
+  .spa::before {
+    content: '';
+    width: 0;
+    height: 0;
+    border: 30px solid transparent;
+    border-right: 30px solid red;
+    -webkit-transform: rotate(135deg);
+    transform: rotate(135deg);
+    color: #fff;
+    position: absolute;
+    right: -30px;
+    top: -30px;
+    cursor: pointer;
+  }
+  .flexTable {
+    display: flex;
+    align-items: center;
+  }
+
+  .spaview {
+    position: absolute;
+    right: 5px;
+    top: -1px;
+    font-size: 13px;
+    text-align: right;
+    height: 30px;
+    line-height: 30px;
+    width: 100px;
+    color: #fff;
+  }
+}
+.flexNox {
+  width: 100%;
+  display: flex;
+  margin: 0 auto;
+  justify-content: center;
+  align-items: center;
+  .Yradiobox {
+    width: 10px;
+    background: red;
+    margin-right: 5px;
+    height: 10px;
+    border-radius: 50%;
+  }
+  .Rradiobox {
+    width: 10px;
+    background: #fa6400;
+    height: 10px;
+    margin-right: 5px;
+    border-radius: 50%;
+  }
+  .Yradio {
+    width: 80px;
+    display: flex;
+    align-items: center;
+    text-align: center;
+  }
+  .Rradio {
+    width: 80px;
+    display: flex;
+    align-items: center;
+    text-align: center;
+  }
+}
+.cont-reight-bottom {
+  margin: 24px 7px;
+  display: flex;
+  cursor: pointer
+}
+.cont-reight-bottom-title {
+  width: 70px;
+  background: #ffdfdf;
+  border-right: 3px solid #ff0000;
+  text-align: center;
+  font-size: 24px;
+  font-weight: bold;
+  color: #da1515;
+  position: relative;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.cont-reight-bottom-title-null {
+  width: 70px;
+  background: #fffbec;
+  border-right: 3px solid #fa6400;
+  text-align: center;
+  font-size: 24px;
+  font-weight: bold;
+  color: #ff5700;
+  position: relative;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.cont-reight-bottom-conter {
+  margin-left: 8px;
+  min-height: 70px;
+  display: flex;
+  justify-content: space-around;
+  flex-direction: column;
+  width: 100%;
+  p {
+    font-size: 13px;
+    color: #333333;
+  }
+}
+
+</style>

+ 38 - 0
src/views/data/query/qualityResults.vue

@@ -0,0 +1,38 @@
+<template>
+  <div ref="box" class="box" :class="{'nocopy': $route.meta.nocopy}">
+    <CaseQualityBox v-if="data.data" :data="data" />
+  </div>
+</template>
+
+<script>
+import CaseQualityBox from './components/CaseQualityBox.vue';
+  export default {
+    components: {
+      CaseQualityBox
+    },
+    data() {
+      return {
+        data: {}
+      }
+    },
+    created() {
+      if(this.$route.query.id) {
+        this.getCaseQualityResults()
+      }
+    },
+    methods: {
+      // 获取新病案指控结果
+      getCaseQualityResults() {
+        const params = {
+          id: Number(this.$route.query.id),
+        };
+        this.$axios2.post('/home_quality/getQualityResult', params).then(res => {
+          this.data = res.data;
+        });
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+</style>