|
@@ -0,0 +1,196 @@
|
|
|
+<template>
|
|
|
+ <div class="layout_container" style="height: 550px;">
|
|
|
+ <div style="height: 500px;">
|
|
|
+ <div class="line-wrapper">
|
|
|
+ <div class="line-left">患者姓名:</div>
|
|
|
+ <div class="line-right">{{data.patName}}</div>
|
|
|
+ </div>
|
|
|
+ <div class="line-wrapper">
|
|
|
+ <div class="line-left">住院号:</div>
|
|
|
+ <div class="line-right">{{data.patNo}}</div>
|
|
|
+ </div>
|
|
|
+ <div class="line-wrapper">
|
|
|
+ <div class="line-left">编码员姓名:</div>
|
|
|
+ <div class="line-right">{{data.coderName}}</div>
|
|
|
+ </div>
|
|
|
+ <div class="line-wrapper" style="align-items: flex-start">
|
|
|
+ <div class="line-left">
|
|
|
+ 主要错误:
|
|
|
+ </div>
|
|
|
+ <div class="line-right">
|
|
|
+ <el-checkbox-group v-model="majorError">
|
|
|
+ <div>
|
|
|
+ <el-checkbox value="主要诊断填写错误">主要诊断填写错误</el-checkbox>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <el-checkbox value="主要诊断编码错误">主要诊断编码错误</el-checkbox>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <el-checkbox value="主要手术填写错误">主要手术填写错误</el-checkbox>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <el-checkbox value="主要手术编码错误">主要手术编码错误</el-checkbox>
|
|
|
+ </div>
|
|
|
+ </el-checkbox-group>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="line-wrapper">
|
|
|
+ <div class="line-left">
|
|
|
+ <span class="required">*</span>审核状态:
|
|
|
+ </div>
|
|
|
+ <div class="line-right">
|
|
|
+ <el-radio-group v-model="auditState">
|
|
|
+ <el-radio value="APPROVED">通过</el-radio>
|
|
|
+ <el-radio value="REJECTED">不通过</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="line-wrapper" style="align-items: flex-start">
|
|
|
+ <div class="line-left">
|
|
|
+ <span class="required">*</span>审核意见:
|
|
|
+ </div>
|
|
|
+ <div class="line-right">
|
|
|
+ <el-input
|
|
|
+ v-model="auditRemark"
|
|
|
+ type="textarea"
|
|
|
+ :rows="5"
|
|
|
+ :placeholder="placeholder"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="line-wrapper" style="align-items: flex-start">
|
|
|
+ <div class="line-left">
|
|
|
+ </div>
|
|
|
+ <div class="line-right">
|
|
|
+ <el-button
|
|
|
+ @click="handleClickConfirm"
|
|
|
+ size="default"
|
|
|
+ type="primary"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ 提交审核
|
|
|
+ </el-button>
|
|
|
+ <div style="width: 100%; text-align: right; margin-top: 20px">
|
|
|
+ <a href="#" style="text-decoration: underline" @click="viewAuditHistory">
|
|
|
+ 审核历史
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <el-drawer v-model="showAuditHistory" title="组长审核历史记录">
|
|
|
+ <el-timeline>
|
|
|
+ <el-timeline-item
|
|
|
+ v-for="item in histories"
|
|
|
+ :timestamp="item.createTime"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <el-card>
|
|
|
+ <h4>
|
|
|
+ 编码员:{{ item.coderName }}
|
|
|
+ </h4>
|
|
|
+ <p v-if="item.majorError" class="major-error">主要错误:{{item.majorError}}</p>
|
|
|
+ <p class="audit-remark">审核结果:{{ item.auditRemark }}</p>
|
|
|
+ <p style="font-size: 12px; color: dimgray">
|
|
|
+ <span>审核人:{{ item.auditName }}</span>
|
|
|
+ <span style="margin-left: 32px">审核时间:{{ item.createTime }}</span>
|
|
|
+ </p>
|
|
|
+ <img :src="item.auditState === 'APPROVED' ? approveImg : rejectImg" alt="" class="img-state">
|
|
|
+ </el-card>
|
|
|
+ </el-timeline-item>
|
|
|
+ </el-timeline>
|
|
|
+ <div
|
|
|
+ v-if="histories.length === 0"
|
|
|
+ style="font-size: 36px;
|
|
|
+ height: 86%;
|
|
|
+ color: #777777;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center"
|
|
|
+ >
|
|
|
+ 没有有效的质控记录
|
|
|
+ </div>
|
|
|
+ </el-drawer>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" setup>
|
|
|
+import {xcMessage} from "@/utils/xiaochan-element-plus";
|
|
|
+import {submitLeaderAudit,fetchLeaderAudit} from "@/api/case-front-sheet";
|
|
|
+import approveImg from "@/assets/approved.png";
|
|
|
+import rejectImg from "@/assets/reject.png";
|
|
|
+
|
|
|
+const props = defineProps({
|
|
|
+ data: {
|
|
|
+ type: Object,
|
|
|
+ required: true,
|
|
|
+ },
|
|
|
+ closeModal: {
|
|
|
+ type: Function,
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+const auditRemark = ref('')
|
|
|
+const auditState = ref('APPROVED')
|
|
|
+const majorError = ref([])
|
|
|
+const placeholder = computed(() => {
|
|
|
+ return auditState.value === 'APPROVED' ? '审核通过' : '请在此输入审核意见'
|
|
|
+})
|
|
|
+
|
|
|
+function handleClickConfirm() {
|
|
|
+ if (auditState.value === 'REJECTED' && !auditRemark.value) {
|
|
|
+ xcMessage.error('审核意见不能为空!');
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (auditState.value === 'APPROVED' && majorError.value.length > 0) {
|
|
|
+ xcMessage.error('勾选了主要错误,审核状态请选择【不通过】')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ props.data.auditState = auditState.value
|
|
|
+ props.data.auditRemark = auditRemark.value
|
|
|
+ props.data.majorErrorList = majorError.value
|
|
|
+ submitLeaderAudit(props.data).then(res => {
|
|
|
+ xcMessage.success('操作成功。')
|
|
|
+ props.closeModal()
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const showAuditHistory = ref(false);
|
|
|
+const histories = ref([])
|
|
|
+function viewAuditHistory() {
|
|
|
+ fetchLeaderAudit(props.data).then(res => {
|
|
|
+ histories.value = res
|
|
|
+ showAuditHistory.value = true;
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.line-wrapper {
|
|
|
+ display: flex;
|
|
|
+ margin: 12px 0;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+.line-left {
|
|
|
+ width: 120px;
|
|
|
+ text-align: right;
|
|
|
+ padding-right: 8px;
|
|
|
+}
|
|
|
+.line-right {
|
|
|
+ width: 300px;
|
|
|
+ text-align: left;
|
|
|
+ padding-left: 30px;
|
|
|
+}
|
|
|
+.required {
|
|
|
+ margin-right: 4px;
|
|
|
+ color: red;
|
|
|
+}
|
|
|
+.img-state {
|
|
|
+ width: 64px;
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ right: 0;
|
|
|
+}
|
|
|
+</style>
|