Browse Source

style(s0): hide business-meaningless legacy fields across 6 S0 pages

基于 S0 LEGACY FIELD EXPOSURE 只读审计,收敛 7 个 UI 暴露点(EmpWorkDutyList 经核查
已是完成态,本轮未改)。核心纪律:隐藏 UI ≠ 停止 payload 透传。

隐藏但保留透传(后端逐字段覆盖,停传会清空历史值):
- MaterialList「已确认」(ItemMaster.IsConfirm 22682:2,零消费方)
- RoutingList「是否确认」列 +「确认」开关 (RoutingOpDetail.IsConfirm 38805:1)
- CostCenterList「责任人」(CostCtrMaster.Ufld1,151/151 有值)
三者 form / rowToForm / payload 全部原样保留,已机械核验 + 运行态取证。

直接删除纯展示列(不参与提交,无数据风险):
- StandardProcessList「Id」列(内部主键不出 UI,row.id 仍用于编辑/删除)
- StandardBomManagement 工序覆盖子表「确认」列(ops payload 只发 id/op/productItem)

仅改显示文案:
- ProductionLineList 组织未匹配时的 fallback 不再回显 SysOrg 雪花 id
  (改为「历史组织(未匹配)」;companyRefId/factoryRefId 值不受影响)

CostCtrMaster.Ufld1 语义调查结论 = UNKNOWN:旧系统 DDL 无 COMMENT、实体注释仅
「自定义字段1」、无 ETL/Seed/Excel 映射赋予语义、后端零消费方;90 个 distinct 值
与 DepartmentMaster.Descr 仅 1/90 命中,且实测混有「LQY」这类人员码与
「生产车间/财务部」这类部门名 → 原 label「责任人」无证据支持,按纪律隐藏而非改名。

后端 / DTO / Entity / DB 均未改动。

chore: bump version Web 2.4.367
YY968XX 3 days ago
parent
commit
32556483da

+ 1 - 1
Web/package.json

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

+ 2 - 2
Web/src/views/aidop/s0/manufacturing/ProductionLineList.vue

@@ -74,7 +74,7 @@
 								<el-option
 									v-if="form.companyRefId != null && form.companyRefId !== '' && !companyOptions.some((o) => o.id === String(form.companyRefId))"
 									:key="`__compat_company_${form.companyRefId}`"
-									:label="`未关联组织(历史值:${form.companyRefId})`"
+									:label="'历史组织(未匹配)'"
 									:value="form.companyRefId"
 								/>
 							</el-select>
@@ -87,7 +87,7 @@
 								<el-option
 									v-if="form.factoryRefId != null && form.factoryRefId !== '' && !factoryOptions.some((o) => o.id === String(form.factoryRefId))"
 									:key="`__compat_factory_${form.factoryRefId}`"
-									:label="`未关联组织(历史值:${form.factoryRefId})`"
+									:label="'历史组织(未匹配)'"
 									:value="form.factoryRefId"
 								/>
 							</el-select>

+ 8 - 2
Web/src/views/aidop/s0/manufacturing/RoutingList.vue

@@ -44,7 +44,12 @@
 					<el-tag :type="row.isEnabled ? 'success' : 'info'" size="small">{{ row.isEnabled ? '是' : '否' }}</el-tag>
 				</template>
 			</el-table-column>
-			<el-table-column label="是否确认" width="80" align="center">
+			<!--
+				IsConfirm 无业务价值:实测 RoutingOpDetail 38805 行为 1、仅 1 行为 0,全仓零消费方。
+				→ 列表列与下方表单开关一并隐藏;form / rowToForm / payload 保留原样透传
+				(后端 `e.IsConfirm = dto.IsConfirm` 逐字段覆盖,停传会把 38805 行的 1 写成 false)。
+			-->
+			<el-table-column v-if="false" label="是否确认" width="80" align="center">
 				<template #default="{ row }">
 					<el-tag :type="row.isConfirm ? 'success' : 'info'" size="small">{{ row.isConfirm ? '是' : '否' }}</el-tag>
 				</template>
@@ -200,7 +205,8 @@
 					<div class="form-section__title">其他信息</div>
 					<el-row :gutter="24">
 						<el-col :xs="24" :sm="12"><el-form-item label="启用"><el-switch v-model="form.isEnabled" /></el-form-item></el-col>
-						<el-col :xs="24" :sm="12"><el-form-item label="确认"><el-switch v-model="form.isConfirm" /></el-form-item></el-col>
+						<!-- 同列表:IsConfirm 隐藏但保留 form 绑定,编辑保存原值回传(见上方列表列注释) -->
+						<el-col v-if="false" :xs="24" :sm="12"><el-form-item label="确认"><el-switch v-model="form.isConfirm" /></el-form-item></el-col>
 					</el-row>
 					<!--
 						旧系统自定义列 Ufld1 / Ufld4 / Ufld7 与 CommentIndex 暂不启用,**不在前端展示**。

+ 5 - 3
Web/src/views/aidop/s0/manufacturing/StandardBomManagement.vue

@@ -151,9 +151,11 @@
 									<el-table-column label="有效" width="70" align="center">
 										<template #default="{ row }">{{ row.isActive === false ? '否' : '是' }}</template>
 									</el-table-column>
