瀏覽代碼

事中病历质控

zdl 1 年之前
父節點
當前提交
920e538f91

+ 14 - 0
src/router/index.js

@@ -276,6 +276,20 @@ export const constantRoutes = [
         hidden: true,
         meta: { title: '评审指标', keepAlive:true},
       },
+      {
+        path: '/middleCaseNumber',
+        name: 'MiddleCaseNumber',
+        component: () => import('@/views/middleCaseControl/caseNumber'),
+        hidden: true, //不在导航栏展示
+        meta: { title: '病案数量' },
+      },
+      {
+        path: '/middleDefectNumber',
+        name: 'MiddleDefectNumber',
+        component: () => import('@/views/middleCaseControl/defectNumber'),
+        hidden: true,//不在导航栏展示
+        meta: { title: '缺陷病案'},
+      },
     ],
   },
   // 医院大数据自助查询系统

+ 311 - 0
src/views/middleCaseControl/caseNumber.vue

@@ -0,0 +1,311 @@
+<template>
+  <div class="dashboard-container">
+    <div class="tableBox">
+      <div class="block">
+        <div class="blockCon">
+          <div class="selectDns"></div>
+          <el-input v-model="formData.recordNum" class="width150" placeholder="病案号"></el-input>
+          <span class="kong"></span>
+          <el-select v-model="formData.problem" filterable placeholder="请选择">
+            <el-option v-for="(item, index) in departmentList" :label="item.name" :value="item.id" :key="index"></el-option>
+          </el-select>
+          <span class="kong"></span>
+          <el-date-picker v-model="formData.startTime" type="date" format="yyyy 年 MM 月 dd 日" value-format="yyyyMMdd" placeholder="开始日期"></el-date-picker>
+
+          <el-date-picker
+            v-model="formData.endTime"
+            type="date"
+            style="margin-left: 10px"
+            format="yyyy 年 MM 月 dd 日"
+            value-format="yyyyMMdd"
+            placeholder="结束日期"
+          ></el-date-picker>
+          <span class="kong"></span>
+          <el-button class="sc" @click="funQuery">查询</el-button>
+          <span class="kong"></span>
+          <el-button class="btn1" @click="reset">重置条件</el-button>
+          <el-button class="sc" type="primary">导出Excel表格</el-button>
+          <el-button @click="toBack" style="float: right;">返回</el-button>
+        </div>
+      </div>
+      <!-- <Title :title="'病案列表'" /> -->
+      <el-table :data="tableData" style="width: 100%">
+        <el-table-column type="index" label="序号"></el-table-column>
+        <el-table-column prop="AAC11N" label="出院科室"></el-table-column>
+        <el-table-column prop="AAA28" label="病案号">
+          <template slot-scope="scope">
+            <span class="blue" @click="funGoto(scope.row.MED_REC_ID)">
+              <template>
+                <div>
+                  {{ scope.row.AAA28 }}
+                </div>
+              </template>
+            </span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="AAC01" label="出院时间"></el-table-column>
+        <el-table-column prop="AAA01" label="患者姓名"></el-table-column>
+        <el-table-column prop="ABC01N" label="主要诊断"></el-table-column>
+        <el-table-column prop="ICD9_NAME" label="主要手术"></el-table-column>
+      </el-table>
+      <!-- 分页控制 -->
+      <mPagination v-if="tableData && tableData.length !== 0" layout="sizes, prev, pager, next, slot" :data="paginationData" @sizeChange="handleSizeChange" @pageChangeEvent="pageHasChanged"></mPagination>
+    </div>
+  </div>
+</template>
+  
+  <script>
+import Title from '@/components/Title';
+import { mapGetters } from 'vuex';
+import mPagination from '@/components/m-pagination';
+
+export default {
+  name: 'Dashboard',
+  components: {
+    Title,
+    mPagination,
+  },
+  computed: {
+    ...mapGetters(['name']),
+  },
+  data() {
+    return {
+      formData: {
+        // rangeDate: [],
+        recordNum: '',
+        startTime: '',
+        endTime: '',
+        problem:'all'
+      },
+      tableData: [],
+      // 分页数据
+      paginationData: {
+        total: 10,
+        currentPage: 1,
+        pageSize: 10,
+      },
+      departmentList: [],
+    };
+  },
+  mounted() {
+    this.formData.startTime = this.storageGet('start_time');
+    this.formData.endTime = this.storageGet('end_time');
+    this.funQuery();
+    this.selectInfo()
+  },
+  methods: {
+    toBack() {
+      this.$router.history.go(-1)
+    },
+    funGoto(val) {
+      this.storageSet('getData', val);
+      this.goto('/caseViews')
+    },
+    funDel() {
+      this.formData1.seniorList.pop();
+    },
+    funAdd() {
+      this.formData1.seniorList.push({
+        key: '',
+        value: '',
+        type: '1',
+      });
+    },
+    pageHasChanged() {
+      this.funQuery();
+    },
+    handleSizeChange(size) {
+      this.paginationData.currentPage = 1
+      this.paginationData.pageSize = size
+      this.funQuery();
+    },
+    selectInfo() {
+      this.$axios.post('/selectInfo').then(res => {
+        this.departmentList = res.data.department;
+      });
+    },
+    funQuery() {
+      //查询
+      let pramse = {
+        // AAC01: this.formData.rangeDate, //出院时间
+        AAC01_start_date: this.formData.startTime || '',
+        AAC01_end_date: this.formData.endTime || '',
+        start_time: this.formData.startTime, //开始时间
+        end_time: this.formData.endTime, //结束时间
+        AAA28: this.formData.recordNum,
+        page: this.paginationData.currentPage, //页码
+        limit: this.paginationData.pageSize, //条数
+      };
+      this.$axios.post('/qualityList', pramse).then(res => {
+        console.log(res);
+
+        this.paginationData.total = res.data.count;
+        this.tableData = res.data.list;
+      });
+    },
+    reset() {
+      // 重置数据
+      this.paginationData.currentPage= 1; //页码
+      this.paginationData.pageSize = 10; //条数
+      if (this.choice == 0) {
+        Object.assign(this.$data.formData, this.$options.data().formData);
+      } else {
+        Object.assign(this.$data.formData, this.$options.data().formData);
+      }
+    },
+  },
+};
+</script>
+  <style scoped>
+::v-deep.el-pagination.is-background .btn-next,
+::v-deep.el-pagination.is-background .btn-prev,
+::v-deep.el-pagination.is-background .el-pager li {
+  margin: 0 5px;
+  background-color: #fff;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+  border: 1px solid #dfe3f3;
+  line-height: 27px;
+}
+::v-deep.el-pagination.is-background .el-pager li:not(.disabled).active {
+  background: #7e8bab;
+}
+::v-deep.el-table .el-table__row td {
+  color: #7e8bab;
+  border-bottom: 1px solid #f4f4f4;
+}
+::v-deep.el-table .el-table__header tr th:first-child {
+  border-radius: 10px 0px 0px 10px;
+}
+::v-deep.el-table .el-table__header tr th:last-child {
+  border-radius: 0px 10px 10px 0px;
+}
+::v-deep.el-table .el-table__header tr th {
+  background: #f1f6ff;
+  color: #13171e;
+  border-bottom: 0px;
+}
+</style>
+  <style lang="scss" scoped>
+.tableBox {
+  background: #fff;
+  padding: 19px;
+  border-radius: 5px;
+  font-size: 12px;
+}
+.block {
+  background: #fff;
+  border-radius: 5px;
+  margin-bottom: 16px;
+  padding: 20px 30px;
+  margin-bottom: 20px;
+  .fBtn {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    .btn1 {
+      background: #185da6;
+      color: #fff;
+    }
+    .btn2 {
+      color: #185da6;
+      background: #d5e4ff;
+    }
+  }
+  .bnh {
+    margin-bottom: 20px;
+  }
+  .barBtn {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+  .selects {
+    width: 100%;
+  }
+  .rowsa {
+    margin-bottom: 20px;
+  }
+}
+.tableBox {
+  background: #fff;
+  padding: 19px;
+  border-radius: 5px;
+}
+.dashboard {
+  &-container {
+    margin: 30px;
+  }
+  &-text {
+    font-size: 30px;
+    line-height: 46px;
+  }
+}
+.pind {
+  padding: 0 20px;
+}
+.pind10 {
+  padding: 0 5px;
+}
+.width150 {
+  width: 200px;
+}
+.width300 {
+  width: 295px;
+}
+.width500 {
+  width: 645px;
+}
+.width90 {
+  width: 90px;
+}
+.width130 {
+  width: 120px;
+}
+.blue {
+  color: #185da6;
+}
+.block {
+  background: #fff;
+  width: 100%;
+  align-items: center;
+  border-radius: 5px;
+  height: 75px;
+  margin-bottom: 16px;
+  padding-left: 10px;
+  margin-bottom: 20px;
+  margin-bottom: 20px;
+  padding-left: 0;
+  padding-right: 0;
+  .blockCon {
+    align-items: center;
+    .selectDns {
+      span {
+        margin-right: 5px;
+      }
+    }
+    .demonstration {
+      margin-left: 10px;
+    }
+    .pickers {
+      margin-left: 5px;
+    }
+    .lsxd {
+      margin-left: 20px;
+    }
+    .ins {
+      width: 150px;
+      margin: 0 10px;
+    }
+  }
+  .sc {
+    background: #185da6;
+    color: #fff;
+  }
+}
+.kong {
+  padding: 0 5px;
+}
+</style>
+  

+ 72 - 0
src/views/middleCaseControl/components/ProblemTableBox.vue

@@ -0,0 +1,72 @@
+<template>
+  <el-table
+    :data="data"
+    max-height="530"
+    style="width: 100%;">
+    <el-table-column
+      prop=""
+      label="序号"
+      width="80">
+      <template slot-scope="scope">
+        <span>{{ scope.$index + 1}}</span>
+      </template>
+    </el-table-column>
+    <el-table-column
+      prop="desc"
+      label="缺陷描述">
+    </el-table-column>
+    <el-table-column
+      prop="field"
+      label="缺陷字段">
+    </el-table-column>
+    <el-table-column
+      prop=""
+      label="缺陷数量">
+      <template slot-scope="scope">
+        <span class="link" @click="toPage(scope.row)">{{ scope.row.total_num }}</span>
+      </template>
+    </el-table-column>
+  </el-table>
+</template>
+
+<script>
+export default {
+  props: {
+    data: {
+      type: Array,
+      default() {
+        return []
+      }
+    }
+  },
+  methods: {
+    toPage(row) {
+      this.$router.push({ path: '/defectNumber', query: { rule_id: row.key }})
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep.el-table .el-table__row td {
+  color: #7e8bab;
+  border-bottom: 1px solid #f4f4f4;
+}
+::v-deep.el-table .el-table__header tr th:first-child {
+  border-radius: 10px 0px 0px 10px;
+}
+::v-deep.el-table .el-table__header tr th:last-child {
+  border-radius: 0px 10px 10px 0px;
+}
+::v-deep.el-table .el-table__header tr th {
+  background: #f1f6ff;
+  color: #13171e;
+  border-bottom: 0px;
+}
+.link{
+  font-weight: 600;
+  color: #409eff;
+  text-decoration:underline;
+  cursor: pointer;
+}
+</style>

+ 283 - 0
src/views/middleCaseControl/defectNumber.vue

@@ -0,0 +1,283 @@
+<template>
+  <div class="dashboard-container">
+    <div class="tableBox">
+      <div class="block">
+        <div class="blockCon">
+          <div class="selectDns"></div>
+          <el-input v-model="formData.recordNum" placeholder="病案号"></el-input>
+          <span class="kong"></span>
+          <el-select v-model="formData.AAC11N" clearable filterable class="selects" placeholder="出院科室">
+            <el-option v-for="(item, index) in departmentList" :label="item.name" :value="item.name" :key="index"></el-option>
+          </el-select>
+          <span class="kong"></span>
+          <el-date-picker v-model="formData.startTime" class="selects" type="date" format="yyyy 年 MM 月 dd 日" value-format="yyyyMMdd" placeholder="开始日期"></el-date-picker>
+          <el-date-picker
+            v-model="formData.endTime"
+            type="date"
+            class="selects"
+            style="margin-left: 10px"
+            format="yyyy 年 MM 月 dd 日"
+            value-format="yyyyMMdd"
+            placeholder="结束日期"
+          ></el-date-picker>
+          <span class="kong"></span>
+          <el-button class="sc" @click="funQuery">查询</el-button>
+        </div>
+        <el-button @click="toBack" style="position: absolute; right: 35px;">返回</el-button>
+      </div>
+      <el-table :data="tableData" style="width: 100%">
+        <el-table-column type="index" label="序号"></el-table-column>
+        <el-table-column prop="AAC11N" label="出院科室"></el-table-column>
+        <el-table-column prop="AAA28" label="病案号">
+          <template slot-scope="scope">
+            <span class="blue" @click="funGoto(scope.row.MED_REC_ID)">
+              {{ scope.row.AAA28 }}
+            </span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="AAC01" label="出院时间"></el-table-column>
+        <el-table-column prop="AAA01" label="患者姓名"></el-table-column>
+        <el-table-column prop="ABC01N" label="主要诊断"></el-table-column>
+        <el-table-column prop="ICD9_NAME" label="主要手术"></el-table-column>
+      </el-table>
+      <!-- 分页控制 -->
+      <mPagination v-if="tableData && tableData.length !== 0" :data="paginationData" @pageChangeEvent="pageHasChanged"></mPagination>
+    </div>
+  </div>
+</template>
+  
+  <script>
+import Title from '@/components/Title';
+import { mapGetters } from 'vuex';
+import mPagination from '@/components/m-pagination';
+
+export default {
+  name: 'Dashboard',
+  components: {
+    Title,
+    mPagination,
+  },
+  computed: {
+    ...mapGetters(['name']),
+  },
+  data() {
+    return {
+      formData: {
+        problem: 'all',
+        AAC11N: '',
+        startTime:'',
+        endTime:'',
+        recordNum: ''
+      },
+      error_rule: '',
+      tableData: [],
+      // 分页数据
+      paginationData: {
+        total: 10,
+        currentPage: 1,
+        pageSize: 10,
+      },
+      levelList: [], //问题属性
+      departmentList: [],
+    };
+  },
+  mounted() {
+    this.error_rule = this.$route.query.rule_id
+    this.formData.startTime = this.storageGet('start_time');
+    this.formData.endTime = this.storageGet('end_time');
+    this.selectInfo();
+    this.funQuery();
+  },
+  methods: {
+    toBack() {
+      this.$router.history.go(-1)
+    },
+    funGoto(val) {
+      this.storageSet('getData', val);
+      this.goto('/caseViews')
+    },
+    selectInfo() {
+      this.$axios.post('/selectInfo').then(res => {
+        this.payList = res.data.pay;
+        //支付方式 pay
+        this.departmentList = res.data.department.slice(1, res.data.department.length);
+        //出院科室 department
+        this.levelList = res.data.level;
+      });
+    },
+    pageHasChanged() {
+      this.funQuery();
+    },
+    funQuery() {
+      //查询
+      let pramse = {
+        start_time: this.formData.startTime || '',
+        end_time: this.formData.endTime || '',
+        level: this.formData.level,
+        page: this.paginationData.currentPage,
+        limit: this.paginationData.pageSize,
+        AAA28: this.formData.recordNum,
+        AAC11N: this.formData.AAC11N
+      };
+      if (this.error_rule) {
+        pramse.error_rule = this.error_rule;
+      }
+      this.$axios.post('/errorDataList', pramse).then(res => {
+        this.paginationData.total = res.data.count;
+        this.tableData = res.data.list;
+      });
+    }
+  },
+};
+</script>
+  <style scoped>
+::v-deep.el-pagination.is-background .btn-next,
+::v-deep.el-pagination.is-background .btn-prev,
+::v-deep.el-pagination.is-background .el-pager li {
+  margin: 0 5px;
+  background-color: #fff;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+  border: 1px solid #dfe3f3;
+  line-height: 27px;
+}
+::v-deep.el-pagination.is-background .el-pager li:not(.disabled).active {
+  background: #7e8bab;
+}
+::v-deep.el-table .el-table__row td {
+  color: #7e8bab;
+  border-bottom: 1px solid #f4f4f4;
+}
+::v-deep.el-table .el-table__header tr th:first-child {
+  border-radius: 10px 0px 0px 10px;
+}
+::v-deep.el-table .el-table__header tr th:last-child {
+  border-radius: 0px 10px 10px 0px;
+}
+::v-deep.el-table .el-table__header tr th {
+  background: #f1f6ff;
+  color: #13171e;
+  border-bottom: 0px;
+}
+</style>
+  <style lang="scss" scoped>
+.tableBox {
+  background: #fff;
+  padding: 19px;
+  border-radius: 5px;
+  font-size: 12px;
+}
+.block {
+  background: #fff;
+  border-radius: 5px;
+  margin-bottom: 16px;
+  padding: 20px 30px;
+  margin-bottom: 20px;
+  .fBtn {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    .btn1 {
+      background: #185da6;
+      color: #fff;
+    }
+    .btn2 {
+      color: #185da6;
+      background: #d5e4ff;
+    }
+  }
+  .bnh {
+    margin-bottom: 20px;
+  }
+  .barBtn {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+  .selects {
+    width: 100%;
+  }
+  .rowsa {
+    margin-bottom: 20px;
+  }
+}
+.tableBox {
+  background: #fff;
+  padding: 19px;
+  border-radius: 5px;
+}
+.dashboard {
+  &-container {
+    margin: 30px;
+  }
+  &-text {
+    font-size: 30px;
+    line-height: 46px;
+  }
+}
+.pind {
+  padding: 0 20px;
+}
+.pind10 {
+  padding: 0 5px;
+}
+.width150 {
+  width: 200px;
+}
+.width300 {
+  width: 295px;
+}
+.width500 {
+  width: 645px;
+}
+.width90 {
+  width: 90px;
+}
+.blue {
+  color: #185da6;
+  cursor: pointer;
+}
+.block {
+  background: #fff;
+  align-items: center;
+  border-radius: 5px;
+  height: 75px;
+  margin-bottom: 16px;
+  margin-bottom: 20px;
+  margin-bottom: 20px;
+  padding: 0;
+  display: flex;
+  box-sizing: border-box;
+  .blockCon {
+    display: flex;
+    align-items: center;
+    .selectDns {
+      span {
+        margin-right: 5px;
+      }
+    }
+    .demonstration {
+      margin-left: 10px;
+    }
+    .pickers {
+      margin-left: 5px;
+    }
+    .lsxd {
+      margin-left: 20px;
+    }
+    .ins {
+      width: 150px;
+      margin: 0 10px;
+    }
+  }
+  .sc {
+    background: #185da6;
+    color: #fff;
+  }
+}
+.kong {
+  padding: 0 10px;
+}
+</style>
+  

+ 483 - 0
src/views/middleCaseControl/index.vue

@@ -0,0 +1,483 @@
+<template>
+  <div class="pages">
+    <div class="block">
+      <div class="blockCon">
+        <div class="lefts">
+          <el-dropdown>
+            <el-button :class="formData.year.name ? 'color-btn' : ''">
+              {{ formData.year.name || '按年' }}
+              <i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item v-for="(item, index) in yearList" :key="index" @click.native="funSeleterYear(item)">{{ item.name }}</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+
+          <el-dropdown>
+            <el-button :disabled="formData.year.name == ''" :class="formData.quarter.name ? 'color-btn' : ''">
+              {{ formData.quarter.name || '按季' }}
+              <i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item v-for="(item, index) in quarterList" :key="index" @click.native="funSeleterQuarter(item)">{{ item.name }}</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+          <div class="selects">
+            <el-date-picker v-model="formData.startTime" type="date" format="yyyy 年 MM 月 dd 日" value-format="yyyyMMdd" placeholder="开始日期"></el-date-picker>
+
+            <el-date-picker
+              v-model="formData.endTime"
+              type="date"
+              style="margin-left: 10px"
+              format="yyyy 年 MM 月 dd 日"
+              value-format="yyyyMMdd"
+              placeholder="结束日期"
+            ></el-date-picker>
+          </div>
+          <el-button class="btn1" type="primary" @click="funQuery">查询</el-button>
+        </div>
+      </div>
+    </div>
+    <div class="cardBox">
+      <Title :title="'质量分析'" />
+      <div class="contentBox">
+        <div class="left">
+          <div class="l">
+            <div class="i" @click="goto('/middleCaseNumber')">
+              <div class="ba">病案数量</div>
+              <div class="num cpoin">{{ countsData.case_total }}</div>
+            </div>
+            <div class="i" @click="goto('/defectNumber')" style="background: #38a1f1">
+              <div class="ba">缺陷病案</div>
+              <div class="num">{{ countsData.defect_case_total }}</div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 科室排名 -->
+    <div class="chart">
+      <Title :title="'科室排名'" />
+      <div id="myChart1" style="width: 100%; height: 600px"></div>
+    </div>
+
+    <!-- 缺陷问题 -->
+    <div class="chart">
+      <Title :title="'缺陷问题'" />
+      <ProblemTableBoxVue :data="caseList" />
+    </div>
+  </div>
+</template>
+  
+  <script>
+import * as echarts from 'echarts';
+import { mapGetters } from 'vuex';
+import Title from '@/components/Title';
+import ProblemTableBoxVue from './components/ProblemTableBox.vue';
+export default {
+  components: {
+    Title,
+    ProblemTableBoxVue,
+  },
+  name: 'Dashboard',
+  computed: {
+    ...mapGetters(['name']),
+  },
+  data() {
+    return {
+      formData: {
+        rangeDate: [],
+        chooseDate: '',
+        startTime: '',
+        endTime: '',
+        year: {
+          name: '',
+        },
+        month: {
+          name: '',
+        },
+        quarter: {
+          name: '',
+        },
+        problem: 'all',
+        defectFelg: 'all',
+        type: '1',
+      },
+      homeData: {},
+      quarterList: [],
+      monthList: [],
+      yearList: [],
+      countsData: {
+        case_total: 0,
+        defect_case_total: 0,
+      },
+      caseList: []
+    };
+  },
+  mounted() {
+    this.storageSet('start_time', '');
+    this.storageSet('end_time', '');
+    this.formData.chooseDate = '30';
+    this.chooseTime(this.formData.chooseDate);
+    if (this.storageGet('homeFrom')) {
+      this.formData = this.storageGet('homeFrom');
+      this.storageRemove('homeFrom');
+    }
+    this.funQuery();
+    this.selectInfo();
+  },
+  methods: {
+    getCaseList() {
+      let pramse = {
+        start_time: this.formData.startTime,
+        end_time: this.formData.endTime,
+      };
+      this.$axios2.post('/case-quality/defect_issues', pramse).then(res => {
+        this.caseList = res.data.list
+      });
+    },
+    getCounts() {
+      let pramse = {
+        start_time: this.formData.startTime,
+        end_time: this.formData.endTime,
+      };
+      this.$axios2.post('/case-quality/analysis', pramse).then(res => {
+        this.countsData = res.data;
+      });
+    },
+    funSeleterYear(val) {
+      this.formData.year = val;
+      this.formData.type = '1';
+      this.formData.endTime = this.goTimeTwe(val.end);
+      this.formData.startTime = this.goTimeTwe(val.start);
+    },
+    funSeleterMonth(val) {
+      this.formData.month = val;
+      this.formData.type = '3';
+      this.formData.year = {
+        name: '',
+      };
+      this.formData.quarter = {
+        name: '',
+      };
+      this.formData.endTime = this.goTimeTwe(val.end);
+      this.formData.startTime = this.goTimeTwe(val.start);
+    },
+    funSeleterQuarter(val) {
+      this.formData.type = '2';
+      this.formData.quarter = val;
+      this.formData.endTime = this.formData.year.name + this.zh(val.end);
+      this.formData.startTime = this.formData.year.name + this.zh(val.start);
+    },
+    zh(str) {
+      let arr = str.split('-');
+      return arr.join('');
+    },
+    selectInfo() {
+      // let pramse = {};
+      this.$axios.post('/selectInfo').then(res => {
+        //问题属性 level
+        this.quarterList = res.data.quarter;
+        // 季度
+        this.monthList = res.data.month;
+        //月
+        this.yearList = res.data.year;
+      });
+    },
+    // 选择时间段
+    chooseTime(time) {
+      this.formData.rangeDate = this.timesCalculation(time).slice(0, 2);
+    },
+    funQuery() {
+      //查询
+      let type_id = '';
+      if (this.formData.type == '1') {
+        type_id = this.formData.year.id || '';
+      } else if (this.formData.type == '2') {
+        type_id = this.formData.quarter.id;
+      } else {
+        type_id = this.formData.month.id;
+      }
+      let pramse = {
+        start_time: this.formData.startTime,
+        end_time: this.formData.endTime,
+      };
+      this.storageSet('start_time', this.formData.startTime);
+      this.storageSet('end_time', this.formData.endTime);
+      this.storageSet('homeFrom', this.formData);
+      this.initCharts1(pramse);
+      this.getCounts();
+      this.getCaseList()
+    },
+    initCharts1(pramse) {
+      this.$axios2.post('/case-quality/ranking_department', pramse).then(res => {
+        let dataName = [];
+        let dataFleg = [];
+        const total_error_medical = [];
+        let dataNum = [];
+        for (let item in res.data.list.slice(0, 10)) {
+          dataName.push(res.data.list[item].name);
+          dataFleg.push(res.data.list[item].total_medical);
+          dataNum.push(res.data.list[item].item);
+          total_error_medical.push(res.data.list[item].total_error_medical);
+        }
+        // 销毁上一次实例
+        echarts.init(document.getElementById('myChart1')).dispose();
+        // 构建新实例
+        let myChart = echarts.init(document.getElementById('myChart1'));
+        window.addEventListener('resize', function () {
+          myChart.resize();
+        });
+        if (res.data.list.length) {
+          myChart.setOption({
+            toolbox: {
+              feature: {
+                saveAsImage: {
+                  name: '科室排名',
+                },
+              },
+            },
+            tooltip: {
+              trigger: 'axis',
+              axisPointer: {
+                type: 'cross',
+                crossStyle: {
+                  color: '#999',
+                },
+              },
+            },
+            legend: {
+              show: true,
+            },
+            xAxis: {
+              type: 'category',
+              data: dataName,
+              axisLabel: {
+                rotate: 15,
+              },
+            },
+            grid: {
+              left: '3%',
+              right: '3%',
+              bottom: '3%',
+              containLabel: true,
+            },
+            yAxis: {
+              type: 'value',
+            },
+            series: [
+              {
+                data: dataFleg,
+                type: 'bar',
+                showBackground: true,
+                barMaxWidth: 30,
+                label: {
+                  show: true,
+                  position: 'top',
+                },
+                name: '病案数',
+                backgroundStyle: {
+                  color: 'rgba(180, 180, 180, 0.2)',
+                },
+              },
+              {
+                data: total_error_medical,
+                type: 'bar',
+                showBackground: true,
+                barMaxWidth: 30,
+                label: {
+                  show: true,
+                  position: 'top',
+                },
+                name: '缺陷病案数',
+                backgroundStyle: {
+                  color: 'rgba(180, 180, 180, 0.2)',
+                },
+              },
+            ],
+          });
+        } else {
+          myChart.setOption({
+            title: {
+              text: '暂无数据',
+              x: 'center',
+              y: 'center',
+              textStyle: {
+                fontSize: 14,
+                fontWeight: 'normal',
+              },
+            },
+          });
+        }
+      });
+    },
+  },
+};
+</script>
+  
+  <style lang="scss" scoped>
+.pages {
+  padding: 0 18px;
+  background: #f4f4f4;
+  .btnNAv {
+    display: flex;
+    justify-content: flex-end;
+    padding-top: 30px;
+    padding-bottom: 10px;
+    a {
+      padding: 15px 30px;
+      color: #fff;
+      border-radius: 10px;
+      margin-left: 15px;
+    }
+    .bj {
+      background: #35ae4a;
+    }
+    .bc {
+      background: #dd7500;
+    }
+    .dc {
+      background: #439ab6;
+    }
+    .fh {
+      background: #185da6;
+    }
+  }
+  .block {
+    margin: 16px 0;
+    background: #fff;
+    padding: 25px 15px;
+    border-radius: 5px;
+    .blockCon {
+      display: flex;
+      justify-content: space-between;
+      .lefts {
+        display: flex;
+      }
+      .selects {
+        margin: 0 20px;
+        span {
+          margin-right: 10px;
+        }
+      }
+    }
+    .ytext {
+      font-size: 16px;
+      color: #e48d53;
+      font-weight: 400;
+      line-height: 40px;
+    }
+  }
+  .cardBox {
+    margin: 0 0 16px 0;
+    background: #fff;
+    padding: 25px 15px;
+    border-radius: 5px;
+    .contentBox {
+      display: flex;
+      .left {
+        display: flex;
+        flex: 1;
+        .l {
+          display: flex;
+          flex: 1;
+          flex-wrap: wrap;
+          .i {
+            width: calc(50% - 20px);
+            margin-right: 20px;
+            height: 86px;
+            background: #30b48e;
+            border-radius: 5px;
+            position: relative;
+            overflow: hidden;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            text-align: center;
+            .ba {
+              flex: 1;
+              font-size: 16px;
+              font-weight: 400;
+              color: #fff;
+            }
+            .num {
+              font-size: 24px;
+              font-weight: bold;
+              color: #fff;
+              flex: 1;
+              margin-left: 20px;
+            }
+            .icon {
+              width: 50px;
+              position: absolute;
+              top: 18px;
+              right: 25px;
+            }
+          }
+        }
+        .r {
+          margin: 0 9% 0 0;
+          .i {
+            width: 195px;
+            height: 56px;
+            background: #eaf4ff;
+            border-radius: 4px;
+            margin: 0 0 9px 0;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+
+            .icon {
+              width: 22px;
+              margin: 6px 0 0 27px;
+            }
+            .t {
+              font-size: 18px;
+              font-weight: 400;
+              color: #333333;
+              text-align: left;
+              margin-left: 10px;
+            }
+            .rt {
+              margin-left: 10px;
+              font-weight: bold;
+              color: #38a1f2;
+              font-size: 18px;
+              text-align: left;
+            }
+          }
+
+          .i:nth-child(1) {
+            background: #93d2f3;
+          }
+
+          .i:nth-child(2) {
+            background: #f4ce98;
+          }
+
+          .i:nth-child(3) {
+            background: #de868f;
+          }
+        }
+      }
+      .right {
+        width: 521px;
+      }
+    }
+  }
+  .cpoin {
+    cursor: pointer;
+  }
+  .chart {
+    margin-bottom: 16px;
+    background-color: #fff;
+    padding: 25px 15px;
+  }
+}
+.color-btn {
+  color: #409eff;
+  border-color: #c6e2ff;
+  background-color: #ecf5ff;
+}
+</style>
+