Sfoglia il codice sorgente

人工质控页面

gyf 3 mesi fa
parent
commit
f943da79fe
24 ha cambiato i file con 8138 aggiunte e 0 eliminazioni
  1. 819 0
      src/views/recordsRoom/qc/caseViews.vue
  2. 488 0
      src/views/recordsRoom/qc/components/CaseQualityBox2.vue
  3. 326 0
      src/views/recordsRoom/qc/components/CaseRecord2.vue
  4. 388 0
      src/views/recordsRoom/qc/components/CreateControlResultDialog.vue
  5. 82 0
      src/views/recordsRoom/qc/components/DeathText.vue
  6. 89 0
      src/views/recordsRoom/qc/components/NoFormatText.vue
  7. 200 0
      src/views/recordsRoom/qc/components/OutHospitalRecord.vue
  8. 179 0
      src/views/recordsRoom/qc/components/SearchBox.vue
  9. 280 0
      src/views/recordsRoom/qc/components/ShouShuRecord1.vue
  10. 379 0
      src/views/recordsRoom/qc/components/ShouShuRecord2.vue
  11. 177 0
      src/views/recordsRoom/qc/components/ShouShuRecord4.vue
  12. 100 0
      src/views/recordsRoom/qc/components/TableBox.vue
  13. 345 0
      src/views/recordsRoom/qc/contFile/admissionRecord.vue
  14. 1592 0
      src/views/recordsRoom/qc/contFile/mainHomePage.vue
  15. 251 0
      src/views/recordsRoom/qc/contFile/medicalAdvice.vue
  16. 294 0
      src/views/recordsRoom/qc/contFile/medicalTemporary.vue
  17. 159 0
      src/views/recordsRoom/qc/contFile/newContFile.vue
  18. 142 0
      src/views/recordsRoom/qc/index.vue
  19. 289 0
      src/views/recordsRoom/qc/report/caseImageText.vue
  20. 342 0
      src/views/recordsRoom/qc/report/checkout.vue
  21. 306 0
      src/views/recordsRoom/qc/report/electrocar.vue
  22. 314 0
      src/views/recordsRoom/qc/report/imaging.vue
  23. 289 0
      src/views/recordsRoom/qc/report/sightGlass.vue
  24. 308 0
      src/views/recordsRoom/qc/report/ultrasound.vue

+ 819 - 0
src/views/recordsRoom/qc/caseViews.vue

