123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- <template>
- <el-dialog v-model="huiZhenShenQingDialog" title="会诊申请" @close="guanBi">
- <xc-code code="ctrl+s" description="保存"/>
- <el-form ref="huiZhenShenQingForm" :model="huiZhenShenQing" :rules="huiZhenShenQingRules" label-width="100px">
- <el-form-item label="会诊科室:" prop="reqDept1">
- <el-select
- v-model="huiZhenShenQing.huiZhenKeShi"
- :remote-method="remoteMethodHuiZhenKeShi"
- clearable
- filterable
- placeholder="根据拼音首字母查找"
- remote
- value-key="code"
- @change="huiZhenYiShengPanDuan"
- >
- <el-option v-for="item in deptList" :key="item.code" :label="item.name"
- :value="{name:item.name,code:item.code,dept:'科室'}">
- <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
- <el-divider direction="vertical"></el-divider>
- <span>{{ item.name }}</span>
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="会诊类别:" prop="hzLevel">
- <el-select v-model="huiZhenShenQing.hzLevel" placeholder="请选择">
- <el-option v-for="item in huiZhenLeiBieList" :key="item.code" :label="item.name" :value="item.code"
- clearable></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="会诊级别:" prop="hzType">
- <el-select v-model="huiZhenShenQing.hzType" :remote-method="remoteMethodHuiZhenKeShi"
- clearable placeholder="请选择"
- @change="huiZhenYiShengPanDuan">
- <el-option v-for="item in huiZhenTypeList" :key="item.code" :label="item.name"
- :value="item.code">
- <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
- <el-divider direction="vertical"></el-divider>
- <span>{{ item.name }}</span>
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="会诊医生:" prop="hzDoctor1">
- <el-select v-model="huiZhenShenQing.hzDoctor1" clearable filterable>
- <el-option v-for="item in huiZhenYiShengList" :key="item.code" :label="item.name"
- :value="item.code">
- <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
- <el-divider direction="vertical"></el-divider>
- <span style="color:#67C23A">{{ item.name }}</span>
- <el-divider direction="vertical"></el-divider>
- <span style="color:#E6A23C">{{ item.deptName }}</span>
- <el-divider direction="vertical"></el-divider>
- <span style="color:#a5673f">{{ item.empTitName }}</span>
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="自费:" prop="ybSelfFlag">
- <el-switch
- v-model="huiZhenShenQing.ybSelfFlag"
- :active-value="1"
- :inactive-value="null"
- active-color="#13ce66"
- active-text="是"
- inactive-color="#ff4949"
- inactive-text="否">
- </el-switch>
- </el-form-item>
- <el-form-item label="紧急:" prop="emergencyFlag">
- <el-switch
- v-model="huiZhenShenQing.emergencyFlag"
- :active-value="1"
- :inactive-value="null"
- active-color="#13ce66"
- active-text="是"
- inactive-color="#ff4949"
- inactive-text="否">
- </el-switch>
- </el-form-item>
- <el-form-item label="病情简介:" prop="reqComment">
- <el-input v-model="huiZhenShenQing.reqComment" :rows="3" placeholder="请输入内容" type="textarea"></el-input>
- </el-form-item>
- <el-form-item label="目前主要诊断:" prop="hzZd">
- <el-input v-model="huiZhenShenQing.hzZd" :rows="3" maxlength="100" placeholder="请输入内容" show-word-limit
- type="textarea"></el-input>
- <el-button type="primary" @click="dianJiChaXunZhuYaoZhenDuan(1)">本院主要诊断</el-button>
- <el-button type="primary" @click="dianJiChaXunZhuYaoZhenDuan(2)">医保主要诊断</el-button>
- </el-form-item>
- <el-form-item label="会诊目的:" prop="hzMd">
- <el-input v-model="huiZhenShenQing.hzMd" :rows="3" placeholder="请输入内容" type="textarea"></el-input>
- </el-form-item>
- <el-button style="margin-left: 20px" type="success" @click="huiZhenShenQingClick">申请</el-button>
- <el-tag style="margin-left: 20px">申请人:{{ huiZhenShenQing.name }}</el-tag>
- <el-tag style="margin-left: 20px">申请时间:{{ huiZhenShenQing.inputDate }}</el-tag>
- </el-form>
- </el-dialog>
- <huan-zhe-zhen-duan v-if="huanZheZhenDuan.dialog"
- :pat-no="huanZheXinXi.inpatientNo"
- :times="huanZheXinXi.admissTimes"
- :zhen-duan-lei-xing="huanZheZhenDuan.zhenDuanLeiXing"
- @close="huanZheZhenDuan.dialog = false"
- @zhenDuanMing="dianJiTianJiaZhuYaoZhenDuan"/>
- </template>
- <script>
- import {cptSex} from "@/utils/computed";
- import {
- gethuiZhenLeiBie,
- huiZhenYiSheng,
- queryDept,
- submitHuiZhenShenQing
- } from "@/api/case-front-sheet";
- import {ElMessage, ElMessageBox} from "element-plus";
- import {huanZheXinXi, youWuXuanZheHuanZhe} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
- import store from "@/store"
- import {getServerDateApi} from "@/api/public-api";
- import HuanZheZhenDuan from "@/components/zhu-yuan-yi-sheng/hui-zhen-shen-qing/HuanZheZhenDuan.vue";
- import {logoutShortcut, xcHotKey} from "@/utils/xckeydown";
- export default {
- name: "TianJiaHuiZhenShenQing",
- components: {HuanZheZhenDuan},
- emits: ['close'],
- setup(props, ctx) {
- const windowSize = computed(() => {
- return store.state.app.windowSize
- })
- //会诊申请的字段
- const huiZhenShenQing = ref({
- inpatientNo: '', //住院号
- admissTimes: '', //住院次数
- reqTimes: '', //请求时间
- reqComment: '', //请求简介
- inputId: '', //输入人的id
- inputDate: '', //输入的时间
- reqDate: '', //请求的时间 和 上面那个一样
- deptCode: '', //科室 code
- wardCode: '', //病房 code 和上面的一样
- reqDept1: '', //请求的 科室
- reqDeptName: '', //请求科室的名字
- statusFlag: '', // 状态标志 1 未读 2 已读
- hzType: '', // 会诊的级别
- hzLevel: '', // 会诊的类别
- hzZd: '', //目前的主要诊断
- hzMd: '', //会诊的目的
- actOrderNo: '', //新开的医嘱号
- hzDoctor1: '', //会诊的医生
- name: '', // 申请人
- emergencyFlag: null, // 医嘱紧急
- ybSelfFlag: null, // 自费
- huiZhenKeShi: {},
- })
- const huiZhenShenQingDialog = ref(true)
- // 会诊医生
- const huiZhenYiShengList = ref([])
- // 科室
- const deptList = ref([])
- //会诊类别集合
- const huiZhenLeiBieList = ref()
- // 表格
- const huiZhenShenQingForm = ref(null)
- // 用户信息
- const userInfo = store.state.user.info
- //会诊医生判断 , 要会诊医生在这个科室的 才可以
- const huiZhenYiShengPanDuan = (val) => {
- if (val.dept) {
- huiZhenShenQing.value.reqDeptName = val.name
- huiZhenShenQing.value.reqDept1 = val.code
- }
- huiZhenShenQing.value.hzDoctor1 = null
- if (huiZhenShenQing.value.reqDept1 && huiZhenShenQing.value.hzType) {
- huiZhenYiSheng(huiZhenShenQing.value.reqDept1, huiZhenShenQing.value.hzType).then((res) => {
- huiZhenYiShengList.value = res
- })
- } else {
- huiZhenYiShengList.value = []
- }
- }
- //远程搜索会诊科室
- const remoteMethodHuiZhenKeShi = (val) => {
- if (val !== '' && val.length > 1) {
- queryDept(val)
- .then((res) => {
- deptList.value = res
- })
- .catch((error) => {
- deptList.value = []
- })
- }
- }
- // 数据校验
- const huiZhenShenQingRules = ref({
- reqDept1: [{required: true, message: '会诊科室不能为空', trigger: 'change'}],
- hzType: [{required: true, message: '会诊的级别不能为空', trigger: 'change'}],
- hzLevel: [{required: true, message: '会诊的类别不能为空', trigger: 'change'}],
- reqComment: [{required: true, message: '病情简介不能为空', trigger: 'blur'}],
- hzZd: [
- {required: true, message: '目前主要诊断不能为空', trigger: 'blur'},
- {
- min: 3,
- max: 120,
- message: '长度在 3 到 100 个字符',
- trigger: 'blur',
- },
- ],
- hzMd: [{required: true, message: '会诊目的不能为空', trigger: 'blur'}],
- })
- //点击申请
- const huiZhenShenQingClick = async () => {
- const form = unref(huiZhenShenQingForm)
- if (!form) return
- try {
- await form.validate()
- ElMessageBox.confirm('请认真审核申请信息', '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'info',
- })
- .then(() => {
- huiZhenShenQing.value.inpatientNo = huanZheXinXi.value.inpatientNo
- huiZhenShenQing.value.admissTimes = huanZheXinXi.value.admissTimes
- huiZhenShenQing.value.deptCode = huiZhenShenQing.value.wardCode = huanZheXinXi.value.zkWard
- submitHuiZhenShenQing(huiZhenShenQing.value).then((res) => {
- form.resetFields()
- huiZhenShenQingDialog.value = false
- })
- })
- .catch(() => {
- })
- } catch (error) {
- }
- }
- // 查询主要诊断
- const dianJiChaXunZhuYaoZhenDuan = (val) => {
- if (youWuXuanZheHuanZhe()) return
- huanZheZhenDuan.value.dialog = true
- huanZheZhenDuan.value.zhenDuanLeiXing = val
- }
- const huanZheZhenDuan = ref({
- dialog: false,
- zhenDuanLeiXing: 1
- })
- const dianJiTianJiaZhuYaoZhenDuan = (val) => {
- if (huiZhenShenQing.value.hzZd.length + val.length >= 100) {
- ElMessage.error("主要诊断过长。")
- } else {
- huiZhenShenQing.value.hzZd += val + ','
- }
- }
- const guanBi = () => {
- ctx.emit('close')
- }
- const hotKey = {
- ctrl: {'s': huiZhenShenQingClick}
- }
- onMounted(() => {
- xcHotKey(hotKey)
- huiZhenShenQing.value.name = userInfo.name
- getServerDateApi().then((res) => {
- huiZhenShenQing.value.inputDate = res
- })
- gethuiZhenLeiBie().then((res) => {
- huiZhenLeiBieList.value = res
- })
- })
- onUnmounted(() => {
- logoutShortcut()
- })
- return {
- cptSex,
- huiZhenShenQing,
- huiZhenShenQingDialog,
- huiZhenYiShengPanDuan,
- huiZhenYiShengList,
- deptList,
- remoteMethodHuiZhenKeShi,
- huiZhenLeiBieList,
- huiZhenTypeList,
- huiZhenShenQingClick,
- huiZhenShenQingRules,
- huiZhenShenQingForm,
- huanZheZhenDuan,
- dianJiChaXunZhuYaoZhenDuan,
- dianJiTianJiaZhuYaoZhenDuan,
- windowSize,
- guanBi,
- huanZheXinXi
- }
- }
- }
- let huiZhenTypeList = [
- {code: 1, name: '主治医师'},
- {code: 2, name: '副主任医生'},
- {code: 3, name: '主任医生'},
- ]
- </script>
- <style scoped>
- </style>
|