feat: 优化需求开发
This commit is contained in:
parent
e4c8891823
commit
6981046518
@ -24,6 +24,7 @@ export const drugFieldDict = [
|
||||
{ name: '抗生素级别', field: 'antibiotic_level', verify: (val, label) => verifyListItem(val, [0, 1, 2, 3], false, label, 0) },
|
||||
{ name: '肿瘤使用', field: 'tumor_use', verify: (val, label) => verifyListItem(val, [0, 1, 2, 3], false, label, 0) },
|
||||
{ name: '风险等级', field: 'riskLevel', verify: (val, label) => verifyListItem(val, ['低风险', '高风险'], false, label) },
|
||||
{ name: '默认医保自费', field: 'forceSelfPay', verify: (val, label) => verifyListItem(val, ['Y', 'N'], false, label) },
|
||||
// 仅在线药品库使用:管理分类(处方药 / OTC)与剂型
|
||||
{ name: '管理分类', field: 'manage_category', verify: (val, label) => verifyString(val, label) },
|
||||
{ name: '剂型', field: 'dosage_form', required: true, verify: (val, label) => verifyString(val, label, 1) },
|
||||
|
||||
@ -46,6 +46,15 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="默认医保自费" prop="forceSelfPay">
|
||||
<el-radio-group :model-value="form.forceSelfPay || 'N'"
|
||||
@update:model-value="changeValue($event, 'forceSelfPay')">
|
||||
<el-radio label="Y">是</el-radio>
|
||||
<el-radio label="N">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="适应诊断" prop="applicableDiagnosisCodes">
|
||||
<div class="w-full">
|
||||
@ -68,6 +77,7 @@
|
||||
</el-popover>
|
||||
<div v-if="selectedDiagnosisOptions.length" class="selected-diagnoses">
|
||||
<el-tag v-for="item in selectedDiagnosisOptions" :key="item.code" closable
|
||||
:type="item.invalid ? 'info' : 'primary'"
|
||||
@close="toggleDiagnosis(item)">
|
||||
{{ diagnosisLabel(item) }}
|
||||
</el-tag>
|
||||
@ -230,8 +240,14 @@ const selectedDiagnosisOptions = computed(() => {
|
||||
const optionMap = new Map(diagnosisOptions.value.map(item => [String(item.code), item]));
|
||||
const defaultOptionMap = new Map(diagnosisDefaultOptions.value.map(item => [String(item.code), item]));
|
||||
return (form.value.applicableDiagnosisCodes || [])
|
||||
.map(code => optionMap.get(String(code)) || defaultOptionMap.get(String(code)))
|
||||
.filter(Boolean);
|
||||
.map(code => {
|
||||
const normalizedCode = String(code);
|
||||
return optionMap.get(normalizedCode)
|
||||
|| defaultOptionMap.get(normalizedCode)
|
||||
// Historical diagnosis codes may no longer exist in the diagnosis library.
|
||||
// Keep them visible so the user can remove them and pass server validation.
|
||||
|| { code: normalizedCode, name: '已失效诊断', invalid: true };
|
||||
});
|
||||
})
|
||||
|
||||
function isDiagnosisSelected(code) {
|
||||
@ -371,7 +387,7 @@ async function getRepeatTags() {
|
||||
watch(() => props.visible, async (val) => {
|
||||
if (val) {
|
||||
// reset local editForm when opening drawer
|
||||
editForm.value = props.data._id ? {} : { antibiotic_level: 0, tumor_use: 0 }
|
||||
editForm.value = props.data._id ? {} : { antibiotic_level: 0, tumor_use: 0, forceSelfPay: 'N' }
|
||||
diagnosisKeyword.value = ''
|
||||
await Promise.all([attachMedicineConfig(), initializeDiagnoses()])
|
||||
if (props.libType === 'online') {
|
||||
|
||||
@ -6,10 +6,10 @@
|
||||
<div class="px-15px py-12px bg-[#ecf4ff] bg-opacity-30">
|
||||
<div class="pb-10px">
|
||||
<span class="text-16px font-semibold">{{ consultInfo.name }}</span>
|
||||
<span class="text-14px ml-5px">{{ consultInfo.sex }} {{ consultInfo.age ? consultInfo.age + '岁' : ''
|
||||
}}</span>
|
||||
<img v-if="consultInfo.signature" :src="consultInfo.signature" class="w-80px h-40px inline-block"
|
||||
alt="客户签名" @click="previewImage(consultInfo.signature)">
|
||||
<span class="text-14px ml-5px">
|
||||
{{ consultInfo.sex }} {{ consultInfo.age ? consultInfo.age + '岁' : '' }}
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<el-form class="mt-5px" label-suffix=":">
|
||||
<el-row>
|
||||
@ -143,12 +143,12 @@
|
||||
<el-table-column label="序号" prop="index" :width="60">
|
||||
<template #default="{ $index }">{{ $index + 1 }}</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column align="center" label="强制自费" prop="index" :width="80">
|
||||
<el-table-column align="center" label="强制自费" prop="index" :width="80">
|
||||
<template #default="{ row, $index }">
|
||||
<el-checkbox :class="readonly ? 'pointer-events-none' : ''" :model-value="row.forceSelfPay === 'Y'"
|
||||
@update:model-value="changeForcePay($index)" />
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</el-table-column>
|
||||
<el-table-column label="药品" prop="drugName" :min-width="220">
|
||||
<template #default="{ row: item, $index }">
|
||||
<el-select v-model="item.insurance_code" filterable remote reserve-keyword class="w-full"
|
||||
@ -582,6 +582,7 @@ function changeDrug(val, idx) {
|
||||
item.suitableChild = d.suitableChild;
|
||||
item.suitableGender = d.suitableGender;
|
||||
item.repeatTag = d.repeatTag;
|
||||
item.forceSelfPay = d.forceSelfPay === 'Y' ? 'Y' : 'N'
|
||||
}
|
||||
|
||||
function changeUsage(val, idx) {
|
||||
@ -662,10 +663,10 @@ async function verify(ignoreRepeat = false) {
|
||||
ElMessage.info(`${i.drugName}: 给药方式无效`);
|
||||
return;
|
||||
}
|
||||
if (!useTimeList.value.some(item => item.name === i.dose_time_name)) {
|
||||
ElMessage.info(`${i.drugName}: 用药时机无效`);
|
||||
return;
|
||||
}
|
||||
// if (!useTimeList.value.some(item => item.name === i.dose_time_name)) {
|
||||
// ElMessage.info(`${i.drugName}: 用药时机无效`);
|
||||
// return;
|
||||
// }
|
||||
}
|
||||
if (inappropriateDrugs.value.length) {
|
||||
return showUnsuitDrug()
|
||||
@ -912,6 +913,7 @@ async function initWithOrder() {
|
||||
row.suitableChild = drug.suitableChild
|
||||
row.suitableGender = drug.suitableGender
|
||||
row.repeatTag = drug.repeatTag
|
||||
row.forceSelfPay = drug.forceSelfPay === 'Y' ? 'Y' : 'N'
|
||||
acc.push(row)
|
||||
} else {
|
||||
errorDrugs.push(`患者申请的${cur.name}药品信息不存在或者已下架`);
|
||||
|
||||
@ -397,10 +397,15 @@ function handleGlobalVideoMessageListUpdated(list) {
|
||||
|
||||
|
||||
async function getConsultOrderList(orderId) {
|
||||
const doctorCode = sessionStorage.getItem("doctorNo");
|
||||
if (!doctorCode) {
|
||||
orderList.value = [];
|
||||
return;
|
||||
}
|
||||
const res = await getConsultOrder({
|
||||
page: 1,
|
||||
pageSize: 1000,
|
||||
doctorCode: sessionStorage.getItem("doctorNo"),
|
||||
doctorCode,
|
||||
mergeStatus: mergeStatus.value,
|
||||
});
|
||||
orderList.value = res.data.data.map((item) => {
|
||||
|
||||
@ -52,12 +52,19 @@ const total = ref(0);
|
||||
|
||||
const fetchUserList = async (currentPage = 1, append = false) => {
|
||||
if (loading.value) return;
|
||||
const doctorCode = sessionStorage.getItem("doctorNo");
|
||||
if (!doctorCode) {
|
||||
userList.value = [];
|
||||
total.value = 0;
|
||||
noMoreData.value = true;
|
||||
return;
|
||||
}
|
||||
loading.value = true;
|
||||
try {
|
||||
const res = await getConsultOrder({
|
||||
page: currentPage,
|
||||
pageSize: pageSize.value,
|
||||
doctorCode: sessionStorage.getItem("doctorNo"),
|
||||
doctorCode,
|
||||
mergeStatus: "已处理",
|
||||
});
|
||||
// 获取接口返回的总数
|
||||
@ -328,4 +335,4 @@ watch(
|
||||
color: white;
|
||||
font-size: 12px;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@ -161,6 +161,7 @@ const { close: closeBuildModal, show: showBuildModal, visible: buildVisible, wid
|
||||
const { memberInfo } = storeToRefs(memberStore());
|
||||
const tab = ref('reg')
|
||||
const recordTableRef = ref(null);
|
||||
const cardReaderDownloadUrl = "https://hlwyy.hnkhhospital.com/hlwyy/readcard";
|
||||
|
||||
async function scan() {
|
||||
scanCodeApi()
|
||||
@ -220,15 +221,25 @@ async function readCard() {
|
||||
const objMsg = readRes && typeof readRes.Message ? readRes.Message : '';
|
||||
close()
|
||||
if (!IDNum) {
|
||||
ElMessage.info(objMsg || msg || '读取卡信息失败')
|
||||
showCardReaderDownload(objMsg || msg || '读取卡信息失败');
|
||||
return false
|
||||
}
|
||||
return readRes
|
||||
} catch (e) {
|
||||
ElMessage.info(e)
|
||||
showCardReaderDownload('读卡器服务异常,请确认本地读卡器服务是否已开启');
|
||||
}
|
||||
}
|
||||
|
||||
function showCardReaderDownload(message) {
|
||||
ElMessageBox.confirm(`${message},是否下载海宁读卡助手?`, '读卡失败', {
|
||||
confirmButtonText: '下载读卡助手',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
window.open(cardReaderDownloadUrl, '_blank', 'noopener,noreferrer');
|
||||
}).catch(() => {});
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据证件号 查询建档信息
|
||||
* @param IDNum
|
||||
|
||||
@ -7,6 +7,11 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-shrink-0 flex items-center">
|
||||
<a class="card-reader-download" href="https://hlwyy.hnkhhospital.com/hlwyy/readcard" target="_blank"
|
||||
rel="noopener noreferrer">
|
||||
<el-icon><Download /></el-icon>
|
||||
<span>下载读卡助手</span>
|
||||
</a>
|
||||
<div flex items-center class="pr-30px">
|
||||
<el-dropdown v-if="needLogin">
|
||||
<user-avatar flex-shrink-0 useDefault class="rounded-full mr-15px pointer" size="40"
|
||||
@ -100,6 +105,7 @@ import { useImStore } from "@/store/im";
|
||||
import { doctorHasPendingOrder } from "@/api/hlw";
|
||||
import { caStore } from "@/components/ca-sign/store";
|
||||
import ModifyPasswordDialog from "@/components/modify-password-dialog/modify-password-dialog.vue";
|
||||
import { Download } from "@element-plus/icons-vue";
|
||||
const logoPic = new URL("@/assets/logo.png", import.meta.url).href; // 默认logo
|
||||
|
||||
const qrCodeText = ref("");
|
||||
@ -286,4 +292,19 @@ async function handleOpenAutoSign() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-reader-download {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
margin-right: 20px;
|
||||
color: var(--el-color-primary);
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.card-reader-download:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user