From 9c70d78d9f1ff5681c859e0c07e73598af11b5f3 Mon Sep 17 00:00:00 2001 From: dxc Date: Wed, 11 Feb 2026 14:26:43 +0800 Subject: [PATCH] feat: add printer settings dialog to dashboard Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) --- inventory-web/src/views/dashboard/index.vue | 93 ++++++++++++++++++++- 1 file changed, 90 insertions(+), 3 deletions(-) diff --git a/inventory-web/src/views/dashboard/index.vue b/inventory-web/src/views/dashboard/index.vue index 2aa9bad..bfa1d0b 100644 --- a/inventory-web/src/views/dashboard/index.vue +++ b/inventory-web/src/views/dashboard/index.vue @@ -4,7 +4,12 @@ @@ -30,6 +35,30 @@ + + + + + + + + + + + + + + + + + + + @@ -38,12 +67,70 @@ import { useRouter } from 'vue-router' // 1. 引入 User Store import { useUserStore } from '@/stores/user' // 引入需要的图标 -import { Box, TrendCharts, ShoppingCart, Operation } from '@element-plus/icons-vue' +import { Box, TrendCharts, ShoppingCart, Operation, Setting } from '@element-plus/icons-vue' +import { getPrinterConfig, updatePrinterConfig } from '@/api/common/print' +import { ElMessage } from 'element-plus' const router = useRouter() // 2. 实例化 store const userStore = useUserStore() +// 打印机配置相关 +const printerDialogVisible = ref(false) +const printerForm = reactive({ + label_ip: '', + label_port: '', + network_ip: '', + network_port: '' +}) +const loading = ref(false) + +const openPrinterDialog = async () => { + try { + loading.value = true + const res = await getPrinterConfig() + if (res.code === 200) { + const config = res.data + printerForm.label_ip = config.label_printer?.ip || '' + printerForm.label_port = config.label_printer?.port || '' + printerForm.network_ip = config.network_printer?.ip || '' + printerForm.network_port = config.network_printer?.port || '' + } + } catch (e) { + console.error(e) + } finally { + loading.value = false + } + printerDialogVisible.value = true +} + +const savePrinterConfig = async () => { + try { + loading.value = true + const config = { + label_printer: { + ip: printerForm.label_ip, + port: Number(printerForm.label_port) + }, + network_printer: { + ip: printerForm.network_ip, + port: Number(printerForm.network_port) + } + } + const res = await updatePrinterConfig(config) + if (res.code === 200) { + ElMessage.success('保存成功') + printerDialogVisible.value = false + } else { + ElMessage.error(res.msg || '保存失败') + } + } catch (e) { + ElMessage.error('请求异常') + } finally { + loading.value = false + } +} + // 统一跳转函数 const handleNav = (path: string) => { router.push(path) @@ -109,4 +196,4 @@ const handleNav = (path: string) => { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } - \ No newline at end of file +