Selaa lähdekoodia

fix(s0): 修复物料维护列表编辑保存无响应/无提示,打通编辑保存反馈链路

- 编辑既有 legacy 组织域物料(公司1000/工厂8010)时,companyRefId watcher
  仅在下拉确有可选工厂时才清空 factoryRefId;下拉无匹配工厂则保留已载入的
  legacy 工厂值,避免静默清空导致保存被工厂必填校验误拦截。
- submitForm 表单校验由 try 外抛异常改为 `validate().catch(()=>false)` 可控早返回,
  校验失败展示 Element Plus 既有内联提示、不再静默中断(既不成功也不进 catch);
  保留原有 create/update、成功「已保存」与失败「保存物料失败…」提示逻辑。
- 不处理公司/工厂显示空白,不做 legacy org 域与 SysOrg 雪花域映射,不回填历史数据;
  仅前端 MaterialList.vue 改动,后端未动。

bump version Web 2.4.232
YY968XX 2 päivää sitten
vanhempi
commit
8df057886c
2 muutettua tiedostoa jossa 11 lisäystä ja 3 poistoa
  1. 1 1
      Web/package.json
  2. 10 2
      Web/src/views/aidop/s0/sales/MaterialList.vue

+ 1 - 1
Web/package.json

@@ -1,7 +1,7 @@
 {
   "name": "admin.net",
   "type": "module",
-  "version": "2.4.231",
+  "version": "2.4.232",
   "packageManager": "pnpm@10.32.1",
   "lastBuildTime": "2026.03.15",
   "description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",

+ 10 - 2
Web/src/views/aidop/s0/sales/MaterialList.vue

@@ -369,7 +369,11 @@ function syncDomainCodeFromFactory() {
 watch(
 	() => form.companyRefId,
 	() => {
-		if (!formFactoryOptions.value.some((item) => item.id === form.factoryRefId)) {
+		// 仅当所选公司在雪花组织下拉中确有可选工厂、且当前工厂不在其中时才清空(用户切换公司场景);
+		// 编辑既有 legacy 组织域物料(如 companyRefId=1000)时下拉无匹配子工厂,此时保留已载入的 factoryRefId,
+		// 避免静默清空导致保存被工厂必填校验误拦截。
+		const opts = formFactoryOptions.value;
+		if (opts.length > 0 && !opts.some((item) => item.id === form.factoryRefId)) {
 			form.factoryRefId = undefined;
 		}
 	}
@@ -538,7 +542,11 @@ function openEdit(row: S0ItemMasterRow) {
 }
 
 async function submitForm() {
-	await formRef.value?.validate();
+	if (!formRef.value) return;
+	// 校验失败时 Element Plus 就地展示既有内联提示;此处捕获 reject 并早返回,
+	// 避免整段 submit 静默中断(既不成功提示、也不进入 catch 错误提示)。
+	const valid = await formRef.value.validate().catch(() => false);
+	if (!valid) return;
 	saving.value = true;
 	try {
 		const payload: S0ItemMasterUpsert = { ...form };