-									<el-table-column label="确认" width="70" align="center">
-										<template #default="{ row }">{{ row.isConfirm ? '是' : '否' }}</template>
-									</el-table-column>
+									<!--
+										ProductStructureOp.IsConfirm 实体无注释、全仓零消费方(788:20),
+										此处原为只读展示列且不参与 ops 提交(payload 只发 id/op/productItem),
+										故直接去掉展示列;后端 SyncOpsDiffAsync 对既有子行不动该列,无数据风险。
+									-->
 									<el-table-column label="操作" width="80" align="center">
 										<template #default="{ $index }"><el-button type="danger" link @click="removeOpRow($index)">删除</el-button></template>
 									</el-table-column>

+ 1 - 1
Web/src/views/aidop/s0/manufacturing/StandardProcessList.vue

@@ -26,7 +26,7 @@
 			<el-table-column prop="milestoneOp" label="是否关键工序" width="120" show-overflow-tooltip />
 			<!-- 工厂域编码为系统后台归属字段:表单控件已隐藏,列表列一并隐藏以保持口径一致(值仍由后端维护并原样保值)。 -->
 			<el-table-column v-if="false" prop="domain" label="工厂域" width="120" show-overflow-tooltip />
-			<el-table-column prop="id" label="Id" width="80" />
+			<!-- 内部主键不出 UI(对齐 D-015):row.id 仍用于编辑/删除,仅去掉展示列 -->
 			<el-table-column label="操作" width="140" fixed="right" align="center">
 				<template #default="{ row }">
 					<el-button link type="primary" @click="openEdit(row)">编辑</el-button>

+ 8 - 1
Web/src/views/aidop/s0/sales/MaterialList.vue

@@ -214,7 +214,14 @@
 							<el-col :span="8"><el-form-item label="按需发料"><el-switch v-model="form.traceDetail" /></el-form-item></el-col>
 							<el-col :span="8"><el-form-item label="是否主材"><el-switch v-model="form.isMainMas" /></el-form-item></el-col>
 							<el-col :span="8"><el-form-item label="生效 IsActive"><el-switch v-model="form.isActive" /></el-form-item></el-col>
-							<el-col :span="8"><el-form-item label="已确认"><el-switch v-model="form.isConfirm" /></el-form-item></el-col>
+							<!--
+							IsConfirm 是旧系统 20 张主数据表的通用遗留列,本页无业务价值:
+							实测 ItemMaster 22682 行为 1、仅 2 行为 0,全仓零消费方(无 Join/校验/状态流转)。
+							→ 隐藏开关;form / rowToForm / payload 保留原样透传 ——
+							DTO 为非空 bool 且后端 `entity.IsConfirm = dto.IsConfirm` 逐字段覆盖,
+							停传会把 22682 行的 1 写成 false。
+						-->
+						<el-col v-if="false" :span="8"><el-form-item label="已确认"><el-switch v-model="form.isConfirm" /></el-form-item></el-col>
 							<el-col :span="8"><el-form-item label="参与资源检查"><el-switch v-model="form.mrpRequired" /></el-form-item></el-col>
 							<el-col :span="12"><el-form-item label="状态 Status"><el-input v-model="form.status" placeholder="空则随生效自动" /></el-form-item></el-col>
 						</el-row>

+ 10 - 2
Web/src/views/aidop/s0/warehouse/CostCenterList.vue

@@ -15,7 +15,14 @@
 			<el-table-column type="index" label="#" width="60" align="center" />
 			<el-table-column prop="costCtr" label="成本中心" width="160" show-overflow-tooltip />
 			<el-table-column prop="descr" label="成本中心描述" min-width="200" show-overflow-tooltip />
-			<el-table-column prop="ufld1" label="责任人" min-width="160" show-overflow-tooltip />
+			<!--
+				Ufld1 语义未确认,暂不展示(原 label「责任人」无证据支持):
+				旧系统 DDL 无 COMMENT、实体注释仅「自定义字段1」、无 ETL/Seed 赋予语义、后端零消费方;
+				实测 151/151 有值、90 distinct,取值形如「生产车间/健适集团/财务部」,
+				但与 DepartmentMaster.Descr 仅 1/90 命中,"部门"假设同样不成立。
+				→ 只隐藏 UI,form / rowToForm / payload 仍原样透传,绝不清空历史值。
+			-->
+			<el-table-column v-if="false" prop="ufld1" label="自定义字段1" min-width="160" show-overflow-tooltip />
 			<el-table-column label="开始生效日期" width="150" show-overflow-tooltip>
 				<template #default="{ row }">{{ fmtDate(row.effTime) }}</template>
 			</el-table-column>
@@ -47,7 +54,8 @@
 				</el-form-item>
 				<el-form-item label="成本中心" prop="costCtr"><el-input v-model="form.costCtr" :disabled="!!editingId" /></el-form-item>
 				<el-form-item label="成本中心描述"><el-input v-model="form.descr" /></el-form-item>
-				<el-form-item label="责任人"><el-input v-model="form.ufld1" /></el-form-item>
+				<!-- 同上:Ufld1 语义未确认,隐藏输入控件但保留 form 绑定,编辑保存时原值回传不抹空 -->
+				<el-form-item v-if="false" label="自定义字段1"><el-input v-model="form.ufld1" /></el-form-item>
 				<el-form-item label="开始生效日期"><el-date-picker v-model="form.effTime" type="date" value-format="YYYY-MM-DD" style="width: 100%" /></el-form-item>
 				<el-form-item v-if="false" label="域编码"><el-input v-model="form.domainCode" /></el-form-item>
 			</el-form>