@@ -0,0 +1,819 @@
+<template>
+  <div id="MyDiv" :class="{ nocopy: $route.query.status }">
+    <div class="cont_container">
+      <!-- 左侧点击列表部分 -->
+      <div class="cont-left-tiem">
+        <ul class="el-menu-vertical-demo el-menu">
+          <li class="li-left-item" :class="is_active == 0 ? 'is-active' : ''" @click="clickTree(0, '住院病案')">
+            <span>住院病案</span>
+          </li>
+          <li
+            v-for="(item, index) in treeList"
+            :key="index"
+            :class="[is_active == item.bllb && item.bllb != 49 ? 'is-active' : '', item.bllb == 49 || [2000002, 294, 303, 329, 288, 34, 87].includes(item.bllb) ? 'li-left-itemyz' : 'li-left-item']"
+            @click="clickTree(item.bllb, item.name, item)"
+          >
+            <span>{{ item.name }}</span>
+            <div v-if="item.bllb == 49">
+              <div :class="['li-left-item-li', is_active == '长期医嘱' ? 'is-active' : '']" data-li="49-1" :id="item.bllb">长期医嘱</div>
+              <div :class="['li-left-item-li', is_active == '临时医嘱' ? 'is-active' : '']" data-li="49-2" :id="item.bllb">临时医嘱</div>
+            </div>
+            <div v-if="item.bllb == 2000002">
+              <div v-for="(jitem, jindex) in item.list" :id="jitem.type" :key="jindex" :class="['li-left-item-li', is_active == jitem.ExamType ? 'is-active' : '']">
+                {{ jitem.name }}
+              </div>
+            </div>
+            <!-- 病程记录、手术记录 -->
+            <div v-if="[294, 303, 329, 288, 34, 87].includes(item.bllb)">
+              <div
+                v-for="(jitem, jindex) in item.list"
+                :id="`${jitem.blbh}`"
+                :key="jindex"
+                :class="['li-left-item-li', is_active == jitem.blbh ? 'is-active' : '']"
+                :title="jitem.name.trim()"
+              >
+                {{ jitem.name.trim() }}
+              </div>
+            </div>
+          </li>
+        </ul>
+      </div>
+      <div class="cont-left-file" @mouseup.prevent="handleMouseupHandle" @contextmenu.prevent="openMenu($event)">
+        <div v-if="is_active == 0">
+          <mainHomePage ref="main" :data="mainHomeData" :if-file="ifFile" />
+        </div>
+        <div v-else-if="is_active == 292">
+          <!-- 入院记录 -->
+          <admissionRecord :data="admissionRecord" :if-file="ifFile" />
+        </div>
+        <div v-else-if="parentType == '1' && is_active == 1">
+          <!-- 出院记录 -->
+          <OutHospitalRecord :data="outHospitalRecordData" />
+        </div>
+        <div v-else-if="bcjlLiIds.includes(is_active)">
+          <!-- 病程记录 -->
+          <div>病程记录</div>
+          <CaseRecord v-if="caseRecodeInfo.is_format === 1" :data="caseRecodeInfo" />
+          <NoFormatText v-else :text="caseRecodeInfo.content" :data="caseRecodeInfo" name="" />
+        </div>
+        <div v-else-if="shoushuLiIds.includes(is_active)">
+          <!-- 手术记录 -->
+          <template v-if="surgeryData.is_format">
+            <ShouShuRecord1 v-if="surgeryData.type === 1" :data="surgeryData" />
+            <ShouShuRecord2 v-if="surgeryData.type === 2" :data="surgeryData" />
+            <ShouShuRecord4 v-if="surgeryData.type === 4" :data="surgeryData" />
+          </template>
+          <NoFormatText v-else :text="surgeryData.content" :data="surgeryData" :name="blname_title" />
+        </div>
+        <div v-else-if="is_active == '长期医嘱'">
+          <!-- 长期医嘱 -->
+          <medicalAdvice :data-obj="longAdvice" />
+        </div>
+        <div v-else-if="is_active == '临时医嘱'">
+          <!-- 临时医嘱 -->
+          <medicalTemporary :data-obj="happensAdvice" />
+        </div>
+        <div v-else-if="parentType == '2000002' && is_active == '1'">
+          <!-- 病历图文报告 -->
+          <caseImageText :data-obj-arr="pacsDetail" />
+        </div>
+        <div v-else-if="parentType == '2000002' && is_active == '2'">
+          <!-- 超声诊断 -->
+          <ultrasound :data-obj-arr="pacsDetail" />
+        </div>
+        <div v-else-if="parentType == '2000002' && is_active == '3'">
+          <!-- 影像诊断 -->
+          <imaging :data-obj-arr="pacsDetail" />
+        </div>
+        <div v-else-if="parentType == '2000002' && is_active == '4'">
+          <!-- 为心电 -->
+          <electrocar :data-obj-arr="pacsDetail" />
+        </div>
+        <div v-else-if="parentType == '2000002' && is_active == '5'">
+          <!-- 检验报告单 病理 -->
+          <checkout :data-obj-arr="pacsDetail" />
+        </div>
+        <div v-else-if="parentType == '2000002' && is_active == '6'">
+          <!-- 內窥镜检查报告 病理 -->
+          <sightGlass :data-obj-arr="pacsDetail" />
+        </div>
+        <div v-else-if="is_active == 288 || is_active == 18">
+          <!-- 死亡记录 或者 24小时内入院记录 -->
+          <DeathText :data-obj-arr="dataObj" v-if="update" />
+        </div>
+        <div v-else>
+          <div v-if="update">
+            <newContFile v-for="(item, index) of text" :key="index" :text="item.HJNR" :name="name_title" />
+          </div>
+        </div>
+      </div>
+      <!-- status 不存在 意味着不脱敏、医院自助查询 -->
+      <template v-if="!$route.query.status">
+        <!-- 住院病案质控 -->
+        <CaseQualityBox :data="results" v-if="results.data" @clickAppealBtn="clickAppealBtn" :width="340" :height="820" ref="CaseQualityBox"/>
+      </template>
+      <!-- 添加质控结果 -->
+      <CreateControlResultDialogVue v-if="dialogData.bSwitch" :data="dialogData" @refresh="handelRefreshResults" />
+      <!-- 右键菜单 -->
+      <ul
+        v-show="gridCustomizeVisible"
+        :style="{ left: left + 'px', top: top + 'px' }"
+        class="contextmenu"
+      >
+        <li @click="onCreate">添加</li>
+      </ul>
+    </div>
+
+    <!-- 审核申诉弹窗 -->
+    <div class="dialog-box">
+      <el-dialog title="审核结果" :visible.sync="dialogVisible" :close-on-click-modal="false" width="340px">
+        <el-form ref="form" :model="alertForm">
+          <el-form-item label="驳回原因:">
+            <el-input v-model="alertForm.describe" type="textarea" placeholder="请输入驳回原因" />
+          </el-form-item>
+          <el-form-item label="审核科室:">
+            <el-input v-model="alertForm.case_document" placeholder="审核科室" />
+            <!-- <el-select v-model="alertForm.case_document">
+              <el-option v-for="(v,k) in groupList" :key="k" :label="v.name" :value="v.name"/>
+            </el-select> -->
+          </el-form-item>
+          <el-form-item label="审核医师:">
+            <el-input v-model="alertForm.case_docter" placeholder="审核医师" />
+          </el-form-item>
+          <el-form-item label="手机号">
+            <el-input v-model="alertForm.case_docter_mobile" placeholder="手机号" />
+          </el-form-item>
+        </el-form>
+
+        <span slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="editSubmit">确 定</el-button>
+          <el-button @click="dialogVisible=false">取 消</el-button>
+        </span>
+      </el-dialog>
+    </div>
+  </div>
+</template>
+<script>
+import Mmenu from '@/components/m-menu'
+import mainHomePage from './contFile/mainHomePage'
+import newContFile from './contFile/newContFile'
+import admissionRecord from './contFile/admissionRecord'
+import medicalAdvice from './contFile/medicalAdvice'
+import medicalTemporary from './contFile/medicalTemporary'
+import caseImageText from './report/caseImageText'
+import ultrasound from './report/ultrasound'
+import imaging from './report/imaging'
+import electrocar from './report/electrocar'
+import checkout from './report/checkout'
+import sightGlass from './report/sightGlass'
+import CaseRecord from './components/CaseRecord2.vue'
+import ShouShuRecord1 from './components/ShouShuRecord1.vue'
+import ShouShuRecord2 from './components/ShouShuRecord2.vue'
+import ShouShuRecord4 from './components/ShouShuRecord4.vue'
+import NoFormatText from './components/NoFormatText.vue'
+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 } from '@/api/qc'
+import { getCaseExamineAppeal } from '@/api/admin'
+import { getToken, removeToken } from '@/utils/auth'
+
+export default {
+  components: {
+    Mmenu,
+    mainHomePage,
+    newContFile,
+    admissionRecord,
+    medicalAdvice,
+    medicalTemporary,
+    caseImageText,
+    ultrasound,
+    imaging,
+    electrocar,
+    sightGlass,
+    checkout,
+    CaseRecord,
+    ShouShuRecord1,
+    ShouShuRecord2,
+    ShouShuRecord4,
+    NoFormatText,
+    OutHospitalRecord,
+    CaseQualityBox,
+    DeathText,
+    CreateControlResultDialogVue
+  },
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {},
+  data() {
+    return {
+      mainHomeData: {},
+      admissionRecord: {},
+      longAdvice: {},
+      happensAdvice: {},
+      valData: '',
+      ifFile: false,
+      treeList: [],
+      is_active_blbh: 0,
+      is_active: 0,
+      parentType: 0,
+      name_title: '',
+      text: [],
+      update: true,
+      titleName: '住院病案',
+      pacsDetail: {},
+      // 病程记录详情
+      caseRecodeInfo: {
+        is_format: 1
+      },
+      surgeryData: {
+        mzfj: [],
+        ssqk: [],
+        sscxsj: [],
+        sslb: [],
+        is_format: 0
+      },
+      outHospitalRecordData: {
+        name: {},
+        ry_time: {},
+        sex: {},
+        age: {},
+        cy_time: {},
+        zyts: {},
+        ryqk: {},
+        cbzd: {},
+        zljg: {},
+        cyqk: {},
+        cyzd: {},
+        cyyz: {}
+      },
+      dataObj: [],
+      results: null,
+      dialogData: {
+        bSwitch: false,
+        text: '',
+        blbh: ''
+      },
+      top: 0,
+      left: 0,
+      gridCustomizeVisible: false,
+
+      dialogVisible: false,
+      alertForm: {},
+      appealInfo: {}
+    }
+  },
+  computed: {
+    bcjlLiIds() {
+      // 病程记录子项数据
+      const arr = Object.values(this.treeList).filter(item => item.bllb === 294)
+      const liIds = []
+      if (arr.length) {
+        if (arr[0].list) {
+          for (let i = 0; i < arr[0].list.length; i++) {
+            liIds.push(arr[0].list[i].blbh)
+          }
+        }
+      }
+      return liIds
+    },
+    shoushuLiIds() {
+      // 病程记录子项数据
+      const arr = Object.values(this.treeList).filter(item => item.bllb === 303)
+      const liIds = []
+      if (arr.length) {
+        if (arr[0].list) {
+          for (let i = 0; i < arr[0].list.length; i++) {
+            liIds.push(arr[0].list[i].blbh)
+          }
+        }
+      }
+      return liIds
+    },
+    blname_title() {
+      let title
+      const type = this.surgeryData.type
+      if (type === 1) {
+        title = '手术风险评估表'
+      } else if (type === 2) {
+        title = '手术安全核查表'
+      } else if (type === 3) {
+        title = '手术同意书'
+      } else if (type === 4) {
+        title = '手术记录'
+      }
+      return title
+    }
+  },
+  watch: {
+    //变量名
+    gridCustomizeVisible(val) {
+      if (val) {
+        //点击事件,调用方法
+        document.body.addEventListener("click", this.closeMenu);
+      } else {
+        document.body.removeEventListener("click", this.closeMenu);
+      }
+    },
+  },
+  mounted() {
+    this.valData = localStorage.getItem('getData')
+    if (this.valData) {
+      this.funQuery()
+      this.getCaseQualityResults()
+    }
+    this.getTree()
+  },
+
+  methods: {
+    editSubmit(){
+      let that = this;
+      let params = {
+        id: that.appealInfo.id,
+        status: that.appealInfo.status,
+        describe: that.alertForm.describe,
+        case_document: that.alertForm.case_document,
+        case_docter: that.alertForm.case_docter,
+        case_docter_mobile: that.alertForm.case_docter_mobile,
+      }
+      let index = that.appealInfo.index;
+      
+      getCaseExamineAppeal(params).then(res => {
+        const { c } = res
+        if(c == 0){
+          that.$message('提交成功');
+          that.dialogVisible = false;
+          that.alertForm = {};
+          that.$refs.CaseQualityBox.editSubmit(index);
+        }else{
+          that.$message('提交失败');
+        }
+
+      })
+    },
+    clickAppealBtn(e) {
+      console.log(e)
+      let that = this;
+      that.appealInfo = e;
+      that.alertForm.case_document = localStorage.getItem('KSMC');
+      that.alertForm.case_docter = localStorage.getItem('realname');
+      if(e.status == 1){
+        // 通过
+        that.editSubmit();
+      }else{
+
+        that.dialogVisible = true;
+
+      }
+      
+    },
+    // 刷新质控结果
+    handelRefreshResults() {
+      this.getCaseQualityResults()
+    },
+    // 鼠标右击事件
+    openMenu(e) {
+      //获取右击时得坐标
+      var x = e.pageX;
+      var y = e.pageY;
+      //top,left在data种定义,初始值为0
+      //top,left是右键菜单得坐标值,可以通过运算调整
+      this.top = y - 80;
+      this.left = x - 200;
+      
+      if (this.dialogData.text) {
+        this.gridCustomizeVisible = true;
+      }
+    },
+    closeMenu() {
+      this.gridCustomizeVisible = false;
+    },
+    // 鼠标右击事件
+    onCreate() {
+      this.dialogData.bSwitch = true
+    },
+    // 鼠标事件
+    handleMouseupHandle() {
+      const text = window.getSelection().toString()
+      if (text.trim().length) {
+        this.dialogData.blbh = this.is_active_blbh
+        this.dialogData.text = text
+      }
+    },
+    // 获取新病案指控结果
+    getCaseQualityResults() {
+      let that = this;
+      const params = {
+        id: Number(that.valData)
+      }
+      getCaseQuality(params).then(res => {
+        console.log(res)
+        that.results = null;
+        that.$nextTick(() =>{
+          that.results = res.data;
+        })
+      }).catch(e =>{
+        console.log(e)
+      })
+      // that.axios({
+      //   url:'http://10.10.11.65:8081/bazb/get_case_quality_v2',
+      //   method: 'post',
+      //   headers: { 'content-type': 'application/json', 'token': getToken() },
+      //   data: {
+      //     ZYH: Number(that.valData)
+      //   }
+      // }).then(res => {
+      //   this.results = res.data
+      // })
+    },
+    reload() {
+      // 移除组件
+      this.update = false
+      // 在组件移除后,重新渲染组件
+      // this.$nextTick可实现在DOM 状态更新后,执行传入的方法。
+      this.$nextTick(() => {
+        this.update = true
+      })
+    },
+    funEdit() {
+      this.ifFile = true
+      this.$message('errer:功能待开发')
+    },
+    getback() {
+      this.$router.go(-1)
+    },
+    /**
+     * 跳转对应病历首页
+     */
+    getBlankIndexss(item) {
+      this.$refs.main.getBlankIndex(item)
+    },
+    funQuery() {
+      const params = {
+        id: this.valData
+      }
+      if (this.$route.query.status) {
+        params.is_tm = 1
+      }
+      getHomeData(params).then(res => {
+        this.mainHomeData = res.p
+        this.is_active_blbh = this.mainHomeData.MED_REC_ID
+      })
+    },
+    getTree() {
+      const that = this
+      const pramse = {
+        id: this.valData
+      }
+      getTreeList(pramse).then(res => {
+        that.treeList = res.data
+        // const { p } = res
+        // 初始化blbh
+        // that.is_active_blbh = p[0].blbh
+      })
+    },
+    clickTree(b, n, item) {
+      if (item) {
+        if (item.blbh) {
+          this.is_active_blbh = item.blbh
+        } else {
+          this.is_active_blbh = event.target.id
+        }
+      } else {
+        // this.is_active_blbh = this.mainHomeData.MED_REC_ID
+        this.is_active = 0;
+        this.funQuery();
+      }
+      this.titleName = n
+      this.parentType = b
+      const that = this
+      // 判断点击的
+      if (event.target.id || !item?.list) {
+        if (event.target.outerText == '长期医嘱' || event.target.outerText == '临时医嘱') {
+          that.is_active = event.target.outerText;
+        } else if (b == 2000002) {
+          that.is_active = event.target.id;
+        } else if (b == 294) {
+          that.is_active = event.target.id;
+        } else if (b == 303) {
+          that.is_active = event.target.id;
+        } else {
+          that.is_active = b;
+        }
+      }
+      that.name_title = n
+      if (b != 0 && b != 292 && b != 1) {
+        const params = {
+          MED_REC_ID: that.valData,
+          bllb: b
+        }
+        if (this.$route.query.status) {
+          params.is_tm = 1
+        }
+        getAllCase(params).then(res => {
+          that.text = res.data
+          that.dataObj = res.data
+          that.reload()
+        })
+      } else if (b == 292) {
+        // 获取详情
+        const params = {
+          id: this.valData,
+          bllb: b
+        }
+        if (this.$route.query.status) {
+          params.is_tm = '1'
+        }
+        getCasePlatform(params).then(res => {
+          this.admissionRecord = res.data
+        })
+      } else if (b == 1) {
+        // 获取详情
+        const params = {
+          id: this.valData,
+          bllb: b
+        }
+        if (this.$route.query.status) {
+          params.is_tm = 1
+        }
+        getCasePlatform(params).then(res => {
+          this.outHospitalRecordData = res.data;
+        })
+      }
+      if (that.is_active == '长期医嘱') {
+        // 长期医嘱
+        const params = {
+          AAA28: that.valData
+        }
+        if (this.$route.query.status) {
+          params.is_tm = 1
+        }
+        getLong(params).then(res => {
+          this.longAdvice = res.data
+        })
+      }
+      if (that.is_active == '临时医嘱') {
+        // 临时医嘱
+        const params = {
+          AAA28: that.valData
+        }
+        if (this.$route.query.status) {
+          params.is_tm = 1
+        }
+        getTemporary(params).then(res => {
+          this.happensAdvice = res.p
+        })
+      }
+      if (that.parentType == '2000002' && that.is_active != '') {
+        // 报告单 相关
+        const parm = {
+          type: Number(that.is_active)
+        }
+        if (this.$route.query.status) {
+          parm.is_tm = 1
+        }
+        const treeListArr = Object.values(that.treeList)
+        treeListArr.forEach((item, index) => {
+          if (item.bllb == 2000002) {
+            parm.zyh = Number(item.list[0].ZYH)
+          }
+        })
+
+        getPacsData(parm).then(res => {
+          this.pacsDetail = res.data
+        })
+      }
+      // 病程记录
+      if (item.bllb === 294) {
+        if (that.is_active) {
+          // 请求前先重置之前的数据
+          that.caseRecodeInfo = {}
+          const parm = { blbh: that.is_active }
+          if (this.$route.query.status) {
+            parm.is_tm = 1
+          }
+          getBcData(parm).then(res => {
+            that.caseRecodeInfo = res.data[0].bc_data
+            that.caseRecodeInfo.is_format = res.data[0].is_format
+          })
+        }
+      }
+      // 手术记录
+      if (item.bllb === 303) {
+        if (that.is_active) {
+          // 请求前先重置之前的数据
+          that.surgeryData = {}
+          const parm = { blbh: that.is_active }
+          if (this.$route.query.status) {
+            parm.is_tm = 1
+          }
+          getSurgeryData(parm).then(res => {
+            that.surgeryData = res.p[0].surgery_data
+            that.surgeryData.is_format = res.p[0].is_format
+          })
+        }
+      }
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+#MyDiv {
+  margin: 0;
+  padding: 0 !important;
+}
+.nocopy {
+  user-select: none;
+}
+.header {
+  margin: 10px 20px;
+  text-align: right;
+  display: flex;
+  justify-content: flex-end;
+}
+.cont_container {
+  display: flex;
+  justify-content: center;
+}
+.cont-left-tiem {
+  width: 250px;
+  margin: 0 0 0 15px;
+  min-height: 650px;
+  height: calc(100vh - 130px);
+  overflow-y: scroll;
+  background: #ffffff;
+}
+.cont-left-file {
+  flex: 1;
+  min-height: 650px;
+  margin: 0 5px;
+  height: calc(100vh - 130px);
+  overflow-y: scroll;
+  background: #ffffff;
+  border: 1px solid #e2e2e2;
+  padding: 10px;
+}
+.li-router {
+  display: inline-block;
+  width: 100%;
+  height: 100%;
+}
+.li-left-item {
+  line-height: 56px;
+  font-size: 14px;
+  color: #303133;
+  padding: 0 20px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s, background-color 0.3s, color 0.3s;
+  transition: border-color 0.3s, background-color 0.3s, color 0.3s;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.li-left-itemyz {
+  line-height: 56px;
+  font-size: 14px;
+  color: #303133;
+  padding-left: 20px;
+
+  -webkit-transition: border-color 0.3s, background-color 0.3s, color 0.3s;
+  transition: border-color 0.3s, background-color 0.3s, color 0.3s;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  .li-left-item-li {
+    width: 100%;
+    line-height: 36px;
+    padding: 0 20px;
+    cursor: pointer;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+  }
+  .li-left-item-li:hover {
+    outline: 0;
+    background-color: #ecf5ff;
+  }
+}
+.li-left-item:focus,
+.li-left-item:hover {
+  outline: 0;
+  background-color: #ecf5ff;
+}
+
+.is-active {
+  color: #409eff;
+}
+.dialog-box {
+  ::v-deep .el-dialog__header{
+    padding: 10px 20px;
+    background: rgb(27,100,169);
+    color: #fff !important;
+    .el-dialog__title{
+      color: #fff;
+    }
+    .el-dialog__headerbtn{
+      top: 14px;
+    }
+  }
+  ::v-deep .el-dialog__body{
+    .el-form-item {
+      background: #fff;
+    }
+    .el-input{
+      width: 100%;
+      input{
+        height: 35px;
+        border: 1px solid #C0C4CC;
+        border-radius: 6px;
+      }
+    }
+  }
+}
+</style>
+<style>
+/*  ================================== 文本形式样式 ↓ ======================== */
+.refachInput span {
+  height: auto;
+  line-height: 1;
+  padding: 10px 0;
+}
+.refachInput span.refachInput-text {
+  padding-left: 12px;
+}
+.el-row--flex.is-justify-space-around {
+  justify-content: flex-start;
+}
+.member-infobox {
+  width: 100%;
+}
+.member-infobox .info-box-1 {
+  /* display: flex;
+    flex-wrap: wrap; */
+  margin-top: 20px;
+}
+.infoBox-items {
+  width: auto;
+  display: flex;
+  align-items: center;
+  padding: 8px 0;
+}
+.padding-left20 {
+  padding-left: 20px;
+}
+.padding-right20 {
+  padding-right: 20px;
+}
+.infoBox-title {
+  color: #333;
+  font-size: 12px;
+  font-weight: bold;
+}
+.infoBox-items-text {
+  color: #666;
+  font-size: 12px;
+  padding-left: 5px;
+  padding-right: 20px;
+}
+.title-ff0000 {
+  color: #ff0000;
+}
+/* 高亮 */
+.choose-twinkle {
+  font-size: 20px;
+  color: red;
+  font-weight: 600;
+  background: yellow;
+}
+.table-value-look {
+  padding-left: 12px;
+  color: #ff0000;
+  cursor: pointer;
+}
+
+/* 右键菜单 */
+.contextmenu {
+  margin: 0;
+  background: #fff;
+  z-index: 3000;
+  position: absolute;
+  list-style-type: none;
+  padding: 5px 0;
+  border-radius: 4px;
+  font-size: 12px;
+  font-weight: 400;
+  color: #333;
+  box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.3);
+}
+ 
+.contextmenu li {
+  margin: 0;
+  padding: 7px 16px;
+  cursor: pointer;
+}
+ 
+.contextmenu li:hover {
+  background: #eee;
+}
+</style>

+ 488 - 0
src/views/recordsRoom/qc/components/CaseQualityBox2.vue

@@ -0,0 +1,488 @@
+<template>
+  <div>
+
+    <div ref="box" class="box22" :style="{width: width ? width + 'px' : '100%'}">
+
+      <div class="score-box" :class="scoreLevel == '甲'? 'scoreLevel_1' : ( scoreLevel == '乙'?'scoreLevel_2': (scoreLevel == '丙'?'scoreLevel_3':'' ) ) ">
+        <div>病案评分<span class="score-f">{{ data.score  }}分</span></div>
+        <!-- <h2 class="score-dj">{{ scoreLevel }}</h2> -->
+      </div>
+      <el-scrollbar ref="scrollRef" class="scrollBox" :style="`height: ${scrollHeight};padding-bottom:60px;`">
+        <template v-for="(item, index) in tableData">
+          <div class="list-box box-card" :key="index" v-if="is_show && !item.appeal_status && item.is_appeal == 1">
+            <div class="list-score-tips-box">
+              <div class="list-left-score" :class=" item.level == 1 ? 'hover-1' : 'hover-2' ">
+                <div> {{ item.level == 1? '必改':'建议' }} </div>
+                <div>-{{ item.score }}</div>
+              </div>
+              <div class="list-right-tips">
+                <div><span class="font-size12 title-color">字段:</span><span class="font-size12">{{ item.category }}</span></div>
+                <div class="notice-box"><span class="font-size12 title-color">提示:</span><span class="font-size12">{{ item.notice }}</span></div>
+              </div>
+            </div>
+            <div class="list-basis-box">
+              <div class="list-basis-title" @click="clickListItem(index)">
+                <span>质控依据</span>
+                <span> >> </span>
+                <el-image class="typeImg" v-if="item.is_ai" :src="require('../../../../assets/images/jiqiren.png')" fit="contain">
+                </el-image>
+                <el-image v-else class="typeImg" :src="require('../../../../assets/images/kefu.png')" fit="contain">
+                </el-image>
+              </div>
+              <div class="list-basis-text">
+                <div class="list-basis-text-t" :class="item.show?'show':''">
+                  <div v-for="(yItem, yIndex) of item.basis" :key="yIndex" style="margin-bottom: 10px;">
+                    <div>
+                      <span class="span-index">{{ yIndex+1 }}</span>
+                      <span>
+                        <span v-for="(cItem, cIndex) of yItem" :key="cIndex" style="font-size: 12px;">{{ cItem }}</span>
+                      </span>
+                    </div>
+                  </div>
+                </div>
+                
+                <div class="list-basis-bottom-box">
+                  <div class="list-basis-bottom-tips">
+                    <el-tooltip class="appeal-status-box" effect="dark" :content="item.reject_content" placement="top">
+                      <el-button type="primary" class="appeal-status-1" v-if="item.appeal_status == 1">通过</el-button>
+                      <el-button type="danger" class="appeal-status-2"  v-if="item.appeal_status == 2">驳回</el-button>
+                    </el-tooltip>
+                  </div>
+                  <div class="list-basis-bottom-btn">
+                    <el-button type="primary" @click="clickAppeal( item,index,1 )">通过</el-button>
+                    <el-button @click="clickAppeal( item,index,2 )">驳回</el-button>
+                  </div>
+                </div>
+              </div>
+              
+            </div>
+            
+          </div>
+        </template>
+      </el-scrollbar>
+    </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
+        }
+      }
+    },
+    data(){
+      return {
+        tableData: [],
+        is_show: true,
+        appeal_document: '',
+        appeal_docter: ''
+      }
+    },
+    computed: {
+      scoreLevel() {
+        /**
+         * 甲>90分
+         * 乙75-90分
+         * 丙<75分
+         * */ 
+        let str
+        const { score } = this.data
+        console.log(score)
+        if (score > 90) {
+          str = '甲'
+        } else if (score < 75) {
+          str = '丙'
+        } else if ( score <= 90 && score >= 75 ) {
+          str = '乙'
+        }
+        return str
+      },
+      scrollHeight() {
+        // if (this.height) {
+        //   return (this.height - 214)+'px'
+        // } else {
+        //   return `calc(100vh - 314px)`
+        // }
+        return `100%`
+      }
+    },
+    created(){
+      this.getTableData();
+    },
+    methods: {
+      editSubmit(e){
+        let that = this;
+        console.log(e);
+        let tableData = this.tableData;
+        let index = e;
+        setTimeout( () =>{
+          tableData.splice(index,1);
+          that.tableData = tableData;
+        },2000)
+      },
+      getTableData(){
+        let data = this.data.data;
+        console.log(data)
+
+        for(let i=0; i<data.length; i++) {
+          data[i].show = true;
+        }
+        this.tableData = data;
+        this.appeal_document = this.data.appeal_document;
+        this.appeal_docter = this.data.appeal_docter;
+      },
+      onScroll(index) {
+        const el = this.$el.querySelector(`.category${index}`);
+        const node = el.parentNode.parentNode.parentNode
+        this.$refs["scrollRef"].wrap.scrollTop = node.offsetTop;
+      },
+      hightRight(hightKeyWord, bllb, zyh) {
+        this.$emit('hightRight',hightKeyWord,bllb,zyh)
+      },
+      clickListItem(idx){
+        let tableData = this.tableData;
+        tableData[idx].show = !tableData[idx].show;
+        this.is_show = false;
+        this.$nextTick( () =>{
+          this.tableData = tableData; 
+          this.is_show = true;
+        })
+        console.log(tableData)
+
+      },
+      // 点击通过、驳回按钮
+      clickAppeal(i,idx,type){
+        let that = this;
+        let item = i;
+        let index = idx;
+        let params = {
+          id: item.id, // 质控错误结果的数据ID
+          status: type,
+          case_document: that.appeal_document, //申诉科室名称
+          case_docter: that.appeal_docter,  // 申诉医生名称
+          index,
+        }
+        that.$emit('clickAppealBtn',params);
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-scrollbar__wrap {
+  overflow-x: hidden;
+}
+::v-deep .el-divider--horizontal {
+  margin: 10px 0;
+}
+
+
+.box22 {
+  padding: 16px;
+  background: #FFFFFF;
+  border-radius: 5px;
+  height: 100vh;
+  .score-box{
+    width: 100%;
+    margin-bottom: 16px;
+    padding: 30px 50px 30px 20px;
+    border-radius: 4px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    color: #fff;
+    div{
+      font-size: 20px;
+    }
+    .score-f{
+      padding-left: 20px;
+      font-size: 20px;
+    }
+    .score-dj,.score-f{
+      font-weight: bold;
+    }
+  }
+  .score-box.scoreLevel_1{
+    background: rgb(11, 133, 63);
+    background-image: url('../../../../assets/images/icon-jia.png');
+    background-repeat: no-repeat;
+    background-size: 60px 52px;
+    background-position:80% 50%;
+  }
+  .score-box.scoreLevel_2{
+    background: rgb(152, 112, 20);
+    background-image: url('../../../../assets/images/icon-yi.png');
+    background-repeat: no-repeat;
+    background-size: 60px 52px;
+    background-position:80% 50%;
+  }
+  .score-box.scoreLevel_3{
+    background: rgb(199, 54, 13);
+    background-image: url('../../../../assets/images/icon-bing.png');
+    background-repeat: no-repeat;
+    background-size: 60px 52px;
+    background-position:80% 50%;
+  }
+  .card-box {
+    // height: 175px;
+    // background: #FFFFFF;
+    // border: 1px solid #E2E2E2;
+    background: #f1f5fe;
+    padding: 10px;
+    box-sizing: border-box;
+    margin-bottom: 14px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .title {
+      font-size: 12px;
+      font-family: PingFang-SC-Bold, PingFang-SC;
+      // font-weight: bold;
+      color: #333333;
+      line-height: 22px;
+      // span {
+      //   margin-left: 7px;
+      // }
+    }
+    .card-icon-btn{
+      width: auto;
+      padding: 4px 8px;
+      border-radius: 4px;
+      background: rgb(254, 240, 240);
+      color: rgb(245, 128, 140);
+      border: 1px solid rgb(245, 128, 140);
+      font-size: 10px;
+    }
+    .title2 {
+      font-size: 14px;
+      font-family: PingFang-SC-Bold, PingFang-SC;
+      // font-weight: bold;
+      color: #333333;
+      line-height: 26px;
+      cursor: pointer;
+      span {
+        margin-left: 7px;
+      }
+    }
+    .error {
+      color: #D81E06;
+    }
+  }
+  .box-card {
+    margin-bottom: 10px;
+    position: relative;
+    background: rgb(241, 245, 254);
+    .category {
+      font-family: PingFangSC-Semibold, PingFang SC;
+      font-weight: bold;
+      color: #333333;
+    }
+    .koufen {
+      font-weight: bold;
+      vertical-align: middle;
+      margin-left: 16px;
+    }
+    .typeImg {
+      width: 53px;
+      height: 53px;
+      position: absolute;
+      top: 12px;
+      right: 12px;
+      z-index: 999;
+    }
+  }
+
+  .box-card .el-table ::v-deep tr{
+    background: transparent;
+  }
+  ::v-deep .el-table__row {
+    background: #185DA6 !important;
+    color: #FFFFFF;
+    .el-icon-arrow-right {
+      color: #FFFFFF;
+    }
+  }
+  ::v-deep .el-descriptions__body{
+    background: transparent;
+  }
+  ::v-deep .el-table tr{
+    background: transparent;
+  }
+  ::v-deep .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
+    background: #185DA6;
+  }
+  ::v-deep .el-table_1_column_1 {
+    border-radius: 8px 0 0 8px;
+  }
+  ::v-deep .el-table_1_column_2 {
+    border-radius: 0 8px 8px 0;
+    font-weight: bold;
+  }
+  ::v-deep .el-descriptions-item__label {
+    font-family: PingFang-SC-Bold, PingFang-SC;
+    font-weight: bold;
+    color: #333333;
+  }
+}
+.span-index{
+  width: 20px;
+  height: 20px;
+  line-height: 20px;
+  text-align: center;
+  display: inline-block;
+  border-radius: 50%;
+  background: #185DA6;
+  color: #fff;
+  margin-right: 10px;
+  margin-bottom: 4px;
+  font-size: 12px;
+}
+
+::v-deep .el-table .el-table__row td {
+  color: #fff;
+}
+::v-deep .el-tag{
+  height: auto;
+  line-height: 22px;
+}
+// =================   2024-07-27 新样式  ↓  ===============
+.font-size12{
+  font-size: 12px;
+}
+.list-box{
+  width: 100%;
+  padding: 10px 0;
+  .title-color{
+    color: rgba(27,100,176,1);
+    font-weight: bold;
+  }
+  .list-score-tips-box{
+    width: 100%;
+    display: flex;
+    .list-left-score{
+      width: 70px;
+      text-align: center;
+      font-size: 20px;
+      font-weight: 700;
+      position: relative;
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      padding: 10px 0;
+      &.hover-1{
+        background: rgb(254, 240, 240);
+        color: rgb(238, 14, 14);
+        border-right: 3px solid rgb(238, 14, 14);
+      }
+      &.hover-2{
+        background: rgb(236, 245, 255);
+        color: rgb(52, 140, 235);
+        border-right: 3px solid rgb(52, 140, 235);
+      }
+      &>div{
+        font-size: 20px;
+      }
+    }
+    .list-right-tips{
+      flex: 1;
+      font-size: 12px;
+      padding-left: 10px;
+      .notice-box{
+        margin-top: 8px;
+      }
+    }
+  }
+  .list-basis-box{
+    .list-basis-title{
+      padding: 10px 0 10px 10px;
+      position: relative;
+      &>span{
+        font-size: 12px;
+        color: rgba(27,100,176,1);
+        font-weight: bold;
+      }
+      .typeImg {
+        width: 34px;
+        height: 34px;
+        position: absolute;
+        top: 0;
+        right: 12px;
+        z-index: 999;
+      }
+      
+    }
+    .list-basis-text {
+      height: auto;
+      .list-basis-text-t{
+        height: 0;
+        overflow: hidden;
+        position: relative;
+        &.show{
+          height: auto;
+          padding: 10px 0 10px 10px;
+        }
+      }
+    }
+    .list-basis-bottom-box{
+      margin-top: 14px;
+      width: 100%;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      .list-basis-bottom-tips{
+        flex: 1;
+        &::v-deep .el-button{
+          padding: 0;
+          font-size: 12px;
+          width: 40px;
+          height: 40px;
+          border-radius: 50%;
+          &>span{
+            font-size: 12px;
+          }
+        }
+      }
+      .list-basis-bottom-btn{
+        width: auto;
+        &::v-deep .el-button{
+          padding: 6px 14px;
+        }
+        &::v-deep .el-button--primary,&::v-deep .el-button--primary:focus,&::v-deep .el-button--primary:hover{
+          background: #185DA6;
+          border-color: #185DA6;
+        }
+      }
+    }
+
+    
+
+  }
+}
+
+</style>

+ 326 - 0
src/views/recordsRoom/qc/components/CaseRecord2.vue

@@ -0,0 +1,326 @@
+<template>
+  <div class="bcjl">
+    <div class="title">{{ titleName }}</div>
+    <div v-if="data.type == 5" class="cont-title-item">{{ data.zc_time }}</div>
+    <div v-if="data.type == 6" class="cont-title-item">{{ data.zr_time }}</div>
+    <div v-if="data.type != 5 && data.type != 6" class="info-header mb40">
+      <el-row :gutter="32">
+        <el-col :span="6">
+          <span class="text-blod">科室:</span>
+          <span>{{ data.keshi }}</span>
+        </el-col>
+        <el-col :span="6">
+          <span class="text-blod">姓名:</span>
+          <span>{{ data.brxm }}</span>
+        </el-col>
+        <el-col :span="6">
+          <span class="text-blod">床号:</span>
+          <span>{{ data.ch }}</span>
+        </el-col>
+        <el-col :span="6">
+          <span class="text-blod">住院号:</span>
+          <span>{{ data.brbh }}</span>
+        </el-col>
+      </el-row>
+    </div>
+    <div v-if="data.type == 5" class="header-main">
+      {{ data.user_info }}
+    </div>
+    <div v-if="data.type == 6" class="header-main">
+      {{ data.zrjl }}
+    </div>
+    <div class="info-content">
+      <el-row :gutter="32">
+        <el-col :span="24" class="mb40">
+          <el-row :gutter="32">
+            <el-col :span="10">
+              <span class="date">{{ data ? data.date : '' }}</span>
+            </el-col>
+            <el-col :span="8">
+              <span class="content-title">{{ data ? data.title : '' }}</span>
+            </el-col>
+          </el-row>
+        </el-col>
+      </el-row>
+      <el-row :gutter="32">
+        <!-- type 1为普通病程记录 2. 术前 3术后 4.查房 -->
+        <template v-if="data.type === 1">
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">病历特点:</span>
+            <div v-for="(item, index) of data.BLTD" :key="`bltd1${index}`" class="pl76 mb20">{{ item.trim() }}</div>
+          </el-col>
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">初步诊断:</span>
+            <div v-for="(item, index) of data.CBZD" :key="`cbzd1${index}`" class="pl76 mb20">{{ item.trim() }}</div>
+          </el-col>
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">诊断依据:</span>
+            <div v-for="(item, index) of data.ZDYJ" :key="`zdyj1${index}`" class="pl76 mb20">{{ item.trim() }}</div>
+          </el-col>
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">鉴别诊断:</span>
+            <div v-for="(item, index) of data.JBZD" :key="`jbzd1${index}`" class="pl76 mb20">{{ item.trim() }}</div>
+          </el-col>
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">诊疗计划:</span>
+            <div v-for="(item, index) of data.ZLJH" :key="`zljh1${index}`" class="pl76 mb20">{{ item.trim() }}</div>
+          </el-col>
+        </template>
+        <!-- type 2术前 -->
+        <template v-if="[2].includes(data.type)">
+          <el-col v-if="data.SSZC" :span="24" class="mb10">
+            <div class="text-blod">
+              术前讨论由
+              <span style="padding: 0 20px; border-bottom: 1px solid #000">{{ data.SSZC }}</span>
+              医师主持,讨论结论及术前小结记录如下:
+            </div>
+          </el-col>
+          <el-col v-if="data.JYBQ" :span="24" class="mb10">
+            <span class="text-blod">简要病情:</span>
+            <div v-for="(item, index) of data.JYBQ" :key="`jybq2${index}`" class="pl76 mb20">{{ item }}</div>
+          </el-col>
+          <el-col v-if="data.SSZZ" :span="24" class="mb10">
+            <span class="text-blod">术前诊断:</span>
+            <div v-for="(item, index) of data.SSZZ" :key="`sszz2${index}`" class="pl76 mb20">{{ item }}</div>
+          </el-col>
+          <el-col v-if="data.SZZY" :span="24" class="mb10">
+            <span class="text-blod">手术指征:</span>
+            <div v-for="(item, index) of data.SZZY" :key="`szzz2${index}`" class="pl76 mb20">{{ item }}</div>
+          </el-col>
+          <el-col v-if="data.NSSS" :span="24" class="mb10">
+            <span class="text-blod">拟施手术名称和方式:</span>
+            <div v-for="(item, index) of data.NSSS" :key="`nsss2${index}`" class="pl76 mb20">{{ item }}</div>
+          </el-col>
+          <el-col v-if="data.NSMZ" :span="24" class="mb10">
+            <span class="text-blod">拟施麻醉方式:</span>
+            <div v-for="(item, index) of data.NSMZ" :key="`nsmz2${index}`" class="pl76 mb20">{{ item }}</div>
+          </el-col>
+          <el-col v-if="data.OTHER" :span="24" class="mb10">
+            <span class="text-blod">术前准备:</span>
+            <div v-for="(item, index) of data.OTHER" :key="`other2${index}`" class="pl76 mb20">{{ item }}</div>
+          </el-col>
+          <el-col v-if="data.SZZY" :span="24" class="mb10">
+            <span class="text-blod">术中注意事项:</span>
+            <div v-for="(item, index) of data.SZZY" :key="`szzz2${index}`" class="pl76 mb20">{{ item }}</div>
+          </el-col>
+          <el-col v-if="data.SHCL" :span="24" class="mb10">
+            <span class="text-blod">术后处理:</span>
+            <div v-for="(item, index) of data.SHCL" :key="`shcl2${index}`" class="pl76 mb20">{{ item }}</div>
+          </el-col>
+          <el-col v-if="data.desc" :span="24" class="mb10">
+            <span class="text-blod">其他描述:</span>
+            <div v-for="(item, index) of data.desc" :key="`desc2${index}`" class="pl76 mb20">{{ item }}</div>
+          </el-col>
+        </template>
+        <!-- type 3术后查房 -->
+        <template v-if="[3].includes(data.type)">
+          <el-col v-if="data.desc" :span="24" class="mb10">
+            <div v-for="(item, index) of data.desc" :key="`bltd3${index}`" class="mb20">{{ item.trim() }}</div>
+          </el-col>
+        </template>
+        <!-- type 4术后查房 -->
+        <template v-if="[4].includes(data.type)">
+          <el-col v-if="data.desc" :span="24" class="mb10">
+            <div v-for="(item, index) of data.desc" :key="`bltd3${index}`" class="mb20">{{ item.trim() }}</div>
+          </el-col>
+        </template>
+        <!-- type 5转出记录 -->
+        <template v-if="data.type === 5">
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">入院情况:</span>
+            <div class="pl76 mb20">{{ data.ryqk }}</div>
+          </el-col>
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">入院诊断:</span>
+            <div class="pl76 mb20">{{ data.ryzd }}</div>
+          </el-col>
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">诊疗过程:</span>
+            <div class="pl76 mb20">{{ data.zljg }}</div>
+          </el-col>
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">目前情况:</span>
+            <div class="pl76 mb20">{{ data.mqqk }}</div>
+          </el-col>
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">目前诊断:</span>
+            <div class="pl76 mb20">
+              <div v-for="(item, index) of data.mqzd" :key="`bltd3${index}`" class="mb20">{{ item.trim() }}</div>
+            </div>
+          </el-col>
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">转科室及注意事项:</span>
+            <div class="pl76 mb20">
+              <div class="pl76 mb20">{{ data.zysx }}</div>
+            </div>
+          </el-col>
+        </template>
+        <!-- type 6转入记录 -->
+        <template v-if="data.type === 6">
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">目前情况:</span>
+            <div class="pl76 mb20">{{ data.mqqk }}</div>
+          </el-col>
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">目前诊断:</span>
+            <div class="pl76 mb20">
+              <div v-for="(item, index) of data.mqzd" :key="`bltd3${index}`" class="mb20">{{ item }}</div>
+            </div>
+          </el-col>
+          <el-col :span="24" class="mb10">
+            <span class="text-blod">转入诊疗计划:</span>
+            <div class="pl76 mb20">
+              <div v-for="(item, index) of data.zljh" :key="`zrjh${index}`" class="mb20">{{ item }}</div>
+            </div>
+          </el-col>
+        </template>
+        <el-col v-if="data.type === 5 || data.type === 6" :span="24" class="mt80">
+          <div class="fr" style="margin-right: 100px">
+            <span class="text-blod">上级医师审核日期:</span>
+            <span>{{ data.shrq }}</span>
+          </div>
+        </el-col>
+        <el-col :span="24" class="mt30">
+          <div class="fr" style="margin-right: 100px">
+            <span class="text-blod">医生签名:</span>
+            <span>{{ data.doctor_name }}</span>
+            <!-- 接口暂无字段 -->
+          </div>
+        </el-col>
+      </el-row>
+      <div class="bottom-time bottom-time-top">
+        <div class="bottom-time-list">
+          <span class="bottom-time-bold">创建时间:</span>
+          <span v-if="data.CJSJ">{{ data.CJSJ }}</span>
+        </div>
+        <div class="bottom-time-list">
+          <span class="bottom-time-bold">修改时间:</span>
+          <span v-if="data.ZXSJ">{{ data.ZXSJ }}</span>
+        </div>
+      </div>
+      <div class="bottom-time bottom-time-botom">
+        <div class="bottom-time-list">
+          <span class="bottom-time-bold">完成时间:</span>
+          <span v-if="data.WCSJ">{{ data.WCSJ }}</span>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {}
+      }
+    }
+  },
+  computed: {
+    titleName() {
+      let str
+      const type = this.data.type
+      if (type === 1) {
+        str = '首次病程记录'
+      } else if (type === 2) {
+        str = '术前小结及术前讨论结论记录'
+      } else if (type === 3) {
+        str = '术后首次病程记录'
+      } else if (type === 4) {
+        str = '查房记录'
+      } else if (type === 5) {
+        str = '转出记录'
+      } else if (type === 6) {
+        str = '转入记录'
+      }
+      return str
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.bcjl {
+  margin: 0 30px;
+  line-height: 1.5;
+  padding-bottom: 100px;
+  .title {
+    font-size: 24px;
+    font-weight: bold;
+    color: #2c3240;
+    text-align: center;
+    margin: 20px;
+  }
+  .mb10 {
+    margin-bottom: 10px;
+  }
+  .mb20 {
+    margin-bottom: 20px;
+  }
+  .mb40 {
+    margin-bottom: 40px;
+  }
+  .mt80 {
+    margin-top: 80px;
+  }
+  .mt30 {
+    margin-top: 30px;
+  }
+  .pl76 {
+    padding-left: 76px;
+  }
+  .fr {
+    float: right;
+  }
+  .text-blod {
+    font-weight: bold;
+  }
+  .info-header {
+    padding: 20px 0;
+    border-bottom: 1.5px solid #e2dfdf;
+  }
+  .header-main {
+    padding: 20px 0;
+  }
+  .info-content {
+    overflow: hidden;
+    .date {
+      font-weight: 600;
+    }
+    .content-title {
+      font-weight: 600;
+    }
+  }
+}
+
+.bottom-time-top {
+  margin-top: 30px;
+}
+.bottom-time-botom {
+  margin-bottom: 30px;
+}
+.bottom-time {
+  width: 100%;
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  margin-bottom: 10px;
+  .bottom-time-bold {
+    font-weight: bold;
+  }
+  .bottom-time-list {
+    width: 50%;
+  }
+}
+.cont-title-item {
+  width: 100%;
+  margin: 0 auto;
+  display: flex;
+  justify-content: flex-end;
+  font-size: 16px;
+  padding: 30px 0 10px 0;
+  font-weight: 600;
+}
+</style>

+ 388 - 0
src/views/recordsRoom/qc/components/CreateControlResultDialog.vue

@@ -0,0 +1,388 @@
+<template>
+  <div>
+    <el-dialog
+      title="添加质控信息"
+      :visible.sync="data.bSwitch"
+      :close-on-click-modal="false"
+      width="900px"
+      top="7vh">
+      <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" label-suffix=":">
+        <el-row :gutter="0">
+          <el-col :span="12">
+            <el-form-item label="质控模板" prop="rule_id">
+              <el-select v-model="ruleForm.rule_id" clearable filterable @change="handleRuleIdChange" placeholder="请选择">
+                <el-option v-for="item of selectData.rule" :key="item.id" :label="item.category" :value="item.id"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="0">
+          <el-col :span="8">
+            <el-form-item label="住院号码" prop="AAA28">
+              <el-input v-model="ruleForm.AAA28" disabled placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="质控人" prop="ZKR">
+              <el-input v-model="ruleForm.ZKR" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="质控科室" prop="ZKKS">
+              <el-select v-model="ruleForm.ZKKS" filterable clearable placeholder="请选择" style="width: 100%;">
+                <el-option v-for="item of deportments" :key="item.id" :label="item.name" :value="item.name" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="接收人" prop="JSR">
+              <el-input v-model="ruleForm.JSR" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="接收科室" prop="JSKS">
+              <el-input v-model="ruleForm.JSKS" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="状态" prop="level">
+              <el-select v-model="ruleForm.level" placeholder="请选择">
+                <el-option v-for="item of selectData.level" :key="item.id" :label="item.name" :value="item.id"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="扣分" prop="score">
+              <el-input-number v-model="ruleForm.score" controls-position="right" :min="0" :max="100" placeholder="请输入" style="width: 100%;"></el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="整改级别" prop="ZGJB">
+              <el-select v-model="ruleForm.ZGJB" placeholder="请选择">
+                <el-option v-for="item of selectData.zgjb" :key="item" :label="item" :value="item"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="整改期限" prop="ZGQX">
+              <el-date-picker
+                v-model="ruleForm.ZGQX"
+                type="datetime"
+                value-format="timestamp"
+                placeholder="请选择"
+                :picker-options="{ disabledDate: time => time.getTime() < Date.now() }"
+                style="width: 100%;"
+                >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="质控分类" prop="category">
+              <el-autocomplete
+                class="inline-input"
+                v-model="ruleForm.category"
+                :fetch-suggestions="querySearchCategory"
+                placeholder="请输入"
+                @select="handleSelectCategory"
+              >
+                <template slot-scope="{ item }">
+                  <div class="name">{{ item }}</div>
+                </template>
+              </el-autocomplete>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="质控项目" prop="title">
+              <el-autocomplete
+                class="inline-input"
+                v-model="ruleForm.title"
+                :fetch-suggestions="querySearchTitle"
+                placeholder="请输入"
+                @select="handleSelectTitle"
+              >
+                <template slot-scope="{ item }">
+                  <div class="name">{{ item }}</div>
+                </template>
+              </el-autocomplete>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="质控类型" prop="type">
+              <el-autocomplete
+                class="inline-input"
+                v-model="ruleForm.type"
+                :fetch-suggestions="querySearchType"
+                placeholder="请输入"
+                @select="handleSelectType"
+              >
+                <template slot-scope="{ item }">
+                  <div class="name">{{ item }}</div>
+                </template>
+              </el-autocomplete>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="0">
+          <el-col :span="24">
+            <el-form-item label="质控内容" prop="basis">
+              <el-input type="textarea" v-model="ruleForm.basis" :autosize="{ minRows: 4 }" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="错误描述" prop="notice">
+              <el-input type="textarea" v-model="ruleForm.notice" :autosize="{ minRows: 4 }" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="onSubmit" :loading="loading">发送整改通知</el-button>
+        <el-button @click="data.bSwitch = false">关 闭</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getRuleData, getBlInfo, addCaseQuality } from '@/api/qc'
+import { getDeportmentList } from '@/api/admin'
+
+export default {
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {
+          bSwitch: false,
+          text: '',
+          blbh: ''
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      loading: false,
+      selectData: {
+        rule: [],
+        category: [],
+        title: [],
+        type: [],
+        level: [],
+        zgjb: []
+      },
+      deportments: [],
+      ruleForm: {
+        AAA28: '',
+        ZYH: '',
+        ZKR: '',
+        ZKKS: '',
+        JSR: '',
+        JSKS: '',
+        ZGJB: '',
+        category: '',
+        title: '',
+        rule_id: '',
+        type: '',
+        notice: '',
+        basis: '',
+        level: '',
+        ZGQX: '',
+        score: undefined
+      },
+      rules: {
+        AAA28: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ],
+        ZKR: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ],
+        ZKKS: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ],
+        JSR: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ],
+        JSKS: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ],
+        ZGJB: [
+          { required: true, message: '请选择', trigger: 'blur' }
+        ],
+        category: [
+          { required: true, message: '请选择', trigger: 'change' }
+        ],
+        title: [
+          { required: true, message: '请选择', trigger: 'change' }
+        ],
+        notice: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ],
+        basis: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ],
+        score: [
+          { required: true, message: '请输入', trigger: 'blur' }
+        ],
+        level: [
+          { required: true, message: '请选择', trigger: 'blur' }
+        ],
+      }
+    }
+  },
+  mounted() {
+    this.getRuleData()
+    this.getBlInfo()
+    this.getDeportmentList()
+    this.$set(this.ruleForm, 'basis', this.data.text)
+  },
+  methods: {
+    // 质控分类
+    querySearchCategory(queryString, cb) {
+      var categorys = this.selectData.category;
+      var results = queryString ? categorys.filter(this.createFilterCategory(queryString)) : categorys;
+      // 调用 callback 返回建议列表的数据
+      cb(results);
+    },
+    createFilterCategory(queryString) {
+      return (restaurant) => {
+        return (restaurant.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
+      };
+    },
+    handleSelectCategory(item) {
+      this.$set(this.ruleForm, 'category', item)
+    },
+    // 质控项目
+    querySearchTitle(queryString, cb) {
+      var titles = this.selectData.title;
+      var results = queryString ? titles.filter(this.createFilterTitle(queryString)) : titles;
+      // 调用 callback 返回建议列表的数据
+      cb(results);
+    },
+    createFilterTitle(queryString) {
+      return (restaurant) => {
+        return (restaurant.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
+      };
+    },
+    handleSelectTitle(item) {
+      this.$set(this.ruleForm, 'title', item)
+    },
+    // 质控类型
+    querySearchType(queryString, cb) {
+      var types = this.selectData.type;
+      var results = queryString ? types.filter(this.createFilterType(queryString)) : types;
+      // 调用 callback 返回建议列表的数据
+      cb(results);
+    },
+    createFilterType(queryString) {
+      return (restaurant) => {
+        return (restaurant.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
+      };
+    },
+    handleSelectType(item) {
+      this.$set(this.ruleForm, 'type', item)
+    },
+    // 获取规则数据
+    getRuleData() {
+      getRuleData().then(res => {
+        this.$set(this, 'selectData', res.p)
+      })
+    },
+    // 获取病历相关信息
+    getBlInfo() {
+      getBlInfo({ blbh: this.data.blbh }).then(res => {
+        const { AAA28, JSKS, JSR, ZYH } = res.p
+        this.$set(this.ruleForm, 'AAA28', AAA28)
+        this.$set(this.ruleForm, 'ZYH', ZYH)
+        this.$set(this.ruleForm, 'JSKS', JSKS)
+        this.$set(this.ruleForm, 'JSR', JSR)
+      })
+    },
+    // 质控模板变化
+    handleRuleIdChange(val) {
+      if (val) {
+        const item = this.selectData.rule.filter(item => item.id)[0]
+        const { category, level, notice, score, type, title } = item
+        this.$set(this.ruleForm, 'category', category)
+        this.$set(this.ruleForm, 'level', level)
+        this.$set(this.ruleForm, 'notice', notice)
+        this.$set(this.ruleForm, 'score', score)
+        this.$set(this.ruleForm, 'type', type)
+        this.$set(this.ruleForm, 'title', title)
+      }
+    },
+    // 部门
+    getDeportmentList() {
+      getDeportmentList().then(res => {
+        const { p } = res
+        if (Object.keys(p.list).length) {
+          for (const key in p.list) {
+            this.deportments.push({
+              id: key,
+              name: p.list[key]
+            })
+          }
+        }
+      })
+    },
+    // 提交
+    onSubmit() {
+      this.$refs['ruleForm'].validate((valid) => {
+        if (valid) {
+          const {
+            ZYH,
+            ZKR,
+            ZKKS,
+            JSR,
+            JSKS,
+            ZGJB,
+            category,
+            title,
+            rule_id,
+            type,
+            notice,
+            basis,
+            level,
+            ZGQX,
+            score
+          } = this.ruleForm
+          const params = {
+            ZYH,
+            ZKR,
+            ZKKS,
+            JSR,
+            JSKS,
+            ZGJB,
+            category,
+            title,
+            rule_id,
+            type,
+            notice,
+            basis,
+            level,
+            ZGQX: ZGQX/1000,
+            score
+          }
+          this.loading=true
+          addCaseQuality(params).then(res => {
+            const { m } = res
+            this.$message.success(m || '成功')
+            this.data.bSwitch = false
+            this.$emit('refresh')
+          }).finally(res => {
+            this.loading=false
+          })
+        } else {
+          return false;
+        }
+      });
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.demo-ruleForm {
+ width: 95%;
+}
+</style>

+ 82 - 0
src/views/recordsRoom/qc/components/DeathText.vue

@@ -0,0 +1,82 @@
+<template>
+  <div class="no_format_text">
+    <div v-for="(item, index) in dataObjArr" :key="index" class="death-bottom">
+      <div class="name">{{ item.title }}</div>
+      <div class="content" v-html="item.HJNR" />
+      <div class="bottom-time bottom-time-top">
+        <div class="bottom-time-list">
+          <span class="bottom-time-bold">医生签名:</span>
+          <span>{{ item.doctor_name }}</span>
+        </div>
+      </div>
+      <div class="bottom-time bottom-time-top">
+        <div v-if="item.CJSJ" class="bottom-time-list">
+          <span class="bottom-time-bold">创建时间:</span>
+          <span>{{ item.CJSJ }}</span>
+        </div>
+        <div v-if="item.ZXSJ" class="bottom-time-list">
+          <span class="bottom-time-bold">修改时间:</span>
+          <span>{{ item.ZXSJ }}</span>
+        </div>
+      </div>
+      <div v-if="item.WCSJ" class="bottom-time bottom-time-botom">
+        <div class="bottom-time-list">
+          <span class="bottom-time-bold">完成时间:</span>
+          <span>{{ item.WCSJ }}</span>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    dataObjArr: {
+      type: Array,
+      default() {
+        return []
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.no_format_text {
+  line-height: 1.5;
+  padding-bottom: 100px;
+  .name {
+    font-size: 24px;
+    font-weight: bold;
+    color: #2c3240;
+    text-align: center;
+    margin: 20px;
+  }
+  .content {
+    padding: 20px;
+  }
+}
+.bottom-time-top {
+  margin-top: 30px;
+}
+.bottom-time-botom {
+  margin-bottom: 30px;
+}
+.bottom-time {
+  width: 100%;
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  margin-bottom: 10px;
+  .bottom-time-bold {
+    font-weight: bold;
+  }
+  .bottom-time-list {
+    width: 50%;
+  }
+}
+.death-bottom {
+  margin-bottom: 60px;
+}
+</style>

+ 89 - 0
src/views/recordsRoom/qc/components/NoFormatText.vue

@@ -0,0 +1,89 @@
+<template>
+  <div class="no_format_text">
+    <div class="name">{{ name }}</div>
+    <div class="content" v-html="text" />
+    <div class="bottom-time bottom-time-top">
+      <div class="bottom-time-list">
+        <span class="bottom-time-bold">医生签名:</span>
+        <span>{{ data.doctor_name }}</span>
+      </div>
+    </div>
+    <div class="bottom-time bottom-time-top">
+      <div v-if="data.CJSJ" class="bottom-time-list">
+        <span class="bottom-time-bold">创建时间:</span>
+        <span>{{ data.CJSJ }}</span>
+      </div>
+      <div v-if="data.ZXSJ" class="bottom-time-list">
+        <span class="bottom-time-bold">修改时间:</span>
+        <span>{{ data.ZXSJ }}</span>
+      </div>
+    </div>
+    <div v-if="data.WCSJ" class="bottom-time bottom-time-botom">
+      <div class="bottom-time-list">
+        <span class="bottom-time-bold">完成时间:</span>
+        <span>{{ data.WCSJ }}</span>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    text: {
+      type: String,
+      default() {
+        return ''
+      }
+    },
+    name: {
+      type: String,
+      default() {
+        return ''
+      }
+    },
+    data: {
+      type: Object,
+      default() {
+        return {}
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.no_format_text {
+  line-height: 1.5;
+  padding-bottom: 100px;
+  .name {
+    font-size: 24px;
+    font-weight: bold;
+    color: #2c3240;
+    text-align: center;
+    margin: 20px;
+  }
+  .content {
+    padding: 20px;
+  }
+}
+.bottom-time-top {
+  margin-top: 30px;
+}
+.bottom-time-botom {
+  margin-bottom: 30px;
+}
+.bottom-time {
+  width: 100%;
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  margin-bottom: 10px;
+  .bottom-time-bold {
+    font-weight: bold;
+  }
+  .bottom-time-list {
+    width: 50%;
+  }
+}
+</style>

+ 200 - 0
src/views/recordsRoom/qc/components/OutHospitalRecord.vue

@@ -0,0 +1,200 @@
+<template>
+  <div class="bcjl">
+    <div class="title">出院记录</div>
+    <div class="info-header mb40">
+      <el-row :gutter="32">
+        <el-col :span="6">
+          <span class="text-blod">科室:</span>
+          <span v-if="data.department">{{ data.department }}</span>
+          <!-- 接口暂无字段 -->
+        </el-col>
+        <el-col :span="6">
+          <span class="text-blod">姓名:</span>
+          <span v-if="data.name">{{ data.name.value }}</span>
+          <!-- 接口暂无字段 -->
+        </el-col>
+        <el-col :span="6">
+          <span class="text-blod">床号:</span>
+          <span />
+          <!-- 接口暂无字段 -->
+        </el-col>
+        <el-col :span="6">
+          <span v-if="data.hospital_no" class="text-blod">住院号:</span>
+          <span>{{ data.hospital_no.value }}</span>
+          <!-- 接口暂无字段 -->
+        </el-col>
+      </el-row>
+    </div>
+    <div class="info-content">
+      <div class="user-info mb30">
+        <el-row :gutter="32">
+          <el-col :span="12">
+            <span>姓名:</span>
+            <span v-if="data.name">{{ data.name.value }}</span>
+          </el-col>
+          <el-col :span="12">
+            <span>入院日期:</span>
+            <span v-if="data.ry_time">{{ data.ry_time.value }}</span>
+          </el-col>
+          <el-col :span="12">
+            <span>性别:</span>
+            <span v-if="data.sex">{{ data.sex.value }}</span>
+          </el-col>
+          <el-col :span="12">
+            <span>出院日期:</span>
+            <span v-if="data.cy_time">{{ data.cy_time.value }}</span>
+          </el-col>
+          <el-col :span="12">
+            <span>年龄:</span>
+            <span v-if="data.age">{{ data.age.value }}</span>
+          </el-col>
+          <el-col :span="12">
+            <span>住院天数:</span>
+            <span v-if="data.zyts">{{ data.zyts.value }}</span>
+          </el-col>
+        </el-row>
+      </div>
+      <el-row :gutter="32">
+        <el-col :span="24" class="mb10">
+          <span class="text-blod">入院情况:</span>
+          <div v-if="data.ryqk" class="pl76 mb20">{{ data.ryqk.value }}</div>
+        </el-col>
+        <el-col :span="24" class="mb10">
+          <span class="text-blod">初步诊断:</span>
+          <div v-if="data.cbzd" class="pl76 mb20">{{ data.cbzd.value }}</div>
+        </el-col>
+        <el-col :span="24" class="mb10">
+          <span class="text-blod">诊疗经过:</span>
+          <div v-if="data.zljg" class="pl76 mb20">{{ data.zljg.value }}</div>
+        </el-col>
+        <el-col :span="24" class="mb10">
+          <span class="text-blod">出院情况:</span>
+          <div v-if="data.cyqk" class="pl76 mb20">{{ data.cyqk.value }}</div>
+        </el-col>
+        <el-col :span="24" class="mb10">
+          <span class="text-blod">出院诊断:</span>
+          <div v-if="data.cyzd" class="pl76 mb20">{{ data.cyzd.value }}</div>
+        </el-col>
+        <el-col :span="24" class="mb200">
+          <span class="text-blod">出院医嘱:</span>
+          <div v-if="data.cyyz" class="pl76 mb20">{{ data.cyyz.value }}</div>
+        </el-col>
+        <el-col :span="24" class="mb40">
+          <div class="text_right">
+            医生签名:
+            <span v-if="data.doctor_name">{{ data.doctor_name }}</span>
+          <!-- 接口暂无字段 -->
+          </div>
+        </el-col>
+      </el-row>
+      <div class="admrec-bottom-time">
+        <div class="admrec-bottom-time-list">
+          <span class="text-blod">创建时间:</span>
+          <span v-if="data.CJSJ">{{ data.CJSJ }}</span>
+        </div>
+        <div class="admrec-bottom-time-list">
+          <span class="text-blod">修改时间:</span>
+          <span v-if="data.ZXSJ">{{ data.ZXSJ }}</span>
+        </div>
+      </div>
+      <div class="admrec-bottom-time">
+        <div class="admrec-bottom-time-list">
+          <span class="text-blod">完成时间:</span>
+          <span v-if="data.WCSJ">{{ data.WCSJ }}</span>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {
+          name: {},
+          ry_time: {},
+          sex: {},
+          age: {},
+          cy_time: {},
+          zyts: {},
+          ryqk: {},
+          cbzd: {},
+          zljg: {},
+          cyqk: {},
+          cyzd: {},
+          cyyz: {}
+        }
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.bcjl {
+  margin: 0 30px;
+  line-height: 1.5;
+  padding-bottom: 100px;
+  .title {
+    font-size: 24px;
+    font-weight: bold;
+    color: #2c3240;
+    text-align: center;
+    margin: 20px;
+  }
+  .mb10 {
+    margin-bottom: 10px;
+  }
+  .mb20 {
+    margin-bottom: 20px;
+  }
+  .mb40 {
+    margin-bottom: 40px;
+  }
+  .mt80 {
+    margin-top: 80px;
+  }
+  .mb200 {
+    margin-bottom: 200px;
+  }
+  .pl76 {
+    padding-left: 76px;
+  }
+  .fr {
+    float: right;
+  }
+  .text-blod {
+    font-weight: bold;
+  }
+  .text_right {
+    text-align: right;
+  }
+  .info-header {
+    padding: 20px 0;
+    border-bottom: 1.5px solid #e2dfdf;
+  }
+  .info-content {
+    overflow: hidden;
+    .user-info {
+      width: 800px;
+      margin: 0 auto;
+      line-height: 32px;
+    }
+  }
+}
+  .admrec-bottom-time{
+      width: 100%;
+      display: flex;
+      justify-content: flex-start;
+      align-items: center;
+      margin-bottom: 20px;
+      .admrec-bottom-time-list{
+        width: 50%;
+      }
+
+  }
+
+</style>

+ 179 - 0
src/views/recordsRoom/qc/components/SearchBox.vue

@@ -0,0 +1,179 @@
+<template>
+  <div class="app-container">
+    <el-form :inline="true" :model="data" class="demo-form-inline">
+      <el-form-item label="">
+        <el-select v-model="data.level" filterable clearable placeholder="整改级别">
+          <el-option v-for="item of levels" :key="item.id" :label="item.name" :value="item.id" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="">
+        <el-input v-model="data.ZKYS" placeholder="质控医师" />
+      </el-form-item>
+      <el-form-item label="">
+        <el-select v-model="data.BLZT" filterable clearable placeholder="病历状态">
+          <el-option v-for="item of BLZTs" :key="item.id" :label="item.name" :value="item.id" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="">
+        <el-select v-model="data.BLDJ" filterable clearable placeholder="病历等级">
+          <el-option v-for="item of BLDJs" :key="item.id" :label="item.name" :value="item.id" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="">
+        <el-input v-model="data.AAA28" placeholder="住院号码" />
+      </el-form-item>
+      <el-form-item label="">
+        <el-input v-model="data.AAA01" placeholder="姓名" />
+      </el-form-item>
+      <el-form-item label="">
+        <el-select v-model="data.AAC11N" filterable clearable placeholder="出院科室">
+          <el-option v-for="item of deportments" :key="item.dep_id" :label="item.name" :value="item.dep_id" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="">
+        <el-date-picker
+          v-model="data.AAB01_START"
+          type="date"
+          :picker-options="pickerOptions1"
+          placeholder="入院开始日期"
+        />
+      </el-form-item>
+      <el-form-item label="">
+        <el-date-picker
+          v-model="data.AAB01_END"
+          type="date"
+          :picker-options="pickerOptions2"
+          placeholder="入院结束日期"
+        />
+      </el-form-item>
+      <el-form-item label="">
+        <el-date-picker
+          v-model="data.AAC01_START"
+          type="date"
+          :picker-options="pickerOptions1"
+          placeholder="出院开始日期"
+        />
+      </el-form-item>
+      <el-form-item label="">
+        <el-date-picker
+          v-model="data.AAC01_END"
+          type="date"
+          :picker-options="pickerOptions2"
+          placeholder="出院结束日期"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="onSubmit">查询</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button @click="onReset">重置</el-button>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+import { getDeportmentList } from '@/api/admin'
+export default {
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {
+          BLZT: '',
+          level: '',
+          ZKYS: '',
+          BLDJ: '',
+          AAA28: '',
+          AAA01: '',
+          AAC11N: '',
+          AAB01_START: '',
+          AAB01_END: '',
+          AAC01_START: '',
+          AAC01_END: ''
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      pickerOptions1: {
+        disabledDate: (time) => {
+          if (this.data.end_time) {
+            return time.getTime() > new Date(this.data.end_time).getTime()
+          } else {
+            return time.getTime() > Date.now()
+          }
+        }
+      },
+      pickerOptions2: {
+        disabledDate: (time) => {
+          if (this.data.start_time) {
+            return time.getTime() < new Date(this.data.start_time).getTime()
+          } else {
+            return time.getTime() > Date.now()
+          }
+        }
+      },
+      deportments: [],
+      levels: [
+        {
+          id: 1,
+          name: '强制'
+        },
+        {
+          id: 2,
+          name: '建议'
+        }
+      ],
+      BLDJs: [
+        {
+          id: 1,
+          name: '甲'
+        },
+        {
+          id: 2,
+          name: '乙'
+        },
+        {
+          id: 3,
+          name: '丙'
+        }
+      ],
+      BLZTs: [
+        {
+          id: 0,
+          name: '未改'
+        },
+        {
+          id: 2,
+          name: '已改'
+        }
+      ]
+    }
+  },
+  created() {
+    this.getDeportmentList()
+  },
+  methods: {
+    onSubmit() {
+      this.$emit('search')
+    },
+    onReset() {
+      this.$emit('reset')
+    },
+    getDeportmentList() {
+      this.$axios.get('/user/depDropDown').then(res => {
+        const { data } = res
+        this.deportments=data;
+      }).catch(error => {
+        console.log(error)
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 280 - 0
src/views/recordsRoom/qc/components/ShouShuRecord1.vue

@@ -0,0 +1,280 @@
+<template>
+  <div class="box">
+    <div class="title">
+      {{ data.hospital }}
+      <br>
+      手术风险评估表
+    </div>
+    <div class="table">
+      <table ref="tables">
+        <tr>
+          <td class="table-label">科室</td>
+          <td class="table-value">{{ data.keshi }}</td>
+          <td class="table-label">患者姓名</td>
+          <td class="table-value">{{ data.brxm }}</td>
+          <td class="table-label">性别</td>
+          <td class="table-value">{{ data.sex }}</td>
+          <td class="table-label">年龄</td>
+          <td class="table-value">{{ data.age }}</td>
+        </tr>
+        <tr>
+          <td class="table-label">住院号</td>
+          <td class="table-value">{{ data.brbh }}</td>
+          <td class="table-label">术者</td>
+          <td class="table-value" colspan="2">{{ data.sz }}</td>
+          <td class="table-label">手术日期</td>
+          <td class="table-value" colspan="2">{{ data.ssrq }}</td>
+        </tr>
+        <tr>
+          <td class="table-label" rowspan="4">手术切口清洁程度</td>
+          <td class="table-value" colspan="2">
+            Ⅰ类切口
+            <br>
+            (清洁手术)
+          </td>
+          <td class="table-value text_left pd16" colspan="4">{{ data.ssqk[0].desc }}</td>
+          <td class="table-value">{{ data.ssqk[0].jk }}</td>
+        </tr>
+        <tr>
+          <td class="table-value" colspan="2">
+            Ⅱ类切口
+            <br>
+            (清洁-污染手术)
+          </td>
+          <td class="table-value text_left pd16" colspan="4">
+            {{ data.ssqk[1].desc }}
+          </td>
+          <td class="table-value">
+            {{ data.ssqk[1].jk }}
+          </td>
+        </tr>
+        <tr>
+          <td class="table-value" colspan="2">
+            Ⅲ类切口
+            <br>
+            (污染手术)
+          </td>
+          <td class="table-value text_left pd16" colspan="4">
+            {{ data.ssqk[2].desc }}
+          </td>
+          <td class="table-value">{{ data.ssqk[2].jk }}</td>
+        </tr>
+        <tr>
+          <td class="table-value" colspan="2">
+            Ⅳ类切口
+            <br>
+            (污秽-感染手术)
+          </td>
+          <td class="table-value text_left pd16" colspan="4">{{ data.ssqk[3].desc }}</td>
+          <td class="table-value">{{ data.ssqk[3].jk }}</td>
+        </tr>
+
+        <tr>
+          <td class="table-label" rowspan="6">麻醉分级(ASA分级)麻醉医生或局麻时手术医师填写</td>
+          <td class="table-value" colspan="2">ASA Ⅰ</td>
+          <td class="table-value text_left pd16" colspan="4">{{ data.mzfj[0].desc }}</td>
+          <td class="table-value">{{ data.mzfj[0].jk }}</td>
+        </tr>
+        <tr>
+          <td class="table-value" colspan="2">ASA Ⅱ</td>
+          <td class="table-value text_left pd16" colspan="4">{{ data.mzfj[1].desc }}</td>
+          <td class="table-value">{{ data.mzfj[1].jk }}</td>
+        </tr>
+        <tr>
+          <td class="table-value" colspan="2">ASA Ⅲ</td>
+          <td class="table-value text_left pd16" colspan="4">{{ data.mzfj[2].desc }}</td>
+          <td class="table-value">{{ data.mzfj[2].jk }}</td>
+        </tr>
+
+        <tr>
+          <td class="table-value" colspan="2">ASA Ⅳ</td>
+          <td class="table-value text_left pd16" colspan="4">{{ data.mzfj[3].desc }}</td>
+          <td class="table-value">{{ data.mzfj[3].jk }}</td>
+        </tr>
+        <tr>
+          <td class="table-value" colspan="2">ASA Ⅴ</td>
+          <td class="table-value text_left pd16" colspan="4">{{ data.mzfj[4].desc }}</td>
+          <td class="table-value">{{ data.mzfj[4].jk }}</td>
+        </tr>
+        <tr>
+          <td class="table-value" colspan="2">ASA Ⅵ</td>
+          <td class="table-value text_left pd16" colspan="4">{{ data.mzfj[5].desc }}</td>
+          <td class="table-value">{{ data.mzfj[5].jk }}</td>
+        </tr>
+        <tr>
+          <td class="table-label" rowspan="2">手术持续时间</td>
+          <td class="table-value text_left pd16" colspan="6">{{ data.sscxsj[0].name }}</td>
+          <td class="table-value">{{ data.sscxsj[0].jk }}</td>
+        </tr>
+        <tr>
+          <td class="table-value text_left pd16" colspan="6">{{ data.sscxsj[1].name }}</td>
+          <td class="table-value">{{ data.sscxsj[1].jk }}</td>
+        </tr>
+
+        <tr>
+          <td class="table-label" />
+          <td class="table-value pd16 text-blod" colspan="6">合计分值(以上均为单选)</td>
+          <td class="table-value text-blod">{{ data.hjfz }}</td>
+        </tr>
+
+        <tr>
+          <td class="table-value" colspan="2">预防使用抗菌药物</td>
+          <td class="table-value" colspan="5">术前0.5-1小时应用</td>
+          <td class="table-value">是口 否口</td>
+        </tr>
+
+        <tr>
+          <td class="table-value" colspan="2">规范备皮</td>
+          <td class="table-value" colspan="5">避免不必要备皮,术前即刻,减少损伤</td>
+          <td class="table-value">是口 否口</td>
+        </tr>
+
+        <tr>
+          <td class="table-value" colspan="7">围术期血糖控制正常水平</td>
+          <td class="table-value">是口 否口</td>
+        </tr>
+        <tr>
+          <td class="table-value" colspan="7">术中给患者保暖</td>
+          <td class="table-value">是口 否口</td>
+        </tr>
+
+        <tr>
+          <td class="table-label">切口愈合</td>
+          <td class="table-value" colspan="2">甲级愈合</td>
+          <td class="table-value" colspan="2">{{ data.qkyh.jk }}</td>
+          <td class="table-value" colspan="2">感染</td>
+          <td class="table-value">{{ data.gr.jk }}</td>
+        </tr>
+
+        <tr>
+          <td class="table-label" rowspan="4">手术类别</td>
+          <td class="table-value" colspan="2">浅层组织手术</td>
+          <td class="table-value" colspan="4" />
+          <td class="table-value">{{ data.sslb[0].jk }}</td>
+        </tr>
+
+        <tr>
+          <td class="table-value" colspan="2">深部组织手术</td>
+          <td class="table-value" colspan="4" />
+          <td class="table-value">{{ data.sslb[1].jk }}</td>
+        </tr>
+
+        <tr>
+          <td class="table-value" colspan="2">器官手术</td>
+          <td class="table-value" colspan="4" />
+          <td class="table-value">{{ data.sslb[2].jk }}</td>
+        </tr>
+        <tr>
+          <td class="table-value" colspan="2">腔隙手术</td>
+          <td class="table-value" colspan="4" />
+          <td class="table-value">{{ data.sslb[3].jk }}</td>
+        </tr>
+
+        <tr>
+          <td class="table-label">手术者签名</td>
+          <td class="table-value" colspan="3">{{ data.sszqm }}</td>
+          <td class="table-label">麻醉医师签名</td>
+          <td class="table-value" colspan="3">{{ data.jlsj }}</td>
+        </tr>
+      </table>
+    </div>
+    <div class="bottom-time bottom-time-top">
+      <div class="bottom-time-list">
+        <span class="bottom-time-bold">医生签名:</span>
+        <span>{{ data.doctor_name }}</span>
+      </div>
+    </div>
+    <div class="bottom-time bottom-time-top">
+      <div v-if="data.CJSJ" class="bottom-time-list">
+        <span class="bottom-time-bold">创建时间:</span>
+        <span>{{ data.CJSJ }}</span>
+      </div>
+      <div v-if="data.ZXSJ" class="bottom-time-list">
+        <span class="bottom-time-bold">修改时间:</span>
+        <span>{{ data.ZXSJ }}</span>
+      </div>
+    </div>
+    <div v-if="data.WCSJ" class="bottom-time bottom-time-botom">
+      <div class="bottom-time-list">
+        <span class="bottom-time-bold">完成时间:</span>
+        <span>{{ data.WCSJ }}</span>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {}
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.box {
+  margin: 0 30px;
+  line-height: 1.5;
+  padding-bottom: 100px;
+  .title {
+    font-size: 24px;
+    font-weight: bold;
+    color: #2c3240;
+    text-align: center;
+    margin: 20px;
+  }
+  .mb10 {
+    margin-bottom: 10px;
+  }
+  .mb20 {
+    margin-bottom: 20px;
+  }
+  .mb40 {
+    margin-bottom: 40px;
+  }
+  .text-blod {
+    font-weight: bold;
+  }
+  .pd16 {
+    padding: 8px 16px;
+  }
+  .text_left {
+    text-align: left;
+  }
+  .minH200 {
+    min-height: 200px;
+  }
+}
+
+table {
+  width: 100%;
+  min-width: 600px;
+  table-layout: fixed;
+  empty-cells: show;
+  border-collapse: collapse;
+  margin: 0 auto;
+  margin-bottom: 30px;
+  td {
+    border: 1px solid #dddddd;
+    text-align: center;
+    font-size: 14px;
+    box-sizing: border-box;
+  }
+  .table-label {
+    width: 150px;
+    height: 40px;
+    color: #666666;
+    background-color: #f9f9f9;
+  }
+  .table-value {
+    height: 40px;
+    color: #333333;
+    text-align: center;
+  }
+}
+</style>

+ 379 - 0
src/views/recordsRoom/qc/components/ShouShuRecord2.vue

@@ -0,0 +1,379 @@
+<template>
+  <div class="box">
+    <div class="title">
+      {{ data.hospital }}
+      <br>
+      手术安全核查表
+    </div>
+    <div class="table">
+      <table ref="tables">
+        <tr>
+          <td class="table-label">科室</td>
+          <td class="table-value" colspan="2">{{ data.keshi }}</td>
+          <td class="table-label">姓名</td>
+          <td class="table-value">{{ data.brxm }}</td>
+          <td class="table-label">性别</td>
+          <td class="table-value">{{ data.sex }}</td>
+          <td class="table-label">年龄</td>
+          <td class="table-value">{{ data.age }}</td>
+        </tr>
+        <tr>
+          <td class="table-label">住院号</td>
+          <td class="table-value" colspan="2">{{ data.brbh }}</td>
+          <td class="table-label">术者</td>
+          <td class="table-value" colspan="2">{{ data.sz }}</td>
+          <td class="table-label">手术日期</td>
+          <td class="table-value" colspan="2">{{ data.ssrq }}</td>
+        </tr>
+        <tr>
+          <td class="table-label">麻醉方式</td>
+          <td class="table-value" colspan="4">{{ data.mzfs }}</td>
+          <td class="table-label">手术方式</td>
+          <td class="table-value" colspan="3">{{ data.ssfs }}</td>
+        </tr>
+
+        <tr>
+          <td class="table-label" colspan="3">麻醉实施前</td>
+          <td class="table-label" colspan="3">手术开始前</td>
+          <td class="table-label" colspan="3">患者离开手术前</td>
+        </tr>
+
+        <tr>
+          <td class="table-value" colspan="3">
+            <div>
+              患者姓名、性别、年龄正确:
+              <span class="ml40">{{ data.mzssq.xm_sex_age }}</span>
+            </div>
+            <div>
+              手术方式确认:
+              <span class="ml40">{{ data.mzssq.ssfsqr }}</span>
+            </div>
+            <div>
+              手术部位与标识正确:
+              <span class="ml40">{{ data.mzssq.ssbwybsqr }}</span>
+            </div>
+            <div>
+              手术知情同意:
+              <span class="ml40">{{ data.mzssq.sszqty }}</span>
+            </div>
+            <div>
+              麻醉知情同意:
+              <span class="ml40">{{ data.mzssq.mzzqty }}</span>
+            </div>
+            <div>
+              麻醉方式确认:
+              <span class="ml40">{{ data.mzssq.mzfsqr }}</span>
+            </div>
+            <div>
+              麻醉设备安全检查完成:
+              <span class="ml40">{{ data.mzssq.mzsbaqjc }}</span>
+            </div>
+            <div>
+              皮肤是否完整:
+              <span class="ml40">{{ data.mzssq.pfsfwz }}</span>
+            </div>
+            <div>
+              术野皮肤准备正确:
+              <span class="ml40">{{ data.mzssq.sypfzbzq }}</span>
+            </div>
+            <div>
+              静脉通道建立完成:
+              <span class="ml40">{{ data.mzssq.jmtdjlwc }}</span>
+            </div>
+            <div>
+              患者是否有过敏史:
+              <span class="ml40">{{ data.mzssq.hzsfygms }}</span>
+            </div>
+            <div>
+              抗菌药物皮试结果:
+              <span class="ml40">{{ data.mzssq.kjywpsjg }}</span>
+            </div>
+            <div>
+              术前备血:
+              <span class="ml40">{{ data.mzssq.sqbx }}</span>
+            </div>
+            <div>
+              假体:
+              <span class="ml40">{{ data.mzssq.jt }}</span>
+            </div>
+            <div>
+              体内植入物:
+              <span class="ml40">{{ data.mzssq.tnzrw }}</span>
+            </div>
+            <div class="mb20">
+              影像学资料:
+              <span class="ml40">{{ data.mzssq.yxxzl }}</span>
+            </div>
+            <div />
+            <div />
+            <div />
+            <div />
+            <div />
+            <div />
+            <div>其他:</div>
+          </td>
+          <td class="table-value" colspan="3">
+            <div>
+              患者姓名、性别、年龄正确:
+              <span class="ml40">{{ data.ssksq.xm_sex_age }}</span>
+            </div>
+            <div>
+              手术方式确认:
+              <span class="ml40">{{ data.ssksq.ssfsqr }}</span>
+            </div>
+            <div>
+              手术部位与标识确认:
+              <span class="ml40">{{ data.ssksq.ssbwybsqr }}</span>
+            </div>
+            <div>手术、麻醉风险预警:</div>
+            <div>手术医师陈述:</div>
+            <div class="text_indent50">
+              预计手术时间
+              <span class="ml40">{{ data.ssksq.ssyscs.yjsssj }}</span>
+            </div>
+            <div class="text_indent50">
+              预计失血量
+              <span class="ml40">{{ data.ssksq.ssyscs.yjsxy }}</span>
+            </div>
+            <div class="text_indent50">
+              手术关注点
+              <span class="ml40">{{ data.ssksq.ssyscs.ssgzd }}</span>
+            </div>
+            <div class="text_indent50">
+              其它
+              <span class="ml40">{{ data.ssksq.ssyscs.qt }}</span>
+            </div>
+            <div>麻醉医师陈述:</div>
+            <div class="text_indent50">
+              麻醉关注点
+              <span class="ml40">{{ data.ssksq.mzyscs.mzgzd }}</span>
+            </div>
+            <div class="text_indent50">
+              其它
+              <span class="ml40">{{ data.ssksq.mzyscs.qt }}</span>
+            </div>
+            <div>手术护士陈述:</div>
+            <div class="text_indent50">
+              物品灭菌合格
+              <span class="ml40">{{ data.ssksq.sshscs.wpmjhg }}</span>
+            </div>
+            <div class="text_indent50">
+              仪器设备
+              <span class="ml40">{{ data.ssksq.sshscs.yqsb }}</span>
+            </div>
+            <div class="text_indent50">
+              术前术中特殊用药情况
+              <span class="ml40">{{ data.ssksq.sshscs.sqsztsyyqk }}</span>
+            </div>
+            <div class="text_indent50">
+              其它
+              <span class="ml40">{{ data.ssksq.sshscs.qt }}</span>
+            </div>
+            <div class="mb20">
+              是否需要相关影像资料:
+              <span class="ml40">{{ data.ssksq.xgyxzl }}</span>
+            </div>
+            <div />
+            <div />
+            <div>
+              其他:
+              <span class="ml40">{{ data.ssksq.qt }}</span>
+            </div>
+          </td>
+          <td class="table-value" colspan="3">
+            <div>
+              患者姓名、性别、年龄正确:
+              <span class="ml40">{{ data.hzlkssq.xm_sex_age }}</span>
+            </div>
+            <div>
+              实际手术方式确认:
+              <span class="ml40">{{ data.hzlkssq.sjssfsqr }}</span>
+            </div>
+            <div>
+              手术用物清点正确:
+              <span class="ml40">{{ data.hzlkssq.ssywqd }}</span>
+            </div>
+            <div>
+              手术标本确认:
+              <span class="ml40">{{ data.hzlkssq.ssbb }}</span>
+            </div>
+            <div>
+              皮肤是否完整:
+              <span class="ml40">{{ data.hzlkssq.pfsfwz }}</span>
+            </div>
+            <div>各种管路:</div>
+            <div class="text_indent50">
+              中心静脉通路
+              <span class="ml40">{{ data.hzlkssq.gzgl.zxjmtl }}</span>
+            </div>
+            <div class="text_indent50">
+              动脉通路
+              <span class="ml40">{{ data.hzlkssq.gzgl.dmtl }}</span>
+            </div>
+            <div class="text_indent50">
+              气管插管
+              <span class="ml40">{{ data.hzlkssq.gzgl.qgcg }}</span>
+            </div>
+            <div class="text_indent50">
+              伤口引流
+              <span class="ml40">{{ data.hzlkssq.gzgl.skyl }}</span>
+            </div>
+            <div class="text_indent50">
+              胃管
+              <span class="ml40">{{ data.hzlkssq.gzgl.wg }}</span>
+            </div>
+            <div class="text_indent50">
+              尿管
+              <span class="ml40">{{ data.hzlkssq.gzgl.ng }}</span>
+            </div>
+            <div class="text_indent50">
+              其他
+              <span class="ml40">{{ data.hzlkssq.gzgl.qt }}</span>
+            </div>
+            <div>患者去向:</div>
+            <div class="text_indent50">
+              恢复室
+              <span class="ml40">{{ data.hzlkssq.hzqx.hfs }}</span>
+            </div>
+            <div class="text_indent50">
+              病房
+              <span class="ml40">{{ data.hzlkssq.hzqx.bf }}</span>
+            </div>
+            <div class="text_indent50">
+              ICU 病房
+              <span class="ml40">{{ data.hzlkssq.hzqx.icubf }}</span>
+            </div>
+            <div class="text_indent50">
+              急诊
+              <span class="ml40">{{ data.hzlkssq.hzqx.jz }}</span>
+            </div>
+            <div class="text_indent50 mb20">
+              离院
+              <span class="ml40">{{ data.hzlkssq.hzqx.ly }}</span>
+            </div>
+            <div>
+              其他:
+              <span class="ml40">{{ data.hzlkssq.qt }}</span>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td class="table-label">手术医师签名</td>
+          <td class="table-value" colspan="2">{{ data.ssysqm }}</td>
+          <td class="table-label">麻醉医师签名</td>
+          <td class="table-value" colspan="2">{{ data.mzysqm }}</td>
+          <td class="table-label">手术室护士签名</td>
+          <td class="table-value" colspan="2">{{ data.ssshsqm }}</td>
+        </tr>
+      </table>
+    </div>
+    <div class="bottom-time bottom-time-top">
+      <div class="bottom-time-list">
+        <span class="bottom-time-bold">医生签名:</span>
+        <span>{{ data.doctor_name }}</span>
+      </div>
+    </div>
+    <div class="bottom-time bottom-time-top">
+      <div v-if="data.CJSJ" class="bottom-time-list">
+        <span class="bottom-time-bold">创建时间:</span>
+        <span>{{ data.CJSJ }}</span>
+      </div>
+      <div v-if="data.ZXSJ" class="bottom-time-list">
+        <span class="bottom-time-bold">修改时间:</span>
+        <span>{{ data.ZXSJ }}</span>
+      </div>
+    </div>
+    <div v-if="data.WCSJ" class="bottom-time bottom-time-botom">
+      <div class="bottom-time-list">
+        <span class="bottom-time-bold">完成时间:</span>
+        <span>{{ data.WCSJ }}</span>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {}
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.box {
+  margin: 0 30px;
+  line-height: 1.5;
+  padding-bottom: 100px;
+  .title {
+    font-size: 24px;
+    font-weight: bold;
+    color: #2c3240;
+    text-align: center;
+    margin: 20px;
+  }
+  .mb10 {
+    margin-bottom: 10px;
+  }
+  .mb20 {
+    margin-bottom: 20px;
+  }
+  .mb40 {
+    margin-bottom: 40px;
+  }
+  .ml40 {
+    margin-left: 10px;
+  }
+  .text-blod {
+    font-weight: bold;
+  }
+  .pd16 {
+    padding: 8px 16px;
+  }
+  .text_left {
+    text-align: left;
+  }
+  .minH200 {
+    min-height: 200px;
+  }
+  .text_indent50 {
+    text-indent: 50px;
+  }
+}
+
+table {
+  width: 100%;
+  min-width: 600px;
+  table-layout: fixed;
+  empty-cells: show;
+  border-collapse: collapse;
+  margin: 0 auto;
+  margin-bottom: 30px;
+  td {
+    border: 1px solid #dddddd;
+    text-align: center;
+    font-size: 14px;
+    box-sizing: border-box;
+  }
+  .table-label {
+    width: 150px;
+    height: 40px;
+    color: #666666;
+    background-color: #f9f9f9;
+  }
+  .table-value {
+    height: 40px;
+    color: #333333;
+    text-align: center;
+    div {
+      text-align: left;
+      padding: 8px 16px;
+    }
+  }
+}
+</style>

+ 177 - 0
src/views/recordsRoom/qc/components/ShouShuRecord4.vue

@@ -0,0 +1,177 @@
+<template>
+  <div class="box">
+    <div class="title">
+      {{ data.hospital }}
+      <br>
+      手术记录
+    </div>
+    <div class="info-header mb40">
+      <el-row :gutter="32">
+        <el-col :span="6">
+          <span class="text-blod">科室:</span>
+          <span>{{ data.department }}</span>
+        </el-col>
+        <el-col :span="6">
+          <span class="text-blod">姓名:</span>
+          <span>{{ data.brxm }}</span>
+        </el-col>
+        <el-col :span="6">
+          <span class="text-blod">床号:</span>
+          <span>{{ data.ch }}</span>
+        </el-col>
+        <el-col :span="6">
+          <span class="text-blod">住院号:</span>
+          <span>{{ data.brbh }}</span>
+        </el-col>
+      </el-row>
+    </div>
+    <div class="table">
+      <table ref="tables">
+        <tr>
+          <td class="table-label">患者姓名</td>
+          <td class="table-value">{{ data.brxm }}</td>
+          <td class="table-label">性别</td>
+          <td class="table-value">{{ data.sex }}</td>
+          <td class="table-label">年龄</td>
+          <td class="table-value">{{ data.age }}</td>
+        </tr>
+        <tr>
+          <td class="table-label">手术日期</td>
+          <td class="table-value" colspan="2">{{ data.ssrq }}</td>
+          <td class="table-label">手术时间</td>
+          <td class="table-value" colspan="2">{{ data.sssj }}</td>
+        </tr>
+        <tr>
+          <td class="table-label">术前诊断</td>
+          <td class="table-value" colspan="5">{{ data.sqzd }}</td>
+        </tr>
+        <tr>
+          <td class="table-label">术中诊断</td>
+          <td class="table-value" colspan="5">{{ data.szzd }}</td>
+        </tr>
+        <tr>
+          <td class="table-label">手术名称</td>
+          <td class="table-value" colspan="5">{{ data.ssmc }}</td>
+        </tr>
+        <tr>
+          <td class="table-label">手术指导</td>
+          <td class="table-value">{{ data.sszdz }}</td>
+          <td class="table-label">手术者</td>
+          <td class="table-value">{{ data.ssz }}</td>
+          <td class="table-label">助手</td>
+          <td class="table-value">{{ data.zs }}</td>
+        </tr>
+        <tr style="min-height: 300px">
+          <td class="table-label">手术经过、术中出现的情况及处理</td>
+          <td class="table-value" colspan="5">
+            <div class="pd16 text_left minH200">{{ data.describe }}</div>
+          </td>
+        </tr>
+        <tr>
+          <td class="table-label">手术者签名</td>
+          <td class="table-value" colspan="2">{{ data.sszqm }}</td>
+          <td class="table-label">记录时间</td>
+          <td class="table-value" colspan="2">{{ data.jlsj }}</td>
+        </tr>
+      </table>
+    </div>
+    <div class="bottom-time bottom-time-top">
+      <div class="bottom-time-list">
+        <span class="bottom-time-bold">医生签名:</span>
+        <span>{{ data.doctor_name }}</span>
+      </div>
+    </div>
+    <div class="bottom-time bottom-time-top">
+      <div v-if="data.CJSJ" class="bottom-time-list">
+        <span class="bottom-time-bold">创建时间:</span>
+        <span>{{ data.CJSJ }}</span>
+      </div>
+      <div v-if="data.ZXSJ" class="bottom-time-list">
+        <span class="bottom-time-bold">修改时间:</span>
+        <span>{{ data.ZXSJ }}</span>
+      </div>
+    </div>
+    <div v-if="data.WCSJ" class="bottom-time bottom-time-botom">
+      <div class="bottom-time-list">
+        <span class="bottom-time-bold">完成时间:</span>
+        <span>{{ data.WCSJ }}</span>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {}
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.box {
+  margin: 0 30px;
+  line-height: 1.5;
+  padding-bottom: 100px;
+  .title {
+    font-size: 24px;
+    font-weight: bold;
+    color: #2c3240;
+    text-align: center;
+    margin: 20px;
+  }
+  .mb10 {
+    margin-bottom: 10px;
+  }
+  .mb20 {
+    margin-bottom: 20px;
+  }
+  .mb40 {
+    margin-bottom: 40px;
+  }
+  .text-blod {
+    font-weight: bold;
+  }
+  .pd16 {
+    padding: 16px;
+  }
+  .text_left {
+    text-align: left;
+  }
+  .minH200 {
+    min-height: 200px;
+  }
+}
+
+table {
+  width: 100%;
+  min-width: 600px;
+  table-layout: fixed;
+  empty-cells: show;
+  border-collapse: collapse;
+  margin: 0 auto;
+  margin-bottom: 30px;
+  td {
+    border: 1px solid #dddddd;
+    text-align: center;
+    font-size: 12px;
+    box-sizing: border-box;
+  }
+  .table-label {
+    width: 150px;
+    height: 40px;
+    color: #666666;
+    background-color: #f9f9f9;
+  }
+  .table-value {
+    height: 40px;
+    color: #333333;
+    text-align: center;
+  }
+}
+</style>

+ 100 - 0
src/views/recordsRoom/qc/components/TableBox.vue

@@ -0,0 +1,100 @@
+<template>
+  <div class="app-container">
+    <el-button type="primary" @click="toExamine">批量审核</el-button>
+    <el-button @click="onRevoke">撤销审核</el-button>
+    <el-table v-loading="loading" :data="data" style="width: 100%" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55"></el-table-column>
+      <el-table-column type="index" label="序号" width="80" />
+      <el-table-column prop="" label="审核状态" width="100" show-overflow-tooltip>
+        <template slot-scope="scope">
+          <span v-if="scope.row.review == 1">审核中</span>
+          <span v-if="scope.row.review == 2">审核通过</span>
+          <span v-if="scope.row.review == 3">审核未通过</span>
+          <span v-if="scope.row.review == 0">未审核</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="sum_minus_points" label="病历得分" width="80" show-overflow-tooltip />
+      <el-table-column prop="home_minus_points" label="首页得分" width="80" show-overflow-tooltip />
+      <el-table-column prop="BLZT" label="病历状态" width="100" show-overflow-tooltip />
+      <el-table-column prop="" label="住院号码" width="100" show-overflow-tooltip>
+        <template slot-scope="scope">
+          <el-button type="text" @click="toPage(scope.row)">{{ scope.row.AAA28 }}</el-button>
+        </template>
+      </el-table-column>
+      <el-table-column prop="AAA01" label="姓名" width="100" show-overflow-tooltip />
+      <el-table-column prop="CH" label="床号" width="100" show-overflow-tooltip />
+      <el-table-column prop="AAA29" label="住院次数" width="100" show-overflow-tooltip />
+      <el-table-column prop="dep_name" label="接收科室" width="140" show-overflow-tooltip />
+      <el-table-column prop="JSR" label="接收人" width="140" show-overflow-tooltip />
+      <el-table-column prop="AAB01" label="入院时间" width="140" show-overflow-tooltip />
+      <el-table-column prop="AAC01" label="出院时间" width="140" show-overflow-tooltip />
+      <el-table-column prop="ZKY" label="质控员" width="100" show-overflow-tooltip />
+      <el-table-column prop="ZGQR" label="整改日期" width="140" show-overflow-tooltip />
+      <el-table-column prop="ZKKS" label="质控科室" width="140" show-overflow-tooltip />
+    </el-table>
+  </div>
+</template>
+
+<script>
+import { applyForReview, getBlZkList } from '@/api/qc';
+export default {
+  props: {
+    data: {
+      type: Array,
+      default() {
+        return [];
+      },
+      multipleSelection: [],
+    },
+    loading: {
+      type: Boolean,
+      default() {
+        return false;
+      },
+    },
+  },
+  methods: {
+    toPage(row) {
+      const { ZYH } = row;
+      localStorage.setItem('getData', ZYH);
+      this.$router.push({ path: '/qc/caseViews' });
+    },
+
+    /**
+     * 选中
+     * @param val
+     */
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+
+    /**
+     * 批量审核
+     */
+    toExamine() {
+      var ZYH = this.multipleSelection.map(row => row['ZYH']);
+      applyForReview({ ZYH: ZYH, status: 2 } ).then(res => {
+        this.$message.success(res.msg || '申请成功');
+        this.$parent.getList();
+      }).catch(error => {
+        console.log(error);
+      })
+    },
+
+    /**
+     * 撤销审核
+     */
+    onRevoke() {
+      var ZYH = this.multipleSelection.map(row => row['ZYH']);
+      applyForReview({ ZYH: ZYH, status: 0 } ).then(res => {
+        this.$message.success(res.msg || '撤销成功');
+        this.$parent.getList();
+      }).catch(error => {
+        console.log(error);
+      })
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 345 - 0
src/views/recordsRoom/qc/contFile/admissionRecord.vue

@@ -0,0 +1,345 @@
+<template>
+  <!-- 入院记录 -->
+  <div id="MyDivA">
+    <div class="admrec-cont">
+      <div class="cont-title-description">入院记录</div>
+
+      <div class="admrec-cont-header">
+        <div class="admrec-cont-header-list">
+          <span class="cont-textbold">科室:</span>
+          <span>{{ data.department }}</span>
+        </div>
+        <div class="admrec-cont-header-list">
+          <span class="cont-textbold">姓名:</span>
+          <span v-if="data.name">{{ data.name.value }}</span>
+        </div>
+        <div class="admrec-cont-header-list">
+          <span class="cont-textbold">床号:</span>
+          <span v-if="data.bed_no">{{ data.bed_no.value }}</span>
+        </div>
+        <div class="admrec-cont-header-list">
+          <span class="cont-textbold">住院号:</span>
+          <span v-if="data.hospital_no">{{ data.hospital_no.value }}</span>
+        </div>
+      </div>
+      <div class="admrec-cont-infor">
+        <div class="admrec-cont-infor-list admrec-cont-infor-text cont-textbold">姓名:</div>
+        <div class="admrec-cont-infor-list"><span v-if="data.name">{{ data.name.value }}</span> </div>
+        <div class="cont-textbold">出生地:</div>
+        <div class="admrec-cont-infor-list"><span v-if="data.local_address">{{ data.local_address.value }}</span></div>
+      </div>
+      <div class="admrec-cont-infor">
+        <div class="admrec-cont-infor-list admrec-cont-infor-text cont-textbold">性别:</div>
+        <div class="admrec-cont-infor-list"><span v-if="data.sex">{{ data.sex.value }}</span></div>
+        <div class="cont-textbold">职业:</div>
+        <div class="admrec-cont-infor-list"><span v-if="data.job">{{ data.job.value }}</span></div>
+      </div>
+      <div class="admrec-cont-infor">
+        <div class="admrec-cont-infor-list admrec-cont-infor-text cont-textbold">年龄:</div>
+        <div class="admrec-cont-infor-list"><span v-if="data.age">{{ data.age.value }}</span></div>
+        <div class="cont-textbold">入院时间: </div>
+        <div class="admrec-cont-infor-list"><span v-if="data.ry_time">{{ data.ry_time.value }}</span> </div>
+      </div>
+      <div class="admrec-cont-infor">
+        <div class="admrec-cont-infor-list admrec-cont-infor-text cont-textbold">民族:</div>
+        <div class="admrec-cont-infor-list"> <span v-if="data.nation">{{ data.nation.value }}</span> </div>
+        <div class="cont-textbold">记录时间: </div>
+        <div class="admrec-cont-infor-list"> <span v-if="data.record_time">{{ data.record_time.value }}</span> </div>
+      </div>
+      <div class="admrec-cont-infor">
+        <div class="admrec-cont-infor-list admrec-cont-infor-text cont-textbold">婚姻:</div>
+        <div class="admrec-cont-infor-list"><span v-if="data.marriage">{{ data.marriage.value }}</span></div>
+        <div class="cont-textbold">病史陈述者:</div>
+        <div class="admrec-cont-infor-list"><span v-if="data.narrator">{{ data.narrator.value }}</span> </div>
+      </div>
+
+      <div class="admrec-cont-chief admrec-cont-mg20">
+        <div class="admrec-cont-chief-title ">主诉:<span v-if="data.zhusu" class="admrec-cont-textnor">{{ data.zhusu.value }}</span></div>
+      </div>
+      <div class="admrec-cont-chief admrec-cont-mg20">
+        <div class="admrec-cont-chief-title ">现病史:<span v-if="data.xianbingshi" class="admrec-cont-textnor">{{ data.xianbingshi.value }}</span></div>
+      </div>
+      <div class="admrec-cont-chief admrec-cont-mg20">
+        <div class="admrec-cont-chief-title ">既往史:<span v-if="data.jiwangshi" class="admrec-cont-textnor">{{ data.jiwangshi.value }}</span></div>
+      </div>
+      <div class="admrec-cont-chief admrec-cont-mg20">
+        <div class="admrec-cont-chief-title">个人史:<span v-if="data.gerenshi" class="admrec-cont-textnor">{{ data.gerenshi.value }}</span></div>
+      </div>
+      <div class="admrec-cont-chief admrec-cont-mg20">
+        <div v-if="data.sex&&data.sex.value == '女\r'" class="admrec-cont-chief-title">月经及婚育史:<span v-if="data.yjjhys" class="admrec-cont-textnor">{{ data.yjjhys.value }}</span></div>
+        <div v-else class="admrec-cont-chief-title">婚育史:<span v-if="data.hys" class="admrec-cont-textnor">{{ data.hys.value }}</span></div>
+      </div>
+      <div class="admrec-cont-chief admrec-cont-mg20">
+        <div class="admrec-cont-chief-title">家族史:<span v-if="data.jzs" class="admrec-cont-textnor">{{ data.jzs.value }}</span></div>
+      </div>
+      <div class="admrec-cont-sign">
+        经核对,以上病史属实,请病人或家属签字确认:      <span class="admrec-cont-sign-pat">(患者签名)</span>
+      </div>
+      <div class="admrec-cont-physique">体格检查</div>
+      <!-- <div class="admrec-cont-physique-cont">T36.5 P105次/分 R20次/分 BP139/70mmHg</div> -->
+      <div class="admrec-cont-physique-desc">
+        <span v-if="data.tgjc" v-html="data.tgjc.value" />
+      </div>
+      <div class="admrec-cont-physique">辅助检查</div>
+      <el-table
+        :data="fuzhujianchaData"
+        border
+        style="width: 100%"
+      >
+        <el-table-column
+          prop="time"
+          label="检查时间"
+        />
+        <el-table-column
+          prop="project"
+          label="检查项目"
+        />
+        <el-table-column
+          prop="result"
+          label="检查结果"
+        />
+        <el-table-column
+          prop="org"
+          label="检查医院"
+        />
+      </el-table>
+      <!-- <div class="admrec-cont-physique-desc"><span v-if="data.fzjc">{{data.fzjc.value}}</span> </div> -->
+      <div class="admrec-cont-prel admrec-cont-mg20 cont-textbold">
+        初步诊断:
+      </div>
+      <div v-for="(item,index) in data.diagnose_list" :key="index" class="admrec-cont-prel-text">{{ item }}</div>
+      <div class="admrec-cont-physing"><span class="cont-textbold">医师签名:</span>{{ data.doctor_name }}</div>
+      <div class="admrec-bottom-time">
+        <div class="admrec-bottom-time-list">
+          <span class="cont-textbold">创建时间:</span>
+          <span v-if="data.CJSJ">{{ data.CJSJ }}</span>
+        </div>
+        <div class="admrec-bottom-time-list">
+          <span class="cont-textbold">修改时间:</span>
+          <span v-if="data.ZXSJ">{{ data.ZXSJ }}</span>
+        </div>
+      </div>
+      <div class="admrec-bottom-time">
+        <div class="admrec-bottom-time-list">
+          <span class="cont-textbold">完成时间:</span>
+          <span v-if="data.WCSJ">{{ data.WCSJ }}</span>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  name: '',
+  components: {
+    // OtherComponent
+  },
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {
+    data: {
+      type: null,
+      default: false
+    }
+  },
+  data() {
+    return {
+      ifFile: false
+    }
+  },
+  computed: {
+    fuzhujianchaData() {
+      const arr = []
+      if (this.data.fzjc && this.data.fzjc.value.length) {
+        const length = this.data.fzjc.value.length
+        this.data.fzjc.value.slice(1, length).map(item => {
+          const obj = {
+            time: item[0],
+            project: item[1],
+            result: item[2],
+            org: item[3]
+          }
+          arr.push(obj)
+        })
+      }
+      return arr
+    }
+  },
+  watch: {},
+  beforeCreate() {
+    // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
+  },
+  created() {
+    // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
+    // 初始化渲染页面
+  },
+  beforeMount() {
+    // 生命周期钩子:模板编译/挂载之前
+  },
+  mounted() {
+    // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
+  },
+  beforeUpate() {
+    // 生命周期钩子:组件更新之前
+  },
+  updated() {
+    // 生命周期钩子:组件更新之后
+  },
+  activated() {
+    // 生命周期钩子:keep-alive 组件激活时调用
+  },
+  deactivated() {
+    // 生命周期钩子:keep-alive 组件停用时调用
+  },
+  beforeDestroy() {
+    // 生命周期钩子:实例销毁前调用
+  },
+  destroyed() {
+    // 生命周期钩子:实例销毁后调用
+  },
+  errorCaptured(err, vm, info) {
+    // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
+    console.log(err, vm, info)
+  },
+  methods: {}
+}
+</script>
+  <style lang='scss' scoped>
+  #MyDivA {
+    padding: 0;
+    margin:0 30px;
+    .admrec-cont{
+      width: 100%;
+      display: flex;
+      flex-direction: column;
+      justify-content: flex-start;
+      align-items: center;
+      .cont-title-description {
+        margin: 20px;
+        font-size: 24px;
+        font-weight: bold;
+        color: #2c3240;
+        text-align: center;
+      }
+      .cont-textbold{
+        font-weight: bold;
+      }
+      .admrec-cont-header{
+        height: 50px;
+        width: 100%;
+        border-bottom: 1.5px solid #e2dfdf;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        margin-top: 20px;
+        margin-bottom: 20px;
+        .admrec-cont-header-list{
+          width: 25%;
+        }
+
+      }
+      .admrec-cont-header-top{
+
+        width: 100%;
+        display: flex;
+        justify-content: flex-start;
+        align-items: center;
+        margin-top: 20px;
+        .admrec-cont-header-list{
+          width: 25%;
+        }
+
+      }
+      .admrec-cont-infor{
+        width: 100%;
+        height: 40px;
+        display: flex;
+        align-items: center;
+        .admrec-cont-infor-list{
+          width: 25%;
+          padding-left: 5px;
+        }
+        .admrec-cont-infor-text{
+          text-align: right;
+        }
+      }
+      .admrec-cont-chief{
+        width: 100%;
+        .admrec-cont-chief-title{
+          font-weight: bold;
+        }
+      }
+      .admrec-cont-mg20{
+        margin-top: 20px;
+      }
+      .admrec-cont-sign{
+        width: 100%;
+        height: 30px;
+        margin-top: 30px;
+        padding-left: 10%;
+        .admrec-cont-sign-pat{
+          margin-left: 100px;
+        }
+      }
+      .admrec-cont-physique{
+        width: 100%;
+        height: 30px;
+        text-align: center;
+        margin-top: 30px;
+        font-weight: bold;
+      }
+      .admrec-cont-physique-cont{
+        width: 100%;
+        text-align: center;
+        line-height: 20px;
+      }
+      .admrec-cont-physique-desc{
+        width: 100%;
+        text-align: left;
+        line-height: 20px;
+        text-indent: 30px;
+      }
+      .admrec-cont-auxi{
+        width: 100%;
+        min-height: 30px;
+        display: flex;
+        .admrec-cont-auxi-list{
+          width: 25%;
+          text-align: left;
+        }
+      }
+      .admrec-cont-prel{
+        width: 100%;
+        padding-left: 50%;
+      }
+      .admrec-cont-prel-text{
+        width: 100%;
+        padding-left: 58%;
+        line-height: 20px;
+      }
+      .admrec-cont-physing{
+        width: 100%;
+        padding-left: 65%;
+        margin-top: 20px;
+        margin-bottom: 30px;
+      }
+      .admrec-cont-textnor{
+        font-weight: normal;
+      }
+    }
+  }
+  .admrec-bottom-time{
+      width: 100%;
+      display: flex;
+      justify-content: flex-start;
+      align-items: center;
+      margin-bottom: 20px;
+      .admrec-bottom-time-list{
+        width: 50%;
+      }
+
+  }
+
+</style>

+ 1592 - 0
src/views/recordsRoom/qc/contFile/mainHomePage.vue

@@ -0,0 +1,1592 @@
+<template>
+  <div id="MyDiv">
+    <!-- <div class="cont-title-description">{{data.ZA03}}</div> -->
+    <div class="cont-title-description">住院病案首页</div>
+    <!--  -->
+    <!--  -->
+    <div class="cont-title">
+      <div />
+      <!-- <div>
+            <span>医疗机构</span>
+            <span ref="UNT_ID">(组织机构代码:{{ data.UNT_ID }})</span>
+          </div> -->
+      <div class="refachInput">
+        <span ref="AAA28">病案号:</span>
+        <span v-if="!ifFile">{{ data.AAA28 }}</span>
+        <el-input v-else v-model="data.AAA28" class="width170" placeholder="请输入内容" />
+      </div>
+    </div>
+    <div>
+      <el-row type="flex" class="row-bg" justify="space-around">
+        <el-col :span="8">
+          <div class="refachInput">
+            <span ref="ZA03">医疗机构名称:</span>
+            <span v-if="!ifFile">{{ data.ZA03 }}</span>
+            <!-- data.ZA03 -->
+            <el-input v-else v-model="data.ZA03" class="width200" placeholder="请输入内容" />
+          </div>
+        </el-col>
+        <el-col :span="7">
+          <div class="refachInput">
+            <span ref="TYSHXYDM">统一社会信用代码:</span>
+            <span v-if="!ifFile">{{ data.TYSHXYDM }}</span>
+            <el-input v-else v-model="data.TYSHXYDM" class="width150" placeholder="请输入内容" />
+          </div>
+        </el-col>
+        <el-col :span="7">
+          <div class="refachInput" style="display: flex">
+            <span v-if="!ifFile" ref="UNT_ID">
+              (组织机构代码:
+              <span>
+                <span v-if="data.UNT_ID">{{ data.UNT_ID }})</span>
+                <span v-else>-)</span>
+              </span>
+            </span>
+
+            <!-- data.AAA27 -->
+            <div v-else>
+              <el-input v-model="data.UNT_ID" class="width170" placeholder="请输入内容" />
+            </div>
+          </div>
+        </el-col>
+        <!-- <el-col :span="6">
+
+  </el-col> -->
+      </el-row>
+      <el-row type="flex" class="row-bg" justify="space-around">
+        <el-col :span="8">
+          <div class="refachInput">
+            <span ref="AAA26C">医疗付费方式:</span>
+            <span v-if="!ifFile">{{ data.AAA26C }}</span>
+            <el-input v-else v-model="data.AAA26C" class="width150" placeholder="请输入内容" />
+          </div>
+        </el-col>
+        <el-col :span="7">
+          <div class="refachInput">
+            <span ref="JKKH">健康卡号:</span>
+            <span v-if="!ifFile">{{ data.JKKH ? data.JKKH : ' —  ' }}</span>
+            <!-- data.AAA27 -->
+            <el-input v-else v-model="data.JKKH" class="width170" placeholder="请输入内容" />
+          </div>
+        </el-col>
+        <el-col :span="7">
+          <div class="refachInput">
+            <span>第</span>
+            <span v-if="!ifFile">{{ data.AAA29 }}</span>
+            <el-input v-else v-model="data.AAA29" class="width100" style="width: 80px" placeholder="请输入内容" />
+            <span>次住院</span>
+          </div>
+        </el-col>
+      </el-row>
+    </div>
+
+    <div class="cont-edit-dev" />
+    <div class="table">
+      <table ref="tables">
+        <tr>
+          <td ref="AAA01" class="table-label table-label1">姓名</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA01 }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA01" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA02C" class="table-label table-label2">性别</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA02C }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA02C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA03" class="table-label table-label3">出生日期</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA03 }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA03" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA04" class="table-label table-label4">年龄</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA04 }}岁</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA04" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="AAA40" class="table-label table-label6">年龄(年龄不足一周岁的年龄)</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA40 }}天</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA40" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+
+          <td ref="AAA05C" class="table-label table-label5">国籍</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA05C }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA05C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA11" class="table-label table-label7">出生地</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA09 }}{{ data.AAA10 }}{{ data.AAA11 }}</td>
+          <td v-else class="table-value">
+            <div style="display: flex; align-items: center">
+              <el-input v-model="data.AAA09" class="width100 tableReach" placeholder="请输入内容" />
+              <el-input v-model="data.AAA10" class="width100 tableReach" placeholder="请输入内容" />
+              <el-input v-model="data.AAA11" class="width100 tableReach" placeholder="请输入内容" />
+            </div>
+          </td>
+          <!-- <td class="table-label table-label7" ref="AEM01C">新生儿出生体重</td>
+              <td class="table-value" v-if="!ifFile">{{ data.AEM01C }}</td>
+              <td class="table-value" v-else>
+                <el-input v-model="data.AEM01C" class="width100 tableReach" placeholder="请输入内容"></el-input>
+              </td> -->
+          <td ref="AAA44" class="table-label table-label18">籍贯</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA43 }}{{ data.AAA44 }}</td>
+          <td v-else class="table-value">
+            <div style="display: flex; align-items: center">
+              <el-input v-model="data.AAA43" class="width100 tableReach" placeholder="请输入内容" />
+              <el-input v-model="data.AAA44" class="width100 tableReach" placeholder="请输入内容" />
+            </div>
+          </td>
+          <!-- <td class="table-label table-label8" ref="AAA42">新生儿入院体重</td>
+              <td class="table-value" v-if="!ifFile">{{ data.AAA42 }}</td>
+              <td class="table-value" v-else>
+                <el-input v-model="data.AAA42" class="width100 tableReach" placeholder="请输入内容"></el-input>
+              </td> -->
+        </tr>
+        <tr>
+          <td ref="AAA06C" class="table-label table-label111">民族</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA06C }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA06C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+
+          <td ref="SFZJLX" class="table-label table-label12">身份证类别</td>
+          <td v-if="!ifFile" class="table-value">{{ data.SFZJLX ? data.SFZJLX : '居民身份证' }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.SFZJLX" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA07" class="table-label table-label12">证件号</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA07 }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA07" style="padding: 0px !important; font-size: 13px !important" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA18C" class="table-label table-label12">职业</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA18C }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA18C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="AAA08C" class="table-label table-label13">婚姻</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA08C }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA08C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA15" class="table-label table-label13">现住址</td>
+          <td v-if="!ifFile" class="table-value" colspan="3">{{ data.AAA48 }}{{ data.AAA49 }}{{ data.AAA50 }}{{ data.AAA15 }}</td>
+          <td v-else class="table-value" colspan="3">
+            <div style="display: flex; align-items: center">
+              <el-input v-model="data.AAA48" style="width: 200px !important" class="width100 tableReach" placeholder="请输入内容" />
+              <el-input v-model="data.AAA49" style="width: 200px !important" class="width100 tableReach" placeholder="请输入内容" />
+              <el-input v-model="data.AAA50" style="width: 200px !important" class="width100 tableReach" placeholder="请输入内容" />
+              <el-input v-model="data.AAA15" class="width100 tableReach" placeholder="请输入内容" />
+            </div>
+          </td>
+          <td ref="AAA51" class="table-label table-label13">电话</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA51 }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA51" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="AAA17C" class="table-label table-label13">邮编</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA17C }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA17C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA45" class="table-label table-label17">户口地址</td>
+          <td v-if="!ifFile" class="table-value" colspan="3">{{ data.AAA45 }}{{ data.AAA46 }}{{ data.AAA47 }}{{ data.AAA12 }}</td>
+          <td v-else class="table-value" colspan="3">
+            <div style="display: flex; align-items: center">
+              <el-input v-model="data.AAA45" style="width: 200px !important" class="tableReach" placeholder="请输入内容" />
+              <el-input v-model="data.AAA46" style="width: 200px !important" class="width100 tableReach" placeholder="请输入内容" />
+              <el-input v-model="data.AAA47" style="width: 200px !important" class="width100 tableReach" placeholder="请输入内容" />
+              <el-input v-model="data.AAA12" class="width100 tableReach" placeholder="请输入内容" />
+            </div>
+          </td>
+          <td ref="AAA14C" class="table-label table-label19">邮编</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA14C }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA14C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="AAA19" class="table-label table-label20">工作单位及地址</td>
+          <td v-if="!ifFile" class="table-value" colspan="3">{{ data.AAA19 }}</td>
+          <td v-else class="table-value" colspan="3">
+            <el-input v-model="data.AAA19" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA20" class="table-label table-label21">单位电话</td>
+          <td v-if="!ifFile" class="table-value" colspan="3">{{ data.AAA20 }}</td>
+          <td v-else class="table-value" colspan="3">
+            <el-input v-model="data.AAA20" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="AAA21C" class="table-label table-label22">邮编</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA21C }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA21C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AEN01" class="table-label table-label7">新生儿出生体重</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AEN01 }}克</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AEN01" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA42" class="table-label table-label8">新生儿入院体重</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA42 }}克</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA42" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA22" class="table-label table-label23">联系人姓名</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA22 }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA22" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="AAA23C" class="table-label table-label24">关系</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA23C }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA23C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA24" class="table-label table-label25">地址</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA24 }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA24" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAA25" class="table-label table-label26">电话</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAA25 }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAA25" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <!-- <td class="table-label table-label26" ref="AAA25">邮编</td>
+              <td class="table-value" v-if="!ifFile">{{ data.AAA25 }}</td>
+              <td class="table-value" v-else>
+                <el-input v-model="data.AAA25" class="width100 tableReach" placeholder="请输入内容"></el-input>
+              </td> -->
+          <td ref="AAB06C" class="table-label table-label27">入院途径</td>
+          <td v-if="!ifFile" class="table-value" colspan="3">{{ data.AAB06C }}</td>
+          <td v-else class="table-value" colspan="3">
+            <el-input v-model="data.AAB06C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="AAB01" class="table-label table-label27">入院时间</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAB01 }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAB01" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAB02C" class="table-label table-label27">入院科别</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAB02C }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAB02C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="BFRY" class="table-label table-label27">病房</td>
+          <td v-if="!ifFile" class="table-value">{{ data.BFRY }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.BFRY" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="ZKKB" class="table-label table-label27">转科科别</td>
+          <td v-if="!ifFile" class="table-value">{{ data.ZKKB }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.ZKKB" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="AAC01" class="table-label table-label27">出院时间</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAC01 }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAC01" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAC02C" class="table-label table-label27">出院科别</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAC02C }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAC02C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAC03" class="table-label table-label27">病房</td>
+          <td v-if="!ifFile" class="table-value">{{ data.AAC03 }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.AAC03" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AAC04" class="table-label table-label27">实际住院</td>
+          <td v-if="!ifFile" class="table-value">
+            {{ data.AAC04 }}
+            <span v-if="data.AAC04">天</span>
+          </td>
+          <td v-else class="table-value">
+            <div style="display: flex; align-items: center; justify-content: center">
+              <el-input v-model="data.AAC04" style="width: 50px !important" class="width70 tableReach" placeholder="请输入" />
+              天
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td ref="ABA01N" class="table-label table-label28" style="font-weight: bold">门(急)诊诊断</td>
+          <td v-if="!ifFile" class="table-value">{{ data.ABA01N }}</td>
+          <td v-else class="table-value">
+            <el-input v-model="data.ABA01N" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="ABA01C" class="table-label table-label29" style="font-weight: bold">疾病编码</td>
+          <td v-if="!ifFile" class="table-value" colspan="5">{{ data.ABA01C }}</td>
+          <td v-else class="table-value" colspan="5">
+            <el-input v-model="data.ABA01C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+      </table>
+    </div>
+    <div class="table">
+      <table>
+        <tr>
+          <td class="table-labelon table-label30" style="font-weight: bold">出院诊断</td>
+          <td class="table-labelon table-label31" style="font-weight: bold">疾病编码</td>
+          <td ref="ABC03C" class="table-labelon table-label32" colspan="3" style="font-weight: bold; width: 600px">入院病情</td>
+          <!-- <td class="table-labelon table-label33"  style="font-weight:bold;">出院诊断</td>
+              <td class="table-labelon table-label34"  style="font-weight:bold;">疾病编码</td>
+              <td class="table-labelon table-label35"  style="font-weight:bold;">入院病情</td> -->
+        </tr>
+        <!--  diagnosis -->
+        <tr v-for="(item, index) in data.diagnosis" :key="index">
+          <td v-if="item.class == 'main'" class="table-valueon" style="display: flex; align-items: center">
+            <p v-if="item.class == 'main'" style="padding-left: 5px; font-weight: bold">主要诊断:</p>
+            <p v-if="!ifFile">{{ item.class == 'main' ? item.ICD10_NAME : '' }}</p>
+            <div v-else>
+              <el-input v-model="item.ICD10_NAME" class="width100 tableReaches" placeholder="请输入内容" />
+            </div>
+          </td>
+          <td v-else class="table-valueon" style="display: flex; align-items: center">
+            <p style="padding-left: 5px">其他诊断:</p>
+            <p v-if="!ifFile">{{ item.class == 'other' ? item.ICD10_NAME : '' }}</p>
+            <div v-else>
+              <el-input v-model="item.ICD10_NAME" class="width100 tableReaches" placeholder="请输入内容" />
+            </div>
+          </td>
+          <!-- <td class="table-valueon"  v-if="!ifFile" >{{ item.FRIST_ASSISTANT_NAME }}</td>
+              <td class="table-valueon"  v-if="ifFile"> <el-input class="width80 tableReach" v-model="item.FRIST_ASSISTANT_NAME" placeholder="请输入内容"></el-input></td> -->
+          <!-- <td class="table-valueon FA6400">{{ item.ABF01C }}</td> -->
+          <td v-if="!ifFile" class="table-valueon">{{ item.ICD10_ID1 }}</td>
+          <td v-if="ifFile" class="table-valueon"><el-input v-model="item.ICD10_ID1" class="width80 tableReach" placeholder="请输入内容" /></td>
+
+          <td v-if="!ifFile" class="table-valueon" colspan="3">{{ item.RYQK }}</td>
+          <td v-if="ifFile" class="table-valueon" colspan="3"><el-input v-model="item.RYQK" class="width80 tableReach" placeholder="请输入内容" /></td>
+          <!-- <td class="table-valueon"  v-if="!ifFile" >{{ item.icd10_name }}</td>
+              <td class="table-valueon"  v-if="ifFile"> <el-input class="width80 tableReach" v-model="item.icd10_name" placeholder="请输入内容"></el-input></td> -->
+          <!-- <td class="table-valueon" style="display: flex;height:50px;border-right:none!important;border-left:none!important;border-top:none!important; align-items: center">
+                <p style="padding-left: 5px" v-if="item.class != 'main'"></p>
+                <p v-if="!ifFile">{{ item.class == 'otherS' ? item.ICD10_NAMES : '' }}</p>
+                <div v-else>
+                  <el-input v-if="item.class == 'othSer'" v-model="item.ICD10_NAMEs" class="width100 tableReaches" placeholder="请输入内容"></el-input>
+                </div>
+              </td> -->
+          <!-- <td class="table-valueon" v-if="!ifFile">{{ item.ABC01CS }}</td>
+              <td class="table-valueon" v-if="ifFile"><el-input class="width80 tableReach" v-model="item.ABC01CSS" placeholder="请输入内容"></el-input></td>
+              <td class="table-valueon" v-if="!ifFile">{{ item.ORG_STATE }}</td>
+              <td class="table-valueon" v-if="ifFile"><el-input class="width80 tableReach" v-model="item.ORG_STATE" placeholder="请输入内容"></el-input></td> -->
+        </tr>
+        <!-- <tr v-if="data.diagnosis.length == 0">
+              <td class="table-valueon" style="display: flex; align-items: center"></td>
+              <td class="table-valueon"></td>
+              <td class="table-valueon"></td>
+              <td
+                class="table-valueon"
+                style="display: flex; height: 50px; border-right: none !important; border-left: none !important; border-top: none !important; align-items: center"
+              ></td>
+              <td class="table-valueon"></td>
+              <td class="table-valueon"></td>
+            </tr> -->
+        <tr>
+          <td class="table-value" colspan="6">
+            <div style="text-align: left; margin-left: 25px">
+              <span style="font-weight: bold">入院病情选项说明:</span>
+              1.有 2.临床未确定 3.情况不明 4.无
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td ref="ABG01N" class="table-value table-label" colspan="1" style="font-weight: bold">损伤、中毒的外部原因:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.ABG01N }}</div>
+            <el-input v-else v-model="data.ABG01N" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="ABG01C" class="table-value table-label" colspan="1" style="font-weight: bold">疾病编码</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.ABG01C }}</div>
+            <el-input v-else v-model="data.ABG01C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <!-- <tr>
+              <td class="table-value" colspan="3" v-if="!ifFile" ref="ICD">ICD-0-3:{{ data.ICD }}</td>
+              <td class="table-value" colspan="1" v-if="ifFile">ICD-0-3:</td>
+              <td class="table-value" colspan="2" v-if="ifFile">
+                <el-input class="width100 tableReach" v-model="data.ICD" placeholder="请输入内容"></el-input>
+              </td>
+            </tr> -->
+        <tr>
+          <td ref="ABF01N" class="table-value table-label" colspan="1" style="font-weight: bold">病理诊断:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.ABF01N }}</div>
+            <el-input v-else v-model="data.ABF01N" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="ABF01C" class="table-value table-label" colspan="1" style="font-weight: bold">病理诊断编码</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.ABF01C }}</div>
+            <el-input v-else v-model="data.ABF01C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="Yj" class="table-value table-label" colspan="1" style="font-weight: bold; color: #ccc">最高诊断依据:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.YJ }}</div>
+            <!-- <el-input v-else class="width100 tableReach" v-model="data.ABF04" placeholder="请输入内容"></el-input> -->
+          </td>
+          <td ref="ABF04" class="table-value table-label" colspan="1" style="font-weight: bold">病理号</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.ABF04 }}</div>
+            <el-input v-else v-model="data.ABF04" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="AEB02C" class="table-value table-label" colspan="1" style="font-weight: bold">药物过敏(1.无 2.有 3.-):</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile" style="display: flex; align-items: center">
+              <span v-if="data.AEB02C == '无'">{{ data.AEB02C }}</span>
+              <span v-else-if="data.AEB02C == '有'">{{ data.AEB02C }},{{ data.AEB01 }}</span>
+              <span v-else>-</span>
+            </div>
+            <div v-else style="display: flex; align-items: center">
+              <el-input v-model="data.AEB02C" class="width100 tableReach" style="width: 80px !important" placeholder="请输入内容" />
+              <div v-if="data.AEB02C == '无'" style="display: flex; align-items: center" />
+              <div v-else-if="data.AEB02C == '有'" style="display: flex; align-items: center">
+                <el-input v-model="data.AEB01" class="width100 tableReach" placeholder="请输入内容" />
+              </div>
+            </div>
+          </td>
+          <td ref="AEI01C" class="table-value table-label" colspan="1" style="font-weight: bold">死亡患者尸检(1.是 2.否 3.-):</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEI01C }}</div>
+            <el-input v-else v-model="data.AEI01C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="AEG01C" class="table-value table-label" colspan="1" style="font-weight: bold">血型(1.A 2.B 3.O 4.AB 5.不详 6.未查):</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEG01C }}</div>
+            <el-input v-else v-model="data.AEG01C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AEG02C" class="table-value table-label" colspan="1" style="font-weight: bold">Rh(1.阴 2.阳 3.不详 4.未查):</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEG02C }}</div>
+            <el-input v-else v-model="data.AEG02C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <tr>
+          <td ref="Hljb" class="table-value table-label" colspan="1" style="font-weight: bold; border-right: 0">护理级别:</td>
+          <td v-if="!ifFile" class="table-value" colspan="6" style="">
+            <div>
+              1.特级护理 {{ data.TJHL ? data.TJHL : ' - ' }}天 2.I级护理 {{ data.YJHL ? data.YJHL : ' - ' }}(天) 3.II级护理 {{ data.EJHL ? data.EJHL : ' - ' }}天 4.III级护理
+              {{ data.SJHL ? data.SJHL : ' - ' }}天
+            </div>
+          </td>
+          <td v-if="ifFile" class="table-value" colspan="6" style="border-left: 0">
+            <div style="width: 100%; display: flex; align-items: center; justify-content: center">
+              <div>
+                1.特级护理
+                <el-input v-model="data.TJHL" style="width: 100px" class="width100 tableReach" placeholder="请输入内容" />
+                天 2.I级护理
+                <el-input v-model="data.YJHL" style="width: 100px" class="width100 tableReach" placeholder="请输入内容" />
+                天 3.II级护理
+                <el-input v-model="data.EJHL" style="width: 100px" class="width100 tableReach" placeholder="请输入内容" />
+                天 4.III级护理
+                <el-input v-model="data.SJHL" style="width: 100px" class="width100 tableReach" placeholder="请输入内容" />
+                天
+              </div>
+            </div>
+          </td>
+        </tr>
+        <!--  -->
+        <tr>
+          <td ref="AEE01" class="table-value table-label" colspan="1" style="font-weight: bold">科主任:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEE01 }}</div>
+            <el-input v-else v-model="data.AEE01" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AEE01_CODE" class="table-value table-label" colspan="1" style="font-weight: bold">科主任编码:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEE01_CODE }}</div>
+            <el-input v-else v-model="data.AEE01_CODE" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <!--  -->
+        <!--  -->
+        <tr>
+          <td ref="YLZZ" class="table-value table-label" colspan="1" style="font-weight: bold">医疗组长:</td>
+          <td class="table-value" colspan="2">
+            <!-- <el-input :disabled="!ifFile" class="width100 tableReach"  v-model="data.YLZZ" placeholder="请输入内容"></el-input> -->
+          </td>
+          <td ref="AEE02" class="table-value table-label" colspan="1" style="font-weight: bold">主任(副主任)医师:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEE02 }}</div>
+            <el-input v-else v-model="data.AEE02" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <!--  -->
+        <!--  -->
+        <tr>
+          <td ref="AEE02_CODE" class="table-value table-label" colspan="1" style="font-weight: bold">主任(副主任)医师编码:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEE02_CODE }}</div>
+            <el-input v-else v-model="data.AEE02_CODE" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AEE03" class="table-value table-label" colspan="1" style="font-weight: bold">主治医师:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEE03 }}</div>
+            <el-input v-else v-model="data.AEE03" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <!--  -->
+        <!--  -->
+        <tr>
+          <td ref="AEE03_CODE" class="table-value table-label" colspan="1" style="font-weight: bold">主治医师编码:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEE03_CODE }}</div>
+            <el-input v-else v-model="data.AEE03_CODE" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AEE04" class="table-value table-label" colspan="1" style="font-weight: bold">住院医师:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEE04 }}</div>
+            <el-input v-else v-model="data.AEE04" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <!--  -->
+        <!--  -->
+        <tr>
+          <td ref="AEE04_CODE" class="table-value table-label" colspan="1" style="font-weight: bold">住院医师编码:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEE04_CODE }}</div>
+            <el-input v-else v-model="data.AEE04_CODE" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AEE10" class="table-value table-label" colspan="1" style="font-weight: bold">责任护士:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEE10 }}</div>
+            <el-input v-else v-model="data.AEE10" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <!--  -->
+        <!--  -->
+        <tr>
+          <td ref="ZRHSBM" class="table-value table-label" colspan="1" style="font-weight: bold">责任护士编码:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.ZRHSBM }}</div>
+            <el-input v-else v-model="data.ZRHSBM" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AEE05" class="table-value table-label" colspan="1" style="font-weight: bold">进修医师:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEE05 }}</div>
+            <el-input v-else v-model="data.AEE05" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <!--  -->
+        <!--  -->
+        <tr>
+          <td ref="AEE07" class="table-value table-label" colspan="1" style="font-weight: bold">实习医师:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AEE07 }}</div>
+            <el-input v-else v-model="data.AEE07" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="BMY" class="table-value table-label" colspan="1" style="font-weight: bold">编码员:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.BMY }}</div>
+            <el-input v-else v-model="data.BMY" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <!--  -->
+        <!--  -->
+        <!--  -->
+        <tr>
+          <td ref="AED01C" class="table-value table-label" colspan="1" style="font-weight: bold">病案质量(1.甲 2.乙 3.丙):</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AED01C }}</div>
+            <el-input v-else v-model="data.AED01C" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="ZKRQ" class="table-value table-label" colspan="1" style="font-weight: bold">质控日期:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.ZKRQ }}</div>
+            <el-input v-else v-model="data.ZKRQ" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+        <!-- 优化建议 -->
+        <tr>
+          <td ref="AED02" class="table-value table-label" colspan="1" style="font-weight: bold">质控医师:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AED02 }}</div>
+            <el-input v-else v-model="data.AED02" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AED03" class="table-value table-label" colspan="1" style="font-weight: bold">质控护士:</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.AED03 }}</div>
+            <el-input v-else v-model="data.AED03" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+        </tr>
+      </table>
+      <table>
+        <tr>
+          <td ref="ICD9_ID1" class="table-labelon table-labelon1" style="font-weight: bold">手术及操作编码</td>
+          <td ref="OPE_DATE" class="table-labelon" style="font-weight: bold">手术及操作日期</td>
+          <td ref="OPE_LEVEL" class="table-labelon" style="font-weight: bold">手术级别</td>
+          <td ref="ICD9_NAME" class="table-labelon" style="font-weight: bold">手术及操作名称</td>
+          <td ref="SSLX" class="table-labelon" style="font-weight: bold">手术类型</td>
+          <td ref="SSPB" class="table-labelon" style="font-weight: bold">手术判别</td>
+          <td class="table-labelon" style="padding: 0px; border: 0">
+            <tr>
+              <td class="table-labelon" colspan="3" style="border-left: 0; font-weight: bold; border-right: 0">手术及操作人员</td>
+            </tr>
+            <tr>
+              <td ref="OPE_MAN_NAME" class="table-labelon width150" style="font-weight: bold">术者</td>
+              <td ref="FRIST_ASSISTANT_NAME" class="table-labelon width150" style="font-weight: bold">I助</td>
+              <td ref="SECOND_ASSISTANT_NAME" class="table-labelon width150" style="font-weight: bold">II助</td>
+            </tr>
+          </td>
+          <td ref="INCISION_GRADE_ID" class="table-labelon" style="font-weight: bold">切口愈合等级</td>
+          <td ref="HOCUS_WAY_ID" class="table-labelon" style="font-weight: bold">麻醉方式</td>
+          <td ref="HOCUS_MAN_NAME" class="table-labelon" style="font-weight: bold">麻醉医师</td>
+        </tr>
+        <tr v-for="(item, index) in data.operation" :key="index">
+          <td class="table-value">
+            <div v-if="ifFile">
+              <el-input v-model="item.ICD9_ID1" class="width140 tableReach" placeholder="请输入内容" />
+            </div>
+            <div v-else>
+              {{ item.ICD9_ID1 }}
+            </div>
+          </td>
+          <td class="table-value">
+            <div v-if="ifFile">
+              <el-input v-model="item.OPE_DATE" class="width150 tableReach" style="width: 120px !important; padding: 0px !important" placeholder="请输入内容" />
+            </div>
+            <div v-else>
+              {{ item.OPE_DATE }}
+            </div>
+          </td>
+          <td class="table-value">
+            <div v-if="ifFile">
+              <el-input v-model="item.OPE_LEVEL" class="width150 tableReach" placeholder="请输入内容" />
+            </div>
+            <div v-else>
+              {{ item.OPE_LEVEL }}
+            </div>
+          </td>
+          <td class="table-value">
+            <div v-if="ifFile">
+              <el-input v-model="item.ICD9_NAME" class="width100 tableReach" placeholder="请输入内容" />
+            </div>
+            <div v-else>
+              {{ item.ICD9_NAME }}
+            </div>
+          </td>
+          <td class="table-value">
+            <div v-if="ifFile">
+              <el-input v-model="item.SSLX" class="width100 tableReach" placeholder="请输入内容" />
+            </div>
+            <div v-else>
+              {{ item.SSLX }}
+            </div>
+          </td>
+          <td class="table-value">
+            <div v-if="ifFile">
+              <el-input v-model="item.SSPB" class="width100 tableReach" placeholder="请输入内容" />
+            </div>
+            <div v-else>
+              {{ item.SSPB }}
+            </div>
+          </td>
+          <td class="table-value">
+            <tr>
+              <td class="table-value width100" style="border-bottom: 0; border-top: 0">
+                <div v-if="!ifFile" style="width: 80px">
+                  {{ item.OPE_MAN_NAME }}
+                </div>
+                <div v-else>
+                  <el-input v-model="item.OPE_MAN_NAME" class="tabright" style="width: 80px" placeholder="请输入" />
+                </div>
+              </td>
+              <td class="table-value width100" style="border-bottom: 0; border-top: 0">
+                <div v-if="!ifFile" style="width: 80px">
+                  {{ item.FRIST_ASSISTANT_NAME }}
+                </div>
+                <div v-else>
+                  <el-input v-model="item.FRIST_ASSISTANT_NAME" class="tabright" style="width: 80px" placeholder="请输入" />
+                </div>
+              </td>
+              <td class="table-value width100" style="border-bottom: 0; border-top: 0">
+                <div v-if="!ifFile" style="width: 80px">
+                  {{ item.SECOND_ASSISTANT_NAME }}
+                </div>
+                <div v-else>
+                  <el-input v-model="item.SECOND_ASSISTANT_NAME" class="tabright" style="width: 80px" placeholder="请输入" />
+                </div>
+              </td>
+            </tr>
+          </td>
+          <td class="table-value">
+            <div v-if="ifFile">
+              <el-input v-model="item.INCISION_GRADE_ID" class="width150 tableReach" placeholder="请输入内容" />
+            </div>
+            <div v-else>
+              {{ item.INCISION_GRADE_ID }}
+            </div>
+          </td>
+          <td v-if="!ifFile" class="table-value">{{ item.HOCUS_WAY_ID }}</td>
+          <td v-if="ifFile" class="table-value">
+            <el-input v-model="item.HOCUS_WAY_ID" class="width150 tableReach" placeholder="请输入" />
+          </td>
+          <td v-if="!ifFile" class="table-value">{{ item.HOCUS_MAN_NAME }}</td>
+          <td v-if="ifFile" class="table-value">
+            <el-input v-model="item.HOCUS_MAN_NAME" class="tableReach" placeholder="请输入" />
+          </td>
+        </tr>
+        <tr v-if="data.operation && data.operation.length == 0">
+          <td class="table-value" />
+          <td class="table-value" />
+          <td class="table-value" />
+          <td class="table-value" />
+          <td class="table-value" />
+          <td class="table-value" style="padding: 0px">
+            <tr>
+              <td class="table-value" style="padding: 0px; border: 0" />
+              <td class="table-value" style="padding: 0px; border: 0" />
+              <td class="table-value" style="padding: 0px; border: 0" />
+            </tr>
+          </td>
+          <td class="table-value" />
+          <td class="table-value" />
+          <td class="table-value" />
+        </tr>
+        <!-- end -->
+        <tr>
+          <td ref="RJSS" class="table-value" colspan="3" style="font-weight: bold">是否为日间手术(1.是 2.否):</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.RJSS }}</div>
+            <el-input v-else v-model="data.RJSS" class="width100 tableReach" placeholder="请输入内容" />
+          </td>
+          <td ref="AEL01" class="table-value" colspan="3" style="font-weight: bold">有创呼吸机使用时间</td>
+          <td class="table-value" colspan="2">
+            <div style="display: flex; align-items: center; justify-content: center">
+              <div v-if="!ifFile">{{ data.AEL01 }}</div>
+              <el-input v-else v-model="data.AEL01" class="width100 tableReach" placeholder="请输入" />
+              <span style="width: 100px">小时</span>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td ref="LCLJ" class="table-value" colspan="3" style="font-weight: bold">临床路径(1.是 2.否):</td>
+          <td class="table-value" colspan="2">
+            <div v-if="!ifFile">{{ data.LCLJ }}</div>
+            <el-input v-else v-model="data.LCLJ" class="width100 tableReach" placeholder="请输入" />
+          </td>
+          <td ref="WCQK" class="table-value" colspan="3" style="font-weight: bold">完成情况(1.完成 2.退出):</td>
+          <td class="table-value" colspan="2">
+            <div style="display: flex; align-items: center; justify-content: center">
+              <div v-if="!ifFile">{{ data.LCLJ }}</div>
+              <el-input v-else v-model="data.WCQK" class="width100 tableReach" style="width: 150px" placeholder="请输入内容" />
+            </div>
+          </td>
+        </tr>
+
+        <tr>
+          <td ref="BYQK" class="table-value" colspan="3" style="font-weight: bold; border-right: 0">变异情况:</td>
+          <td class="table-value" colspan="7" style="border-left: 0">{{ data.BYQK }}1.有 2.无</td>
+          <!-- <td class="table-value" colspan="6" style="border-left: 0;" v-if="ifFile">
+                <div style="display:flex;align-items: center;justify-content: center;">
+                 <el-input class="width100 tableReach"  v-model="data.AEL01" placeholder="请输入内容"></el-input>
+                </div>
+              </td> -->
+        </tr>
+
+        <tr>
+          <td class="table-value" colspan="2" style="font-weight: bold">颅脑损伤患者昏迷时间:</td>
+          <td v-if="!ifFile" class="table-value" colspan="3" style="border-right: 0; border-left: 0">入院前:{{ data.AEJ01 }}天{{ data.AEJ02 }}小时{{ data.AEJ03 }}分</td>
+          <td v-if="ifFile" class="table-value" colspan="4" style="border-left: 0">
+            <span style="font-size: 12px">入院前:</span>
+            <el-input v-model="data.AEJ01" class="width150 tableReach" placeholder="请输入" />
+            <span ref="AEJ01">天</span>
+            <el-input v-model="data.AEJ02" class="width150 tableReach" placeholder="请输入" />
+            <span ref="AEJ02">小时</span>
+            <el-input v-model="data.AEJ03" class="width150 tableReach" placeholder="请输入" />
+            <span ref="AEJ03">分</span>
+          </td>
+          <td v-if="!ifFile" class="table-value" colspan="1" style="border-left: 0; border-right: 0">入院后:{{ data.AEJ04 }}天{{ data.AEJ05 }}小时{{ data.AEJ06 }}分</td>
+          <td v-if="ifFile" class="table-value" colspan="8" style="border-left: 0">
+            入院后:
+            <el-input v-model="data.AEJ04" class="width150 tableReach" placeholder="请输入" />
+            <span ref="AEJ04">天</span>
+            <el-input v-model="data.AEJ05" class="width150 tableReach" placeholder="请输入" />
+            <span ref="AEJ05">小时</span>
+            <el-input v-model="data.AEJ06" class="width150 tableReach" placeholder="请输入" />
+            <span ref="AEJ06">分</span>
+          </td>
+          <td v-if="!ifFile" class="table-value" colspan="5" style="border-left: 0" />
+          <!-- <td class="table-value" colspan="5" style="border-left: 0" v-if="ifFile"></td> -->
+        </tr>
+        <tr>
+          <td ref="IS_MAIN_WAY" class="table-labelon" colspan="3">
+            <div class="table-labelonSize" style="margin: 10px 0px; font-weight: bold">重症监护室名称</div>
+            <div class="table-labelonSize" style="font-size: 12px; margin: 10px 0px; font-weight: bold">CCU,RICU,SICU,NICU,PICU,EICU,MICU,其他</div>
+          </td>
+          <td ref="IN_TIME" class="table-labelon" colspan="3">
+            <div class="table-labelonSize" style="margin: 10px 0px; font-weight: bold">进重症监护室时间(年月日时分)</div>
+          </td>
+          <td ref="OUT_TIME" class="table-labelon" colspan="2">
+            <div class="table-labelonSize" style="margin: 10px 0px; font-weight: bold">出重症监护室时间(年月日时分)</div>
+          </td>
+          <td ref="HJ" class="table-labelon" colspan="1">
+            <div class="table-labelonSize" style="margin: 10px 0px; font-weight: bold">(合计/小时)</div>
+          </td>
+        </tr>
+        <tr>
+          <td v-if="!ifFile" class="table-value" colspan="3">{{ data.IS_MAIN_WAY }}</td>
+          <td v-if="ifFile" class="table-value" colspan="3">
+            <el-input v-model="data.IS_MAIN_WAY" class="width100 tableReach" placeholder="请编辑输入内容" />
+          </td>
+          <td v-if="!ifFile" class="table-value" colspan="3">{{ data.IN_TIME }}</td>
+          <td v-if="ifFile" class="table-value" colspan="3">
+            <el-input v-model="data.IN_TIME" class="width100 tableReach" placeholder="请编辑输入内容" />
+          </td>
+          <td v-if="!ifFile" class="table-value" colspan="2">{{ data.OUT_TIME }}</td>
+          <td v-if="ifFile" class="table-value" colspan="2">
+            <el-input v-model="data.OUT_TIME" class="width100 tableReach" placeholder="请编辑输入内容" />
+          </td>
+          <td v-if="!ifFile" class="table-value" colspan="1">{{ data.HJ }}</td>
+          <td v-if="ifFile" class="table-value" colspan="1">
+            <!-- <el-input class="width100 tableReach" v-model="data.AEL01" placeholder="请输入内容"></el-input> -->
+          </td>
+        </tr>
+        <!--  -->
+        <tr>
+          <td ref="AEM01C" class="table-value" colspan="10">
+            <div style="display: flex; align-items: center; justify-content: left; padding-left: 10px">
+              <div v-if="!ifFile" style="font-weight: bold">离院方式:{{ data.AEM01C }}</div>
+              <div v-else style="font-weight: bold; display: flex; align-items: center; justify-content: left; padding-left: 10px">
+                离院方式:
+                <el-input v-model="data.AEM01C" class="width200 tableReach" style="width: 80px" placeholder="请输入内容" />
+                <div v-if="ifFile && data.AEM01C == 2" style="display: flex; align-items: center; justify-content: center">
+                  <span style="width: 350px">医嘱转院,拟接收医疗机构名称:</span>
+                  <el-input v-model="data.AEM02" class="width200 tableReach" placeholder="请输入内容" />
+                </div>
+                <div v-else-if="!ifFile && data.AEM01C == 3" style="display: flex; align-items: center; justify-content: center">
+                  <span style="width: 700px">医嘱转社区卫生服务机构乡镇卫生院,拟接收医疗机构名称:</span>
+                  <el-input v-model="data.AEM02" class="width200 tableReach" placeholder="请输入内容" />
+                </div>
+                <!-- <div v-else-if="data.AEM01C == '医嘱离院'" style="display: flex; align-items: center; justify-content: center">
+                      <span style="width: auto">医嘱离院</span>
+                    </div> -->
+                <div v-else-if="!ifFile && data.AEM01C == 4" style="display: flex; align-items: center; justify-content: center">
+                  <span style="width: auto">非医嘱离院</span>
+                </div>
+                <div v-else style="display: flex; align-items: center; justify-content: center">
+                  <span style="width: auto">其他</span>
+                </div>
+              </div>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td ref="AEM03C" class="table-value" colspan="10" style="text-align: left">
+            <div style="display: flex; align-items: center; justify-content: left; padding-left: 10px">
+              <div v-if="!ifFile" style="text-align: left; font-weight: bold">是否有出院31天内再住院计划:{{ data.AEM03C }};{{ data.AEM04 }}</div>
+              <div v-else style="display: flex; text-align: left; align-items: center; font-weight: bold; justify-content: left; padding-left: 10px">
+                是否有出院31天内再住院计划:
+                <el-input v-model="data.AEM03C" class="width200 tableReach" style="width: 80px" placeholder="请输入内容" />
+                <div v-if="!ifFile && data.AEM03C == '有'" style="display: flex; align-items: center; justify-content: left; padding-left: 10px">
+                  <span style="width: 150px">有,目的</span>
+                  <el-input v-model="data.AEM04" class="width200 tableReach" placeholder="请输入内容" />
+                </div>
+                <div v-else-if="!ifFile && data.AEM03C == '无'" style="display: flex; align-items: center; justify-content: left; padding-left: 10px">
+                  <span style="width: auto">无</span>
+                </div>
+              </div>
+            </div>
+          </td>
+        </tr>
+        <!-- <tr>
+              <td class="table-value" colspan="2" ref="AEM01C">离院方式(1.医嘱离院 2.医嘱转院 3.):</td>
+              <td class="table-value" colspan="3">
+                <div v-if="!ifFile">{{ data.AEM01C }}</div>
+                <div v-else style="display:flex;">
+                  <el-input class="width100 tableReach" style="width:80px;" v-model="data.AEM01C" placeholder="请输入"></el-input>
+                  <div v-if="data.AEM01C == 2" style="display:flex;">
+                    <span>医嘱转院,拟接收医疗机构名称:</span>
+                    <el-input class="width100 tableReac1h" v-model="data.AEM02" placeholder="请输入内容"></el-input>
+                  </div>
+                  <div v-else-if="data.AEM01C == 3" style="display:flex;">
+                    医嘱转社区卫生服务机构乡镇卫生院,拟接收医疗机构名称
+                    <el-input class="width100 tableReach" v-model="data.AEM02" placeholder="请输入内容"></el-input>
+                  </div>
+
+                </div>
+              </td>
+
+              <td class="table-value" colspan="3" ref="AEM04">是否有出院31天内再住院计划:</td>
+              <td class="table-value" colspan="2">
+                <div v-if="!ifFile">{{ data.AEM04 }}</div>
+                <el-input v-else class="width100 tableReach" v-model="data.AEM04" placeholder="请输入内容"></el-input>
+              </td>
+            </tr> -->
+        <!--  -->
+        <tr class="tablexs">
+          <td class="table-value" colspan="1" style="font-weight: bold">住院费用(总费用):</td>
+          <td v-if="!ifFile" class="table-value" colspan="8">
+            <span ref="ADA01">总费用: {{ data.ADA01 }}</span>
+            <span ref="ADA0101">(自付金额:{{ data.ADA0101 }})</span>
+            <span class="table-value-look" @click="jump">查看明细</span>
+          </td>
+          <td v-if="ifFile" ref="ADA01" class="table-value" colspan="2">总费用</td>
+          <td v-if="ifFile" class="table-value" colspan="2">
+            <el-input v-model="data.ADA01" class="width100 tableReach" placeholder="请编辑输入内容" />
+          </td>
+          <td v-if="ifFile" ref="ADA0101" class="table-value" colspan="1">自付金额</td>
+          <td v-if="ifFile" class="table-value" colspan="3">
+            <el-input v-model="data.ADA0101" class="width100 tableReach" placeholder="请编辑输入内容" />
+          </td>
+        </tr>
+        <tr class="tablexs">
+          <td class="table-value" colspan="1" style="font-weight: bold" rowspan="2">1.综合医疗服务费:</td>
+          <td ref="D11" class="table-value" colspan="4">
+            <div style="display: flex; align-items: center">
+              <span style="padding-left: 10px">(1)一般医疗服务费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D11" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D11 }}
+              </div>
+            </div>
+          </td>
+          <td ref="D12" class="table-value" colspan="4">
+            <div style="display: flex; align-items: center">
+              <span style="padding-left: 10px">(2)一般治疗操作费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D12" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D12 }}
+              </div>
+            </div>
+          </td>
+        </tr>
+        <tr class="tablexs">
+          <td ref="D13" class="table-value" colspan="4">
+            <div style="display: flex; align-items: center">
+              <span style="padding-left: 10px">(3)护理费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D13" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D13 }}
+              </div>
+            </div>
+          </td>
+          <td ref="D14" class="table-value" colspan="4">
+            <div style="display: flex; align-items: center">
+              <span style="padding-left: 10px">(4)其他费用:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D14" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D14 }}
+              </div>
+            </div>
+          </td>
+        </tr>
+        <tr class="tablexs">
+          <td class="table-value" colspan="1" style="font-weight: bold" rowspan="2">2.诊断类:</td>
+          <td ref="D15" class="table-value" colspan="4">
+            <div style="display: flex; align-items: center">
+              <span style="padding-left: 10px">(5)病理诊断费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D15" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D15 }}
+              </div>
+            </div>
+          </td>
+          <td ref="D16" class="table-value" colspan="4">
+            <div style="display: flex; align-items: center">
+              <span style="padding-left: 10px">(6)实验室诊断费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D16" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D16 }}
+              </div>
+            </div>
+          </td>
+        </tr>
+        <tr class="tablexs">
+          <td ref="D17" class="table-value" colspan="4">
+            <div style="display: flex; align-items: center">
+              <span style="padding-left: 10px">(7)影像学诊断费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D17" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D17 }}
+              </div>
+            </div>
+          </td>
+          <td ref="D18" class="table-value" colspan="4">
+            <div style="display: flex; align-items: center">
+              <span style="padding-left: 10px">(8)临床诊断项目费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D18" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D18 }}
+              </div>
+            </div>
+          </td>
+        </tr>
+        <tr class="tablexs">
+          <td class="table-value" colspan="1" style="font-weight: bold">3.治疗类:</td>
+          <td ref="D19" class="table-value" colspan="4">
+            <div style="display: flex; align-items: center">
+              <span style="padding-left: 10px">
+                (9)非手术治疗项目费:
+                <span v-if="!ifFile">{{ data.D19 }}</span>
+              </span>
+              <div v-if="ifFile" style="display: flex; align-items: center">
+                <el-input v-model="data.D19" class="width200 tableReachCCC" style="width: 120px !important" placeholder="请输入内容" />
+                <span style="text-align: left">(临床物理治疗费:):</span>
+                <el-input v-model="data.D19X01" class="width200 tableReachCCC" style="width: 130px !important" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                <span>(临床物理治疗费:):</span>
+                {{ data.D19X01 }}):
+              </div>
+            </div>
+          </td>
+          <td ref="D20" class="table-value" colspan="4">
+            <div style="display: flex; align-items: center">
+              <span style="padding-left: 10px">(10)手术治疗费:</span>
+              <div v-if="ifFile" style="display: flex; align-items: center">
+                <el-input v-model="data.D20" class="width150 tableReachCCC" style="width: 130px !important" placeholder="请输入内容" />
+                <span>(麻醉费:</span>
+                <el-input v-model="data.D20X01" class="width150 tableReachCCC" style="width: 130px !important" placeholder="请输入内容" />
+                <span>手术费:</span>
+                <el-input v-model="data.D20X02" class="width150 tableReachCCC" style="width: 130px !important" placeholder="请输入内容" />
+                )
+              </div>
+              <div v-else>
+                {{ data.D20 }}(
+                <span>(麻醉费:</span>
+                {{ data.D20X01 }}
+                <span>手术费:</span>
+                {{ data.D20X02 }})
+              </div>
+            </div>
+          </td>
+        </tr>
+        <!--  -->
+        <tr class="tablexs">
+          <td class="table-value" colspan="1" style="font-weight: bold">4.康复类:</td>
+          <td ref="D21" class="table-value" colspan="4" style="border-right: 0; border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span style="padding-left: 10px">(11)康复费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D21" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D21 }}
+              </div>
+            </div>
+          </td>
+          <td class="table-value" colspan="4" style="border-left: 0; border-top: 0" />
+        </tr>
+        <tr class="tablexs">
+          <td class="table-value" colspan="1" style="font-weight: bold">5.中医类:</td>
+          <td class="table-value" colspan="4" style="border-right: 0; border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D22" style="padding-left: 10px">(12)中医治疗费用:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D22" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D22 }}
+              </div>
+            </div>
+          </td>
+          <td class="table-value" colspan="4" style="border-left: 0; border-top: 0" />
+        </tr>
+        <tr class="tablexs">
+          <td class="table-value" colspan="1" style="font-weight: bold">6.西药类:</td>
+          <td class="table-value" colspan="4" style="border-right: 0; border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D23" style="padding-left: 10px">(13)“西药费”:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D23" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D23 }}
+              </div>
+            </div>
+          </td>
+          <td class="table-value" colspan="4" style="border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D23X01" style="padding-left: 10px">(抗菌药物费用):</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D23X01" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D23X01 }}
+              </div>
+            </div>
+          </td>
+        </tr>
+        <tr class="tablexs">
+          <td class="table-value" colspan="1" style="font-weight: bold">7.中药类:</td>
+          <td class="table-value" colspan="4" style="border-right: 0; border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D24" style="padding-left: 10px">(14)中成药费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D24" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D24 }}
+              </div>
+            </div>
+          </td>
+          <td class="table-value" colspan="4" style="border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D25" style="padding-left: 10px">(15)中草药费用:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D25" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D25 }}
+              </div>
+            </div>
+          </td>
+        </tr>
+        <tr class="tablexs">
+          <td class="table-value" colspan="1" rowspan="3" style="font-weight: bold">8.血液和血液制品类:</td>
+          <td class="table-value" colspan="4" style="border-right: 0; border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D26" style="padding-left: 10px">(16)血费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D26" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D26 }}
+              </div>
+            </div>
+          </td>
+          <td class="table-value" colspan="4" style="border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D27" style="padding-left: 10px">(17)白蛋白类制品类费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D27" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D27 }}
+              </div>
+            </div>
+          </td>
+        </tr>
+        <tr class="tablexs">
+          <td class="table-value" colspan="4" style="border-right: 0; border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D28" style="padding-left: 10px">(18)球蛋白类制品费</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D28" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D28 }}
+              </div>
+            </div>
+          </td>
+          <td class="table-value" colspan="4" style="border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D29" style="padding-left: 10px">(19)凝血因子类制品费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D29" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D29 }}
+              </div>
+            </div>
+          </td>
+        </tr>
+        <tr class="tablexs">
+          <td class="table-value" colspan="4" style="border-right: 0; border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D30" style="padding-left: 10px">(20)细胞因子类制品费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D30" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D30 }}
+              </div>
+            </div>
+          </td>
+          <td class="table-value" colspan="4" style="border-left: 0; border-top: 0" />
+        </tr>
+        <tr class="tablexs">
+          <td class="table-value" colspan="1" style="font-weight: bold">9.耗材类:</td>
+          <td class="table-value" colspan="3" style="border-right: 0; border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D31" style="padding-left: 10px">(21)检查用一次性医用材料费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D31" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D31 }}
+              </div>
+            </div>
+          </td>
+          <td class="table-value" colspan="3" style="border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D32" style="padding-left: 10px">(22)治疗用一次性医用材料费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D32" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D32 }}
+              </div>
+            </div>
+          </td>
+          <td class="table-value" colspan="3" style="border-left: 0; border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D33" style="padding-left: 10px">(23)手术用一次性医用材料费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D33" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D33 }}
+              </div>
+            </div>
+          </td>
+        </tr>
+        <tr class="tablexs">
+          <td class="table-value" colspan="1" style="font-weight: bold">10.其他类:</td>
+          <td class="table-value" colspan="4" style="border-right: 0; border-top: 0">
+            <div style="display: flex; align-items: center">
+              <span ref="D34" style="padding-left: 10px">(24)其他费:</span>
+              <div v-if="ifFile">
+                <el-input v-model="data.D34" class="width200 tableReachCCC" placeholder="请输入内容" />
+              </div>
+              <div v-else>
+                {{ data.D34 }}
+              </div>
+            </div>
+          </td>
+          <td class="table-value" colspan="4" style="border-left: 0; border-top: 0" />
+        </tr>
+        <tr>
+          <td class="table-value" colspan="10" style="text-align: left; border-top: 0">
+            <div class="msgBoxDetail" style="padding-left: 10px; margin: 10px 0px">
+              <span>
+                <span style="font-weight: bold">说明:</span>
+                (一) 医疗付费方式:1.城镇职工基本医疗保险
+              </span>
+              <span>2.城镇居民基本医疗保险</span>
+              <span>3.新型农村合作医疗</span>
+              <span>4.贫困救助</span>
+              <span>5.商业医疗保险</span>
+              <span>6.全公费</span>
+              <span>7全自费</span>
+              <span>8其他社会保险</span>
+              <span>9.其他</span>
+            </div>
+            <div style="padding-left: 10px; text-indent: 3.7em; margin: 10px 0px">(二) 凡可由医院信息系统提供住院费用清单的,住院病案首页中可不填写“住院费用”。</div>
+          </td>
+        </tr>
+        <!-- <tr>
+               <td class="table-value" colspan="10" style="text-align: left; border-top: 0">
+                   手术判别:  <div v-if="!ifFile" ref="SSPB">{{ data.SSPB }}</div>
+                <el-input v-else class="width100 tableReach" v-model="data.SSPB" placeholder="请输入内容"></el-input>
+               </td>
+            </tr> -->
+      </table>
+    </div>
+    <div class="bottom-time bottom-time-top">
+      <div class="bottom-time-listw">
+        <span class="bottom-time-bold">医生签名:</span>
+        <span>{{ data.doctor_name }}</span>
+      </div>
+    </div>
+    <div class="bottom-time bottom-time-top">
+      <div v-if="data.CJSJ" class="bottom-time-list">
+        <span class="bottom-time-bold">创建时间:</span>
+        <span>{{ data.CJSJ }}</span>
+      </div>
+      <div v-if="data.ZXSJ" class="bottom-time-list">
+        <span class="bottom-time-bold">修改时间:</span>
+        <span>{{ data.ZXSJ }}</span>
+      </div>
+    </div>
+    <div v-if="data.WCSJ" class="bottom-time bottom-time-botom">
+      <div class="bottom-time-list">
+        <span class="bottom-time-bold">完成时间:</span>
+        <span>{{ data.WCSJ }}</span>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+// import OtherComponent from '@/components/OtherComponent'
+export default {
+  name: '',
+  components: {
+    // OtherComponent
+  },
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {
+    data: {
+      type: null,
+      default: false
+    },
+    ifFile: {
+      type: null,
+      default: false
+    }
+  },
+  computed: {},
+  watch: {},
+  beforeCreate() {
+    // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
+  },
+  created() {
+    // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
+    // 初始化渲染页面
+  },
+  beforeMount() {
+    // 生命周期钩子:模板编译/挂载之前
+  },
+  mounted() {
+    // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
+  },
+  beforeUpate() {
+    // 生命周期钩子:组件更新之前
+  },
+  updated() {
+    // 生命周期钩子:组件更新之后
+  },
+  activated() {
+    // 生命周期钩子:keep-alive 组件激活时调用
+  },
+  deactivated() {
+    // 生命周期钩子:keep-alive 组件停用时调用
+  },
+  beforeDestroy() {
+    // 生命周期钩子:实例销毁前调用
+  },
+  destroyed() {
+    // 生命周期钩子:实例销毁后调用
+  },
+  errorCaptured(err, vm, info) {
+    // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
+    console.log(err, vm, info)
+  },
+  methods: {
+    jump() {
+      const { path } = this.$route
+      let toPath
+      if (['/hospital-caseViews', '/hospital-details'].includes(path)) {
+        toPath = '/hospital-chargeDetails'
+      } else if (path === '/whitelist-caseViews') {
+        toPath = '/whitelist-chargeDetails'
+      } else if (path === '/embedIndex-caseViews') {
+        toPath = '/embedIndex-chargeDetails'
+      } else if (path === '/reviewIndex-caseViews') {
+        toPath = '/reviewIndex-chargeDetails'
+      } else {
+        toPath = '/ChargeDetails'
+      }
+      // status = 1 代表不能复制文本
+      this.$router.push({ path: toPath, query: { MED_REC_ID: this.data.MED_REC_ID }})
+    },
+    getBlankIndex(item) {
+      if (item.error_field == 'AAA11' || item.error_field == 'AAA10' || item.error_field == 'AAA09') {
+        item.error_field = 'AAA11'
+      }
+      if (item.error_field == 'ICD10_ID1' || item.error_field == 'ABC01C') {
+        item.error_field = 'ICD10_ID1'
+      }
+      const eleClass = document.querySelectorAll('.choose-twinkle')
+      console.log(eleClass)
+      for (let item = 0; item < eleClass.length; item++) {
+        console.log(eleClass[item])
+        eleClass[item].className = 'table-label'
+      }
+      if (Array.isArray(this.$refs[item.error_field])) {
+        this.$refs[item.error_field][0].className = 'choose-twinkle'
+        this.$refs[item.error_field][0].scrollIntoView({ block: 'start', behavior: 'smooth' })
+      } else {
+        this.$refs[item.error_field].className = 'choose-twinkle'
+        this.$refs[item.error_field].scrollIntoView({ block: 'start', behavior: 'smooth' })
+      }
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+#MyDiv {
+  padding: 0;
+  margin: 0 15px;
+}
+.cont-title {
+  display: flex;
+  justify-content: space-between;
+  span {
+    padding: 5px;
+  }
+}
+.cont-left {
+  //   flex: 1;
+  //   min-height: 650px;
+  //   margin: 0 15px;
+  //   height: 800px;
+  //   overflow-y: scroll;
+  background: #ffffff;
+  // border: 1px solid #e2e2e2;
+  padding: 10px;
+}
+.cont-title-description {
+  margin: 20px;
+  font-size: 24px;
+  font-weight: bold;
+  color: #2c3240;
+  //   width: 1200px;
+  text-align: center;
+}
+.cont-edit {
+  margin: 20px;
+  font-weight: bold;
+  color: #2c3240;
+  span {
+    padding: 0 10px;
+    font-size: 14px;
+  }
+}
+.cont-edit-dev {
+  margin: 20px;
+  font-weight: bold;
+  color: #2c3240;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  div {
+    display: flex;
+    // min-width: 300px;
+    align-items: center;
+  }
+  span {
+    white-space: nowrap;
+    padding: 0 10px;
+    font-size: 12px;
+  }
+}
+table {
+  min-width: 1000px;
+  table-layout: fixed;
+  empty-cells: show;
+  border-collapse: collapse;
+  margin: 0 auto;
+  margin-bottom: 30px;
+  td {
+    border: 1px solid #dddddd;
+    // padding-left: 16px;
+    text-align: center;
+    font-size: 12px;
+    box-sizing: border-box;
+  }
+  .table-label {
+    width: 150px;
+    height: 40px;
+    color: #666666;
+    background-color: #f9f9f9;
+  }
+  .table-value {
+    width: 210px;
+    height: 40px;
+    color: #333333;
+    // padding-right: 16px;
+    text-align: center;
+  }
+}
+.ColorRed {
+  color: red !important;
+  font-weight: bold;
+}
+.table-labelon {
+  width: 300px;
+  height: 40px;
+  color: #666666;
+  background-color: #f9f9f9;
+}
+.table-valueon {
+  width: 300px;
+  height: 40px;
+  font-size: 12px;
+  color: #333333;
+  text-align: center;
+  margin: 0;
+  padding: 0;
+}
+.FA6400 {
+  color: #fa6400;
+  font-size: 12px;
+}
+.table-value-p {
+  width: 100%;
+  padding: 5px;
+  display: flex;
+  justify-content: space-around;
+  span {
+    min-width: 200px;
+    font-size: 12px;
+  }
+}
+.cont-reight-top-title {
+  margin-top: 18px;
+  font-size: 22px;
+  font-weight: bold;
+  color: #333333;
+  width: 100%;
+  text-align: center;
+}
+
+.width150 {
+  width: 70px !important;
+}
+.width1000 {
+  width: 150px !important;
+}
+.width200 {
+  width: 200px !important;
+}
+.width100 {
+  // width: 1000px;
+  width: 100%;
+  height: 100%;
+  border-top: 0;
+}
+.width170 {
+  width: 170px;
+}
+.table-labelonSize {
+  font-size: 13px;
+}
+.choose-twinkle {
+  // background: red;
+  font-size: 20px;
+  color: red;
+  font-weight: 600;
+  background: yellow;
+}
+</style>

+ 251 - 0
src/views/recordsRoom/qc/contFile/medicalAdvice.vue

@@ -0,0 +1,251 @@
+
+<template>
+  <div id="MyDiv">
+    <div class="cont-left">
+      <div class="cont-title-description">滨州医学院烟台附属医院</div>
+      <div class="cont-title-item">长期医嘱单</div>
+      <div />
+      <div class="cont-title-name">
+        <div class="cont-title-item"><span class="cont-title-text">姓名:</span><span v-if="dataObj.info" class="cont-title-normal">{{ dataObj.info.AAA01 }}</span></div>
+        <div class="cont-title-item"><span class="cont-title-text">性别:</span><span v-if="dataObj.info" class="cont-title-normal">{{ dataObj.info.AAA02C }}</span></div>
+        <div class="cont-title-item"><span class="cont-title-text">年龄:</span><span v-if="dataObj.info" class="cont-title-normal">{{ dataObj.info.AAA04 }}</span></div>
+        <div class="cont-title-item"><span class="cont-title-text cont-title-twidt">科别:</span><span v-if="dataObj.info" class="cont-title-normal">{{ dataObj.info.AAB02C }}</span></div>
+        <div class="cont-title-item"><span class="cont-title-text">床号:</span><span class="cont-title-normal" /></div>
+        <div class="cont-title-item"><span class="cont-title-text">住院号:</span><span v-if="dataObj.info" class="cont-title-normal">{{ dataObj.info.AAA28 }}</span></div>
+      </div>
+      <div class="table">
+        <table ref="tables">
+          <tr style="height:10px;">
+            <td style="height:10px;" class="table-value m-all" colspan="1" />
+            <td style="height:10px;" class="table-value m-all" colspan="1" />
+            <td style="height:10px;" class="table-value m-all" colspan="1" />
+            <td style="height:10px;" class="table-value m-all" colspan="1" />
+            <td style="height:10px;" class="table-value m-all" colspan="1" />
+            <td style="height:10px;" class="table-value m-all" colspan="1" />
+            <td style="height:10px;" class="table-value m-all" colspan="1" />
+            <td style="height:10px;" class="table-value m-all" colspan="1" />
+            <td style="height:10px;" class="table-value m-all" colspan="1" />
+            <td style="height:10px;" class="table-value m-all" colspan="1" />
+            <td style="height:10px;" class="table-value m-all" colspan="1" />
+          </tr>
+          <tr>
+            <td class="table-label medical-font" colspan="7">开始</td>
+            <td class="table-label medical-font" colspan="4">停止</td>
+          </tr>
+          <tr>
+            <td class="table-label medical-font" colspan="1">日期</td>
+            <td class="table-label medical-font" colspan="1">时间</td>
+            <td class="table-label medical-font" colspan="1">医嘱</td>
+            <td class="table-label medical-font" colspan="1">剂量</td>
+            <td class="table-label medical-font" colspan="1">用法</td>
+            <td class="table-label medical-font" colspan="1">医师签名</td>
+            <td class="table-label medical-font" colspan="1">护士签名</td>
+            <td class="table-label medical-font" colspan="1">日期</td>
+            <td class="table-label medical-font" colspan="1">时间</td>
+            <td class="table-label medical-font" colspan="1">医师签名</td>
+            <td class="table-label medical-font" colspan="1">护士签名</td>
+          </tr>
+
+          <tr v-for="(item,index) in dataObj.list" :key="index">
+            <td class="table-value" colspan="1">{{ item.KSDATE }}</td>
+            <td class="table-value" colspan="1">{{ item.KSTIME }}</td>
+            <td class="table-value" colspan="1">{{ item.YZMC }}</td>
+            <td class="table-value" colspan="1">{{ item.YCJL }}</td>
+            <td class="table-value" colspan="1">{{ item.SYPC }}</td>
+            <td class="table-value" colspan="1">{{ item.KZYS }}</td>
+            <td class="table-value" colspan="1">{{ item.XZJDGH }}</td>
+            <td class="table-value" colspan="1">{{ item.TZDATE }}</td>
+            <td class="table-value" colspan="1">{{ item.TZTIME }}</td>
+            <td class="table-value" colspan="1">{{ item.TZYS }}</td>
+            <td class="table-value" colspan="1">{{ item.XZJDGH }}</td>
+          </tr>
+          <tr>
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="2" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+          </tr>
+          <tr>
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="2" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+          </tr>
+        </table>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+// import OtherComponent from '@/components/OtherComponent'
+export default {
+  name: 'PasswordManagement',
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {
+    dataObj: {
+      type: Object,
+      default: null
+    }
+  },
+  data() {
+    return {
+      ifFile: false
+    }
+  },
+  watch: {},
+  beforeCreate() {
+    // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
+  },
+  created() {
+    // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
+    // 初始化渲染页面
+  },
+  beforeMount() {
+    // 生命周期钩子:模板编译/挂载之前
+  },
+  mounted() {
+    // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
+  },
+  beforeUpate() {
+    // 生命周期钩子:组件更新之前
+  },
+  updated() {
+    // 生命周期钩子:组件更新之后
+  },
+  activated() {
+    // 生命周期钩子:keep-alive 组件激活时调用
+  },
+  deactivated() {
+    // 生命周期钩子:keep-alive 组件停用时调用
+  },
+  beforeDestroy() {
+    // 生命周期钩子:实例销毁前调用
+  },
+  destroyed() {
+    // 生命周期钩子:实例销毁后调用
+  },
+  errorCaptured(err, vm, info) {
+    // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
+    console.log(err, vm, info)
+  },
+  methods: {}
+}
+</script>
+          <style lang='scss' scoped>
+  #MyDiv {
+    // padding:0 15px;
+    margin: 0 15px;
+  }
+  .cont-title {
+    display: flex;
+    justify-content: space-between;
+    span {
+      padding: 5px;
+    }
+  }
+  .cont-title-item {
+    width: 100%;
+    margin: 0 auto;
+    display: flex;
+    justify-content: center;
+    font-size: 20px;
+    padding: 20px 0 10px 0;
+    font-weight: 600;
+  }
+  .cont-left {
+    //   flex: 1;
+    //   min-height: 650px;
+    //   margin: 0 15px;
+    //   height: 800px;
+    //   overflow-y: scroll;
+    background: #ffffff;
+    // border: 1px solid #e2e2e2;
+    padding: 10px;
+    .cont-title-name{
+      width: 100%;
+      height: 50px;
+      display: flex;
+      // align-items: flex-end;
+      justify-content: space-between;
+      .cont-title-item{
+        flex: 1;
+        text-align: left;
+        display: flex;
+        justify-content: left;
+      }
+      .cont-title-text{
+        font-weight: bold;
+      }
+      .cont-title-twidt{
+        width: 35px;
+      }
+      .cont-title-normal{
+        font-weight: normal;
+        margin-left: 5px;
+      }
+    }
+  }
+  .cont-title-description {
+    margin: 20px;
+    font-size: 24px;
+    font-weight: bold;
+    color: #2c3240;
+    //   width: 1200px;
+    text-align: center;
+  }
+  table {
+    min-width: 1000px;
+    table-layout: fixed;
+    empty-cells: show;
+    border-collapse: collapse;
+    margin: 0 auto;
+    margin-bottom: 30px;
+
+    td {
+      border: 1px solid #dddddd;
+      // padding-left: 16px;
+      text-align: center;
+      font-size: 12px;
+      box-sizing: border-box;
+    }
+    .table-label {
+      width: 150px;
+      height: 40px;
+      color: #666666;
+      background-color: #f9f9f9;
+    }
+    .table-value {
+      width: 210px;
+      height: 40px;
+      color: #333333;
+      // padding-right: 16px;
+      text-align: center;
+    }
+  }
+  .m-all {
+    border: none;
+  }
+  .m-left {
+    border-left: none;
+  }
+  .m-right {
+    border-right: none;
+  }
+  .medical-font{
+    font-weight: bold;
+  }
+  </style>
+

