From 88b8751b57d03e55df591c5311a2f2cc814a736c Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期四, 10 七月 2025 14:53:19 +0800
Subject: [PATCH] 涉及到价格的输入框做下校验(数字格式,且大于0)
---
src/views/basicData/product/index.vue | 91 ++++++++++++++++++++++++++++++++++++---------
1 files changed, 72 insertions(+), 19 deletions(-)
diff --git a/src/views/basicData/product/index.vue b/src/views/basicData/product/index.vue
index 506c1db..3aa263e 100644
--- a/src/views/basicData/product/index.vue
+++ b/src/views/basicData/product/index.vue
@@ -40,7 +40,13 @@
>
<template #default="{ node, data }">
<div class="custom-tree-node">
- <span>{{ node.label }}</span>
+ <span class="tree-node-content">
+ <el-icon class="orange-icon">
+ <component :is="data.children && data.children.length > 0
+ ? node.expanded ? 'FolderOpened' : 'Folder' : 'Tickets'" />
+ </el-icon>
+ {{ data.label }}
+ </span>
<div>
<el-button
type="primary"
@@ -49,7 +55,7 @@
>
缂栬緫
</el-button>
- <el-button type="primary" link @click="openProDia('add', data)">
+ <el-button type="primary" link @click="openProDia('add', data)" :disabled="node.level >= 3">
娣诲姞浜у搧
</el-button>
<el-button
@@ -83,17 +89,17 @@
</el-button>
</div>
<PIMTable
+ rowKey="id"
:column="tableColumn"
:tableData="tableData"
:page="page"
:isSelection="true"
- :handleSelectionChange="handleSelectionChange"
+ @selection-change="handleSelectionChange"
:tableLoading="tableLoading"
@pagination="pagination"
- :total="total"
></PIMTable>
</div>
- <el-dialog v-model="productDia" title="浜у搧" width="400px">
+ <el-dialog v-model="productDia" title="浜у搧" width="400px" @keydown.enter.prevent>
<el-form
:model="form"
label-width="140px"
@@ -108,6 +114,7 @@
v-model="form.productName"
placeholder="璇疯緭鍏ヤ骇鍝佸悕绉�"
clearable
+ @keydown.enter.prevent
/>
</el-form-item>
</el-col>
@@ -125,6 +132,7 @@
title="瑙勬牸鍨嬪彿"
width="400px"
@close="closeModelDia"
+ @keydown.enter.prevent
>
<el-form
:model="modelForm"
@@ -140,6 +148,7 @@
v-model="modelForm.model"
placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
clearable
+ @keydown.enter.prevent
/>
</el-form-item>
</el-col>
@@ -151,6 +160,7 @@
v-model="modelForm.unit"
placeholder="璇疯緭鍏ュ崟浣�"
clearable
+ @keydown.enter.prevent
/>
</el-form-item>
</el-col>
@@ -220,11 +230,11 @@
const tableData = ref([]);
const tableLoading = ref(false);
const isShowButton = ref(false);
-const total = ref(0);
const selectedRows = ref([]);
const page = reactive({
current: 1,
size: 10,
+ total: 0,
});
const data = reactive({
form: {
@@ -309,16 +319,53 @@
proxy.$refs.formRef.resetFields();
productDia.value = false;
};
+// 灏佽涓�涓畨鍏ㄧ殑纭妗嗭紝褰诲簳闃绘Enter閿Е鍙�
+const safeConfirm = (message, title) => {
+ // 鏍囪鏄惁鏄紶鏍囩偣鍑伙紙鐐瑰嚮鎸夐挳浼氳Е鍙慺ocus浜嬩欢锛�
+ let isMouseClick = false;
+
+ return new Promise((resolve, reject) => {
+ const box = ElMessageBox.confirm(message, title, {
+ confirmButtonText: "纭",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ beforeClose: (action, instance, done) => {
+ if (action === "confirm") {
+ // 鍙湁榧犳爣鐐瑰嚮鏃舵墠鍏佽纭
+ if (isMouseClick) {
+ done();
+ resolve();
+ } else {
+ // Enter閿Е鍙戞椂闃绘
+ done(false);
+ }
+ } else {
+ // 鍙栨秷鎿嶄綔鐩存帴鍏佽
+ done();
+ reject();
+ }
+ }
+ });
+
+ // 鐩戝惉纭鎸夐挳鐨刦ocus浜嬩欢锛堥紶鏍囩偣鍑讳細瑙﹀彂锛孍nter閿笉浼氾級
+ setTimeout(() => {
+ const confirmBtn = document.querySelector('.el-message-box__btns .el-button--primary');
+ if (confirmBtn) {
+ confirmBtn.addEventListener('focus', () => {
+ isMouseClick = true;
+ });
+ }
+ }, 0); // 寤惰繜鑾峰彇锛岀‘淇滵OM宸叉覆鏌�
+ });
+};
+// 鍒犻櫎浜у搧
// 鍒犻櫎浜у搧
const remove = (node, data) => {
- let ids = [];
- ids.push(data.id);
- ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "鍒犻櫎鎻愮ず", {
- confirmButtonText: "纭",
- cancelButtonText: "鍙栨秷",
- type: "warning",
- })
+ let ids = [data.id];
+ // 浣跨敤灏佽鐨剆afeConfirm
+ safeConfirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "鍒犻櫎鎻愮ず")
.then(() => {
+ // 纭鍒犻櫎閫昏緫
tableLoading.value = true;
delProduct(ids)
.then((res) => {
@@ -381,7 +428,7 @@
}).then((res) => {
console.log("res", res);
tableData.value = res.records;
- total.value = res.total;
+ page.total = res.total;
tableLoading.value = false;
});
};
@@ -394,11 +441,7 @@
proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
return;
}
- ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "鍒犻櫎鎻愮ず", {
- confirmButtonText: "纭",
- cancelButtonText: "鍙栨秷",
- type: "warning",
- })
+ safeConfirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "鍒犻櫎鎻愮ず")
.then(() => {
tableLoading.value = true;
delProductModel(ids)
@@ -476,4 +519,14 @@
font-size: 14px;
padding-right: 8px;
}
+.tree-node-content {
+ display: flex;
+ align-items: center; /* 鍨傜洿灞呬腑 */
+ height: 100%;
+}
+.orange-icon {
+ color: orange;
+ font-size: 18px;
+ margin-right: 8px; /* 鍥炬爣涓庢枃瀛椾箣闂村姞鐐归棿璺� */
+}
</style>
--
Gitblit v1.9.3