|
@@ -33,12 +33,16 @@
|
|
|
<el-dropdown-menu>
|
|
|
<el-dropdown-item command="unSign" icon="Link">解除签收</el-dropdown-item>
|
|
|
<el-dropdown-item command="dismissCount" divided icon="OfficeBuilding">出院患者统计</el-dropdown-item>
|
|
|
+ <el-dropdown-item command="signedByDay" icon="Edit">签收统计</el-dropdown-item>
|
|
|
<el-dropdown-item command="exportLateData" icon="Clock">导出迟交病案</el-dropdown-item>
|
|
|
<el-dropdown-item command="exportUnsignedData" icon="Files">导出未签收病案</el-dropdown-item>
|
|
|
<el-dropdown-item command="print1" divided icon="Printer">打印正面</el-dropdown-item>
|
|
|
<el-dropdown-item command="print2" icon="Printer">打印反面</el-dropdown-item>
|
|
|
<el-dropdown-item command="print3" icon="Printer">导出PDF</el-dropdown-item>
|
|
|
<el-dropdown-item command="quality" divided icon="DataLine">病案质控</el-dropdown-item>
|
|
|
+ <el-dropdown-item command="duplicate" divided icon="MessageBox">标记已复印</el-dropdown-item>
|
|
|
+ <el-dropdown-item command="closedown" icon="Paperclip">标记已封存</el-dropdown-item>
|
|
|
+
|
|
|
</el-dropdown-menu>
|
|
|
</template>
|
|
|
</el-dropdown>
|
|
@@ -72,6 +76,15 @@
|
|
|
<div :style="mainInfo">
|
|
|
<div id="headpage">
|
|
|
<HeadPage :dics="dics" :patient="sheet"/>
|
|
|
+ <div style="position: fixed; top: 180px; left: 1230px">
|
|
|
+ <img v-if="sheet.zyDismissWay === '4'" :src="patientdead" alt="">
|
|
|
+ <div v-if="sheet.duplicated">
|
|
|
+ <img :src="baduplicated" alt="">
|
|
|
+ </div>
|
|
|
+ <div v-if="sheet.closedown">
|
|
|
+ <img :src="baclosedown" alt="">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div id="tailpage" style="margin-left: 70px">
|
|
|
<TailPage :dics="dics" :patient="sheet"/>
|
|
@@ -249,6 +262,79 @@
|
|
|
<el-dialog v-model="showSheetQuality" title="病案质控" width="70%">
|
|
|
<SheetQuality/>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <el-dialog v-model="showSignedByDay" title="签收统计" width="450px" height="500px" @close="currentSignStaff = ''">
|
|
|
+ <div style="margin-top: 12px">
|
|
|
+ 签收日期:
|
|
|
+ <el-button icon="ArrowLeft" @click="dateOffset(-1)"></el-button>
|
|
|
+ <el-date-picker style="width: 110px" :clearable="false" v-model="signDate"
|
|
|
+ @change="handleSignDateChange"></el-date-picker>
|
|
|
+ <el-button icon="ArrowRight" @click="dateOffset(1)"></el-button>
|
|
|
+ </div>
|
|
|
+ <div style="margin: 12px 0; border-top: 1px solid lightgray"></div>
|
|
|
+ <div >
|
|
|
+ <div style="display: flex; margin-bottom: 12px">
|
|
|
+ <div style="flex: 1">签收人</div>
|
|
|
+ <div style="flex: 1">签收数量</div>
|
|
|
+ <div style="width: 35px"></div>
|
|
|
+ </div>
|
|
|
+ <div v-for="(val, key) in signData">
|
|
|
+ <div style="display: flex; line-height: 32px; color: #0079ff; font-weight: bold">
|
|
|
+ <div style="flex: 1">
|
|
|
+ {{key}}
|
|
|
+ </div>
|
|
|
+ <div style="flex: 1">
|
|
|
+ {{val.length}}
|
|
|
+ </div>
|
|
|
+ <div style="width: 35px">
|
|
|
+ <el-button icon="Pointer" circle @click="clickSignStaff(key)"></el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="key === currentSignStaff">
|
|
|
+ <el-table :data="val" :max-height="300">
|
|
|
+ <el-table-column prop="bah" label="住院号"></el-table-column>
|
|
|
+ <el-table-column prop="times" label="住院次数"></el-table-column>
|
|
|
+ <el-table-column prop="name" label="姓名"></el-table-column>
|
|
|
+ <el-table-column prop="genderName" label="性别"></el-table-column>
|
|
|
+ <el-table-column prop="signTime" label="签收时间"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <el-dialog v-model="showMarkStateDialog" :title="markStateTitle" width="450px">
|
|
|
+ <div style="margin-top: 30px;display: flex">
|
|
|
+ <div style="width: 80px">
|
|
|
+ 住院号:
|
|
|
+ </div>
|
|
|
+ <el-input style="width: 300px" v-model="markStateRequest.bah" disabled></el-input>
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 12px;display: flex">
|
|
|
+ <div style="width: 80px">
|
|
|
+ 住院次数:
|
|
|
+ </div>
|
|
|
+ <el-input style="width: 300px" v-model="markStateRequest.times" disabled></el-input>
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 12px;display: flex">
|
|
|
+ <div style="width: 80px">
|
|
|
+ 来访人员:
|
|
|
+ </div>
|
|
|
+ <el-input style="width: 300px" v-model="markStateRequest.visitStaff"></el-input>
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 12px;display: flex">
|
|
|
+ <div style="width: 80px">
|
|
|
+ 备注:
|
|
|
+ </div>
|
|
|
+ <el-input type="textarea" style="width: 300px" v-model="markStateRequest.remark"></el-input>
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <div>
|
|
|
+ <el-button type="primary" @click="executeDuplicateOrClosedown">提交</el-button>
|
|
|
+ <el-button @click="printMarkStateRequest">打印</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
</template>
|
|
|
</page-layer>
|
|
|
</template>
|
|
@@ -267,14 +353,14 @@ import {
|
|
|
executeUnArchiveBa,
|
|
|
getAllDictionary,
|
|
|
getAllWards,
|
|
|
- getSheetInfo,
|
|
|
- sheetSearch,
|
|
|
+ getSheetInfo, markClosedown, markDuplicate,
|
|
|
+ sheetSearch, signedByDateCount,
|
|
|
} from '@/api/case-front-sheet'
|
|
|
import maleIcon from '@/assets/male-icon.png'
|
|
|
import femaleIcon from '@/assets/female-icon.png'
|
|
|
import {ElMessage, ElMessageBox} from 'element-plus'
|
|
|
import {maxHalfYear} from '@/data/shortcuts'
|
|
|
-import {formatDate, formatMonth, getOneMonthOffset} from '@/utils/date'
|
|
|
+import {formatDate, formatDatetime, formatMonth, getOneMonthOffset} from '@/utils/date'
|
|
|
import {getLodop, initLodop} from '@/utils/c-lodop'
|
|
|
import HeadPage from '../../../components/inpatient/frontsheet-printpage/HeadPage.vue'
|
|
|
import TailPage from '../../../components/inpatient/frontsheet-printpage/TailPage.vue'
|
|
@@ -282,6 +368,9 @@ import FullPage from "@/components/inpatient/frontsheet-printpage/FullPage.vue";
|
|
|
import {Export} from '@/utils/ExportExcel'
|
|
|
import SheetQuality from '@/components/inpatient/CaseFrontSheetQuality.vue'
|
|
|
import PageLayer from "@/layout/PageLayer";
|
|
|
+import patientdead from '@/assets/case-frontsheet/patient-dead.png'
|
|
|
+import baduplicated from '@/assets/case-frontsheet/ba-duplicated.png'
|
|
|
+import baclosedown from '@/assets/case-frontsheet/ba-closedown.png'
|
|
|
|
|
|
const showSheetQuality = ref(false)
|
|
|
const currentPage = ref(1)
|
|
@@ -318,9 +407,9 @@ const searchPatient = () => {
|
|
|
basOutPatients(overviewParam).then((res) => {
|
|
|
isLateDataMode.value = overviewParam.lateFlag === '1'
|
|
|
isUnsignedMode.value = overviewParam.fileStatus === '0'
|
|
|
- overview.value = res.list
|
|
|
- if (res.list.length === 1) {
|
|
|
- fetchSheetInfo(res.list[0])
|
|
|
+ overview.value = res
|
|
|
+ if (res.length === 1) {
|
|
|
+ fetchSheetInfo(res[0])
|
|
|
}
|
|
|
})
|
|
|
}
|
|
@@ -448,11 +537,41 @@ const exportDismissCount = () => {
|
|
|
const fileName = `【${disCountParams.month}】${name}`
|
|
|
Export(dismissCountdata.value, title, fileName)
|
|
|
}
|
|
|
+
|
|
|
+const showSignedByDay = ref(false)
|
|
|
+const signDate = ref(new Date())
|
|
|
+const signData = ref({})
|
|
|
+const currentSignStaff = ref('')
|
|
|
+
|
|
|
+const dateOffset = (val) => {
|
|
|
+ let currentTime = new Date(signDate.value).getTime()
|
|
|
+ signDate.value = new Date(currentTime + (3600 * 24 * val * 1000) )
|
|
|
+ handleSignDateChange(signDate.value)
|
|
|
+}
|
|
|
+
|
|
|
+const handleSignDateChange = (val) => {
|
|
|
+ signedByDateCount(formatDate(val)).then(res => {
|
|
|
+ signData.value = res
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const clickSignStaff = (key) => {
|
|
|
+ if (currentSignStaff.value === key) {
|
|
|
+ currentSignStaff.value = ''
|
|
|
+ } else {
|
|
|
+ currentSignStaff.value = key
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
const handleCommand = (val) => {
|
|
|
switch (val) {
|
|
|
case 'dismissCount':
|
|
|
showDismissCount.value = true
|
|
|
break
|
|
|
+ case 'signedByDay':
|
|
|
+ showSignedByDay.value = true
|
|
|
+ handleSignDateChange(signDate.value)
|
|
|
+ break;
|
|
|
case 'exportLateData':
|
|
|
exportSpecialDataExel(1)
|
|
|
break
|
|
@@ -474,6 +593,12 @@ const handleCommand = (val) => {
|
|
|
case 'quality':
|
|
|
showSheetQuality.value = true
|
|
|
break
|
|
|
+ case 'duplicate':
|
|
|
+ beforeDuplicateOrClosedown('DUPLICATE')
|
|
|
+ break
|
|
|
+ case 'closedown':
|
|
|
+ beforeDuplicateOrClosedown('CLOSEDOWN')
|
|
|
+ break
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -522,6 +647,7 @@ const exportSpecialDataExel = (flag) => {
|
|
|
if (flag === 1) {
|
|
|
fields.lateDays = '迟交天数'
|
|
|
fields.signDate = '签收日期'
|
|
|
+ fields.zyDismissWayName = '是否死亡'
|
|
|
}
|
|
|
Export(overview.value, fields, flag === 1 ? '迟交病案' : '未签收病案')
|
|
|
}
|
|
@@ -709,6 +835,61 @@ const handleCurrentDismissCountPageChange = (val) => {
|
|
|
currentDismissCountPage.value = val
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+const showMarkStateDialog = ref(false)
|
|
|
+const markStateType = ref('')
|
|
|
+const markStateTitle = computed(() => {
|
|
|
+ return markStateType.value === 'DUPLICATE' ? '复印' : '封存'
|
|
|
+})
|
|
|
+const markStateRequest = reactive({
|
|
|
+ bah: null,
|
|
|
+ times: null,
|
|
|
+ visitStaff: null,
|
|
|
+ remark: null,
|
|
|
+})
|
|
|
+
|
|
|
+const beforeDuplicateOrClosedown = (type) => {
|
|
|
+ if (!sheet.value.bah) {
|
|
|
+ ElMessage({
|
|
|
+ message: '请先选择病案'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ markStateType.value = type
|
|
|
+ markStateRequest.bah = sheet.value.bah
|
|
|
+ markStateRequest.times = sheet.value.admissTimes
|
|
|
+ showMarkStateDialog.value = true
|
|
|
+}
|
|
|
+
|
|
|
+const executeDuplicateOrClosedown = () => {
|
|
|
+ if (markStateType.value === 'DUPLICATE') {
|
|
|
+ markDuplicate(markStateRequest).then(res => {
|
|
|
+ ElMessage({
|
|
|
+ message: '操作成功',
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ sheet.value.duplicated += 1
|
|
|
+ showMarkStateDialog.value = false
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ markClosedown(markStateRequest).then(res => {
|
|
|
+ ElMessage({
|
|
|
+ message: '操作成功',
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ sheet.value.closedown += 1
|
|
|
+ showMarkStateDialog.value = false
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const printMarkStateRequest = () => {
|
|
|
+ window.print()
|
|
|
+}
|
|
|
+
|
|
|
onActivated(() => {
|
|
|
initLodop()
|
|
|
})
|