+ 294 - 0
src/views/recordsRoom/qc/contFile/medicalTemporary.vue

@@ -0,0 +1,294 @@
+<template>
+  <div id="MyDiv">
+    <div class="cont-left">
+      <div class="cont-title-description">滨州医学院烟台附属医院</div>
+      <div class="cont-title-item">临时医嘱单</div>
+      <div />
+      <div class="cont-title-name">
+        <div class="cont-title-item">
+          <span class="cont-title-text">姓名:</span>
+          <span v-if="dataObj.info" class="cont-title-normal">{{ dataObj.info.AAA01 }}</span>
+        </div>
+        <div class="cont-title-item">
+          <span class="cont-title-text">性别:</span>
+          <span v-if="dataObj.info" class="cont-title-normal">{{ dataObj.info.AAA02C }}</span>
+        </div>
+        <div class="cont-title-item">
+          <span class="cont-title-text">年龄:</span>
+          <span v-if="dataObj.info" class="cont-title-normal">{{ dataObj.info.AAA04 }}</span>
+        </div>
+        <div class="cont-title-item">
+          <span class="cont-title-text cont-title-twidt">科别:</span>
+          <span v-if="dataObj.info" class="cont-title-normal">{{ dataObj.info.AAB02C }}</span>
+        </div>
+        <div class="cont-title-item">
+          <span class="cont-title-text">床号:</span>
+          <span class="cont-title-normal" />
+        </div>
+        <div class="cont-title-item">
+          <span class="cont-title-text">住院号:</span>
+          <span v-if="dataObj.info" class="cont-title-normal">{{ dataObj.info.AAA28 }}</span>
+        </div>
+      </div>
+      <div class="table">
+        <table ref="tables">
+          <tr style="height: 10px">
+            <td style="height: 10px" class="table-value m-all" colspan="1" />
+            <td style="height: 10px" class="table-value m-all" colspan="1" />
+            <td style="height: 10px" class="table-value m-all" colspan="1" />
+            <td style="height: 10px" class="table-value m-all" colspan="1" />
+            <td style="height: 10px" class="table-value m-all" colspan="1" />
+            <td style="height: 10px" class="table-value m-all" colspan="1" />
+            <td style="height: 10px" class="table-value m-all" colspan="1" />
+            <td style="height: 10px" class="table-value m-all" colspan="1" />
+            <td style="height: 10px" class="table-value m-all" colspan="1" />
+            <td style="height: 10px" class="table-value m-all" colspan="1" />
+          </tr>
+
+          <tr>
+            <td class="table-label medical-font" colspan="1">日期</td>
+            <td class="table-label medical-font" colspan="1">时间</td>
+            <td class="table-label medical-font" colspan="3">医嘱</td>
+            <td class="table-label medical-font" colspan="1">剂量</td>
+            <td class="table-label medical-font" colspan="1">用法</td>
+            <td class="table-label medical-font" colspan="1">医师签名</td>
+            <td class="table-label medical-font" colspan="1">护士签名</td>
+            <td class="table-label medical-font" colspan="1">执行时间</td>
+          </tr>
+          <tr v-for="(item, index) in dataObj.list" :key="index">
+            <td class="table-value" colspan="1">{{ item.DATE }}</td>
+            <td class="table-value" colspan="1">{{ item.TIME }}</td>
+            <td class="table-value" colspan="3">{{ item.YZMC }}</td>
+            <td class="table-value" colspan="1">{{ item.YCJL }}</td>
+            <td class="table-value" colspan="1">{{ item.SYPC }}</td>
+            <td class="table-value" colspan="1">{{ item.KZYS }}</td>
+            <td class="table-value" colspan="1">{{ item.XZJDGH }}</td>
+            <td class="table-value" colspan="1">{{ item.XZJDSJ }}</td>
+          </tr>
+          <tr>
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="5" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+          </tr>
+          <tr>
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="5" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+          </tr>
+          <tr>
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="5" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+          </tr>
+          <tr>
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="5" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+          </tr>
+          <tr>
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="5" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+            <td class="table-value" colspan="1" />
+          </tr>
+        </table>
+      </div>
+      <div class="bottom-time bottom-time-top">
+        <div v-if="dataObj.info.HCRQ" class="bottom-time-list">
+          <span class="bottom-time-bold">护士分床时间:</span>
+          <span>{{ dataObj.info.HCRQ }}</span>
+        </div>
+        <div v-if="dataObj.info.AAC01" class="bottom-time-list">
+          <span class="bottom-time-bold">出院时间:</span>
+          <span>{{ dataObj.info.AAC01 }}</span>
+        </div>
+      </div>
+      <div v-if="dataObj.info.SWSJ" class="bottom-time bottom-time-botom">
+        <div class="bottom-time-list">
+          <span class="bottom-time-bold">死亡时间:</span>
+          <span>{{ dataObj.info.SWSJ }}</span>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+// import OtherComponent from '@/components/OtherComponent'
+export default {
+  name: 'MedicalTemporary',
+  components: {
+    // OtherComponent
+  },
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {
+    dataObj: {
+      type: Object,
+      default: null
+    }
+  },
+  data() {
+    return {
+      data: '',
+      ifFile: false
+    }
+  },
+  computed: {},
+  watch: {},
+  beforeCreate() {
+    // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
+  },
+  created() {
+    // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
+    // 初始化渲染页面
+  },
+  beforeMount() {
+    // 生命周期钩子:模板编译/挂载之前
+  },
+  mounted() {
+    // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
+  },
+  beforeUpate() {
+    // 生命周期钩子:组件更新之前
+  },
+  updated() {
+    // 生命周期钩子:组件更新之后
+  },
+  activated() {
+    // 生命周期钩子:keep-alive 组件激活时调用
+  },
+  deactivated() {
+    // 生命周期钩子:keep-alive 组件停用时调用
+  },
+  beforeDestroy() {
+    // 生命周期钩子:实例销毁前调用
+  },
+  destroyed() {
+    // 生命周期钩子:实例销毁后调用
+  },
+  errorCaptured(err, vm, info) {
+    // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
+    console.log(err, vm, info)
+  },
+  methods: {}
+}
+</script>
+<style lang="scss" scoped>
+#MyDiv {
+  // padding:0 15px;
+  margin: 0 15px;
+}
+.cont-title {
+  display: flex;
+  justify-content: space-between;
+  span {
+    padding: 5px;
+  }
+}
+.cont-title-item {
+  width: 100%;
+  margin: 0 auto;
+  display: flex;
+  justify-content: center;
+  font-size: 20px;
+  padding: 20px 0 10px 0;
+  font-weight: 600;
+}
+.cont-left {
+  //   flex: 1;
+  //   min-height: 650px;
+  //   margin: 0 15px;
+  //   height: 800px;
+  //   overflow-y: scroll;
+  background: #ffffff;
+  // border: 1px solid #e2e2e2;
+  padding: 10px;
+  .cont-title-name {
+    width: 100%;
+    height: 50px;
+    display: flex;
+    // align-items: flex-end;
+    justify-content: space-between;
+    .cont-title-item {
+      flex: 1;
+      text-align: left;
+      display: flex;
+      justify-content: left;
+    }
+    .cont-title-text {
+      font-weight: bold;
+    }
+    .cont-title-twidt {
+      width: 35px;
+    }
+    .cont-title-normal {
+      font-weight: normal;
+      margin-left: 5px;
+    }
+  }
+}
+.cont-title-description {
+  margin: 20px;
+  font-size: 24px;
+  font-weight: bold;
+  color: #2c3240;
+  //   width: 1200px;
+  text-align: center;
+}
+table {
+  min-width: 1000px;
+  table-layout: fixed;
+  empty-cells: show;
+  border-collapse: collapse;
+  margin: 0 auto;
+  margin-bottom: 30px;
+  td {
+    border: 1px solid #dddddd;
+    // padding-left: 16px;
+    text-align: center;
+    font-size: 12px;
+    box-sizing: border-box;
+  }
+  .table-label {
+    width: 150px;
+    height: 40px;
+    color: #666666;
+    background-color: #f9f9f9;
+  }
+  .table-value {
+    width: 210px;
+    height: 40px;
+    color: #333333;
+    // padding-right: 16px;
+    text-align: center;
+  }
+}
+.m-all {
+  border: none;
+}
+.m-left {
+  border-left: none;
+}
+.m-right {
+  border-right: none;
+}
+.medical-font {
+  font-weight: bold;
+}
+</style>

