feat:优化了门店搜索组件、优化了模态框默认的内容
This commit is contained in:
@@ -11,6 +11,7 @@ import {
|
||||
addWestPrescription,
|
||||
checkChineseMedicineConflictApi,
|
||||
getCurrentStoreTypeApi,
|
||||
getPrescriptionTypeOptionsApi,
|
||||
getDrugUseList,
|
||||
getMyStoreListApi,
|
||||
getPatientItem,
|
||||
@@ -54,6 +55,16 @@ export const usePrescriptionStore = defineStore('prescription', () => {
|
||||
// 处方状态
|
||||
const myStoreId = ref(0);
|
||||
const activeCategory = ref(2);
|
||||
/** 后端下发的处方类型列表(含可选 icon / icon_text) */
|
||||
const categories = ref([
|
||||
{ label: '中药', value: 1, icon: '', icon_text: '' },
|
||||
{ label: '西(中成)药', value: 2, icon: '', icon_text: '' },
|
||||
{ label: '保健食品', value: 3, icon: '', icon_text: '' },
|
||||
{ label: '产品服务包', value: 5, icon: '', icon_text: '' },
|
||||
{ label: '非药品', value: 6, icon: '', icon_text: '' },
|
||||
{ label: '医疗器械', value: 7, icon: '', icon_text: '' },
|
||||
]);
|
||||
const prescriptionTypeDefault = ref(2);
|
||||
const diagnosis = ref('');
|
||||
const medicalAdvice = ref('');
|
||||
const treatmentPrice = ref(0);
|
||||
@@ -192,6 +203,33 @@ export const usePrescriptionStore = defineStore('prescription', () => {
|
||||
return calcItemMarginPercent(drug.price, drug.buy_price);
|
||||
};
|
||||
|
||||
/**
|
||||
* 拉取后端处方类型列表与默认选中
|
||||
*/
|
||||
const loadPrescriptionTypeOptions = async (registerId?: number | string) => {
|
||||
try {
|
||||
const params: { register_id?: number; store_id?: number } = {};
|
||||
const rid = Number(registerId || currentRegisterId.value);
|
||||
if (rid) params.register_id = rid;
|
||||
if (myStoreId.value) params.store_id = myStoreId.value;
|
||||
const res = await getPrescriptionTypeOptionsApi(params);
|
||||
const list = Array.isArray(res?.list) ? res.list : [];
|
||||
if (list.length) {
|
||||
categories.value = list.map((item) => ({
|
||||
value: Number(item.value),
|
||||
label: item.label || '',
|
||||
icon: item.icon || '',
|
||||
icon_text: item.icon_text || '',
|
||||
}));
|
||||
}
|
||||
const def = Number(res?.default);
|
||||
if (def) prescriptionTypeDefault.value = def;
|
||||
} catch (error) {
|
||||
console.error('加载处方类型失败:', error);
|
||||
message.warning('处方类型加载失败,请稍后重试');
|
||||
}
|
||||
};
|
||||
|
||||
// localStorage同步方法
|
||||
const syncToLocalStorage = () => {
|
||||
try {
|
||||
@@ -260,6 +298,12 @@ export const usePrescriptionStore = defineStore('prescription', () => {
|
||||
// 设置当前注册ID
|
||||
currentRegisterId.value = registerId;
|
||||
|
||||
// 先拉类型选项,再决定默认 Tab(无本地记忆时用后端 default)
|
||||
if (!isInitialized.value) {
|
||||
await initializeBasicData();
|
||||
}
|
||||
await loadPrescriptionTypeOptions(registerId);
|
||||
|
||||
// 恢复之前保存的 activeCategory
|
||||
const savedCategory = localStorage.getItem(
|
||||
`${storagePrefix.value}activeCategory${registerId}`
|
||||
@@ -278,17 +322,14 @@ export const usePrescriptionStore = defineStore('prescription', () => {
|
||||
activeCategory.value = 1;
|
||||
} else if (westData && JSON.parse(westData).length > 0) {
|
||||
activeCategory.value = 2;
|
||||
} else if (prescriptionTypeDefault.value) {
|
||||
activeCategory.value = prescriptionTypeDefault.value;
|
||||
}
|
||||
}
|
||||
|
||||
// 加载localStorage数据
|
||||
loadFromLocalStorage();
|
||||
|
||||
// 如果基础数据未初始化,先初始化基础数据
|
||||
if (!isInitialized.value) {
|
||||
await initializeBasicData();
|
||||
}
|
||||
|
||||
await fetchStoreSeeRate();
|
||||
|
||||
// 获取患者信息(只在需要时调用,如 PrescriptionModal)
|
||||
@@ -1113,6 +1154,11 @@ export const usePrescriptionStore = defineStore('prescription', () => {
|
||||
} else {
|
||||
currentDrugs.value.splice(0, currentDrugs.value.length);
|
||||
}
|
||||
// 切换后聚焦 Tab 栏当前项
|
||||
nextTick(() => {
|
||||
const el = document.getElementById(`rx-modal-tab-${categoryValue}`);
|
||||
el?.scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' });
|
||||
});
|
||||
};
|
||||
|
||||
// 工具函数
|
||||
@@ -1152,6 +1198,8 @@ export const usePrescriptionStore = defineStore('prescription', () => {
|
||||
myStoreList,
|
||||
myStoreId,
|
||||
activeCategory,
|
||||
categories,
|
||||
prescriptionTypeDefault,
|
||||
diagnosis,
|
||||
medicalAdvice,
|
||||
treatmentPrice,
|
||||
@@ -1188,6 +1236,7 @@ export const usePrescriptionStore = defineStore('prescription', () => {
|
||||
initializePrescription,
|
||||
initializeForModal,
|
||||
initializeBasicData,
|
||||
loadPrescriptionTypeOptions,
|
||||
resetInitializationState,
|
||||
getDrugList,
|
||||
addProducts,
|
||||
|
||||
Reference in New Issue
Block a user