123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484 |
- <template>
- <div class="main-contain">
- <div class="position">
- <bread-crumb :crumbs="crumbs"></bread-crumb>
- </div>
- <div class="app-container">
- <div class="cell clearfix">
- <el-input
- size="small"
- style="width: 150px"
- v-model="keywords"
- class="filter-item"
- />
- <el-button
- size="small"
- style="margin: 0 10px"
- class="filter-item"
- type="primary"
- @click="searchAction"
- >搜索
- </el-button>
- <el-date-picker
- v-model="record_date"
- prefix-icon="el-icon-date"
- @change="handleScheduleDateChange"
- :editable="false"
- :clearable="false"
- style="width: 196px; margin-right: 10px"
- type="date"
- format="yyyy-MM-dd"
- value-format="yyyy-MM-dd"
- placeholder="选择日期时间"
- align="right"
- ></el-date-picker>
- <el-button
- size="small"
- style="margin: 0 10px"
- class="filter-item"
- type="primary"
- @click="batchPrint(1)"
- >处方筏批量打印
- </el-button
- >
- <el-button
- size="small"
- style="margin: 0 10px"
- class="filter-item"
- type="primary"
- @click="batchPrint(2)"
- >治疗单批量打印
- </el-button
- >
- <el-button
- size="small"
- style="margin: 0 10px"
- class="filter-item"
- type="primary"
- @click="batchPrint(3)"
- >检验单批量打印
- </el-button
- >
- </div>
- <el-table
- :data="tableData"
- border
- ref="table"
- style="width: 100%"
- :row-style="{ color: '#303133' }"
- @selection-change="handleSelectionChange"
- :header-cell-style="{
- backgroundColor: 'rgb(245, 247, 250)',
- color: '#606266',
- }"
- highlight-current-row
- >
- <el-table-column
- align="center"
- type="selection"
- width="55"
- ></el-table-column>
- <el-table-column
- align="center"
- label="序号"
- width="60"
- type="index"
- ></el-table-column>
- <el-table-column align="center" prop="name" label="姓名" width="100">
- <template slot-scope="scope">{{
- scope.row.patients ? scope.row.patients.name : ''
- }}
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- prop="name"
- label="处方日期"
- width="200"
- >
- <template slot-scope="scope">
- {{ getTimes(scope.row.ctime) }}
- </template
- >
- </el-table-column>
- <!--<el-table-column align="center" prop="name" label="患者类型">-->
- <!--<template slot-scope="scope">{{}}</template>-->
- <!--</el-table-column>-->
- <el-table-column align="center" prop="name" label="处方号">
- <template slot-scope="scope">{{
- scope.row.prescription_number
- }}
- </template>
- </el-table-column>
- <el-table-column align="center" prop="name" label="开立医生">
- <template slot-scope="scope">{{ scope.row.doctor }}</template>
- </el-table-column>
- <el-table-column align="center" prop="name" label="诊断">
- <template slot-scope="scope">{{
- getDiagnosis(scope.row.diagnosis)
- }}
- </template>
- </el-table-column>
- <el-table-column align="center" prop="name" label="状态" width="100">
- <template slot-scope="scope">
- <div v-if="scope.row.id > 0">已就诊</div>
- <div v-else>未就诊</div>
- </template>
- </el-table-column>
- <el-table-column align="center" prop="name" label="操作" width="100">
- <template slot-scope="scope">
- <el-button
- size="mini"
- type="primary"
- @click="handerShowDetail(scope.row)"
- >详情
- </el-button
- >
- </template>
- </el-table-column>
- </el-table>
- <el-pagination
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- :page-sizes="[10, 50, 100]"
- :page-size="10"
- background
- style="margin-top: 20px; float: right"
- layout="total, sizes, prev, pager, next, jumper"
- :total="total"
- >
- </el-pagination>
- <inquiries-detail ref="inquiriesDetail"></inquiries-detail>
- <el-dialog
- class="centerDialog"
- width="600px"
- title="打印"
- :visible.sync="innerVisible"
- append-to-body
- >
- <template>
- <el-button
- style="float: right"
- size="small"
- icon="el-icon-printer"
- @click="printThisPage(printData)"
- type="primary"
- >打印
- </el-button>
- </template>
- <div id="printMain">
- <print
- ref="print"
- v-if="printType == 1"
- :printData="printData"
- ></print>
- <treatPrint
- ref="treatPrint"
- v-if="printType == 2"
- :printData="printData"
- ></treatPrint>
- <checkPrint
- ref="checkPrint"
- v-if="printType == 3"
- :printData="printData"
- ></checkPrint>
- </div>
- </el-dialog>
- </div>
- </div>
- </template>
-
- <script>
- import BreadCrumb from '@/xt_pages/components/bread-crumb'
- import inquiriesDetail from './components/inquiriesDetail'
- import { getBatchPrint, getHisPrescriptionList, getInitData } from '@/api/his/his'
- import { uParseTime } from '@/utils/tools'
- import print from './batch_print_template/index'
- import treatPrint from './batch_print_treatTemplate/index'
- import checkPrint from './batch_print_checkTemplate/index'
-
- export default {
- components: {
- BreadCrumb,
- inquiriesDetail,
- print,
- treatPrint,
- checkPrint
- },
- data() {
- return {
- keywords: '',
- total: 0,
- record_date: '',
- page: 1,
- limit: 10,
- crumbs: [
- { path: false, name: '门诊医生站' },
- { path: false, name: '既往查询' }
- ],
- tableData: [],
- diagnoses: [],
- innerVisible: false,
- selecting_schs: [],
- printData: [],
- printType: 0,
- org_id: ''
- }
- },
- methods: {
- printThisPage(printData) {
- printData.forEach((item) => {
- const print = new Promise((resolve, reject) => {
- if (item.prescriptions.length != 0) {
- resolve(item.prescriptions)
- } else {
- reject(false)
- }
- })
- print
- .then((printData) => {
- if (this.org_id == 10138) {
- const style =
- '@media print {#prescription-print{font-size:14px;border:1px solid white}.prescription-print:last-child {page-break-after: auto;}.printTitle{font-size: 22px;text-align: center;font-weight: bold;margin-bottom: 10px;}.infoTitle{display: flex;margin-top:10px;}.infoTitle div{width: 200px;}.infoMain{display: flex;flex-wrap: wrap;margin-top:10px;}.infoMain div{width: 50%;line-height: 24px;}.prescriptionBox{min-height:350px;}.Rp{font-size: 18px;font-weight: bold;}.drugsBox{padding-left: 40px;margin-bottom: 10px;}.drugsBox div{line-height: 20px;}.drugsOne{line-height: 24px;}.drugsOne span{margin-right: 20px;}.doctorBox{display: flex;justify-content: space-between;padding:0 10px;line-height: 24px;border-bottom: 2px solid #000;}.actionBar{display: flex;justify-content: space-between; line-height: 24px;padding:0 10px;}.actionBar p{width:150px;}.under_line{display: inline-block;border-bottom: 1px solid #000;flex: 1;}@media print {html {zoom: 88%;}}#prescription-print{font-size:14px;border:1px solid white}.prescription-print:last-child {page-break-after: auto;}.printTitle{font-size: 22px;text-align: center;font-weight: bold;margin-bottom: 10px;}.infoTitle{display: flex;margin-top:10px;}.infoTitle div{width: 200px;}.infoMain{display: flex;flex-wrap: wrap;margin-top:10px;}.infoMain div{width: 50%;line-height: 24px;}.prescriptionBox{min-height:350px;}.Rp{font-size: 18px;font-weight: bold;}.drugsBox{padding-left: 40px;margin-bottom: 10px;}.drugsBox div{line-height: 20px;}.drugsOne{line-height: 24px;}.drugsOne span{margin-right: 20px;}.doctorBox{display: flex;justify-content: space-between;padding:0 10px;line-height: 24px;border-bottom: 2px solid #000;}.actionBar{display: flex;justify-content: space-between; line-height: 24px;padding:0 10px;}.actionBar p{width:150px;}.under_line{display: inline-block;border-bottom: 1px solid #000;flex: 1;}@media print {html {zoom: 87%;}}}'
- printJS({
- printable: 'printMain',
- type: 'html',
- style: style,
- scanStyles: false
- })
- }
- if (this.printType == 3) {
- const style =
- '@media print {html {zoom: 80%;}}#prescription-print{font-size:14px;border:1px solid white}.prescription-print:last-child {page-break-after: auto;}#prescriptionPrint div{box-shadow:none;}.printTitle{font-size: 22px;text-align: center;font-weight: bold;margin-bottom: 20px;}.infoTitle{display: flex;margin-top:10px;line-height: 24px;}.infoTitle div{width: 200px;}.infoMain{display: flex;flex-wrap: wrap;margin-top:10px;}.infoMain div{width: 50%;line-height: 24px;}.prescriptionBox{min-height:450px;}.Rp{font-size: 18px;font-weight: bold;}.drugsBox{padding-left: 40px;margin-bottom: 10px;}.drugsBox div{line-height: 20px;}.drugsOne{line-height: 24px;}.drugsOne span{margin-right: 20px;}.doctorBox{display: flex;justify-content: space-between;padding:0 10px;line-height: 24px;border-bottom: 2px solid #000;}.actionBar{display: flex;justify-content: space-between; line-height: 24px;padding:0 10px;}.actionBar p{width:150px;}.under_line{display: inline-block;border-bottom: 1px solid #000;flex: 1;}.NoCell{display: flex;justify-content: space-between;margin-bottom: 10px;}.underLine{display: inline-block;border-bottom: 1px solid #000;text-align: center;line-height: 24px;}.basicCell{display: flex;} .basicCell span{line-height: 24px;margin-bottom: 10px;}}'
- printJS({
- printable: 'printMain',
- type: 'html',
- style: style,
- scanStyles: false
- })
- } else {
- const style =
- '@media print {html {height: auto;margin: 0px;} #prescription-print{font-size:14px;border:1px solid white;margin-bottom:40px;}.printTitle{font-size: 22px;text-align: center;font-weight: bold;margin-bottom: 10px;}.infoTitle{display: flex;border-bottom: 2px solid #000;margin-top:10px;line-height: 1px; padding:0 10px;}.infoTitle p{width: 200px;font-size:14px;}.infoMain{display: flex;flex-wrap: wrap;border-bottom: 2px solid #000;padding:0 10px;}.infoMain div{width: 50%;line-height: 24px;}.prescriptionBox{min-height:450px;}.Rp{font-size: 18px;font-weight: bold;}.drugsBox{padding-left: 40px;margin-bottom: 10px;}.drugsBox div{line-height: 20px;}.drugsOne{line-height: 24px;}.drugsOne span{margin-right: 20px;}.doctorBox{display: flex;justify-content: space-between;padding:0 10px;line-height: 24px;border-bottom: 2px solid #000;}.actionBar{display: flex;justify-content: space-between; line-height: 24px;padding:0 10px;}.actionBar p{width:150px;}.under_line{display: inline-block;border-bottom: 1px solid #000;flex: 1;}@media print {html {zoom: 80%;}}#prescription-print{font-size:14px;border:1px solid white}.prescription-print:last-child {page-break-after: auto;}.printTitle{font-size: 22px;text-align: center;font-weight: bold;margin-bottom: 20px;}.infoTitle{display: flex;margin-top:10px;line-height: 24px;}.infoTitle div{width: 200px;}.infoMain{display: flex;flex-wrap: wrap;margin-top:10px;}.infoMain div{width: 50%;line-height: 24px;}.prescriptionBox{min-height:450px;}.Rp{font-size: 18px;font-weight: bold;}.drugsBox{padding-left: 40px;margin-bottom: 10px;}.drugsBox div{line-height: 20px;}.drugsOne{line-height: 24px;}.drugsOne span{margin-right: 20px;}.doctorBox{display: flex;justify-content: space-between;padding:0 10px;line-height: 24px;border-bottom: 2px solid #000;}.actionBar{display: flex;justify-content: space-between; line-height: 24px;padding:0 10px;}.actionBar p{width:150px;}.under_line{display: inline-block;border-bottom: 1px solid #000;flex: 1;}.NoCell{display: flex;justify-content: space-between;margin-bottom: 10px;}.underLine{display: inline-block;border-bottom: 1px solid #000;text-align: center;line-height: 24px;}.basicCell{display: flex;} .basicCell span{line-height: 24px;margin-bottom: 10px;}}'
- printJS({
- printable: 'printMain',
- type: 'html',
- style: style,
- scanStyles: false
- })
- }
- })
- .catch((reject) => {
- })
- })
-
- this.innerVisible = false
- // this.$nextTick(() => {
- // this.$refs.print.printThisPage()
- // this.$refs.treatPrint.printThisPage()
- // this.$refs.checkPrint.printThisPage()
- // })
- },
-
- searchAction() {
- this.page = 1
- this.limit = 10
- this.getHisPrescriptionList()
- },
- handleScheduleDateChange() {
- this.page = 1
- this.limit = 10
- this.getHisPrescriptionList()
- },
- handleCurrentChange(page) {
- this.page = page
- this.getHisPrescriptionList()
- },
-
- handleSizeChange(limit) {
- this.limit = limit
- this.getHisPrescriptionList()
- },
- getTimes(time) {
- return uParseTime(time, '{y}-{m}-{d} {h}:{i}:{s}')
- },
- handerShowDetail(row) {
- if (row.id == 0) {
- this.$message.error('未就诊')
- return
- }
- this.$refs.inquiriesDetail.show(row.id)
- },
- getHisPrescriptionList() {
- let params = {
- record_date: this.record_date,
- page: this.page,
- limit: this.limit,
- keywords: this.keywords
- }
- getHisPrescriptionList(params).then((response) => {
- if (response.data.state == 0) {
- this.$message.error(response.data.msg)
- return false
- } else {
- this.tableData = response.data.data.order
- this.total = response.data.data.total
- this.$nextTick(() => {
- this.$refs.table.doLayout() //解决表格错位
- })
- }
- })
- },
- getInitData() {
- getInitData().then((response) => {
- if (response.data.state == 0) {
- this.$message.error(response.data.msg)
- return false
- } else {
- this.diagnoses = response.data.data.diagnose
- console.log('诊断列表', this.diagnoses)
- }
- })
- },
- getDiagnosis(id) {
- let ids = id.split(',')
- var name = ''
- for (let i = 0; i < ids.length; i++) {
- for (let b = 0; b < this.diagnoses.length; b++) {
- if (parseInt(ids[i]) == this.diagnoses[b].id) {
- if (name.length == 0) {
- name = this.diagnoses[b].class_name
- } else {
- name = name + ',' + this.diagnoses[b].class_name
- }
- }
- }
- }
- return name
- },
- handleSelectionChange(val) {
- this.selecting_schs = val
- },
- batchPrint(type) {
- this.printType = type
- if (this.selecting_schs.length === 0) {
- this.$message.error('请至少选择一条需要打印的内容')
- return false
- } else {
- var sch_ids = []
- for (let index = 0; index < this.selecting_schs.length; index++) {
- sch_ids.push(this.selecting_schs[index].patient_id)
- }
- let params = {
- record_date: this.record_date,
- patient_ids: sch_ids.join(','),
- type: type
- }
- getBatchPrint(params).then((res) => {
- let Arr = res.data.data.patients
-
-
- let new_patients = []
- if (type != 3) {
- Arr.forEach((i) => {
- if (i.prescriptions.length != 0) {
- new_patients.push(i)
- }
- })
- } else {
- // 过滤检查单数据出来,筛选出有检查项目的单子,不显示没有检查项目的单子
- Arr.forEach((el) => {
- el.prescriptions.forEach((o) => {
- o.project.forEach((i) => {
- if (i.team.project_team != '') {
- new_patients.push(el)
- }
- })
- })
- })
- let projectPrint = []
- new_patients.forEach((el) => {
- el.prescriptions.map((item) => {
- if (item.project.length > 0) {
- item.project.map((it) => {
- projectPrint.push(it)
- })
- }
- })
- })
- // 数组去重
- projectPrint = this.split_project(projectPrint)
- // 配对
- let data = []
- projectPrint.map((item) => {
- if (item.team.id == 0) {
- data.push(item)
- } else {
- if (item.team.project_team != '') {
- new_patients.push(item)
- }
- }
- })
- new_patients = this.split_project_1(new_patients)
- }
- this.printData = new_patients
- console.log(this.printData, 'this.printData')
- })
- }
- this.innerVisible = true
- },
- // 外层去重方
- split_project(Arr) {
- let hash = {}
- let new_Arr = []
- new_Arr = Arr.reduce((preVal, curVal) => {
- hash[curVal.id] ? '' : (hash[curVal.id] = true && preVal.push(curVal))
- return preVal
- }, [])
- Arr = new_Arr.reduce((preVal, curVal) => {
- hash[curVal.team.project_team]
- ? ''
- : (hash[curVal.team.project_team] = true && preVal.push(curVal))
- return preVal
- }, [])
- return Arr
- },
-
- // 内层去重
- split_project_1(Arr) {
- let hash = {}
- let new_Arr = []
- Arr = Arr.reduce((preVal, curVal) => {
- hash[curVal.id] ? '' : (hash[curVal.id] = true && preVal.push(curVal))
- return preVal
- }, [])
-
- Arr.forEach(el => {
- if (el.name) {
- new_Arr.push(el)
- }
- })
-
- console.log(new_Arr, 'Arr')
- return new_Arr
- }
- },
- created() {
- var nowDate = new Date()
- var nowYear = nowDate.getFullYear()
- var nowMonth = nowDate.getMonth() + 1
- var nowDay = nowDate.getDate()
- this.record_date =
- nowYear +
- '-' +
- (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
- '-' +
- (nowDay < 10 ? '0' + nowDay : nowDay)
-
- this.org_id = this.$store.getters.xt_user.template_info.org_id
-
- this.getHisPrescriptionList()
- this.getInitData()
- }
- }
- </script>
|