+ 159 - 0
src/views/recordsRoom/qc/contFile/newContFile.vue

@@ -0,0 +1,159 @@
+<template>
+  <div id="MyDiv">
+    <div class="cont-left">
+      <div class="cont-title-description">{{ name }}</div>
+      <div>
+        <div v-html="textHtml" />
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+// import OtherComponent from '@/components/OtherComponent'
+export default {
+  name: 'NewContFile',
+  components: {
+    // OtherComponent
+  },
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {
+    name: {
+      type: String,
+      default: '标题'
+    },
+    text: {
+      type: String,
+      default: ''
+    }
+  },
+  data() {
+    return {
+      ifFile: false,
+      textHtml: this.text
+    }
+  },
+  computed: {},
+  watch: {},
+  beforeCreate() {
+    // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
+  },
+  created() {
+    // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
+    // 初始化渲染页面
+    var textHtml = this.textHtml
+    var reg = new RegExp('\r\n', 'g')
+    this.textHtml = textHtml.replaceAll(reg, '<br/>')
+  },
+
+  beforeMount() {
+    // 生命周期钩子:模板编译/挂载之前
+  },
+  mounted() {
+    // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
+  },
+  beforeUpate() {
+    // 生命周期钩子:组件更新之前
+  },
+  updated() {
+    // 生命周期钩子:组件更新之后
+  },
+  activated() {
+    // 生命周期钩子:keep-alive 组件激活时调用
+  },
+  deactivated() {
+    // 生命周期钩子:keep-alive 组件停用时调用
+  },
+  beforeDestroy() {
+    // 生命周期钩子:实例销毁前调用
+  },
+  destroyed() {
+    // 生命周期钩子:实例销毁后调用
+  },
+  errorCaptured(err, vm, info) {
+    // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
+    console.log(err, vm, info)
+  },
+  methods: {}
+}
+</script>
+<style lang='scss' scoped>
+#MyDiv {
+  // padding:0 15px;
+  margin: 0 15px;
+}
+.cont-title {
+  display: flex;
+  justify-content: space-between;
+  span {
+    padding: 5px;
+  }
+}
+.cont-title-item {
+  width: 100%;
+  margin: 0 auto;
+  display: flex;
+  justify-content: center;
+  font-size: 20px;
+  padding: 50px 0 10px 0;
+  font-weight: 600;
+}
+.cont-left {
+  //   flex: 1;
+  //   min-height: 650px;
+  //   margin: 0 15px;
+  //   height: 800px;
+  //   overflow-y: scroll;
+  background: #ffffff;
+  // border: 1px solid #e2e2e2;
+  padding: 10px;
+}
+.cont-title-description {
+  margin: 20px;
+  font-size: 24px;
+  font-weight: bold;
+  color: #2c3240;
+  //   width: 1200px;
+  text-align: center;
+}
+table {
+  min-width: 1000px;
+  table-layout: fixed;
+  empty-cells: show;
+  border-collapse: collapse;
+  margin: 0 auto;
+  margin-bottom: 30px;
+  td {
+    border: 1px solid #dddddd;
+    // padding-left: 16px;
+    text-align: center;
+    font-size: 12px;
+    box-sizing: border-box;
+  }
+  .table-label {
+    width: 150px;
+    height: 40px;
+    color: #666666;
+    background-color: #f9f9f9;
+  }
+  .table-value {
+    width: 210px;
+    height: 40px;
+    color: #333333;
+    // padding-right: 16px;
+    text-align: center;
+  }
+}
+.m-all {
+  border: none;
+}
+.m-left {
+  border-left: none;
+}
+.m-right {
+  border-right: none;
+}
+</style>
+

