|
|
@@ -72,93 +72,165 @@
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
|
- <el-dialog v-model="dialogVisible" :title="dialogTitle" width="920px" destroy-on-close @closed="resetForm">
|
|
|
- <el-form ref="formRef" :model="form" :rules="rules" label-width="120px" class="routing-form">
|
|
|
- <el-row :gutter="12">
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="排序" prop="sortNo">
|
|
|
- <el-input-number v-model="form.sortNo" :min="0" :step="1" style="width: 100%" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="路线编码" prop="routeCode"><el-input v-model="form.routeCode" /></el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="路线名称" prop="routeName"><el-input v-model="form.routeName" /></el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="物料编码" prop="materialCode">
|
|
|
- <el-select v-model="form.materialCode" filterable clearable placeholder="请选择物料" style="width: 100%">
|
|
|
- <el-option v-for="o in materialOptions" :key="o.value" :label="o.label" :value="o.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="工序编码" prop="operationCode"><el-input v-model="form.operationCode" /></el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="工序名称"><el-input v-model="form.operationDescription" /></el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="工作中心">
|
|
|
- <el-select v-model="form.workCenterCode" filterable clearable placeholder="请选择工作中心" style="width: 100%">
|
|
|
- <el-option v-for="o in workCenterOptions" :key="o.value" :label="o.label" :value="o.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="报工工序"><el-input v-model="form.milestoneOperation" /></el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8"><el-form-item label="Ufld1"><el-input v-model="form.ufld1" /></el-form-item></el-col>
|
|
|
- <el-col :span="8"><el-form-item label="活动一 Ufld2"><el-input v-model="form.ufld2" /></el-form-item></el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="数量一 UDeci1">
|
|
|
- <el-input-number v-model="form.uDeci1" :controls="false" style="width: 100%" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8"><el-form-item label="单位一 Ufld3"><el-input v-model="form.ufld3" /></el-form-item></el-col>
|
|
|
- <el-col :span="8"><el-form-item label="Ufld4"><el-input v-model="form.ufld4" /></el-form-item></el-col>
|
|
|
- <el-col :span="8"><el-form-item label="活动二 Ufld5"><el-input v-model="form.ufld5" /></el-form-item></el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="数量二 UDeci2">
|
|
|
- <el-input-number v-model="form.uDeci2" :controls="false" style="width: 100%" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8"><el-form-item label="单位二 Ufld6"><el-input v-model="form.ufld6" /></el-form-item></el-col>
|
|
|
- <el-col :span="8"><el-form-item label="Ufld7"><el-input v-model="form.ufld7" /></el-form-item></el-col>
|
|
|
- <el-col :span="8"><el-form-item label="活动三 Ufld8"><el-input v-model="form.ufld8" /></el-form-item></el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="数量三 UDeci3">
|
|
|
- <el-input-number v-model="form.uDeci3" :controls="false" style="width: 100%" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8"><el-form-item label="单位三 Ufld9"><el-input v-model="form.ufld9" /></el-form-item></el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="基本批量 UDeci4">
|
|
|
- <el-input-number v-model="form.uDeci4" :controls="false" style="width: 100%" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="工序委外 UDeci5">
|
|
|
- <el-input-number v-model="form.uDeci5" :controls="false" style="width: 100%" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8"><el-form-item label="供应商 Supp"><el-input v-model="form.supplierCode" /></el-form-item></el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="委外提前期">
|
|
|
- <el-input-number v-model="form.outsourcedLeadTime" :min="0" :step="1" style="width: 100%" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8"><el-form-item label="启用"><el-switch v-model="form.isEnabled" /></el-form-item></el-col>
|
|
|
- <el-col :span="8"><el-form-item label="确认 IsConfirm"><el-switch v-model="form.isConfirm" /></el-form-item></el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="CommentIndex">
|
|
|
- <el-input-number v-model="form.commentIndex" :controls="false" style="width: 100%" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8"><el-form-item label="创建人"><el-input v-model="form.createUser" /></el-form-item></el-col>
|
|
|
- <el-col :span="8"><el-form-item label="更新人"><el-input v-model="form.updateUser" /></el-form-item></el-col>
|
|
|
- </el-row>
|
|
|
+ <el-dialog v-model="dialogVisible" :title="dialogTitle" width="1080px" class="routing-dialog" destroy-on-close @closed="resetForm">
|
|
|
+ <!--
|
|
|
+ 分组表单:基本信息 / 工序活动 / 委外信息 / 其他信息 / 系统信息。
|
|
|
+ Create 与 Edit 复用同一套布局(本页无按模式差异的显示控制),
|
|
|
+ 所有 v-model 绑定、prop 与校验规则与改版前完全一致,仅调整 label 文案与排布。
|
|
|
+ -->
|
|
|
+ <el-form ref="formRef" :model="form" :rules="rules" label-width="110px" class="routing-form">
|
|
|
+ <div class="form-section">
|
|
|
+ <div class="form-section__title">基本信息</div>
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="工艺路线编码" prop="routeCode">
|
|
|
+ <el-input v-model="form.routeCode" placeholder="请输入工艺路线编码" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="工艺路线名称" prop="routeName">
|
|
|
+ <el-input v-model="form.routeName" placeholder="请输入工艺路线名称" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="物料编码" prop="materialCode">
|
|
|
+ <el-select v-model="form.materialCode" filterable clearable placeholder="请选择物料" style="width: 100%">
|
|
|
+ <el-option v-for="o in materialOptions" :key="o.value" :label="o.label" :value="o.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="工作中心">
|
|
|
+ <el-select v-model="form.workCenterCode" filterable clearable placeholder="请选择工作中心" style="width: 100%">
|
|
|
+ <el-option v-for="o in workCenterOptions" :key="o.value" :label="o.label" :value="o.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="工序编码" prop="operationCode">
|
|
|
+ <el-input v-model="form.operationCode" placeholder="请输入工序编码" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="工序名称">
|
|
|
+ <el-input v-model="form.operationDescription" placeholder="请输入工序名称" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="排序" prop="sortNo">
|
|
|
+ <el-input-number v-model="form.sortNo" :min="0" :step="1" controls-position="right" style="width: 100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="报工工序">
|
|
|
+ <el-input v-model="form.milestoneOperation" placeholder="请输入报工工序" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="form-section">
|
|
|
+ <div class="form-section__title">工序活动</div>
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :xs="24" :sm="10">
|
|
|
+ <el-form-item label="活动一" label-width="72px"><el-input v-model="form.ufld2" /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="7">
|
|
|
+ <el-form-item label="数量一" label-width="72px">
|
|
|
+ <el-input-number v-model="form.uDeci1" :controls="false" style="width: 100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="7">
|
|
|
+ <el-form-item label="单位一" label-width="72px"><el-input v-model="form.ufld3" /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :xs="24" :sm="10">
|
|
|
+ <el-form-item label="活动二" label-width="72px"><el-input v-model="form.ufld5" /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="7">
|
|
|
+ <el-form-item label="数量二" label-width="72px">
|
|
|
+ <el-input-number v-model="form.uDeci2" :controls="false" style="width: 100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="7">
|
|
|
+ <el-form-item label="单位二" label-width="72px"><el-input v-model="form.ufld6" /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :xs="24" :sm="10">
|
|
|
+ <el-form-item label="活动三" label-width="72px"><el-input v-model="form.ufld8" /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="7">
|
|
|
+ <el-form-item label="数量三" label-width="72px">
|
|
|
+ <el-input-number v-model="form.uDeci3" :controls="false" style="width: 100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="7">
|
|
|
+ <el-form-item label="单位三" label-width="72px"><el-input v-model="form.ufld9" /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="form-section">
|
|
|
+ <div class="form-section__title">委外信息</div>
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="工序委外">
|
|
|
+ <el-input-number v-model="form.uDeci5" :controls="false" style="width: 100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="供应商代码"><el-input v-model="form.supplierCode" placeholder="请输入供应商代码" /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="委外提前期">
|
|
|
+ <el-input-number v-model="form.outsourcedLeadTime" :min="0" :step="1" controls-position="right" style="width: 100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12">
|
|
|
+ <el-form-item label="基本批量">
|
|
|
+ <el-input-number v-model="form.uDeci4" :controls="false" style="width: 100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="form-section">
|
|
|
+ <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>
|
|
|
+ </el-row>
|
|
|
+ <!--
|
|
|
+ 自定义字段一/二/三 = 旧系统 Ufld1/Ufld4/Ufld7。实体注释即为「自定义字段」,
|
|
|
+ DTO 无注释;实测数据两种互斥用法(6456 行为活动编码,另 3 万余行为工序类中文词),
|
|
|
+ 业务语义未确认,故按中性名称展示、原样透传,不臆造业务含义。
|
|
|
+ -->
|
|
|
+ <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 原样赋值),
|
|
|
+ **不是**系统自动维护字段,因此保持可编辑、不改写入行为,仅降到末尾分组。
|
|
|
+ -->
|
|
|
+ <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-row>
|
|
|
+ </div>
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
<el-button @click="dialogVisible = false">取消</el-button>
|
|
|
@@ -260,9 +332,11 @@ function emptyForm() {
|
|
|
const form = reactive(emptyForm());
|
|
|
|
|
|
const rules: FormRules = {
|
|
|
- routeCode: [{ required: true, message: '请填写路线编码', trigger: 'blur' }],
|
|
|
- routeName: [{ required: true, message: '请填写路线名称', trigger: 'blur' }],
|
|
|
- materialCode: [{ required: true, message: '请填写物料编码', trigger: 'blur' }],
|
|
|
+ // 必填集与后端 DTO 的 [Required] 严格一致(RouteCode / RouteName / MaterialCode / OperationCode);
|
|
|
+ // 本轮只对齐提示文案与新 label,不增删任何 required。
|
|
|
+ routeCode: [{ required: true, message: '请填写工艺路线编码', trigger: 'blur' }],
|
|
|
+ routeName: [{ required: true, message: '请填写工艺路线名称', trigger: 'blur' }],
|
|
|
+ materialCode: [{ required: true, message: '请选择物料编码', trigger: 'change' }],
|
|
|
operationCode: [{ required: true, message: '请填写工序编码', trigger: 'blur' }],
|
|
|
};
|
|
|
|
|
|
@@ -347,7 +421,7 @@ function openCreate() {
|
|
|
async function openEdit(row: Row) {
|
|
|
resetForm();
|
|
|
editingId.value = row.id;
|
|
|
- dialogTitle.value = `编辑 ${row.routeCode} / ${row.operationCode}`;
|
|
|
+ dialogTitle.value = '编辑工艺路线明细';
|
|
|
const detail = await s0MfgRoutingOpDetailsApi.get(row.id);
|
|
|
rowToForm(detail);
|
|
|
dialogVisible.value = true;
|
|
|
@@ -451,8 +525,45 @@ onMounted(async () => {
|
|
|
display: flex;
|
|
|
justify-content: flex-end;
|
|
|
}
|
|
|
+/* 弹窗:宽屏用固定宽度,窄屏自动收缩,杜绝横向滚动条 */
|
|
|
+.routing-dialog {
|
|
|
+ max-width: calc(100vw - 80px);
|
|
|
+}
|
|
|
.routing-form {
|
|
|
- max-height: 70vh;
|
|
|
+ max-height: 68vh;
|
|
|
overflow-y: auto;
|
|
|
+ /* 横向一律不滚:所有列走 el-row/el-col 栅格 + 输入框 100% 宽 */
|
|
|
+ overflow-x: hidden;
|
|
|
+ /* :gutter="24" 会给 el-row 加 -12px 左右负外边距,这里用等量内边距抵消,
|
|
|
+ 否则内容会比滚动容器宽出若干像素(overflow-x:hidden 只是遮住、并未消除) */
|
|
|
+ padding: 0 12px;
|
|
|
+}
|
|
|
+.form-section + .form-section {
|
|
|
+ margin-top: 20px;
|
|
|
+}
|
|
|
+.form-section__title {
|
|
|
+ margin-bottom: 16px;
|
|
|
+ padding-bottom: 8px;
|
|
|
+ border-bottom: 1px solid var(--el-border-color-lighter);
|
|
|
+ font-size: 14px;
|
|
|
+ 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;
|
|
|
+}
|
|
|
+/* 数字框与普通输入框视觉统一:左对齐、同宽 */
|
|
|
+:deep(.el-input-number) {
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+:deep(.el-input-number .el-input__inner) {
|
|
|
+ text-align: left;
|
|
|
}
|
|
|
</style>
|