Просмотр исходного кода

fix(s0): 归属兜底补默认工厂域编码 2410,修复隐藏域编码页面无法保存

上一版兜底只补了 companyRefId / factoryRefId,未补 domainCode。而
AdoS0LineMasterUpsertDto / AdoS0StdOpMasterUpsertDto 的 Domain 是
[Required] 非空 string,域编码为空仍被后端拒绝,生产线维护 / 标准工序
两个页面在未铺种子组织的租户下依旧存不了。

本次在兜底路径补 S0_FALLBACK_DOMAIN_CODE = '2410'。两个页面已有
form.domain = scope.domainCode 的桥接,openCreate 与提交前各取一次,
无需逐页改动。

已知取舍:这类租户历史数据的域编码并不统一(实测 UATTEST_CHL:
LineMaster / StdOpMaster 为 8010、CustMaster 为 2410),前端无可靠依据
按页面区分,当前版本统一取 2410,新记录与部分历史记录域编码会不同。
后续为租户补齐真实工厂组织后,本兜底自动让位于工厂 code。

chore: bump version Web 2.4.320
YY968XX 9 часов назад
Родитель
Сommit
388f41438d
2 измененных файлов с 19 добавлено и 3 удалено
  1. 1 1
      Web/package.json
  2. 18 2
      Web/src/views/aidop/s0/composables/useS0MfgOrgScope.ts

+ 1 - 1
Web/package.json

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

+ 18 - 2
Web/src/views/aidop/s0/composables/useS0MfgOrgScope.ts

@@ -41,6 +41,20 @@ export function useS0MfgOrgScope() {
 export const S0_DEFAULT_COMPANY_CODE = 'S0-C001';
 export const S0_DEFAULT_FACTORY_CODE = 'S0-F001';
 
+/**
+ * 兜底工厂域编码(当前版本临时口径)。
+ *
+ * 未铺 S0-C001 / S0-F001 种子组织的租户取不到工厂,domainCode 便无来源;而部分后端
+ * DTO(AdoS0LineMasterUpsertDto / AdoS0StdOpMasterUpsertDto 的 Domain)为 [Required]
+ * 非空,域编码为空会被直接拒绝,页面无法保存。
+ *
+ * ⚠️ 已知不一致:这类租户的历史数据域编码并不统一(实测 UATTEST_CHL:
+ * LineMaster / StdOpMaster 为 '8010',CustMaster 为 '2410'),前端无可靠依据按页面区分,
+ * 故当前版本统一取 '2410'。新记录与部分历史记录的域编码会不同,属已知取舍。
+ * 后续若为租户补齐真实工厂组织,本兜底会自动让位于工厂 code(见 getDefaultS0OrgScope)。
+ */
+export const S0_FALLBACK_DOMAIN_CODE = '2410';
+
 /** 组织归属三件套(string 语义;未定为 undefined)。 */
 export interface S0OrgScope {
 	companyRefId?: string;
@@ -83,13 +97,15 @@ function getCurrentTenantOrgId(): string | undefined {
 /**
  * 从已加载组织列表按 code 求默认归属;取不到种子组织时回落到当前租户自身组织。
  * 两者都取不到才返回空对象(不脑补 id/domainCode)。
- * domainCode 口径沿用页面既有约定:新记录取工厂 code;兜底路径下不臆造,留空
+ * domainCode 口径:正常路径取工厂 code;兜底路径无工厂可取,用 S0_FALLBACK_DOMAIN_CODE
  */
 export function getDefaultS0OrgScope(companyOptions: OrgOption[], factoryOptions: OrgOption[]): S0OrgScope {
 	const company = companyOptions.find((item) => item.code === S0_DEFAULT_COMPANY_CODE);
 	if (!company) {
 		const tenantOrgId = getCurrentTenantOrgId();
-		return tenantOrgId ? { companyRefId: tenantOrgId, factoryRefId: tenantOrgId } : {};
+		return tenantOrgId
+			? { companyRefId: tenantOrgId, factoryRefId: tenantOrgId, domainCode: S0_FALLBACK_DOMAIN_CODE }
+			: {};
 	}
 	const factory = factoryOptions.find((item) => item.code === S0_DEFAULT_FACTORY_CODE && item.pid === company.id);
 	return {