+ 142 - 0
src/views/recordsRoom/qc/index.vue

@@ -0,0 +1,142 @@
+<template>
+  <div>
+    <SearchBoxVue :data="searchData" @search="handleSearch" @reset="handleReset" />
+    <TableBoxVue :loading="loading" :data="tableData" style="margin-top: -40px;" />
+    <pagination
+      :auto-scroll="false"
+      :total="paginationData.total"
+      :page="paginationData.page"
+      :limit="paginationData.limit"
+      @pagination="handlePagination"
+    />
+  </div>
+</template>
+
+<script>
+import SearchBoxVue from '@/views/recordsRoom/qc/components/SearchBox.vue'
+import TableBoxVue from '@/views/recordsRoom/qc/components/TableBox.vue'
+import pagination from '@/components/Pagination/index2.vue'
+import { getBlZkList } from '@/api/qc'
+
+export default {
+  components: {
+    SearchBoxVue,
+    TableBoxVue,
+    pagination
+  },
+  data() {
+    return {
+      loading: false,
+      searchData: {
+        BLZT: '',
+        level: '',
+        ZKYS: '',
+        BLDJ: '',
+        AAA28: '',
+        AAA01: '',
+        AAC11N: '',
+        AAB01_START: '',
+        AAB01_END: '',
+        AAC01_START: '',
+        AAC01_END: ''
+      },
+      tableData: [],
+      paginationData: {
+        total: 0,
+        page: 1,
+        limit: 10
+      }
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    getList() {
+      const {
+        BLZT,
+        level,
+        ZKYS,
+        BLDJ,
+        AAA28,
+        AAA01,
+        AAC11N,
+        AAB01_START,
+        AAB01_END,
+        AAC01_START,
+        AAC01_END
+      } = this.searchData
+      const { page, limit } = this.paginationData
+      const params = {
+        BLZT,
+        level,
+        ZKYS,
+        BLDJ,
+        AAA28,
+        AAA01,
+        AAC11N,
+        AAB01_START,
+        AAB01_END,
+        AAC01_START,
+        AAC01_END,
+        page,
+        page_size: limit
+      }
+      params.AAB01_START = AAB01_START ? AAB01_START / 1000 : ''
+      params.AAB01_END = AAB01_END ? AAB01_END / 1000 : ''
+      params.AAC01_START = AAC01_START ? AAC01_START / 1000 : ''
+      params.AAC01_END = AAC01_END ? AAC01_END / 1000 : ''
+      this.loading = true
+      getBlZkList(params).then(res => {
+        this.paginationData.total = res.data.count
+        this.tableData = res.data.list
+      }).catch(error => {
+        console.log(error)
+      }).finally(() => {
+        this.loading = false
+      })
+    },
+    handlePagination(param) {
+      this.paginationData.page = param.page
+      this.paginationData.limit = param.limit
+      this.getList()
+    },
+    handleSearch() {
+      this.paginationData.page = 1
+      this.getList()
+    },
+    handleReset() {
+      this.searchData = {
+        BLZT: '',
+        level: '',
+        ZKYS: '',
+        BLDJ: '',
+        AAA28: '',
+        AAA01: '',
+        AAC11N: '',
+        AAB01_START: '',
+        AAB01_END: '',
+        AAC01_START: '',
+        AAC01_END: ''
+      }
+      this.handleSearch()
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.pagination-container {
+  background-color: rgba(244,244,244,1);
+  padding: 0 20px;
+  display: flex;
+  justify-content: flex-end;
+  .cus-total {
+    float: none;
+    line-height: 28px;
+  }
+  .el-pagination {
+    float: none;
+  }
+}
+</style>

+ 289 - 0
src/views/recordsRoom/qc/report/caseImageText.vue

@@ -0,0 +1,289 @@
+<template>
+  <!-- 病历图文报告单 -->
+  <div id="caseImageTextA">
+    <div v-for="(dataObj, index) in dataObjArr" :key="index" class="caseit-cont">
+      <div class="cont-title-description">滨州医学院烟台附属医院病理诊断报告</div>
+      <div class="examType">{{ dataObj.ExamType }}</div>
+
+      <div class="caseit-cont-header">
+        <div class="caseit-cont-header-item">
+          <div class="caseit-cont-infor-title caseit-cont-infor-text cont-textbold">检查日期:</div>
+          <div class="caseit-cont-infor-list">
+            <span>{{ dataObj.JYSJ }}</span>
+          </div>
+        </div>
+        <div class="caseit-cont-header-item">
+          <div class="caseit-cont-infor-title cont-textbold">报告时间:</div>
+          <div class="caseit-cont-infor-list">
+            <span>{{ dataObj.BGSJ }}</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="caseit-cont-infor">
+        <div class="caseit-cont-infor-title caseit-cont-infor-text cont-textbold">姓名:</div>
+        <div class="caseit-cont-infor-list">
+          <span>{{ dataObj.BRXM }}</span>
+        </div>
+        <div class="caseit-cont-infor-title cont-textbold">性别:</div>
+        <div class="caseit-cont-infor-list">
+          <span>{{ dataObj.BRXB == 1 ? '男' : '女' }}</span>
+        </div>
+        <div class="caseit-cont-infor-title cont-textbold">年龄:</div>
+        <div class="caseit-cont-infor-list">
+          <span>{{ dataObj.BRNL }}</span>
+        </div>
+        <div class="caseit-cont-infor-title cont-textbold">科别:</div>
+        <div class="caseit-cont-infor-list">
+          <span>{{ dataObj.SQKSMC }}</span>
+        </div>
+        <div class="caseit-cont-infor-title cont-textbold">住院号:</div>
+        <div class="caseit-cont-infor-list">
+          <span>{{ dataObj.JZLSH }}</span>
+        </div>
+      </div>
+      <div class="caseit-cont-infor">
+        <div class="caseit-cont-infor-title cont-textbold">送检科别:</div>
+        <div class="caseit-cont-infor-list">
+          <span>{{ dataObj.JCBJGMC }}</span>
+        </div>
+        <div class="caseit-cont-infor-title cont-textbold">标本部分:</div>
+        <div class="caseit-cont-infor-listw">
+          <span>{{ dataObj.JCBW }}</span>
+        </div>
+        <div class="caseit-cont-infor-title cont-textbold">病理号:</div>
+        <div class="caseit-cont-infor-listw">
+          <span>{{ dataObj.StudyUid }}</span>
+        </div>
+      </div>
+
+      <div class="caseit-cont-chief caseit-cont-mg20">
+        <div class="caseit-cont-chief-title">大体描述:</div>
+        <div v-for="(jitem, index) in dataObj.JCBW" :key="index" class="caseit-cont-chief-cont">{{ jitem }}</div>
+      </div>
+      <div class="caseit-cont-chief caseit-cont-mg20 caseit-cont-chief-tb">
+        <div class="caseit-cont-chief-title">病理诊断:</div>
+        <div v-for="(jitem, index) in dataObj.YXZD" :key="index" class="caseit-cont-chief-cont">{{ jitem }}</div>
+      </div>
+
+      <div class="caseit-cont-sign">
+        <span class="caseit-cont-sign-bolb">报告医师:</span>
+        <span class="caseit-cont-sign-cont">{{ dataObj.BGRXM }}</span>
+        <span class="caseit-cont-sign-bolb">审核医师:</span>
+        <span class="caseit-cont-sign-cont">{{ dataObj.SHRXM }}</span>
+      </div>
+      <div class="caseit-cont-sign">
+        <span class="caseit-cont-sign-bolb">开单时间:</span>
+        <span class="caseit-cont-sign-cont">{{ dataObj.KDSJ }}</span>
+        <span class="caseit-cont-sign-bolb">检查科室:</span>
+        <span class="caseit-cont-sign-cont">{{ dataObj.JCKSMC }}</span>
+      </div>
+      <div class="caseit-cont-physique">注:如对病理诊断有疑问,请及时联系诊断医师。</div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  name: '',
+  components: {
+    // OtherComponent
+  },
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {
+    dataObjArr: {
+      type: null,
+      default: false
+    }
+  },
+  data() {
+    return {
+      ifFile: false
+    }
+  },
+  computed: {},
+  watch: {},
+  beforeCreate() {
+    // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
+  },
+  created() {
+    // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
+    // 初始化渲染页面
+  },
+  beforeMount() {
+    // 生命周期钩子:模板编译/挂载之前
+  },
+  mounted() {
+    // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
+  },
+  beforeUpate() {
+    // 生命周期钩子:组件更新之前
+  },
+  updated() {
+    // 生命周期钩子:组件更新之后
+  },
+  activated() {
+    // 生命周期钩子:keep-alive 组件激活时调用
+  },
+  deactivated() {
+    // 生命周期钩子:keep-alive 组件停用时调用
+  },
+  beforeDestroy() {
+    // 生命周期钩子:实例销毁前调用
+  },
+  destroyed() {
+    // 生命周期钩子:实例销毁后调用
+  },
+  errorCaptured(err, vm, info) {
+    // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
+    console.log(err, vm, info)
+  },
+  methods: {}
+}
+</script>
+<style lang="scss" scoped>
+#caseImageTextA {
+  padding: 0;
+  margin: 0 30px;
+  .caseit-cont {
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    justify-content: flex-start;
+    align-items: center;
+    margin-bottom: 30px;
+    .cont-title-description {
+      margin: 20px;
+      font-size: 24px;
+      font-weight: bold;
+      color: #2c3240;
+      text-align: center;
+    }
+    .cont-textbold {
+      font-weight: bold;
+    }
+    .caseit-cont-header {
+      height: 50px;
+      width: 100%;
+      border-bottom: 1.5px solid #e2dfdf;
+      display: flex;
+      justify-content: flex-start;
+      align-items: center;
+      margin-top: 50px;
+      margin-bottom: 20px;
+      padding-right: 30px;
+      .caseit-cont-header-item {
+        display: flex;
+        justify-content: flex-start;
+        align-items: center;
+        width: 50%;
+      }
+    }
+    .caseit-cont-infor {
+      width: 100%;
+      height: 40px;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+
+      .caseit-cont-infor-list {
+        width: 15%;
+      }
+      .caseit-cont-infor-title {
+        width: 100px;
+        text-align: right;
+      }
+      .caseit-cont-infor-listw {
+        width: 200px;
+      }
+      .caseit-cont-infor-listwl {
+        width: 61%;
+      }
+      .caseit-cont-infor-text {
+        text-align: right;
+      }
+    }
+    .caseit-cont-chief {
+      width: 100%;
+      min-height: 80px;
+      padding: 10px;
+      border-top: 1.5px solid #e2dfdf;
+      .caseit-cont-chief-title {
+        font-weight: bold;
+      }
+      .caseit-cont-chief-cont {
+        line-height: 25px;
+        padding-left: 30px;
+      }
+    }
+    .caseit-cont-chief-tb {
+      border-top: 0;
+    }
+    .caseit-cont-mg20 {
+      margin-top: 20px;
+    }
+    .caseit-cont-sign {
+      width: 100%;
+      height: 30px;
+      padding-top: 20px;
+      padding-left: 50px;
+      display: flex;
+      justify-content: flex-start;
+      margin-bottom: 30px;
+      .caseit-cont-sign-cont {
+        width: 200px;
+        text-align: left;
+      }
+      .caseit-cont-sign-bolb {
+        font-weight: bold;
+        width: 100px;
+      }
+    }
+
+    .caseit-cont-sign-top {
+      border-bottom: 0;
+      margin-bottom: 0;
+    }
+    .caseit-cont-physique {
+      width: 100%;
+      height: 30px;
+      text-align: left;
+      padding-left: 80px;
+      margin-top: 30px;
+      font-weight: bold;
+      margin-bottom: 50px;
+    }
+
+    .caseit-cont-auxi {
+      width: 100%;
+      min-height: 30px;
+      display: flex;
+      .caseit-cont-auxi-list {
+        width: 25%;
+        text-align: left;
+      }
+    }
+    .caseit-cont-prel {
+      width: 100%;
+      padding-left: 50%;
+    }
+    .caseit-cont-prel-text {
+      width: 100%;
+      padding-left: 58%;
+      line-height: 20px;
+    }
+    .caseit-cont-textnor {
+      font-weight: normal;
+    }
+  }
+}
+
+.examType {
+  width: 100%;
+  display: flex;
+  justify-content: flex-end;
+  padding-right: 50px;
+}
+</style>

+ 342 - 0
src/views/recordsRoom/qc/report/checkout.vue

@@ -0,0 +1,342 @@
+<template>
+  <!-- 检验报告单 -->
+  <div id="checkoutA">
+    <div v-for="(dataObj, index) in dataObjArr" :key="index" class="checkout-cont">
+      <div class="cont-title-description">滨州医学院烟台附属医院检验报告单</div>
+      <div class="examType">{{ dataObj.ExamType }}</div>
+      <div class="checkout-cont-header" />
+
+      <div class="checkout-cont-infortop">
+        <div class="checkout-cont-infor-title cont-textbold">姓名:</div>
+        <div class="checkout-cont-infor-list">
+          <span>{{ dataObj.XM }}</span>
+        </div>
+        <div class="checkout-cont-infor-title cont-textbold">性别:</div>
+        <div class="checkout-cont-infor-list">
+          <span>{{ dataObj.XB }}</span>
+        </div>
+        <div class="checkout-cont-infor-title cont-textbold">年龄:</div>
+        <div class="checkout-cont-infor-list">
+          <span>{{ dataObj.NL }}</span>
+        </div>
+        <div class="checkout-cont-infor-title cont-textbold">病区:</div>
+        <div class="checkout-cont-infor-list">
+          <span>{{ dataObj.BQ }}</span>
+        </div>
+        <div class="checkout-cont-infor-title cont-textbold">住院号:</div>
+        <div class="checkout-cont-infor-list">
+          <span>{{ dataObj.AAA28 }}</span>
+        </div>
+      </div>
+      <div class="checkout-cont-infortop checkout-cont-inforbotm">
+        <div class="checkout-cont-infor-title cont-textbold">采集时间:</div>
+        <div class="checkout-cont-infor-list">
+          <span>{{ dataObj.CJSJ }}</span>
+        </div>
+        <div class="checkout-cont-infor-title cont-textbold">接收时间:</div>
+        <div class="checkout-cont-infor-list">
+          <span>{{ dataObj.JSSJ }}</span>
+        </div>
+        <div class="checkout-cont-infor-title cont-textbold">审查目的:</div>
+        <div class="checkout-cont-infor-list">
+          <span />
+        </div>
+      </div>
+      <div class="checkout-cont-infortop checkout-cont-inforbotm">
+        <div class="checkout-cont-infor-title cont-textbold">样本类型:</div>
+        <div class="checkout-cont-infor-list">
+          <span>{{ dataObj.YBLX }}</span>
+        </div>
+        <div class="checkout-cont-infor-title cont-textbold">编号:</div>
+        <div class="checkout-cont-infor-list">
+          <span>{{ dataObj.NO }}</span>
+        </div>
+        <div class="checkout-cont-infor-title cont-textbold">申请人:</div>
+        <div class="checkout-cont-infor-list">
+          <span>{{ dataObj.SJYS }}</span>
+        </div>
+      </div>
+
+      <div class="checkout-cont-infor-line" />
+      <div v-if="dataObj.template_type == 1" class="checkout-cont-info">
+        <div class="checkout-cont-chief checkout-cont-mg20">
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">细菌培养结果</div>
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">细菌名称</div>
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">细菌数量</div>
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">药敏名称</div>
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">药敏结果</div>
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">部位(样本类型)</div>
+        </div>
+        <div v-for="(item, index) in dataObj.JCXM" :key="index" class="checkout-cont-chief checkout-cont-mg20">
+          <div class="checkout-cont-chief-item">{{ item.PYJG }}</div>
+          <div class="checkout-cont-chief-item">{{ item.XJMC }}</div>
+          <div class="checkout-cont-chief-item">{{ item.XJSL }}</div>
+          <div class="checkout-cont-chief-item">{{ item.YMMC }}</div>
+          <div class="checkout-cont-chief-item">{{ item.YMJG }}</div>
+          <div class="checkout-cont-chief-item">{{ item.YMBW }}</div>
+        </div>
+      </div>
+      <div v-if="dataObj.template_type == 2" class="checkout-cont-info">
+        <div class="checkout-cont-chief checkout-cont-mg20">
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole checkout-cont-tc">序号</div>
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">中文名称</div>
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">英文名称</div>
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">检验结果</div>
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">异常结果提示</div>
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">参考范围</div>
+          <div class="checkout-cont-chief-item checkout-cont-chief-bole">单位</div>
+        </div>
+        <div v-for="(jitem, index) in dataObj.JCXM" :key="index" class="checkout-cont-chief checkout-cont-mg20">
+          <div class="checkout-cont-chief-item checkout-cont-tc">{{ index }}</div>
+          <div class="checkout-cont-chief-item">{{ jitem.JYXM }}</div>
+          <div class="checkout-cont-chief-item">{{ jitem.YW }}</div>
+          <div class="checkout-cont-chief-item">{{ jitem.JG }}</div>
+          <div class="checkout-cont-chief-item">{{ jitem.TS }}</div>
+          <div class="checkout-cont-chief-item">{{ jitem.CKFW }}</div>
+          <div class="checkout-cont-chief-item">{{ jitem.DW }}</div>
+        </div>
+      </div>
+
+      <div class="checkout-cont-infor-line" />
+      <div class="checkout-cont-zd">
+        <span class="checkout-cont-zd-title">临床诊断为</span>
+      </div>
+      <div class="checkout-cont-sign">
+        <span class="checkout-cont-sign-bolb">报告时间:</span>
+        <span class="checkout-cont-sign-cont">{{ dataObj.BGSJ }}</span>
+        <span class="checkout-cont-sign-bolb">检 验 者:</span>
+        <span class="checkout-cont-sign-cont">{{ dataObj.JYY }}</span>
+        <span class="checkout-cont-sign-bolb">审 核 者:</span>
+        <span class="checkout-cont-sign-cont">{{ dataObj.SHY }}</span>
+      </div>
+
+      <div class="checkout-cont-physique">
+        <div class="checkout-cont-physique-text">
+          注:此报告仅对送检标本负责,供医师参考。标*项目为质评合格项目。如有疑问请在48小时内反馈至检验科。地址:烟台市牟平区金埠大街717号滨州医学院烟台附属医院门诊部3楼检验科。电话:0535-4770362。
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  name: '',
+  components: {
+    // OtherComponent
+  },
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {
+    dataObjArr: {
+      type: null,
+      default: false
+    }
+  },
+  data() {
+    return {
+      ifFile: false
+    }
+  },
+  computed: {},
+  watch: {},
+  beforeCreate() {
+    // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
+  },
+  created() {
+    // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
+    // 初始化渲染页面
+  },
+  beforeMount() {
+    // 生命周期钩子:模板编译/挂载之前
+  },
+  mounted() {
+    // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
+  },
+  beforeUpate() {
+    // 生命周期钩子:组件更新之前
+  },
+  updated() {
+    // 生命周期钩子:组件更新之后
+  },
+  activated() {
+    // 生命周期钩子:keep-alive 组件激活时调用
+  },
+  deactivated() {
+    // 生命周期钩子:keep-alive 组件停用时调用
+  },
+  beforeDestroy() {
+    // 生命周期钩子:实例销毁前调用
+  },
+  destroyed() {
+    // 生命周期钩子:实例销毁后调用
+  },
+  errorCaptured(err, vm, info) {
+    // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
+    console.log(err, vm, info)
+  },
+  methods: {}
+}
+</script>
+<style lang="scss" scoped>
+#checkoutA {
+  padding: 0;
+  margin: 0 30px;
+  .checkout-cont {
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    justify-content: flex-start;
+    align-items: center;
+    border: 1.5px solid #e2dfdf;
+    margin-top: 30px;
+    margin-bottom: 30px;
+    .cont-title-description {
+      margin: 20px;
+      font-size: 24px;
+      font-weight: bold;
+      color: #2c3240;
+      text-align: center;
+      margin-top: 40px;
+    }
+    .cont-textbold {
+      font-weight: bold;
+    }
+    .checkout-cont-header {
+      height: 30px;
+      width: 100%;
+      display: flex;
+      justify-content: flex-start;
+      align-items: center;
+      margin-top: 5px;
+      padding-left: 50px;
+    }
+    .checkout-cont-mark {
+      width: 100%;
+      margin-top: 10px;
+      display: flex;
+      justify-content: space-between;
+      padding-left: 50px;
+      padding-right: 50px;
+      .checkout-cont-mark-mint {
+        width: 50%;
+        .checkout-cont-mark-title {
+          font-weight: bold;
+        }
+        .checkout-cont-mark-item {
+          display: inline-block;
+          width: 30%;
+        }
+      }
+    }
+    .checkout-cont-info {
+      width: 100%;
+      min-height: 300px;
+      .checkout-cont-chief-proof {
+        padding-left: 100px;
+        margin-top: 20px;
+        .checkout-cont-chief-pbold {
+          font-weight: bold;
+        }
+      }
+    }
+    .checkout-cont-zd {
+      width: 100%;
+      margin-bottom: 20px;
+      text-align: left;
+      padding-left: 30px;
+      .checkout-cont-zd-title {
+        font-weight: bold;
+      }
+    }
+    .checkout-cont-infortop {
+      width: 100%;
+      height: 30px;
+      display: flex;
+      justify-content: left;
+      align-items: center;
+      margin-top: 20px;
+      padding-left: 5%;
+      .checkout-cont-infor-list {
+        width: 15%;
+      }
+      .checkout-cont-infor-title {
+        width: 11%;
+        text-align: right;
+      }
+
+      .checkout-cont-infor-text {
+        text-align: right;
+      }
+    }
+    .checkout-cont-inforbotm {
+      justify-content: flex-start;
+      padding-left: 2%;
+    }
+    .checkout-cont-infor-line {
+      width: 100%;
+      height: 2px;
+      border-bottom: 1.5px solid #e2dfdf;
+      margin-top: 20px;
+      margin-bottom: 30px;
+    }
+    .checkout-cont-chief {
+      width: 100%;
+      min-height: 30px;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      .checkout-cont-chief-item {
+        width: 15%;
+        text-align: left;
+        padding-right: 15px;
+      }
+      .checkout-cont-tc {
+        text-align: center;
+      }
+      .checkout-cont-chief-bole {
+        font-weight: bold;
+      }
+    }
+    .checkout-cont-mg20 {
+      margin-top: 5px;
+    }
+    .checkout-cont-sign {
+      width: 100%;
+      height: 30px;
+      padding-left: 50px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      .checkout-cont-sign-cont {
+        width: 20%;
+      }
+      .checkout-cont-sign-bolb {
+        font-weight: bold;
+      }
+    }
+    .checkout-cont-physique {
+      width: 100%;
+      height: 30px;
+      text-align: left;
+      padding-left: 80px;
+      padding-right: 80px;
+      margin-top: 30px;
+      margin-bottom: 50px;
+      display: flex;
+      justify-content: flex-start;
+      .checkout-cont-physique-text {
+        width: 100%;
+        font-weight: bold;
+      }
+    }
+  }
+}
+.examType {
+  width: 100%;
+  display: flex;
+  justify-content: flex-end;
+  padding-right: 50px;
+}
+</style>

