⚠️
@@ -360,6 +360,8 @@ const ui = useUiStore()
const showDilution = ref(false)
const showContra = ref(false)
const showAddForm = ref(false)
+const dilutionCardRef = ref(null)
+const contraCardRef = ref(null)
// Search & view
const searchQuery = ref('')
@@ -725,25 +727,29 @@ function exportPDF() {
setTimeout(() => w.print(), 500)
}
-// Save modal as image (mobile: share to photos, desktop: download)
-async function saveModalImage(name) {
- const overlay = document.querySelector('.modal-overlay')
- if (!overlay) return
- const cardEl = overlay.querySelector('[style*="border-radius: 20px"], [style*="border-radius:20px"]') ||
- overlay.querySelector('.oil-card-modal') || overlay.children[0]
- if (!cardEl) return
+// Save a specific element as image (mobile: share, desktop: download)
+async function saveElementAsImage(el, name) {
+ if (!el) { ui.showToast('保存失败'); return }
try {
const { captureAndSave } = await import('../composables/useSaveImage')
- const ok = await captureAndSave(cardEl, name || '精油知识卡')
+ const ok = await captureAndSave(el, name)
if (ok) ui.showToast('图片已保存')
} catch {
ui.showToast('保存失败')
}
}
-function saveDilutionImage() { saveModalImage('精油稀释比例指南') }
-function saveContraImage() { saveModalImage('精油使用禁忌') }
-function saveCardImage(name) { saveModalImage(name + '_精油知识卡') }
+function saveDilutionImage() {
+ saveElementAsImage(dilutionCardRef.value, '精油稀释比例指南')
+}
+function saveContraImage() {
+ saveElementAsImage(contraCardRef.value, '精油使用禁忌')
+}
+function saveCardImage(name) {
+ // Oil knowledge card modal
+ const el = document.querySelector('.oil-card-modal')
+ saveElementAsImage(el, name + '_精油知识卡')
+}