|
@@ -72,14 +72,15 @@
|
|
|
<el-dialog v-model="dialogVisible" :title="dialogTitle" width="600px" destroy-on-close @closed="resetForm">
|
|
<el-dialog v-model="dialogVisible" :title="dialogTitle" width="600px" destroy-on-close @closed="resetForm">
|
|
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="130px">
|
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="130px">
|
|
|
<el-row :gutter="16">
|
|
<el-row :gutter="16">
|
|
|
- <el-col :span="12">
|
|
|
|
|
|
|
+ <!-- 公司/工厂已降级为系统后台归属字段:前台隐藏输入控件,form 值与 payload 仍由 openCreate 补默认 / openEdit 保值维护。 -->
|
|
|
|
|
+ <el-col v-if="false" :span="12">
|
|
|
<el-form-item label="公司" prop="companyRefId">
|
|
<el-form-item label="公司" prop="companyRefId">
|
|
|
<el-select v-model="form.companyRefId" filterable style="width: 100%">
|
|
<el-select v-model="form.companyRefId" filterable style="width: 100%">
|
|
|
<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
|
|
<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="12">
|
|
|
|
|
|
|
+ <el-col v-if="false" :span="12">
|
|
|
<el-form-item label="工厂" prop="factoryRefId">
|
|
<el-form-item label="工厂" prop="factoryRefId">
|
|
|
<el-select v-model="form.factoryRefId" filterable style="width: 100%" @change="syncDomainCode">
|
|
<el-select v-model="form.factoryRefId" filterable style="width: 100%" @change="syncDomainCode">
|
|
|
<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
|
|
<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
|
|
@@ -134,6 +135,12 @@ import {
|
|
|
type S0ProductDesignCycleRow,
|
|
type S0ProductDesignCycleRow,
|
|
|
type S0ProductDesignCycleUpsert,
|
|
type S0ProductDesignCycleUpsert,
|
|
|
} from '../api/s0SalesApi';
|
|
} from '../api/s0SalesApi';
|
|
|
|
|
+import {
|
|
|
|
|
+ applyDefaultOrgScopeForCreate,
|
|
|
|
|
+ normalizeOrgScopeForSubmit,
|
|
|
|
|
+ preserveOrgScopeForEdit,
|
|
|
|
|
+ shouldClearFactoryOnCompanyChange,
|
|
|
|
|
+} from '../composables/useS0MfgOrgScope';
|
|
|
|
|
|
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
|
const pageTitle = computed(() => (route.meta?.title as string) || '产品设计周期');
|
|
const pageTitle = computed(() => (route.meta?.title as string) || '产品设计周期');
|
|
@@ -188,9 +195,8 @@ function emptyForm(): S0ProductDesignCycleUpsert {
|
|
|
|
|
|
|
|
const form = reactive<S0ProductDesignCycleUpsert>(emptyForm());
|
|
const form = reactive<S0ProductDesignCycleUpsert>(emptyForm());
|
|
|
|
|
|
|
|
|
|
+// 公司/工厂已降级为系统后台归属字段(新增自动补默认、编辑保留原值),不再作为用户前台必填项。
|
|
|
const rules: FormRules = {
|
|
const rules: FormRules = {
|
|
|
- companyRefId: [{ required: true, message: '请选择公司', trigger: 'change' }],
|
|
|
|
|
- factoryRefId: [{ required: true, message: '请选择工厂', trigger: 'change' }],
|
|
|
|
|
itemType: [{ required: true, message: '请选择物料类型', trigger: 'change' }],
|
|
itemType: [{ required: true, message: '请选择物料类型', trigger: 'change' }],
|
|
|
ownerApplication: [{ required: true, message: '请选择物料属性', trigger: 'change' }],
|
|
ownerApplication: [{ required: true, message: '请选择物料属性', trigger: 'change' }],
|
|
|
};
|
|
};
|
|
@@ -203,7 +209,9 @@ function syncDomainCode() {
|
|
|
watch(
|
|
watch(
|
|
|
() => form.companyRefId,
|
|
() => form.companyRefId,
|
|
|
() => {
|
|
() => {
|
|
|
- if (!formFactoryOptions.value.some((item) => item.id === form.factoryRefId)) {
|
|
|
|
|
|
|
+ // 公司/工厂为隐藏的后台归属字段,此变化均为程序化载入(openCreate 补默认 / openEdit 回填),
|
|
|
|
|
+ // 非用户主动切换,故 userInitiated=false,永不清空已载入的工厂值(保护 legacy 归属)。
|
|
|
|
|
+ if (shouldClearFactoryOnCompanyChange(formFactoryOptions.value, form.factoryRefId, false)) {
|
|
|
form.factoryRefId = undefined;
|
|
form.factoryRefId = undefined;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -273,6 +281,8 @@ function resetForm() {
|
|
|
|
|
|
|
|
function openCreate() {
|
|
function openCreate() {
|
|
|
resetForm();
|
|
resetForm();
|
|
|
|
|
+ // 新增:自动补默认 SysOrg 归属,用户无需选择公司/工厂。
|
|
|
|
|
+ applyDefaultOrgScopeForCreate(form, companyOptions.value, factoryOptions.value);
|
|
|
dialogTitle.value = '新增产品设计周期';
|
|
dialogTitle.value = '新增产品设计周期';
|
|
|
dialogVisible.value = true;
|
|
dialogVisible.value = true;
|
|
|
}
|
|
}
|
|
@@ -292,11 +302,15 @@ function openEdit(row: S0ProductDesignCycleRow) {
|
|
|
createUser: row.createUser ?? '',
|
|
createUser: row.createUser ?? '',
|
|
|
updateUser: row.updateUser ?? '',
|
|
updateUser: row.updateUser ?? '',
|
|
|
});
|
|
});
|
|
|
|
|
+ // 编辑:保留接口返回的原归属(legacy 不转雪花)。
|
|
|
|
|
+ preserveOrgScopeForEdit(form, row);
|
|
|
dialogVisible.value = true;
|
|
dialogVisible.value = true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function submitForm() {
|
|
async function submitForm() {
|
|
|
await formRef.value?.validate();
|
|
await formRef.value?.validate();
|
|
|
|
|
+ // 提交前统一归属:缺则补默认、有则保留(含 legacy),不做 legacy↔雪花映射。
|
|
|
|
|
+ normalizeOrgScopeForSubmit(form, editingId.value ? 'edit' : 'create', companyOptions.value, factoryOptions.value);
|
|
|
saving.value = true;
|
|
saving.value = true;
|
|
|
try {
|
|
try {
|
|
|
const payload: S0ProductDesignCycleUpsert = { ...form };
|
|
const payload: S0ProductDesignCycleUpsert = { ...form };
|