+ 306 - 0
src/views/recordsRoom/qc/report/electrocar.vue

@@ -0,0 +1,306 @@
+<template>
+  <!-- 心电图诊断报告单 -->
+  <div id="electrocarA">
+    <div v-for="(dataObj, index) in dataObjArr" :key="index" class="elect-cont">
+      <div class="cont-title-description">滨州医学院烟台附属医院心电图诊断报告</div>
+      <div class="examType">{{ dataObj.ExamType }}</div>
+      <div class="elect-cont-header" />
+
+      <div class="elect-cont-time elect-cont-mian-border">
+        <div class="elect-cont-time-name elect-cont-time-title">检查日期:</div>
+        <div class="elect-cont-time-item">{{ dataObj.JYSJ }}</div>
+        <div class="elect-cont-time-name elect-cont-time-title">报告时间:</div>
+        <div class="elect-cont-time-item">{{ dataObj.BGSJ }}</div>
+      </div>
+      <div class="elect-cont-mian">
+        <div class="elect-cont-mian-name elect-cont-main-title">姓名:</div>
+        <div class="elect-cont-main-item">{{ dataObj.BRXM }}</div>
+        <div class="elect-cont-main-name elect-cont-main-title">性别:</div>
+        <div class="elect-cont-main-item">{{ dataObj.BRXB == 1 ? '男' : '女' }}</div>
+        <div class="elect-cont-main-name elect-cont-main-title">年龄:</div>
+        <div class="elect-cont-main-item">{{ dataObj.SQKSMC }}</div>
+      </div>
+      <div class="elect-cont-mian">
+        <div class="elect-cont-mian-name elect-cont-main-title">科室:</div>
+        <div class="elect-cont-main-item">{{ dataObj.SQKSMC }}</div>
+        <div class="elect-cont-main-name elect-cont-main-title">住院号:</div>
+        <div class="elect-cont-main-item">{{ dataObj.JZLSH }}</div>
+        <div class="elect-cont-main-name elect-cont-main-title">检查号:</div>
+        <div class="elect-cont-main-item">{{ dataObj.CT464003 }}</div>
+      </div>
+
+      <div class="elect-cont-infor-line" />
+
+      <div class="elect-cont-infor-text">{{ dataObj.JCMC }}</div>
+
+      <div class="elect-cont-chief elect-cont-mg20">
+        <div class="elect-cont-chief-title">
+          心电图提示:
+          <span class="elect-cont-textnor" />
+        </div>
+        <div v-for="(jitem, index) in dataObj.YXZD" :key="index" class="caseit-cont-chief-cont">{{ jitem }}</div>
+      </div>
+
+      <div class="elect-cont-sign elect-cont-sign-top">
+        <div>
+          <span class="elect-cont-sign-bolb">报告时间:</span>
+          <span class="elect-cont-sign-cont">{{ dataObj.BGSJ }}</span>
+        </div>
+        <div>
+          <span class="elect-cont-sign-bolb">审核医师:</span>
+          <span class="elect-cont-sign-cont">{{ dataObj.SHRXM }}</span>
+        </div>
+      </div>
+      <div class="elect-cont-sign">
+        <div>
+          <span class="elect-cont-sign-bolb">开单时间:</span>
+          <span class="elect-cont-sign-cont">{{ dataObj.KDSJ }}</span>
+        </div>
+        <div>
+          <span class="elect-cont-sign-bolb">检查科室:</span>
+          <span class="elect-cont-sign-cont">{{ dataObj.JCKSMC }}</span>
+        </div>
+      </div>
+      <!-- <div class="elect-cont-physique">
+            <div class="elect-cont-physique-text">
+              【本报告仅供临床医师诊断参考使用】
+            </div>
+          </div> -->
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  name: '',
+  components: {
+    // OtherComponent
+  },
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {
+    dataObjArr: {
+      type: null,
+      default: false
+    }
+  },
+  data() {
+    return {
+      ifFile: false
+    }
+  },
+  computed: {},
+  watch: {},
+  beforeCreate() {
+    // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
+  },
+  created() {
+    // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
+    // 初始化渲染页面
+  },
+  beforeMount() {
+    // 生命周期钩子:模板编译/挂载之前
+  },
+  mounted() {
+    // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
+  },
+  beforeUpate() {
+    // 生命周期钩子:组件更新之前
+  },
+  updated() {
+    // 生命周期钩子:组件更新之后
+  },
+  activated() {
+    // 生命周期钩子:keep-alive 组件激活时调用
+  },
+  deactivated() {
+    // 生命周期钩子:keep-alive 组件停用时调用
+  },
+  beforeDestroy() {
+    // 生命周期钩子:实例销毁前调用
+  },
+  destroyed() {
+    // 生命周期钩子:实例销毁后调用
+  },
+  errorCaptured(err, vm, info) {
+    // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
+    console.log(err, vm, info)
+  },
+  methods: {}
+}
+</script>
+<style lang="scss" scoped>
+#electrocarA {
+  padding: 0;
+  margin: 0 30px;
+  .elect-cont {
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    justify-content: flex-start;
+    align-items: center;
+    margin-bottom: 30px;
+    .cont-title-description {
+      margin: 20px;
+      font-size: 24px;
+      font-weight: bold;
+      color: #2c3240;
+      text-align: center;
+    }
+    .cont-textbold {
+      font-weight: bold;
+    }
+    .elect-cont-header {
+      height: 50px;
+      width: 100%;
+      display: flex;
+      justify-content: flex-end;
+      align-items: center;
+      // margin-top: 20px;
+      margin-bottom: 20px;
+      padding-right: 30px;
+    }
+    .elect-cont-infor {
+      width: 100%;
+      height: 30px;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      margin-top: 5px;
+      .elect-cont-infor-list {
+        width: 15%;
+      }
+      .elect-cont-infor-title {
+        width: 8%;
+        text-align: right;
+      }
+      .elect-cont-infor-listw {
+        width: 38%;
+      }
+      .elect-cont-infor-listwl {
+        width: 30%;
+      }
+      .elect-cont-infor-text {
+        text-align: right;
+      }
+    }
+
+    .elect-cont-infor-line {
+      width: 100%;
+      height: 2px;
+      border-bottom: 1.5px solid #e2dfdf;
+      margin-top: 20px;
+      margin-bottom: 30px;
+    }
+    .elect-cont-infor-text {
+      font-size: 16px;
+    }
+    .elect-cont-chief {
+      width: 100%;
+      display: flex;
+      min-height: 120px;
+      padding: 10px;
+      margin-top: 30px;
+      flex-direction: column;
+      .elect-cont-chief-title {
+        font-weight: bold;
+      }
+      .caseit-cont-chief-cont {
+        line-height: 25px;
+        padding-left: 30px;
+      }
+    }
+
+    .elect-cont-mian {
+      width: 100%;
+      display: flex;
+      padding: 10px;
+      justify-content: flex-start;
+      .elect-cont-main-title {
+        font-weight: bold;
+      }
+      .elect-cont-main-item {
+        width: 20%;
+      }
+      .elect-cont-main-name {
+        width: 80px;
+      }
+    }
+
+    .elect-cont-time {
+      width: 100%;
+      display: flex;
+      padding: 10px;
+      justify-content: flex-start;
+      .elect-cont-time-title {
+        font-weight: bold;
+      }
+      .elect-cont-time-item {
+        width: 200px;
+      }
+      .elect-cont-time-name {
+        width: 80px;
+      }
+    }
+
+    .elect-cont-mian-border {
+      border-bottom: 1.5px solid #e2dfdf;
+    }
+    .elect-cont-mg20 {
+      margin-top: 20px;
+    }
+    .elect-cont-sign {
+      width: 100%;
+      height: 30px;
+      // border-bottom: 1.5px solid #e2dfdf;
+      padding-left: 50px;
+      display: flex;
+      margin-bottom: 30px;
+      justify-content: space-between;
+      .elect-cont-sign-cont {
+        width: 20%;
+      }
+      .elect-cont-sign-bolb {
+        font-weight: bold;
+      }
+    }
+
+    .elect-cont-sign-top {
+      border-bottom: 0;
+      margin-bottom: 0;
+      margin-top: 30px;
+    }
+    .elect-cont-physique {
+      width: 100%;
+      height: 30px;
+      text-align: left;
+      padding-left: 80px;
+      margin-top: 30px;
+      margin-bottom: 50px;
+      display: flex;
+      justify-content: flex-end;
+      .elect-cont-physique-text {
+        width: 45%;
+        font-weight: bold;
+      }
+      .elect-cont-physique-time {
+        margin-left: 10%;
+        .elect-cont-physique-title {
+          font-weight: bold;
+        }
+      }
+    }
+
+    .elect-cont-textnor {
+      font-weight: normal;
+    }
+  }
+}
+.examType {
+  width: 100%;
+  display: flex;
+  justify-content: flex-end;
+  padding-right: 50px;
+}
+</style>

