Compare commits
2 Commits
deb31c969a
...
18c96e006f
| Author | SHA1 | Date | |
|---|---|---|---|
| 18c96e006f | |||
| f5db504363 |
@@ -13,10 +13,19 @@
|
||||
>
|
||||
<plus />
|
||||
</el-icon>
|
||||
<el-icon
|
||||
class="delete-icon"
|
||||
title="删除处方单"
|
||||
@click="handleDeletePrescriptionClick(index)"
|
||||
:class="{ 'disabled-icon': isPrescriptionDeletable(index) !== true }"
|
||||
style="font-size: 20px !important; margin-left: 10px; color: #f56c6c"
|
||||
>
|
||||
<minus />
|
||||
</el-icon>
|
||||
</div>
|
||||
<div class="summary">
|
||||
<span class="summary-item">药品数: {{ '1' }}种</span>
|
||||
<span class="summary-item">总价: ¥ {{ 100 }}</span>
|
||||
<span class="summary-item">药品数: {{ getPrescriptionMedicineCount(index) }}种</span>
|
||||
<span class="summary-item">总价: ¥ {{ getPrescriptionTotalPrice(index) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@@ -660,6 +669,51 @@ function addNewPrescription(){
|
||||
tcmPrescriptionList.value.push({})
|
||||
}
|
||||
|
||||
// 删除处方单
|
||||
function handleDeletePrescriptionClick(prescriptionIndex) {
|
||||
if (!isPrescriptionDeletable(prescriptionIndex)) {
|
||||
const medicineCount = getPrescriptionMedicineCount(prescriptionIndex);
|
||||
if (medicineCount > 0) {
|
||||
proxy.$modal.msgWarning('该处方单还有药品,请先删除所有药品后再删除处方单');
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查是否有已签发的药品
|
||||
const hasChargedItems = prescriptionList.value.some(item => item.statusEnum === 2);
|
||||
if (hasChargedItems) {
|
||||
proxy.$modal.msgWarning('该处方单已收费,不能删除');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 确认删除
|
||||
proxy.$modal.confirm('确定要删除这个处方单吗?').then(() => {
|
||||
tcmPrescriptionList.value.splice(prescriptionIndex, 1);
|
||||
proxy.$modal.msgSuccess('处方单删除成功');
|
||||
}).catch(() => {
|
||||
// 用户取消删除
|
||||
});
|
||||
}
|
||||
|
||||
// 检查处方是否可删除
|
||||
function isPrescriptionDeletable(prescriptionIndex) {
|
||||
const medicineCount = getPrescriptionMedicineCount(prescriptionIndex);
|
||||
if (medicineCount > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查是否有已签发的药品
|
||||
const hasChargedItems = prescriptionList.value.some(item => item.statusEnum === 2);
|
||||
return !hasChargedItems;
|
||||
}
|
||||
|
||||
// 获取处方中的药品数量
|
||||
function getPrescriptionMedicineCount(prescriptionIndex) {
|
||||
// 这里需要根据实际的业务逻辑来计算
|
||||
// 假设每个处方对应一组药品,这里简化处理
|
||||
return prescriptionList.value.filter(item => item.statusEnum !== 2).length;
|
||||
}
|
||||
|
||||
/**
|
||||
* 选择药品回调
|
||||
*/
|
||||
@@ -801,6 +855,37 @@ function handleDelete() {
|
||||
groupMarkers.value = getGroupMarkers(prescriptionList.value); // 删除行会出现组号混乱的情况,所以这里重新更新标记
|
||||
}
|
||||
|
||||
// 判断处方单是否可删除
|
||||
function isPrescriptionDeletable(prescriptionIndex) {
|
||||
// 条件1:处方单没有药品
|
||||
const medicineCount = getPrescriptionMedicineCount(prescriptionIndex);
|
||||
if (medicineCount > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 条件2:处方单未收费(已签发的处方不能删除)
|
||||
// 检查是否有已签发的药品(statusEnum == 2 表示已签发)
|
||||
const hasChargedItems = prescriptionList.value.some(item => item.statusEnum === 2);
|
||||
if (hasChargedItems) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// 删除处方单
|
||||
function handleDeletePrescriptionClick(prescriptionIndex) {
|
||||
if (!isPrescriptionDeletable(prescriptionIndex)) {
|
||||
proxy.$modal.msgWarning('该处方单不可删除');
|
||||
return;
|
||||
}
|
||||
|
||||
proxy.$modal.confirm('确认删除该处方单吗?').then(() => {
|
||||
tcmPrescriptionList.value.splice(prescriptionIndex, 1);
|
||||
proxy.$modal.msgSuccess('删除成功');
|
||||
}).catch(() => {});
|
||||
}
|
||||
|
||||
function handleNumberClick(item, index) {
|
||||
prescriptionList.value[index].unitPrice = item.price;
|
||||
// prescriptionList.value[index].lotNumber = item.lotNumber;
|
||||
@@ -1599,6 +1684,90 @@ function validateGroups(saveList) {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
// 获取处方单药品数量
|
||||
function getPrescriptionMedicineCount(prescriptionIndex) {
|
||||
// 这里需要根据实际数据结构来判断,暂时返回0
|
||||
// TODO: 根据处方单索引获取对应的药品数量
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 获取处方单总价
|
||||
function getPrescriptionTotalPrice(prescriptionIndex) {
|
||||
// 这里需要根据实际数据结构来判断,暂时返回0
|
||||
// TODO: 根据处方单索引获取对应的总价
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 判断处方单是否可删除
|
||||
function isPrescriptionDeletable(prescriptionIndex) {
|
||||
// 条件1:处方单没有药品
|
||||
const medicineCount = getPrescriptionMedicineCount(prescriptionIndex);
|
||||
if (medicineCount > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 条件2:处方单未收费(这里需要根据实际收费状态字段判断)
|
||||
// TODO: 根据实际的收费状态字段来判断
|
||||
// const isCharged = checkPrescriptionCharged(prescriptionIndex);
|
||||
// if (isCharged) {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// 删除处方单
|
||||
function handleDeletePrescriptionClick(prescriptionIndex) {
|
||||
if (!isPrescriptionDeletable(prescriptionIndex)) {
|
||||
const medicineCount = getPrescriptionMedicineCount(prescriptionIndex);
|
||||
if (medicineCount > 0) {
|
||||
proxy.$modal.msgWarning('该处方单还有药品,请先删除所有药品后再删除处方单');
|
||||
} else {
|
||||
proxy.$modal.msgWarning('该处方单已收费,不能删除');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// 确认删除
|
||||
proxy.$modal.confirm('确定要删除这个处方单吗?').then(() => {
|
||||
tcmPrescriptionList.value.splice(prescriptionIndex, 1);
|
||||
proxy.$modal.msgSuccess('处方单删除成功');
|
||||
}).catch(() => {
|
||||
// 用户取消删除
|
||||
});
|
||||
}
|
||||
|
||||
// 获取处方单药品数量
|
||||
function getPrescriptionMedicineCount(prescriptionIndex) {
|
||||
// 目前所有药品都在 prescriptionList 中,暂时返回总数量
|
||||
// TODO: 将来需要按处方单分组药品
|
||||
return prescriptionList.value.filter(item => item.statusEnum !== 2).length;
|
||||
}
|
||||
|
||||
// 获取处方单总价
|
||||
function getPrescriptionTotalPrice(prescriptionIndex) {
|
||||
// 目前所有药品都在 prescriptionList 中,暂时返回总价
|
||||
// TODO: 将来需要按处方单分组计算总价
|
||||
return prescriptionList.value
|
||||
.filter(item => item.statusEnum !== 2)
|
||||
.reduce((total, item) => total + (Number(item.totalPrice) || 0), 0)
|
||||
.toFixed(2);
|
||||
}
|
||||
|
||||
// 判断处方单是否可删除
|
||||
function isPrescriptionDeletable(prescriptionIndex) {
|
||||
// 条件1:处方单没有药品
|
||||
const medicineCount = getPrescriptionMedicineCount(prescriptionIndex);
|
||||
if (medicineCount > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 条件2:处方单未收费(这里需要根据实际收费状态字段判断)
|
||||
// TODO: 根据实际的收费状态字段来判断
|
||||
// 暂时返回true,等有收费状态字段后再完善
|
||||
return true;
|
||||
}
|
||||
|
||||
defineExpose({ getListInfo, getDiagnosisInfo });
|
||||
</script>
|
||||
|
||||
@@ -1711,4 +1880,25 @@ defineExpose({ getListInfo, getDiagnosisInfo });
|
||||
.add-icon:hover {
|
||||
background-color: #ecf5ff;
|
||||
}
|
||||
|
||||
.delete-icon {
|
||||
cursor: pointer;
|
||||
border-radius: 50%;
|
||||
padding: 4px;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.delete-icon:hover {
|
||||
background-color: #fef0f0;
|
||||
}
|
||||
|
||||
.delete-icon.disabled-icon {
|
||||
cursor: not-allowed;
|
||||
color: #c0c4cc !important;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.delete-icon.disabled-icon:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user