|  | @@ -83,7 +83,7 @@
 | 
	
		
			
				|  |  |            </el-select>
 | 
	
		
			
				|  |  |          </el-descriptions-item>
 | 
	
		
			
				|  |  |          <el-descriptions-item v-if="auditQuanXian()" label="审核">
 | 
	
		
			
				|  |  | -          <el-button :disabled="shenHeTongGuoFlag" type="success" @click="shenHeTongGuoClick">审核通过</el-button>
 | 
	
		
			
				|  |  | +          <el-button :disabled="shenHeTongGuoFlag" type="success" @click="qualityTest">审核通过</el-button>
 | 
	
		
			
				|  |  |  <!--          <el-button :disabled="keFouShenHe" type="success" @click="shenHeTongGuoShangChuanClick">审核通过并上传-->
 | 
	
		
			
				|  |  |  <!--          </el-button>-->
 | 
	
		
			
				|  |  |            <el-button :disabled="keFouShenHe" type="danger" @click="shenHeBoHuiClick">审核驳回</el-button>
 | 
	
	
		
			
				|  | @@ -343,11 +343,29 @@
 | 
	
		
			
				|  |  |          </el-table-column>
 | 
	
		
			
				|  |  |          <el-table-column label="质控结果" prop="result_msg"></el-table-column>
 | 
	
		
			
				|  |  |        </el-table>
 | 
	
		
			
				|  |  | +        <el-row>
 | 
	
		
			
				|  |  | +            <el-button v-show="!shenHeTongGuoFlag" type="primary" @click="queRenShenHeTongGuo">确认审核通过</el-button>
 | 
	
		
			
				|  |  | +        </el-row>
 | 
	
		
			
				|  |  |      </el-dialog>
 | 
	
		
			
				|  |  |        <el-dialog v-model="jianYanJianChaDialogFlag" width="60% " title="检验检查">
 | 
	
		
			
				|  |  |            <jian-yan-jian-cha :huanZheXinXi="huanZheXinXi" ></jian-yan-jian-cha>
 | 
	
		
			
				|  |  |        </el-dialog>
 | 
	
		
			
				|  |  |        <charge-list v-if="showChargeList" :pat-no="setlinfo.inpatientNo" :times="setlinfo.admissTimes" @close="showChargeList = false"></charge-list>
 | 
	
		
			
				|  |  | +      <span class="m-drawer">
 | 
	
		
			
				|  |  | +            <el-drawer v-model="showMessageDrawer" title="病案首页质控" size="260px" modal-class="modal-class" >
 | 
	
		
			
				|  |  | +              <div class="page-inner">
 | 
	
		
			
				|  |  | +                <div v-if="forceVerifies.length === 0 && adviceVerifies.length === 0" class="no-verify-message">暂无校验内容</div>
 | 
	
		
			
				|  |  | +                <div v-show="forceVerifies.length > 0" style="padding: 8px 0 4px 0; font-weight: bold">以下条目为强制要求,请完善。</div>
 | 
	
		
			
				|  |  | +                <div v-for="(item, index) in forceVerifies" :key="index" class="message-item" :style="messageColor(index)">
 | 
	
		
			
				|  |  | +                  {{ index + 1 }}、{{ item.name }}
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +                <div v-show="adviceVerifies.length > 0" style="padding: 8px 0 4px 0; font-weight: bold">以下条目为建议执行,不做强制要求。</div>
 | 
	
		
			
				|  |  | +                <div v-for="(item, index) in adviceVerifies" :key="index" style="padding: 6px; margin-bottom: 6px; border-radius: 4px; background: #eea7a752; color: #ff2b2b">
 | 
	
		
			
				|  |  | +                  {{ index + 1 }}、{{ item.name }}
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </el-drawer>
 | 
	
		
			
				|  |  | +          </span>
 | 
	
		
			
				|  |  |    </el-container>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -625,17 +643,28 @@ const baoCunHouGuanBi = () => {
 | 
	
		
			
				|  |  |    // ctx.emit('shua-xin')
 | 
	
		
			
				|  |  |    emit('queryCurrentPage')
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +//病案首页质控抽屉
 | 
	
		
			
				|  |  | +const showMessageDrawer = ref(false)
 | 
	
		
			
				|  |  | +//强制要求数据
 | 
	
		
			
				|  |  | +const forceVerifies = ref([])
 | 
	
		
			
				|  |  | +//建议要求数据
 | 
	
		
			
				|  |  | +const adviceVerifies = ref([])
 | 
	
		
			
				|  |  | +const currentMessageIndex = ref(null)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const messageColor = (id) => {
 | 
	
		
			
				|  |  | +    return currentMessageIndex.value === id
 | 
	
		
			
				|  |  | +        ? {
 | 
	
		
			
				|  |  | +            background: '#ff2b2b',
 | 
	
		
			
				|  |  | +            color: 'white',
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        : {
 | 
	
		
			
				|  |  | +            background: '#eea7a752',
 | 
	
		
			
				|  |  | +            color: '#ff2b2b',
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const baoCunXiuGai = () => {
 | 
	
		
			
				|  |  | -  let newData = {
 | 
	
		
			
				|  |  | -    decType: setlinfo.value.decType,
 | 
	
		
			
				|  |  | -    operation: setlinfo.value.operation,
 | 
	
		
			
				|  |  | -    diseinfo: diseinfo.value,
 | 
	
		
			
				|  |  | -    oprninfo: oprninfo.value,
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  // if (JSON.stringify(newData) === JSON.stringify(oldData)) {
 | 
	
		
			
				|  |  | -  //   return ElMessage.error('数据没有变化请勿点击。')
 | 
	
		
			
				|  |  | -  // }
 | 
	
		
			
				|  |  |    if (setlinfo.value.operation === '1' || setlinfo.value.operation === '2' || setlinfo.value.operation === '3') {
 | 
	
		
			
				|  |  |      if (listIsBlank(oprninfo.value)) {
 | 
	
		
			
				|  |  |        return ElMessage.error('选择治疗类型为手术的,至少要有一个手术。')
 | 
	
	
		
			
				|  | @@ -644,50 +673,10 @@ const baoCunXiuGai = () => {
 | 
	
		
			
				|  |  |    if (listIsBlank(diseinfo.value)) {
 | 
	
		
			
				|  |  |      return ElMessage.error('诊断不能为空。')
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  let changeData = ''
 | 
	
		
			
				|  |  | -  let data = setlinfo.value
 | 
	
		
			
				|  |  | -  data['opIdCode'] = code
 | 
	
		
			
				|  |  | -  data['opIdName'] = name
 | 
	
		
			
				|  |  | -  if (newData.decType !== oldData.decType) {
 | 
	
		
			
				|  |  | -    changeData = `申报类型变动:原:【${getDeclarationType(oldData.decType)}】新:【${getDeclarationType(newData.decType)}】。`
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  if (newData.operation !== oldData.operation) {
 | 
	
		
			
				|  |  | -    changeData += `治疗方式变动:原:【${getTreatmentName(oldData.operation)}】新:【${getTreatmentName(newData.operation)}】。`
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  // 住院诊断信息
 | 
	
		
			
				|  |  | -  if (!ArrayIsEqual(oldData.diseinfo, newData.diseinfo)) {
 | 
	
		
			
				|  |  | -    changeData += '【诊断有变动】'
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  // 手术有变动
 | 
	
		
			
				|  |  | -  if (!ArrayIsEqual(oldData.oprninfo, newData.oprninfo)) {
 | 
	
		
			
				|  |  | -    changeData += '【手术有变动】'
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  data['dataChanges'] = changeData
 | 
	
		
			
				|  |  | -  data.batjBa4 = oprninfo.value
 | 
	
		
			
				|  |  | -  data.ybZyDisDiag = diseinfo.value
 | 
	
		
			
				|  |  | -  baoCunXiuGaiData.value = data
 | 
	
		
			
				|  |  | -  beiZhuRef.value = true
 | 
	
		
			
				|  |  | +    bingAnShouYeXiaoYan()
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -//保存并审核通过
 | 
	
		
			
				|  |  | -const baoCunXiuGaiShenHeTongGuo= () =>{
 | 
	
		
			
				|  |  | -    let newData = {
 | 
	
		
			
				|  |  | -        decType: setlinfo.value.decType,
 | 
	
		
			
				|  |  | -        operation: setlinfo.value.operation,
 | 
	
		
			
				|  |  | -        diseinfo: diseinfo.value,
 | 
	
		
			
				|  |  | -        oprninfo: oprninfo.value,
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    // if (JSON.stringify(newData) === JSON.stringify(oldData)) {
 | 
	
		
			
				|  |  | -    //   return ElMessage.error('数据没有变化请勿点击。')
 | 
	
		
			
				|  |  | -    // }
 | 
	
		
			
				|  |  | -    if (setlinfo.value.operation === '1' || setlinfo.value.operation === '2' || setlinfo.value.operation === '3') {
 | 
	
		
			
				|  |  | -        if (listIsBlank(oprninfo.value)) {
 | 
	
		
			
				|  |  | -            return ElMessage.error('选择治疗类型为手术的,至少要有一个手术。')
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    if (listIsBlank(diseinfo.value)) {
 | 
	
		
			
				|  |  | -        return ElMessage.error('诊断不能为空。')
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +function createSaveData(newData,flag) {
 | 
	
		
			
				|  |  |      let changeData = ''
 | 
	
		
			
				|  |  |      let data = setlinfo.value
 | 
	
		
			
				|  |  |      data['opIdCode'] = code
 | 
	
	
		
			
				|  | @@ -707,13 +696,49 @@ const baoCunXiuGaiShenHeTongGuo= () =>{
 | 
	
		
			
				|  |  |          changeData += '【手术有变动】'
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      data['dataChanges'] = changeData
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    data['saveAuditPassFlag'] = '1'
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    data['saveAuditPassFlag'] = flag? flag : ''
 | 
	
		
			
				|  |  |      data.batjBa4 = oprninfo.value
 | 
	
		
			
				|  |  |      data.ybZyDisDiag = diseinfo.value
 | 
	
		
			
				|  |  | -    baoCunXiuGaiData.value = data
 | 
	
		
			
				|  |  | -    beiZhuRef.value = true
 | 
	
		
			
				|  |  | +   return {data}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +//病案首页效验
 | 
	
		
			
				|  |  | +function bingAnShouYeXiaoYan(flag) {
 | 
	
		
			
				|  |  | +    let sheetVerificationParam = {
 | 
	
		
			
				|  |  | +        inpatientNo:props.data.inpatientNo,
 | 
	
		
			
				|  |  | +        admissTimes:props.data.admissTimes
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    forceVerifies.value = []
 | 
	
		
			
				|  |  | +    adviceVerifies.value = []
 | 
	
		
			
				|  |  | +    let newData = {
 | 
	
		
			
				|  |  | +        decType: setlinfo.value.decType,
 | 
	
		
			
				|  |  | +        operation: setlinfo.value.operation,
 | 
	
		
			
				|  |  | +        diseinfo: diseinfo.value,
 | 
	
		
			
				|  |  | +        oprninfo: oprninfo.value,
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    sheetVerification(sheetVerificationParam).then((res) => {
 | 
	
		
			
				|  |  | +        if( !listIsBlank(res.force) ){
 | 
	
		
			
				|  |  | +            forceVerifies.value = res.force
 | 
	
		
			
				|  |  | +            adviceVerifies.value = res.advice
 | 
	
		
			
				|  |  | +            showMessageDrawer.value  = true
 | 
	
		
			
				|  |  | +        }else {
 | 
	
		
			
				|  |  | +            let data =  createSaveData(newData,flag)
 | 
	
		
			
				|  |  | +            baoCunXiuGaiData.value = data
 | 
	
		
			
				|  |  | +            beiZhuRef.value = true
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//保存并审核通过
 | 
	
		
			
				|  |  | +const baoCunXiuGaiShenHeTongGuo= () =>{
 | 
	
		
			
				|  |  | +    if (setlinfo.value.operation === '1' || setlinfo.value.operation === '2' || setlinfo.value.operation === '3') {
 | 
	
		
			
				|  |  | +        if (listIsBlank(oprninfo.value)) {
 | 
	
		
			
				|  |  | +            return ElMessage.error('选择治疗类型为手术的,至少要有一个手术。')
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (listIsBlank(diseinfo.value)) {
 | 
	
		
			
				|  |  | +        return ElMessage.error('诊断不能为空。')
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    bingAnShouYeXiaoYan('1')
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
	
		
			
				|  | @@ -746,10 +771,11 @@ function getDeclarationType(val) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* 查看审核信息 */
 | 
	
		
			
				|  |  |  const shenHeRef = ref(false)
 | 
	
		
			
				|  |  | -const keFouShenHe = ref(false)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +//审核驳回
 | 
	
		
			
				|  |  | +const keFouShenHe = ref(true)
 | 
	
		
			
				|  |  | +//审核通过
 | 
	
		
			
				|  |  |  const shenHeTongGuoFlag = ref(true)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +//保存申请按钮
 | 
	
		
			
				|  |  |  const shenHeSendFlag = ref(true)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const shenHeClick = () => {
 | 
	
	
		
			
				|  | @@ -761,26 +787,21 @@ const shenHeClick = () => {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* 查看审核信息 */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/* 审核操作 */
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -const shenHeTongGuoClick = () => {
 | 
	
		
			
				|  |  | -  ElMessageBox.confirm('是否通过该审核', '提示', {
 | 
	
		
			
				|  |  | -    type: 'warning',
 | 
	
		
			
				|  |  | -  }).then(() => {
 | 
	
		
			
				|  |  | +/* 审核操作 确认审核通过 */
 | 
	
		
			
				|  |  | +const queRenShenHeTongGuo=() =>{
 | 
	
		
			
				|  |  |      const data = {
 | 
	
		
			
				|  |  | -      id: props.data.shenHeXinXi.id,
 | 
	
		
			
				|  |  | -      auditFlag: 1,
 | 
	
		
			
				|  |  | -      auditRemark: '审核通过 ❥(^_-)',
 | 
	
		
			
				|  |  | -      auditStaff: code,
 | 
	
		
			
				|  |  | -      auditName: name,
 | 
	
		
			
				|  |  | +        id: props.data.shenHeXinXi.id,
 | 
	
		
			
				|  |  | +        auditFlag: 1,
 | 
	
		
			
				|  |  | +        auditRemark: '审核通过 ❥(^_-)',
 | 
	
		
			
				|  |  | +        auditStaff: code,
 | 
	
		
			
				|  |  | +        auditName: name,
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      setlUploadAudit(data)
 | 
	
		
			
				|  |  |          .then((res) => {
 | 
	
		
			
				|  |  | -          guanBi()
 | 
	
		
			
				|  |  | +            guanBi()
 | 
	
		
			
				|  |  |          })
 | 
	
		
			
				|  |  |          .catch((e) => {
 | 
	
		
			
				|  |  |          })
 | 
	
		
			
				|  |  | -  })
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const shenHeTongGuoShangChuanClick = () => {
 | 
	
	
		
			
				|  | @@ -872,6 +893,7 @@ const qualityTest = () => {
 | 
	
		
			
				|  |  |    newData.newBatjBa4 =  oprninfo.value
 | 
	
		
			
				|  |  |    newData.decType=setlinfo.value.decType
 | 
	
		
			
				|  |  |    newData.operation=setlinfo.value.operation
 | 
	
		
			
				|  |  | +  qualityData.value = []
 | 
	
		
			
				|  |  |    drgQualityTest(newData).then((res) => {
 | 
	
		
			
				|  |  |      if(res.length > 0){
 | 
	
		
			
				|  |  |        qualityDialogFlag.value = true
 | 
	
	
		
			
				|  | @@ -1174,12 +1196,14 @@ onMounted(() => {
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  //初始化权限
 | 
	
		
			
				|  |  |  function initQuanXian() {
 | 
	
		
			
				|  |  | -        keFouShenHe.value = !(stringNotBlank(props.data.shenHeXinXi.id) && props.data.shenHeXinXi.auditFlag === 0)
 | 
	
		
			
				|  |  | -        if(auditBmzzQuanXian() && props.data.shenHeXinXi.auditFlag == 2 && !keFouShenHe.value){
 | 
	
		
			
				|  |  | -            //审核驳回才有审核通过按钮
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (stringNotBlank(props.data.shenHeXinXi.id) && props.data.shenHeXinXi.auditFlag === 0){
 | 
	
		
			
				|  |  | +            keFouShenHe.value = false
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(auditBmzzQuanXian() && props.data.shenHeXinXi.auditFlag == 2 ){
 | 
	
		
			
				|  |  | +            shenHeTongGuoFlag.value = false
 | 
	
		
			
				|  |  | +        }else if (auditQuanXian() && (props.data.shenHeXinXi.auditFlag === 0 || props.data.shenHeXinXi.auditFlag == 2)){
 | 
	
		
			
				|  |  |              shenHeTongGuoFlag.value = false
 | 
	
		
			
				|  |  | -        }else {
 | 
	
		
			
				|  |  | -            shenHeTongGuoFlag.value = keFouShenHe.value
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if(!stringNotBlank(props.data.shenHeXinXi.id) || props.data.shenHeXinXi.auditFlag == 2){
 | 
	
		
			
				|  |  |              shenHeSendFlag.value = false
 | 
	
	
		
			
				|  | @@ -1206,10 +1230,40 @@ const siDiagTypes = [
 | 
	
		
			
				|  |  |  ]
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -<style>
 | 
	
		
			
				|  |  | +<style scoped>
 | 
	
		
			
				|  |  |    .maxhight{
 | 
	
		
			
				|  |  |      height: 700px;
 | 
	
		
			
				|  |  |      overflow: auto;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  :deep(.m-drawer .el-overlay) {
 | 
	
		
			
				|  |  | +      right: 0;
 | 
	
		
			
				|  |  | +      left: calc(100vw - 260px);
 | 
	
		
			
				|  |  | +      background: transparent !important;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  .page-inner {
 | 
	
		
			
				|  |  | +      padding: 0 20px 10px 26px;
 | 
	
		
			
				|  |  | +      border-radius: 12px;
 | 
	
		
			
				|  |  | +      text-align: justify;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  .no-verify-message {
 | 
	
		
			
				|  |  | +      width: 100%;
 | 
	
		
			
				|  |  | +      text-align: center;
 | 
	
		
			
				|  |  | +      margin-top: 50px;
 | 
	
		
			
				|  |  | +      font-size: 18px;
 | 
	
		
			
				|  |  | +      color: gray;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  .message-item {
 | 
	
		
			
				|  |  | +      padding: 6px;
 | 
	
		
			
				|  |  | +      margin-bottom: 6px;
 | 
	
		
			
				|  |  | +      border-radius: 4px;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  </style>
 |