+ 314 - 0
src/views/recordsRoom/qc/report/imaging.vue

@@ -0,0 +1,314 @@
+<template>
+  <!-- 影像报告单 -->
+  <div id="imagingA">
+    <div v-for="(dataObj, index) in dataObjArr" :key="index" class="uimag-cont">
+      <div class="cont-title-description">滨州医学院烟台附属医院影像诊断报告</div>
+      <div class="examType">{{ dataObj.ExamType }}</div>
+      <div class="uimag-cont-header" />
+      <div class="uimag-cont-infortop">
+        <div class="uimag-cont-infor-titlet cont-textbold">检查日期:</div>
+        <div class="uimag-cont-infor-listwl">
+          <span>{{ dataObj.JYSJ }}</span>
+        </div>
+        <div class="uimag-cont-infor-titlet cont-textbold">报告时间:</div>
+        <div class="uimag-cont-infor-listwl">
+          <span>{{ dataObj.BGSJ }}</span>
+        </div>
+      </div>
+      <div class="uimag-cont-infor">
+        <div class="uimag-cont-infor-title uimag-cont-infor-text cont-textbold">姓名:</div>
+        <div class="uimag-cont-infor-list">
+          <span v-if="dataObj">{{ dataObj.BRXM }}</span>
+        </div>
+        <div class="uimag-cont-infor-title cont-textbold">性别:</div>
+        <div class="uimag-cont-infor-list">
+          <span>{{ dataObj.BRXB == 1 ? '男' : '女' }}</span>
+        </div>
+        <div class="uimag-cont-infor-title cont-textbold">年龄:</div>
+        <div class="uimag-cont-infor-list">
+          <span />
+          {{ dataObj.BRNL }}
+        </div>
+        <div class="uimag-cont-infor-title cont-textbold">影像号:</div>
+        <div class="uimag-cont-infor-list">
+          <span v-if="dataObj.PatientID">{{ dataObj.PatientID }}</span>
+        </div>
+      </div>
+      <div class="uimag-cont-infor">
+        <div class="uimag-cont-infor-title uimag-cont-infor-text cont-textbold">科室:</div>
+        <div class="uimag-cont-infor-list">
+          <span>{{ dataObj.SQKSMC }}</span>
+        </div>
+        <div class="uimag-cont-infor-title cont-textbold">住院号:</div>
+        <div class="uimag-cont-infor-list">
+          <span>{{ dataObj.JZLSH }}</span>
+        </div>
+        <div class="uimag-cont-infor-title cont-textbold">床号:</div>
+        <div class="uimag-cont-infor-list">
+          <span>{{ dataObj.CH }}</span>
+        </div>
+        <div class="uimag-cont-infor-title cont-textbold">检查号:</div>
+        <div class="uimag-cont-infor-list">
+          <span>{{ dataObj.StudyUid }}</span>
+        </div>
+      </div>
+      <div class="uimag-cont-infor-line" />
+      <div class="elect-cont-infor-text">{{ dataObj.JCMC }}</div>
+
+      <div class="uimag-cont-chief uimag-cont-mg20">
+        <div class="uimag-cont-chief-title">
+          影像学表现:
+          <span class="uimag-cont-textnor" />
+        </div>
+        <div v-for="(jitem, index) in dataObj.YXBX" :key="index" class="caseit-cont-chief-cont">{{ jitem }}</div>
+      </div>
+      <div class="uimag-cont-chief uimag-cont-mg20">
+        <div class="uimag-cont-chief-title">
+          影像学诊断:
+          <span class="uimag-cont-textnor" />
+        </div>
+        <div v-for="(jitem, index) in dataObj.YXZD" :key="index" class="caseit-cont-chief-cont">{{ jitem }}</div>
+      </div>
+
+      <div class="uimag-cont-sign uimag-cont-sign-top">
+        <span class="uimag-cont-sign-bolb">影像医师:</span>
+        <span class="uimag-cont-sign-cont">{{ dataObj.BGRXM }}</span>
+        <span class="uimag-cont-sign-bolb">审核医师:</span>
+        <span class="uimag-cont-sign-cont">{{ dataObj.SHRXM }}</span>
+      </div>
+      <div class="uimag-cont-sign">
+        <span class="uimag-cont-sign-bolb">开单时间:</span>
+        <span class="uimag-cont-sign-cont">{{ dataObj.KDSJ }}</span>
+        <span class="uimag-cont-sign-bolb">检查科室:</span>
+        <span class="uimag-cont-sign-cont">{{ dataObj.JCKSMC }}</span>
+      </div>
+      <div class="uimag-cont-physique">
+        <div class="uimag-cont-physique-text">【本报告仅供临床医师诊断参考使用】</div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  name: '',
+  components: {
+    // OtherComponent
+  },
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {
+    dataObjArr: {
+      type: null,
+      default: false
+    }
+  },
+  data() {
+    return {
+      ifFile: false
+    }
+  },
+  computed: {},
+  watch: {},
+  beforeCreate() {
+    // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
+  },
+  created() {
+    // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
+    // 初始化渲染页面
+  },
+  beforeMount() {
+    // 生命周期钩子:模板编译/挂载之前
+  },
+  mounted() {
+    // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
+  },
+  beforeUpate() {
+    // 生命周期钩子:组件更新之前
+  },
+  updated() {
+    // 生命周期钩子:组件更新之后
+  },
+  activated() {
+    // 生命周期钩子:keep-alive 组件激活时调用
+  },
+  deactivated() {
+    // 生命周期钩子:keep-alive 组件停用时调用
+  },
+  beforeDestroy() {
+    // 生命周期钩子:实例销毁前调用
+  },
+  destroyed() {
+    // 生命周期钩子:实例销毁后调用
+  },
+  errorCaptured(err, vm, info) {
+    // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
+    console.log(err, vm, info)
+  },
+  methods: {}
+}
+</script>
+<style lang="scss" scoped>
+#imagingA {
+  padding: 0;
+  margin: 0 30px;
+  .uimag-cont {
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    justify-content: flex-start;
+    align-items: center;
+    margin-bottom: 30px;
+    .cont-title-description {
+      margin: 20px;
+      font-size: 24px;
+      font-weight: bold;
+      color: #2c3240;
+      text-align: center;
+    }
+    .cont-textbold {
+      font-weight: bold;
+    }
+    .uimag-cont-header {
+      height: 50px;
+      width: 100%;
+      display: flex;
+      justify-content: flex-end;
+      align-items: center;
+      // margin-top: 20px;
+      margin-bottom: 20px;
+      padding-right: 30px;
+    }
+    .uimag-cont-infor {
+      width: 100%;
+      height: 30px;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      margin-top: 5px;
+      .uimag-cont-infor-list {
+        width: 15%;
+      }
+      .uimag-cont-infor-title {
+        width: 8%;
+        text-align: right;
+      }
+      .uimag-cont-infor-titlet {
+        width: 100px;
+        text-align: right;
+      }
+      .uimag-cont-infor-listw {
+        width: 38%;
+      }
+      .uimag-cont-infor-listwl {
+        width: 200px;
+      }
+      .uimag-cont-infor-text {
+        text-align: right;
+      }
+    }
+    .uimag-cont-infortop {
+      width: 100%;
+      height: 30px;
+      display: flex;
+      justify-content: left;
+      align-items: center;
+      border-bottom: 1.5px solid #e2dfdf;
+      margin-top: 20px;
+      padding-left: 5%;
+
+      .uimag-cont-infor-list {
+        width: 15%;
+      }
+      .uimag-cont-infor-title {
+        width: 100px;
+        text-align: right;
+      }
+      .uimag-cont-infor-listw {
+        width: 38%;
+      }
+      .uimag-cont-infor-listwl {
+        width: 30%;
+      }
+      .uimag-cont-infor-text {
+        text-align: right;
+      }
+    }
+    .uimag-cont-infor-line {
+      width: 100%;
+      height: 2px;
+      border-bottom: 1.5px solid #e2dfdf;
+      margin-top: 20px;
+      margin-bottom: 30px;
+    }
+    .elect-cont-infor-text {
+      font-size: 16px;
+    }
+    .uimag-cont-chief {
+      width: 100%;
+      min-height: 80px;
+      padding: 10px;
+      .uimag-cont-chief-title {
+        font-weight: bold;
+      }
+      .caseit-cont-chief-cont {
+        line-height: 25px;
+        padding-left: 30px;
+      }
+    }
+    .uimag-cont-mg20 {
+      margin-top: 20px;
+    }
+    .uimag-cont-sign {
+      width: 100%;
+      height: 30px;
+      border-bottom: 1.5px solid #e2dfdf;
+      padding-left: 50px;
+      display: flex;
+      margin-bottom: 30px;
+      .uimag-cont-sign-cont {
+        width: 200px;
+      }
+      .uimag-cont-sign-bolb {
+        width: 100px;
+        font-weight: bold;
+      }
+    }
+    .uimag-cont-sign-top {
+      border-bottom: 0;
+      margin-bottom: 0;
+    }
+    .uimag-cont-physique {
+      width: 100%;
+      height: 30px;
+      text-align: left;
+      padding-left: 80px;
+      margin-top: 30px;
+      margin-bottom: 50px;
+      display: flex;
+      justify-content: flex-start;
+      .uimag-cont-physique-text {
+        width: 45%;
+        font-weight: bold;
+      }
+      .uimag-cont-physique-time {
+        margin-left: 10%;
+        .uimag-cont-physique-title {
+          font-weight: bold;
+        }
+      }
+    }
+
+    .uimag-cont-textnor {
+      font-weight: normal;
+    }
+  }
+}
+.examType {
+  width: 100%;
+  display: flex;
+  justify-content: flex-end;
+  padding-right: 50px;
+}
+</style>

