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

@@ -1,5 +1,9 @@
<script lang="ts" setup>
import { ref } from 'vue';
/**
* 诊所/药店二维码预览弹窗
* 按门店 type0 诊所 / 1 药店)切换「诊所|药店」文案,列表页与门店卡片共用
*/
import { computed, ref } from 'vue';
import { useVbenModal } from '@vben/common-ui';
@@ -11,6 +15,13 @@ const htmlToImage = ref('');
const url = ref('');
const previewTitle = ref('二维码');
const previewAddress = ref('');
/** 门店类型0=诊所 1=药店,未传时按诊所示 */
const storeType = ref(0);
const isPharmacy = computed(() => Number(storeType.value) === 1);
const kindLabel = computed(() => (isPharmacy.value ? '药店' : '诊所'));
const addressLabel = computed(() => `${kindLabel.value}地址:`);
const [Modal, modalApi] = useVbenModal({
fullscreenButton: false,
footer: false,
@@ -28,21 +39,28 @@ const [Modal, modalApi] = useVbenModal({
},
onOpenChange(isOpen: boolean) {
if (isOpen) {
const { values, title, address } =
modalApi.getData<Record<string, any>>();
const { values, title, address, type, store_type } =
modalApi.getData<Record<string, any>>() || {};
if (values) {
url.value = values;
qrCodeUrl.value = values;
previewTitle.value = title;
previewAddress.value = address;
// 兼容 type / store_type 两种传参
storeType.value = Number(type ?? store_type ?? 0);
modalApi.setState({
confirmText: `保存${kindLabel.value}卡片图片`,
cancelText: `保存${kindLabel.value}二维码图片`,
});
}
}
},
});
/**
* 下载二维码
* @param name
* @param isQr
* 下载二维码卡片或纯二维码图片
* @param name 文件名后缀
* @param isQr true=只截二维码区域false=截整张卡片
*/
const downloadQRCode = async (name: string, isQr = false) => {
const element = isQr ? qrCodeUrl.value : htmlToImage.value;
@@ -51,12 +69,11 @@ const downloadQRCode = async (name: string, isQr = false) => {
allowTaint: true,
logging: false,
}).then((canvas) => {
// 创建a标签下载
const link = document.createElement('a'); // 创建a标签
link.href = canvas.toDataURL(); // 是canvas对象的一种方法用于将canvas对象转换为base64位编码
link.setAttribute('download', `${previewTitle.value}${name}.png`); // 利用了a标签的download 来下载 canvas图片
link.style.display = 'none'; // 将图片隐藏起来
document.body.append(link); // 插入到其中
const link = document.createElement('a');
link.href = canvas.toDataURL();
link.setAttribute('download', `${previewTitle.value}${name}.png`);
link.style.display = 'none';
document.body.append(link);
link.click();
});
};
@@ -69,7 +86,7 @@ const downloadQRCode = async (name: string, isQr = false) => {
<div class="qrTitle">{{ previewTitle }}</div>
<Image :preview="false" :src="url" height="30" width="30" />
<div class="qrAddress">
<span class="addressTitle">诊所地址</span>{{ previewAddress }}
<span class="addressTitle">{{ addressLabel }}</span>{{ previewAddress }}
</div>
</div>
</div>