|
|
@@ -203,32 +203,32 @@
|
|
|
<el-col :xs="24" :sm="12"><el-form-item label="确认"><el-switch v-model="form.isConfirm" /></el-form-item></el-col>
|
|
|
</el-row>
|
|
|
<!--
|
|
|
- 自定义字段一/二/三 = 旧系统 Ufld1/Ufld4/Ufld7。实体注释即为「自定义字段」,
|
|
|
- DTO 无注释;实测数据两种互斥用法(6456 行为活动编码,另 3 万余行为工序类中文词),
|
|
|
- 业务语义未确认,故按中性名称展示、原样透传,不臆造业务含义。
|
|
|
+ 旧系统自定义列 Ufld1 / Ufld4 / Ufld7 与 CommentIndex 暂不启用,**不在前端展示**。
|
|
|
+ 但它们仍保留在 form / rowToForm / buildPayload 中原样透传 ——
|
|
|
+ 编辑时若不回传,后端 ApplyUpsert 会把 DTO 的 null 直接写回,
|
|
|
+ 导致这 4 列历史数据被静默清空(实测 Ufld1 非空 38801/38806 行)。
|
|
|
+ 「不显示」≠「不提交」,这里刻意只去掉输入控件。
|
|
|
-->
|
|
|
- <div class="form-section__hint">以下为旧系统自定义列,业务语义尚未确认,页面仅按原值透传,不参与任何计算。</div>
|
|
|
- <el-row :gutter="24">
|
|
|
- <el-col :xs="24" :sm="12"><el-form-item label="自定义字段一"><el-input v-model="form.ufld1" /></el-form-item></el-col>
|
|
|
- <el-col :xs="24" :sm="12"><el-form-item label="自定义字段二"><el-input v-model="form.ufld4" /></el-form-item></el-col>
|
|
|
- <el-col :xs="24" :sm="12"><el-form-item label="自定义字段三"><el-input v-model="form.ufld7" /></el-form-item></el-col>
|
|
|
- <el-col :xs="24" :sm="12">
|
|
|
- <el-form-item label="批注索引">
|
|
|
- <el-input-number v-model="form.commentIndex" :controls="false" style="width: 100%" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
</div>
|
|
|
|
|
|
<div class="form-section">
|
|
|
<div class="form-section__title">系统信息</div>
|
|
|
<!--
|
|
|
- 创建人/更新人当前由 DTO 直接写入(控制器 ApplyUpsert 原样赋值),
|
|
|
- **不是**系统自动维护字段,因此保持可编辑、不改写入行为,仅降到末尾分组。
|
|
|
+ 创建人/更新人改为系统自动记录(取当前登录账号),表单只读不可输入:
|
|
|
+ 新增 → 两者均写当前账号;编辑 → 仅更新人写当前账号,创建人保留原值
|
|
|
+ (历史行如 ManuSync 不被覆盖)。落库仍走原 DTO 字段,后端未改。
|
|
|
-->
|
|
|
<el-row :gutter="24">
|
|
|
- <el-col :xs="24" :sm="12"><el-form-item label="创建人"><el-input v-model="form.createUser" /></el-form-item></el-col>
|
|
|
- <el-col :xs="24" :sm="12"><el-form-item label="更新人"><el-input v-model="form.updateUser" /></el-form-item></el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="创建人">
|
|
|
+ <el-input v-model="form.createUser" readonly placeholder="由系统自动记录" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="更新人">
|
|
|
+ <el-input v-model="form.updateUser" readonly placeholder="由系统自动记录" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
</el-form>
|
|
|
@@ -262,6 +262,7 @@ import { computed, onMounted, reactive, ref } from 'vue';
|
|
|
import { useRoute } from 'vue-router';
|
|
|
import { ElMessage, ElMessageBox, type FormInstance, type FormRules } from 'element-plus';
|
|
|
import AidopDemoShell from '../../components/AidopDemoShell.vue';
|
|
|
+import { useUserInfo } from '/@/stores/userInfo';
|
|
|
import { applyDefaultOrgScopeForCreate, useS0MfgOrgScope } from '../composables/useS0MfgOrgScope';
|
|
|
import { s0MfgRoutingOpDetailsApi, type S0MfgRoutingOpDetailRow, type S0MfgRoutingOpDetailUpsert } from '../api/s0ManufacturingApi';
|
|
|
|
|
|
@@ -409,11 +410,29 @@ function rowToForm(row: S0MfgRoutingOpDetailRow) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * 当前登录账号名,用于自动记录创建人/更新人。
|
|
|
+ * 取 userInfos.account——与后端 ClaimConst.Account 同源,也与既有数据里的账号形态一致;
|
|
|
+ * 取不到时回落真实姓名,仍取不到则留空(不编造)。
|
|
|
+ */
|
|
|
+function currentAccountName(): string {
|
|
|
+ try {
|
|
|
+ const u = useUserInfo().userInfos as Record<string, any> | undefined;
|
|
|
+ return String(u?.account ?? u?.realName ?? '').trim();
|
|
|
+ } catch {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
function openCreate() {
|
|
|
resetForm();
|
|
|
// 新增:补当前租户可用的默认公司/工厂归属,用户无需选择。
|
|
|
// 只补空值、不覆盖,且只作用于新增;编辑走 rowToForm 的原值回填,不受影响。
|
|
|
applyDefaultOrgScopeForCreate(form, companyOptions.value, factoryOptions.value);
|
|
|
+ // 创建人/更新人由系统自动记录,仅作只读展示(提交时以 submitForm 里的取值为准)
|
|
|
+ const who = currentAccountName();
|
|
|
+ form.createUser = who;
|
|
|
+ form.updateUser = who;
|
|
|
dialogTitle.value = '新增工艺路线明细';
|
|
|
dialogVisible.value = true;
|
|
|
}
|
|
|
@@ -468,6 +487,11 @@ async function submitForm() {
|
|
|
try {
|
|
|
const valid = await formRef.value?.validate().catch(() => false);
|
|
|
if (!valid) return;
|
|
|
+ // 审计字段以「提交那一刻的登录账号」为准:
|
|
|
+ // 新增写创建人 + 更新人;编辑只写更新人,创建人保留库中原值(如历史行的 ManuSync)。
|
|
|
+ const who = currentAccountName();
|
|
|
+ if (!editingId.value) form.createUser = who;
|
|
|
+ form.updateUser = who;
|
|
|
const payload = buildPayload();
|
|
|
if (editingId.value) {
|
|
|
await s0MfgRoutingOpDetailsApi.update(editingId.value, payload);
|
|
|
@@ -549,13 +573,6 @@ onMounted(async () => {
|
|
|
font-weight: 600;
|
|
|
color: var(--el-text-color-primary);
|
|
|
}
|
|
|
-.form-section__hint {
|
|
|
- /* 上边距略大:让提示明确归属于其下方的自定义字段,而不是上一行的开关 */
|
|
|
- margin: 6px 0 14px;
|
|
|
- font-size: 12px;
|
|
|
- line-height: 1.6;
|
|
|
- color: var(--el-text-color-secondary);
|
|
|
-}
|
|
|
:deep(.el-form-item) {
|
|
|
margin-bottom: 18px;
|
|
|
}
|