|
@@ -13,7 +13,7 @@
|
|
|
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:'科室'}">
|
|
|
+ :value="deptOptionValue(item)">
|
|
|
<span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
|
|
|
<el-divider direction="vertical"></el-divider>
|
|
|
<span>{{ item.name }}</span>
|
|
@@ -23,7 +23,11 @@
|
|
|
<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>
|
|
|
+ clearable>
|
|
|
+ <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
|
|
|
+ <el-divider direction="vertical"/>
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ </el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="会诊级别:" prop="hzType">
|
|
@@ -39,7 +43,12 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="会诊医生:" prop="hzDoctor1">
|
|
|
- <el-select v-model="huiZhenShenQing.hzDoctor1" clearable filterable>
|
|
|
+ <el-select v-model="huiZhenShenQing.hzDoctor1"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ remote
|
|
|
+ @change="autofillData"
|
|
|
+ :remote-method="inquireAboutTheConsultingDoctor">
|
|
|
<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>
|
|
@@ -99,9 +108,10 @@
|
|
|
@zhenDuanMing="dianJiTianJiaZhuYaoZhenDuan"/>
|
|
|
</template>
|
|
|
|
|
|
-<script>
|
|
|
+<script name="TianJiaHuiZhenShenQing" setup>
|
|
|
import {cptSex} from "@/utils/computed";
|
|
|
import {
|
|
|
+ getConsultingDoctorInfo,
|
|
|
gethuiZhenLeiBie,
|
|
|
huiZhenYiSheng,
|
|
|
queryDept,
|
|
@@ -114,195 +124,226 @@ 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 emit = defineEmits(['close'])
|
|
|
|
|
|
- //会诊医生判断 , 要会诊医生在这个科室的 才可以
|
|
|
- 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 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 remoteMethodHuiZhenKeShi = (val) => {
|
|
|
- if (val !== '' && val.length > 1) {
|
|
|
- queryDept(val)
|
|
|
- .then((res) => {
|
|
|
- deptList.value = res
|
|
|
- })
|
|
|
- .catch((error) => {
|
|
|
- deptList.value = []
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
+const huiZhenShenQingDialog = ref(true)
|
|
|
+// 会诊医生
|
|
|
+const huiZhenYiShengList = ref([])
|
|
|
+// 科室
|
|
|
+const deptList = ref([])
|
|
|
+//会诊类别集合
|
|
|
+const huiZhenLeiBieList = ref()
|
|
|
+// 表格
|
|
|
+const huiZhenShenQingForm = ref(null)
|
|
|
+// 用户信息
|
|
|
+const userInfo = store.state.user.info
|
|
|
+// 会诊科室 option 的 值
|
|
|
+const deptOptionValue = (item) => {
|
|
|
+ item.dept = true
|
|
|
+ return JSON.stringify(item)
|
|
|
+}
|
|
|
+
|
|
|
+//会诊医生判断 , 要会诊医生在这个科室的 才可以
|
|
|
+const huiZhenYiShengPanDuan = (val) => {
|
|
|
+ popUpPrompt = false
|
|
|
+ try {
|
|
|
+ val = JSON.parse(val)
|
|
|
+ } catch (e) {
|
|
|
|
|
|
- // 数据校验
|
|
|
- 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'}],
|
|
|
+ }
|
|
|
+ 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
|
|
|
})
|
|
|
- //点击申请
|
|
|
- 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) {
|
|
|
- }
|
|
|
- }
|
|
|
+ } else {
|
|
|
+ huiZhenYiShengList.value = []
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- // 查询主要诊断
|
|
|
- const dianJiChaXunZhuYaoZhenDuan = (val) => {
|
|
|
- if (youWuXuanZheHuanZhe()) return
|
|
|
- huanZheZhenDuan.value.dialog = true
|
|
|
- huanZheZhenDuan.value.zhenDuanLeiXing = val
|
|
|
- }
|
|
|
+//远程搜索会诊科室
|
|
|
+const remoteMethodHuiZhenKeShi = (val) => {
|
|
|
+ if (val !== '' && val.length > 1) {
|
|
|
+ queryDept(val)
|
|
|
+ .then((res) => {
|
|
|
+ deptList.value = res
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ deptList.value = []
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- const huanZheZhenDuan = ref({
|
|
|
- dialog: false,
|
|
|
- zhenDuanLeiXing: 1
|
|
|
+// 数据校验
|
|
|
+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 dianJiTianJiaZhuYaoZhenDuan = (val) => {
|
|
|
- if (huiZhenShenQing.value.hzZd.length + val.length >= 100) {
|
|
|
- ElMessage.error("主要诊断过长。")
|
|
|
- } else {
|
|
|
- huiZhenShenQing.value.hzZd += val + ','
|
|
|
- }
|
|
|
- }
|
|
|
+// 查询主要诊断
|
|
|
+const dianJiChaXunZhuYaoZhenDuan = (val) => {
|
|
|
+ if (youWuXuanZheHuanZhe()) return
|
|
|
+ huanZheZhenDuan.value.dialog = true
|
|
|
+ huanZheZhenDuan.value.zhenDuanLeiXing = val
|
|
|
+}
|
|
|
|
|
|
- const guanBi = () => {
|
|
|
- ctx.emit('close')
|
|
|
- }
|
|
|
+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 = () => {
|
|
|
+ emit('close')
|
|
|
+}
|
|
|
+
|
|
|
+const hotKey = {
|
|
|
+ ctrl: {'s': huiZhenShenQingClick}
|
|
|
+}
|
|
|
|
|
|
- const hotKey = {
|
|
|
- ctrl: {'s': huiZhenShenQingClick}
|
|
|
+
|
|
|
+let popUpPrompt = false
|
|
|
+const inquireAboutTheConsultingDoctor = (val) => {
|
|
|
+ getConsultingDoctorInfo(val).then((res) => {
|
|
|
+ if (res) {
|
|
|
+ popUpPrompt = true
|
|
|
+ huiZhenYiShengList.value = res
|
|
|
}
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
- onMounted(() => {
|
|
|
- xcHotKey(hotKey)
|
|
|
- huiZhenShenQing.value.name = userInfo.name
|
|
|
- getServerDateApi().then((res) => {
|
|
|
- huiZhenShenQing.value.inputDate = res
|
|
|
- })
|
|
|
- gethuiZhenLeiBie().then((res) => {
|
|
|
- huiZhenLeiBieList.value = res
|
|
|
- })
|
|
|
- })
|
|
|
+const autofillData = async (val) => {
|
|
|
+ if (!popUpPrompt) return
|
|
|
+ if (!val) return
|
|
|
+ await nextTick()
|
|
|
+ ElMessageBox.confirm('是否要自动填充数据。', '提示', {
|
|
|
+ type: 'info',
|
|
|
+ distinguishCancelAndClose: true,
|
|
|
+ }).then(() => {
|
|
|
+ let res = {}
|
|
|
+ for (let i = 0, len = huiZhenYiShengList.value.length; i < len; i++) {
|
|
|
+ let item = huiZhenYiShengList.value[i]
|
|
|
+ if (item.code === val) {
|
|
|
+ res = item
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- onUnmounted(() => {
|
|
|
- logoutShortcut()
|
|
|
- })
|
|
|
+ let dept = {code: res.deptCode, name: res.deptName, dept: true}
|
|
|
|
|
|
+ huiZhenShenQing.value.huiZhenKeShi = JSON.stringify(dept)
|
|
|
+ deptList.value = [dept]
|
|
|
+ huiZhenShenQing.value.reqDept1 = res.deptCode
|
|
|
+ huiZhenShenQing.value.reqDeptName = res.deptName
|
|
|
+ huiZhenShenQing.value.hzType = res.empTitCode
|
|
|
|
|
|
- return {
|
|
|
- cptSex,
|
|
|
- huiZhenShenQing,
|
|
|
- huiZhenShenQingDialog,
|
|
|
- huiZhenYiShengPanDuan,
|
|
|
- huiZhenYiShengList,
|
|
|
- deptList,
|
|
|
- remoteMethodHuiZhenKeShi,
|
|
|
- huiZhenLeiBieList,
|
|
|
- huiZhenTypeList,
|
|
|
- huiZhenShenQingClick,
|
|
|
- huiZhenShenQingRules,
|
|
|
- huiZhenShenQingForm,
|
|
|
- huanZheZhenDuan,
|
|
|
- dianJiChaXunZhuYaoZhenDuan,
|
|
|
- dianJiTianJiaZhuYaoZhenDuan,
|
|
|
- windowSize,
|
|
|
- guanBi,
|
|
|
- huanZheXinXi
|
|
|
+ }).catch((action) => {
|
|
|
+ if (action === 'cancel') {
|
|
|
+ huiZhenShenQing.value = {}
|
|
|
+ } else {
|
|
|
+ huiZhenShenQing.value.hzDoctor1 = ''
|
|
|
+ huiZhenYiShengPanDuan({code: ''})
|
|
|
}
|
|
|
- }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
+onMounted(() => {
|
|
|
+ xcHotKey(hotKey)
|
|
|
+ huiZhenShenQing.value.name = userInfo.name
|
|
|
+ getServerDateApi().then((res) => {
|
|
|
+ huiZhenShenQing.value.inputDate = res
|
|
|
+ })
|
|
|
+ gethuiZhenLeiBie().then((res) => {
|
|
|
+ huiZhenLeiBieList.value = res
|
|
|
+ })
|
|
|
+})
|
|
|
+
|
|
|
+onUnmounted(() => {
|
|
|
+ logoutShortcut()
|
|
|
+})
|
|
|
+
|
|
|
let huiZhenTypeList = [
|
|
|
- {code: 1, name: '主治医师'},
|
|
|
- {code: 2, name: '副主任医生'},
|
|
|
- {code: 3, name: '主任医生'},
|
|
|
+ {code: '1', name: '主治医师'},
|
|
|
+ {code: '2', name: '副主任医生'},
|
|
|
+ {code: '3', name: '主任医生'},
|
|
|
]
|
|
|
</script>
|
|
|
|