feat: 中药导入模块修复、部门财务的优化、队列的优化管理

This commit is contained in:
李琦
2026-08-07 13:17:07 +08:00
parent 9f37802ba7
commit 32eb96b4ad
19 changed files with 1317 additions and 604 deletions

View File

@@ -94,6 +94,8 @@ export const usePrescriptionStore = defineStore('prescription', () => {
const newDrugInfo = ref<any>({});
const selectChineseIndex = ref(-1);
const selectChineseId = ref(0);
/** 中药气泡选中的完整商品行(添加时优先使用) */
const pendingNewChineseProduct = ref<any>(null);
// 二次签名相关
const doctorSecondSign = ref(0);
@@ -726,7 +728,91 @@ export const usePrescriptionStore = defineStore('prescription', () => {
updateCurrentDrugs(newDrugs);
};
// 新药品操作
/**
* 中药气泡:选中新增行药名
* @param item 商品检索完整行
*/
const onSelectNewChineseDrug = (item: any) => {
const drugId = Number(item?.drug_id || item?.drug?.id || 0);
if (!drugId) return;
const check = currentDrugs.value.find((v) => Number(v.id) === drugId);
if (check) {
newDrugInfo.value.id = '';
newDrugInfo.value.name = '';
pendingNewChineseProduct.value = null;
message.error('该药品已经在处方中了!');
return;
}
pendingNewChineseProduct.value = item;
newDrugInfo.value.id = drugId;
newDrugInfo.value.price = item.price;
newDrugInfo.value.name = item.drug?.drug_name || '';
newDrugInfo.value.unit =
item.drug?.unit ||
drugUnit.value.find((u) => u.id === item.drug?.unit_id);
newDrugInfo.value.unit_id = item.drug?.unit_id;
nextTick(() => {
const input = document.querySelector(
'.new-number-input input',
) as HTMLElement;
input?.focus();
});
};
/**
* 中药气泡:替换已选行药名
* @param index 行下标
* @param item 商品检索完整行
*/
const onSelectOldChineseDrug = (index: number, item: any) => {
const drugId = Number(item?.drug?.id || item?.drug_id || 0);
if (!drugId) return;
const check = currentDrugs.value.find(
(v, i) => i !== index && Number(v.id) === drugId,
);
if (check) {
message.error('该药品已经在处方中了!');
return;
}
const data = item;
const newProduct = {
index_id: data.id,
id: data.drug.id,
drug_name: data.drug.drug_name,
number: data.drug.number,
use_num: drugTime.value.find((u) => u.id === data.drug.time_id),
use_type: drugUseType.value.find((u) => u.id === data.drug.type_id),
use_frequency: drugUseFrequency.value.find(
(u) => u.id === data.drug.frequency_id,
),
unit:
data.drug?.unit ||
drugUnit.value.find((u) => u.id === data.drug.unit_id),
price: data.price,
buy_price: data.buy_price,
way_id: data.drug?.way_id,
use_ways: drugUseWay.value.find((u) => u.id === data.drug.way_id),
time_id: data.drug.time_id,
type_id: data.drug.type_id,
frequency_id: data.drug.frequency_id,
unit_id: data.drug.unit_id,
image: data.drug.image,
specification: data.drug?.specification || data.specification || '',
instruction: data.drug.instruction,
type: data.drug.type,
};
const newDrugs = [...currentDrugs.value];
newDrugs[index] = newProduct;
updateCurrentDrugs(newDrugs);
nextTick(() => {
const input = document.querySelector(
`.old-number-input-${index} input`,
) as HTMLElement;
input?.focus();
});
};
// 新药品操作(Select 兼容)
const selectNewDrugInfo = () => {
const check = currentDrugs.value.find((v) => v.id === newDrugInfo.value.id);
if (check) {
@@ -737,6 +823,7 @@ export const usePrescriptionStore = defineStore('prescription', () => {
const data = drugList.value.find((v) => v.drug_id === newDrugInfo.value.id);
if (data) {
pendingNewChineseProduct.value = data;
newDrugInfo.value.price = data.price;
newDrugInfo.value.name = data.drug.drug_name;
// 选药后立刻带上真实单位,供新行数量后缀展示
@@ -822,7 +909,9 @@ export const usePrescriptionStore = defineStore('prescription', () => {
return false;
}
const data = drugList.value.find((v) => v.drug_id === newDrugInfo.value.id);
const data =
pendingNewChineseProduct.value ||
drugList.value.find((v) => v.drug_id === newDrugInfo.value.id);
if (!data) {
message.error('请选择药品');
return false;
@@ -833,6 +922,7 @@ export const usePrescriptionStore = defineStore('prescription', () => {
const success = addProducts(data);
if (success) {
newDrugInfo.value = {};
pendingNewChineseProduct.value = null;
}
return success;
};
@@ -1323,6 +1413,8 @@ export const usePrescriptionStore = defineStore('prescription', () => {
updateDrugUsage,
selectNewDrugInfo,
selectOldDrugInfo,
onSelectNewChineseDrug,
onSelectOldChineseDrug,
setSelectChineseIndex,
addDrugByChinese,
selectDrugByNewDrugInfo,