123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401 |
- <template>
- <el-container>
- <el-aside>
- <el-radio-group v-model="chaZhaoLeiXing" @change="dianJiLeiXingChaXun">
- <el-radio-button :label="1">新申请</el-radio-button>
- <el-radio-button :label="2">个人模板</el-radio-button>
- <el-radio-button :label="3">科室模板</el-radio-button>
- </el-radio-group>
- <el-table :data="jianChaFenLeiShuJu.data"
- :height="windowSize.h / 1.4"
- highlight-current-row stripe>
- <el-table-column label="名称" prop="name">
- <template #default="{row}">
- <el-popover trigger="click" :width="0" placement="right">
- <template #reference>
- <el-button @click="clickToViewData(row)">{{ row.name }}</el-button>
- </template>
- <template #default>
- <el-button @click="dianJiQueRenXuanZhong">确定</el-button>
- <el-button @click="okAndEdit">确定并编辑</el-button>
- <xc-table :local-data="detailsOfNewInspectionItems"
- :height="400"
- @selection-change="xuanZhong"
- :open-paging="false">
- <el-table-column type="index"></el-table-column>
- <el-table-column type="selection"></el-table-column>
- <el-table-column label="项目名称" prop="orderName" width="220"></el-table-column>
- <el-table-column label="说明" prop="ybComment"></el-table-column>
- </xc-table>
- </template>
- </el-popover>
- </template>
- </el-table-column>
- <el-table-column label="操作">
- <template #default="scope">
- <el-button v-if="chaZhaoLeiXing !== 1" type="danger"
- @click.stop="clickDeleteTemplate( scope.row,scope.$index)">删除
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- <el-pagination
- :current-page="jianChaFenLeiShuJu.currentPage"
- :page-size="20"
- :pager-count="5"
- :total="jianChaFenLeiShuJu.total"
- layout="prev,pager,next,total"
- small
- @current-change="jianChaFenLeiFenYe"/>
- </el-aside>
- <el-main>
- <el-button @click="dianJiBaoCunShenQing">保存</el-button>
- <el-button @click="clickSaveTemplate">存为模板</el-button>
- <cuo-wu-xin-xi/>
- <!-- 这里是检查的数据信息 -->
- <el-table :data="xuanZhongJianCha.data"
- :header-cell-class-name="starAdd"
- :height="windowSize.h / 1.4">
- <el-table-column label="编辑" width="120" fixed="left">
- <template #default="scope">
- <el-button icon="Edit" round type="primary" @click="dianJiBianJi(scope.row, scope.$index)"></el-button>
- <el-button icon="Delete" round type="danger" @click="deleteInspectionCheck(scope.$index)"></el-button>
- </template>
- </el-table-column>
- <el-table-column label="项目编码" prop="orderCode"></el-table-column>
- <el-table-column label="项目名称" prop="orderName" show-overflow-tooltip></el-table-column>
- <el-table-column label="检查时间" prop="startTime" show-overflow-tooltip></el-table-column>
- <el-table-column label="执行科室" prop="execDeptName"></el-table-column>
- <el-table-column label="急诊标识">
- <template #default="scope">
- <span v-if="scope.row.jzFlag === 1">√</span>
- </template>
- </el-table-column>
- <el-table-column label="自费">
- <template #default="scope">
- <span v-if="scope.row.ybSelfFlag === 1">√</span>
- </template>
- </el-table-column>
- <el-table-column v-if="!jianCha" label="标本" prop="inspectStuffName" show-overflow-tooltip></el-table-column>
- <el-table-column :label="jianCha ? '病室摘要' : '申请说明'" prop="reqComment"
- show-overflow-tooltip></el-table-column>
- <el-table-column v-if="jianCha" label="体征信息" prop="reqTzComment" show-overflow-tooltip></el-table-column>
- <el-table-column v-if="jianCha" label="辅检结果" prop="reqOtherResult" show-overflow-tooltip></el-table-column>
- <el-table-column v-if="jianCha" label="临床诊断" prop="diagText" show-overflow-tooltip></el-table-column>
- </el-table>
- </el-main>
- </el-container>
- <el-dialog v-model="baoCunMuBan.dialog" center title="保存检查模板" width="30%">
- <el-form ref="baoCunMuBanRef" :model="baoCunMuBan" :rules="baoCunMuBanJiaoYan" label-width="80px">
- <el-row>
- <el-col :span="24">
- <el-form-item label="模板类型" prop="orderType">
- <el-radio-group v-model="baoCunMuBan.orderType">
- <el-radio-button :label="1">个人</el-radio-button>
- <el-radio-button :label="2">科室</el-radio-button>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="名称" prop="tcName">
- <el-input v-model="baoCunMuBan.tcName" ref="tcNameRef" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="排序码" prop="sortNo">
- <el-input-number v-model="baoCunMuBan.sortNo" :max="9999" :min="0"></el-input-number>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="录入方式" prop="tcFlag">
- <el-radio-group v-model="baoCunMuBan.tcFlag">
- <el-radio-button :label="0">自动选择</el-radio-button>
- <el-radio-button :label="1">手工录入</el-radio-button>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-button @click="dianJiBaoCunMuBan(baoCunMuBanRef)">提交</el-button>
- <el-button>关闭</el-button>
- </el-col>
- </el-row>
- </el-form>
- </el-dialog>
- <bian-ji-jian-cha-shen-qing ref="bianJiRef"
- :jian-cha="jianCha"
- @fanYe="bianJiFanYe"/>
- </template>
- <script setup name="TianJiaJianChaJianYan">
- import {computed, onMounted, ref} from 'vue'
- import {
- baoCunJianChaJianYanMuBan,
- baoCunJianYanJianCha,
- chaKanFenLeiXiangQing,
- jianChaJianYanFenLei,
- jianChaJianYanMuBanMing,
- shanShuJianChaMuBan,
- } from '@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing'
- import store from '@/store'
- import {clone} from '@/utils/clone'
- import {ElMessage, ElMessageBox} from 'element-plus'
- import {listNotBlank, stringNotBlank} from '@/utils/blank-utils'
- import BianJiJianChaShenQing
- from '@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/BianJiJianChaJianYanShenQing.vue'
- import {
- cuoWuXinXi,
- huanZheXinXi,
- youWuXuanZheHuanZhe,
- xuanZhongJianCha
- } from '@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng'
- import {yaoPinXiangMuPiPeiYiBao} from '@/api/public-api'
- import CuoWuXinXi from '@/components/zhu-yuan-yi-sheng/CuoWuXinXi.vue'
- import Sleep from '@/utils/sleep'
- import XcTable from "@/components/xiao-chan/xc-table/XcTable.vue";
- import {BizException, ExceptionEnum} from "@/utils/BizException";
- const props = defineProps({
- jianCha: {
- type: Boolean,
- default: true,
- },
- })
- const chaZhaoLeiXing = ref(1)
- const windowSize = computed(() => {
- return store.state.app.windowSize
- })
- const detailsOfNewInspectionItems = ref([])
- const jianChaFenLeiShuJu = ref({
- currentPage: 1,
- total: 0,
- data: [],
- })
- const bianJiRef = ref(null)
- const baoCunMuBanRef = ref()
- const tcNameRef = $ref(null)
- const baoCunMuBan = ref({
- dialog: false,
- tcName: '',
- orderType: 1,
- sortNo: 0,
- tcFlag: 1,
- fuGaiYuanShuJu: false,
- chongFuMing: false,
- })
- const dianJiLeiXingChaXun = () => {
- jianChaFenLeiShuJu.value.total = 0
- jianChaFenLeiShuJu.value.currentPage = 1
- jianChaJianYanFenLei(0, 1, chaZhaoLeiXing.value, props.jianCha).then((res) => {
- jianChaFenLeiShuJu.value.data = res.records
- jianChaFenLeiShuJu.value.total = res.total
- })
- }
- const jianChaFenLeiFenYe = (val) => {
- jianChaFenLeiShuJu.value.currentPage = val
- jianChaJianYanFenLei(jianChaFenLeiShuJu.value.total, val, chaZhaoLeiXing.value, props.jianCha).then((res) => {
- jianChaFenLeiShuJu.value.data = res.records
- })
- }
- const xuanZhong = (val) => {
- xuanZhongJianCha.value.daiXuanZhong = val
- }
- const okAndEdit = () => {
- dianJiQueRenXuanZhong()
- dianJiBianJi(xuanZhongJianCha.value.data[0], 0)
- }
- const dianJiQueRenXuanZhong = () => {
- if (xuanZhongJianCha.value.daiXuanZhong.length === 0) {
- BizException(ExceptionEnum.MESSAGE_ERROR, "请先选中数据")
- }
- let tiShi = false;
- xuanZhongJianCha.value.daiXuanZhong.forEach((item) => {
- if (xuanZhongJianCha.value.weiBianMa.indexOf(item.orderCode) > -1) {
- tiShi = true
- } else {
- xuanZhongJianCha.value.data.push(clone(item))
- xuanZhongJianCha.value.weiBianMa.push(clone(item.orderCode))
- console.log(xuanZhongJianCha.value.data)
- }
- })
- if (tiShi) {
- ElMessage.error('请勿重复添加。')
- }
- }
- const dianJiBianJi = (row, index) => {
- bianJiRef.value.daKaiBenDuiHua(row, index, xuanZhongJianCha.value.data.length)
- }
- const dianJiBaoCunShenQing = () => {
- if (xuanZhongJianCha.value.data.length < 0) {
- ElMessage.error('请选择数据')
- return
- }
- if (youWuXuanZheHuanZhe()) {
- clickSaveTemplate()
- return
- }
- let listCode = []
- xuanZhongJianCha.value.data.forEach((item) => {
- listCode.push(item.orderCode + '-00')
- })
- yaoPinXiangMuPiPeiYiBao(listCode).then((res) => {
- if (stringNotBlank(res)) {
- cuoWuXinXi.value = res
- ElMessageBox.confirm(res, '提示', {
- type: 'warning',
- dangerouslyUseHTMLString: true,
- }).then(() => {
- baoCunShuJu()
- }).catch(() => {
- })
- } else {
- baoCunShuJu()
- }
- })
- }
- function baoCunShuJu() {
- ElMessageBox.confirm('确定要保存这些数据吗?', '提示', {
- type: 'warning',
- }).then(() => {
- let data = huanZheXinXi.value
- data.list = xuanZhongJianCha.value.data
- data.reqType = props.jianCha ? 3 : 2
- baoCunJianYanJianCha(data)
- .then((res) => {
- xuanZhongJianCha.value.weiBianMa = []
- xuanZhongJianCha.value.data = []
- })
- .catch((e) => {
- cuoWuXinXi.value = e
- })
- }).catch(() => {
- })
- }
- const clickToViewData = ({code, bwCode}) => {
- if (!props.jianCha) {
- bwCode = ''
- }
- chaKanFenLeiXiangQing(code, chaZhaoLeiXing.value === 1 ? bwCode : 'mb', props.jianCha).then((res) => {
- if (listNotBlank(res)) {
- detailsOfNewInspectionItems.value = res
- } else {
- ElMessage.error('没有找到对应的数据')
- }
- })
- }
- const clickDeleteTemplate = ({code}, index) => {
- ElMessageBox.confirm('是否要删除该检查模板', '提示', {
- type: 'warning',
- })
- .then(() => {
- shanShuJianChaMuBan(code, store.state.user.info.deptCode).then(() => {
- jianChaFenLeiShuJu.value.data.splice(index, 1)
- })
- })
- .catch(() => {
- })
- }
- const baoCunMuBanJiaoYan = ref({
- tcName: [
- {required: true, message: '名称不能为空', trigger: 'blur'},
- {min: 1, max: 30, message: '长度在 1 到 30 个字', trigger: 'blur'},
- ],
- orderType: [{required: true, message: '名称不能为空', trigger: 'blur'}],
- sortNo: [{required: true, message: '名称不能为空', trigger: 'blur'}],
- tcFlag: [{required: true, message: '名称不能为空', trigger: 'blur'}],
- })
- const dianJiBaoCunMuBan = async (form) => {
- if (!form) return
- try {
- await form.validate()
- jianChaJianYanMuBanMing(baoCunMuBan.value.tcName, props.jianCha ? '3' : '2').then((res) => {
- if (res) {
- ElMessageBox.confirm('已经存在相同的模板名称,是否覆盖数据', '温馨提示', {
- type: 'warning',
- distinguishCancelAndClose: true,
- confirmButtonText: '覆盖',
- cancelButtonText: '取消',
- })
- .then(() => {
- faSongBaoCunMuBan()
- })
- .catch((e) => {
- })
- } else {
- faSongBaoCunMuBan()
- }
- })
- } catch (e) {
- console.log(e)
- }
- }
- const faSongBaoCunMuBan = () => {
- baoCunMuBan.value.reqType = props.jianCha ? 3 : 2
- baoCunMuBan.value.list = xuanZhongJianCha.value.data
- baoCunMuBan.value.tcExec = store.state.user.info.deptCode
- baoCunJianChaJianYanMuBan(baoCunMuBan.value).then((res) => {
- dianJiLeiXingChaXun()
- baoCunMuBan.value.dialog = false
- })
- }
- const bianJiFanYe = (val) => {
- let index = val.val - 1
- bianJiRef.value.daKaiBenDuiHua(xuanZhongJianCha.value.data[index], index, xuanZhongJianCha.value.data.length)
- }
- const clickSaveTemplate = async () => {
- if (xuanZhongJianCha.value.data.length > 0) {
- baoCunMuBan.value.dialog = true
- await Sleep(200)
- tcNameRef.focus()
- } else {
- ElMessage.error('请选择数据')
- }
- }
- const starAdd = (obj) => {
- let index = [0, 1, 2, 3, 6, 7, 8, 9]
- if (index.indexOf(obj.columnIndex) > -1) {
- return 'star'
- }
- }
- const deleteInspectionCheck = (index) => {
- xuanZhongJianCha.value.data.splice(index, 1)
- xuanZhongJianCha.value.weiBianMa.splice(index, 1)
- }
- onMounted(() => {
- dianJiLeiXingChaXun()
- })
- </script>
- <style scoped>
- :deep(.el-table .children-row) {
- background: rgba(145, 247, 145, 0.5);
- }
- :deep(.el-table) {
- --el-table-row-hover-background-color: #85dbfd7a;
- }
- </style>
|