+ 289 - 0
src/views/recordsRoom/qc/report/sightGlass.vue

@@ -0,0 +1,289 @@
+<template>
+  <!-- 病历图文报告单 -->
+  <div id="sightGlassA">
+    <div v-for="(dataObj, index) in dataObjArr" :key="index" class="sight-cont">
+      <div class="cont-title-description">滨州医学院烟台附属医院內窥镜检报告</div>
+      <div class="examType">{{ dataObj.ExamType }}</div>
+
+      <div class="sight-cont-header">
+        <div class="sight-cont-header-item">
+          <div class="sight-cont-infor-title sight-cont-infor-text cont-textbold">检查日期:</div>
+          <div class="sight-cont-infor-list">
+            <span>{{ dataObj.JYSJ }}</span>
+          </div>
+        </div>
+        <div class="sight-cont-header-item">
+          <div class="sight-cont-infor-title cont-textbold">报告时间:</div>
+          <div class="sight-cont-infor-list">
+            <span>{{ dataObj.BGSJ }}</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="sight-cont-infor">
+        <div class="sight-cont-infor-title sight-cont-infor-text cont-textbold">姓名:</div>
+        <div class="sight-cont-infor-list">
+          <span>{{ dataObj.BRXM }}</span>
+        </div>
+        <div class="sight-cont-infor-title cont-textbold">性别:</div>
+        <div class="sight-cont-infor-list">
+          <span>{{ dataObj.BRXB == 1 ? '男' : '女' }}</span>
+        </div>
+        <div class="sight-cont-infor-title cont-textbold">年龄:</div>
+        <div class="sight-cont-infor-list">
+          <span>{{ dataObj.BRNL }}</span>
+        </div>
+        <div class="sight-cont-infor-title cont-textbold">科别:</div>
+        <div class="sight-cont-infor-list">
+          <span>{{ dataObj.SQKSMC }}</span>
+        </div>
+      </div>
+      <div class="sight-cont-infor">
+        <div class="sight-cont-infor-title cont-textbold">住院号:</div>
+        <div class="sight-cont-infor-list">
+          <span>{{ dataObj.JZLSH }}</span>
+        </div>
+        <div class="sight-cont-infor-title cont-textbold">检查号:</div>
+        <div class="sight-cont-infor-listw">
+          <span>{{ dataObj.StudyUid }}</span>
+        </div>
+        <div class="sight-cont-infor-title cont-textbold">检查名称:</div>
+        <div class="sight-cont-infor-listw">
+          <span>{{ dataObj.JCMC }}</span>
+        </div>
+      </div>
+
+      <div class="sight-cont-chief sight-cont-mg20">
+        <div class="sight-cont-chief-title">检查部位:</div>
+        <div class="sight-cont-chief-cont">{{ dataObj.JCBW }}</div>
+      </div>
+      <div class="sight-cont-chief sight-cont-mg20 sight-cont-chief-tb">
+        <div class="sight-cont-chief-title">内镜所见:</div>
+        <div v-for="(jitem, index) in dataObj.YXBX" :key="index" class="sight-cont-chief-cont">{{ jitem }}</div>
+      </div>
+      <div class="sight-cont-chief sight-cont-mg20 sight-cont-chief-tb">
+        <div class="sight-cont-chief-title">内镜诊断:</div>
+        <div v-for="(jitem, index) in dataObj.YXZD" :key="index" class="sight-cont-chief-cont">{{ jitem }}</div>
+      </div>
+
+      <div class="sight-cont-sign">
+        <span class="sight-cont-sign-bolb">报告医师:</span>
+        <span class="sight-cont-sign-cont">{{ dataObj.BGRXM }}</span>
+        <span class="sight-cont-sign-bolb">审核医师:</span>
+        <span class="sight-cont-sign-cont">{{ dataObj.SHRXM }}</span>
+      </div>
+      <div class="sight-cont-sign">
+        <span class="sight-cont-sign-bolb">开单时间:</span>
+        <span class="sight-cont-sign-cont">{{ dataObj.KDSJ }}</span>
+        <span class="sight-cont-sign-bolb">检查科室:</span>
+        <span class="sight-cont-sign-cont">{{ dataObj.JCKSMC }}</span>
+      </div>
+      <div class="sight-cont-physique">注:如对病理诊断有疑问,请及时联系诊断医师。</div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  name: '',
+  components: {
+    // OtherComponent
+  },
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {
+    dataObjArr: {
+      type: null,
+      default: false
+    }
+  },
+  data() {
+    return {
+      ifFile: false
+    }
+  },
+  computed: {},
+  watch: {},
+  beforeCreate() {
+    // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
+  },
+  created() {
+    // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
+    // 初始化渲染页面
+  },
+  beforeMount() {
+    // 生命周期钩子:模板编译/挂载之前
+  },
+  mounted() {
+    // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
+  },
+  beforeUpate() {
+    // 生命周期钩子:组件更新之前
+  },
+  updated() {
+    // 生命周期钩子:组件更新之后
+  },
+  activated() {
+    // 生命周期钩子:keep-alive 组件激活时调用
+  },
+  deactivated() {
+    // 生命周期钩子:keep-alive 组件停用时调用
+  },
+  beforeDestroy() {
+    // 生命周期钩子:实例销毁前调用
+  },
+  destroyed() {
+    // 生命周期钩子:实例销毁后调用
+  },
+  errorCaptured(err, vm, info) {
+    // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
+    console.log(err, vm, info)
+  },
+  methods: {}
+}
+</script>
+<style lang="scss" scoped>
+#sightGlassA {
+  padding: 0;
+  margin: 0 30px;
+  .sight-cont {
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    justify-content: flex-start;
+    align-items: center;
+    margin-bottom: 30px;
+    .cont-title-description {
+      margin: 20px;
+      font-size: 24px;
+      font-weight: bold;
+      color: #2c3240;
+      text-align: center;
+    }
+    .cont-textbold {
+      font-weight: bold;
+    }
+    .sight-cont-header {
+      height: 50px;
+      width: 100%;
+      border-bottom: 1.5px solid #e2dfdf;
+      display: flex;
+      justify-content: flex-start;
+      align-items: center;
+      margin-top: 50px;
+      margin-bottom: 20px;
+      padding-right: 30px;
+      .sight-cont-header-item {
+        display: flex;
+        justify-content: flex-start;
+        align-items: center;
+        width: 50%;
+      }
+    }
+    .sight-cont-infor {
+      width: 100%;
+      height: 40px;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+
+      .sight-cont-infor-list {
+        width: 15%;
+      }
+      .sight-cont-infor-title {
+        width: 100px;
+        text-align: right;
+      }
+      .sight-cont-infor-listw {
+        width: 200px;
+      }
+      .sight-cont-infor-listwl {
+        width: 61%;
+      }
+      .sight-cont-infor-text {
+        text-align: right;
+      }
+    }
+    .sight-cont-chief {
+      width: 100%;
+      min-height: 80px;
+      padding: 10px;
+      border-top: 1.5px solid #e2dfdf;
+      .sight-cont-chief-title {
+        font-weight: bold;
+      }
+      .sight-cont-chief-cont {
+        line-height: 25px;
+        padding-left: 30px;
+      }
+    }
+    .sight-cont-chief-tb {
+      border-top: 0;
+    }
+    .sight-cont-mg20 {
+      margin-top: 20px;
+    }
+    .sight-cont-sign {
+      width: 100%;
+      height: 30px;
+      padding-top: 20px;
+      padding-left: 50px;
+      display: flex;
+      justify-content: flex-start;
+      margin-bottom: 30px;
+      .sight-cont-sign-cont {
+        width: 200px;
+        text-align: left;
+      }
+      .sight-cont-sign-bolb {
+        font-weight: bold;
+        width: 100px;
+      }
+    }
+
+    .sight-cont-sign-top {
+      border-bottom: 0;
+      margin-bottom: 0;
+    }
+    .sight-cont-physique {
+      width: 100%;
+      height: 30px;
+      text-align: left;
+      padding-left: 80px;
+      margin-top: 30px;
+      font-weight: bold;
+      margin-bottom: 50px;
+    }
+
+    .sight-cont-auxi {
+      width: 100%;
+      min-height: 30px;
+      display: flex;
+      .sight-cont-auxi-list {
+        width: 25%;
+        text-align: left;
+      }
+    }
+    .sight-cont-prel {
+      width: 100%;
+      padding-left: 50%;
+    }
+    .sight-cont-prel-text {
+      width: 100%;
+      padding-left: 58%;
+      line-height: 20px;
+    }
+    .sight-cont-textnor {
+      font-weight: normal;
+    }
+  }
+}
+
+.examType {
+  width: 100%;
+  display: flex;
+  justify-content: flex-end;
+  padding-right: 50px;
+}
+</style>

+ 308 - 0
src/views/recordsRoom/qc/report/ultrasound.vue

@@ -0,0 +1,308 @@
+<template>
+  <!-- 超声报告单 -->
+  <div id="ultrasTextA">
+    <div v-for="(dataObj, index) in dataObjArr" :key="index" class="ultras-cont">
+      <div class="cont-title-description">滨州医学院烟台附属医院超声诊断报告</div>
+      <div class="examType">{{ dataObj.ExamType }}</div>
+
+      <div class="ultras-cont-header" />
+      <div class="ultras-cont-infortop ultras-cont-border">
+        <div class="ultras-cont-infor-title cont-textbold">检查日期:</div>
+        <div class="ultras-cont-infor-listwl">
+          <span>{{ dataObj.JYSJ }}</span>
+        </div>
+        <div class="ultras-cont-infor-title cont-textbold">报告时间:</div>
+        <div class="ultras-cont-infor-list">
+          <span>{{ dataObj.BGSJ }}</span>
+        </div>
+      </div>
+      <div class="ultras-cont-infortop">
+        <div class="ultras-cont-infor-title cont-textbold">检查号:</div>
+        <div class="ultras-cont-infor-listwl">
+          <span>{{ dataObj.StudyUid }}</span>
+        </div>
+        <div class="ultras-cont-infor-title cont-textbold">住院号:</div>
+        <div class="ultras-cont-infor-list">
+          <span>{{ dataObj.JZLSH }}</span>
+        </div>
+      </div>
+      <div class="ultras-cont-infor">
+        <div class="ultras-cont-infor-title ultras-cont-infor-text cont-textbold">姓名:</div>
+        <div class="ultras-cont-infor-list">
+          <span>{{ dataObj.BRXM }}</span>
+        </div>
+        <div class="ultras-cont-infor-title cont-textbold">性别:</div>
+        <div class="ultras-cont-infor-list">
+          <span>{{ dataObj.BRXB == 1 ? '男' : '女' }}</span>
+        </div>
+        <div class="ultras-cont-infor-title cont-textbold">年龄:</div>
+        <div class="ultras-cont-infor-list">
+          <span>{{ dataObj.BRNL }}</span>
+        </div>
+        <div class="ultras-cont-infor-title cont-textbold">科别:</div>
+        <div class="ultras-cont-infor-list">
+          <span>{{ dataObj.SQKSMC }}</span>
+        </div>
+      </div>
+
+      <div class="ultras-cont-chief ultras-cont-mg20">
+        <div class="ultras-cont-chief-title">超声所见:</div>
+        <div v-for="(jitem, index) in dataObj.YXBX" :key="index" class="ultras-cont-chief-cont">{{ jitem }}</div>
+      </div>
+      <div class="ultras-cont-chief ultras-cont-mg20">
+        <div class="ultras-cont-chief-title">
+          超声提示:
+          <span class="ultras-cont-textnor" />
+        </div>
+        <div v-for="(jitem, index) in dataObj.YXZD" :key="index" class="ultras-cont-chief-cont">{{ jitem }}</div>
+      </div>
+
+      <div class="ultras-cont-sign ultras-cont-sign-top">
+        <span class="ultras-cont-sign-bolb">检查医师:</span>
+        <span class="ultras-cont-sign-cont">{{ dataObj.JCYS }}</span>
+        <span class="ultras-cont-sign-bolb">审核医师:</span>
+        <span class="ultras-cont-sign-cont">{{ dataObj.SHRXM }}</span>
+        <span class="ultras-cont-sign-bolb">录入员:</span>
+        <span class="ultras-cont-sign-cont">{{ dataObj.LRY }}</span>
+        <span class="ultras-cont-sign-bolb">会诊医师:</span>
+        <span class="ultras-cont-sign-cont">{{ dataObj.HZYS }}</span>
+      </div>
+      <div class="ultras-cont-sign">
+        <span class="ultras-cont-sign-bolbw">开单时间:</span>
+        <span class="ultras-cont-sign-contw">{{ dataObj.KDSJ }}</span>
+        <span class="ultras-cont-sign-bolbw">检查科室:</span>
+        <span class="ultras-cont-sign-cont">{{ dataObj.JCKSMC }}</span>
+      </div>
+      <div class="ultras-cont-physique">
+        <div class="ultras-cont-physique-text">本诊断报告仅供临床参考,报告仅此一份,复诊时带来。</div>
+        <!-- <div class="ultras-cont-physique-time">
+          <span class="ultras-cont-physique-title">检查日期</span>
+          <span>{{ dataObj.JYSJ }}</span>
+        </div> -->
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  name: '',
+  components: {
+    // OtherComponent
+  },
+  directives: {},
+  filters: {},
+  extends: {},
+  mixins: {},
+  props: {
+    dataObjArr: {
+      type: null,
+      default: false
+    }
+  },
+  data() {
+    return {
+      ifFile: false
+    }
+  },
+  computed: {},
+  watch: {},
+  beforeCreate() {
+    // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
+  },
+  created() {
+    // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
+    // 初始化渲染页面
+  },
+  beforeMount() {
+    // 生命周期钩子:模板编译/挂载之前
+  },
+  mounted() {
+    // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
+  },
+  beforeUpate() {
+    // 生命周期钩子:组件更新之前
+  },
+  updated() {
+    // 生命周期钩子:组件更新之后
+  },
+  activated() {
+    // 生命周期钩子:keep-alive 组件激活时调用
+  },
+  deactivated() {
+    // 生命周期钩子:keep-alive 组件停用时调用
+  },
+  beforeDestroy() {
+    // 生命周期钩子:实例销毁前调用
+  },
+  destroyed() {
+    // 生命周期钩子:实例销毁后调用
+  },
+  errorCaptured(err, vm, info) {
+    // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
+    console.log(err, vm, info)
+  },
+  methods: {}
+}
+</script>
+<style lang="scss" scoped>
+#ultrasTextA {
+  padding: 0;
+  margin: 0 30px;
+  .ultras-cont {
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    justify-content: flex-start;
+    align-items: center;
+    margin-bottom: 30px;
+    .cont-title-description {
+      margin: 20px;
+      font-size: 24px;
+      font-weight: bold;
+      color: #2c3240;
+      text-align: center;
+    }
+    .cont-textbold {
+      font-weight: bold;
+    }
+    .ultras-cont-header {
+      width: 100%;
+      height: 50px;
+      display: flex;
+      justify-content: flex-start;
+      align-items: center;
+      margin-top: 20px;
+      padding-right: 30px;
+    }
+    .ultras-cont-infor {
+      width: 100%;
+      height: 38px;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      border-bottom: 1.5px solid #e2dfdf;
+      margin-top: 10px;
+      padding-bottom: 10px;
+      margin-bottom: 30px;
+      .ultras-cont-infor-list {
+        width: 15%;
+      }
+      .ultras-cont-infor-title {
+        width: 100px;
+        text-align: right;
+      }
+      .ultras-cont-infor-listw {
+        width: 38%;
+      }
+      .ultras-cont-infor-listwl {
+        width: 30%;
+      }
+      .ultras-cont-infor-text {
+        text-align: right;
+      }
+    }
+    .ultras-cont-infortop {
+      width: 100%;
+      height: 38px;
+      display: flex;
+      justify-content: flex-start;
+      align-items: center;
+      padding-left: 5%;
+      .ultras-cont-infor-list {
+        width: 200px;
+      }
+      .ultras-cont-infor-title {
+        width: 100px;
+        text-align: right;
+      }
+      .ultras-cont-infor-listw {
+        width: 200px;
+      }
+      .ultras-cont-infor-listwl {
+        width: 200px;
+      }
+      .ultras-cont-infor-text {
+        text-align: right;
+      }
+    }
+    .ultras-cont-chief {
+      width: 100%;
+      min-height: 80px;
+      padding: 10px;
+      .ultras-cont-chief-title {
+        font-weight: bold;
+      }
+      .ultras-cont-chief-cont {
+        line-height: 25px;
+        padding-left: 30px;
+      }
+    }
+    .ultras-cont-mg20 {
+      margin-top: 20px;
+    }
+    .ultras-cont-mg40 {
+      margin-top: 40px;
+    }
+    .ultras-cont-border {
+      border-bottom: 1.5px solid #e2dfdf;
+    }
+    .ultras-cont-sign {
+      width: 100%;
+      height: 30px;
+      border-bottom: 1.5px solid #e2dfdf;
+      padding-left: 50px;
+      display: flex;
+      justify-content: flex-start;
+      align-items: center;
+      margin-bottom: 30px;
+      .ultras-cont-sign-cont {
+        width: 180px;
+        text-align: left;
+      }
+      .ultras-cont-sign-contw {
+        width: 200px;
+      }
+      .ultras-cont-sign-bolb {
+        width: 140px;
+        font-weight: bold;
+      }
+      .ultras-cont-sign-bolbw {
+        font-weight: bold;
+      }
+    }
+    .ultras-cont-sign-top {
+      border-bottom: 0;
+      margin-bottom: 0;
+    }
+    .ultras-cont-physique {
+      width: 100%;
+      height: 30px;
+      text-align: left;
+      padding-left: 80px;
+      margin-top: 30px;
+      margin-bottom: 50px;
+      display: flex;
+      justify-content: flex-start;
+      .ultras-cont-physique-text {
+        font-weight: bold;
+      }
+      .ultras-cont-physique-time {
+        margin-left: 10%;
+        .ultras-cont-physique-title {
+          font-weight: bold;
+        }
+      }
+    }
+
+    .ultras-cont-textnor {
+      font-weight: normal;
+    }
+  }
+}
+.examType {
+  width: 100%;
+  display: flex;
+  justify-content: flex-end;
+  padding-right: 50px;
+}
+</style>