feat(生产核算): 前端适配「中提琴」大类与折算率配置
- 报工台账、生产报工的产品大类下拉增加「中提琴」
- 生产核算明细增加「中提琴数量」「中提折算率」两列
- 折算率配置弹窗增加中提琴折算率录入(默认值与表单重置同步补齐)
- 工序管理增加「中提琴系数」录入、校验与回显
Co-Authored-By: Claude <noreply@anthropic.com>
| | |
| | | <el-table-column label="工序" prop="processName" min-width="110" /> |
| | | <el-table-column label="员工" prop="staffName" min-width="110" /> |
| | | <el-table-column label="小提琴折算率" prop="violinFactor" min-width="110" /> |
| | | <el-table-column label="中提琴折算率" prop="midViolinFactor" min-width="110" /> |
| | | <el-table-column label="大提琴折算率" prop="violaFactor" min-width="110" /> |
| | | <el-table-column label="贝斯折算率" prop="bassFactor" min-width="100" /> |
| | | <el-table-column label="操作" width="140" fixed="right"> |
| | |
| | | </el-form-item> |
| | | <el-form-item label="小提琴折算率"> |
| | | <el-input-number v-model="factorForm.violinFactor" :min="0" :precision="4" style="width: 100%" /> |
| | | </el-form-item> |
| | | <el-form-item label="中提琴折算率"> |
| | | <el-input-number v-model="factorForm.midViolinFactor" :min="0" :precision="4" style="width: 100%" /> |
| | | </el-form-item> |
| | | <el-form-item label="大提琴折算率"> |
| | | <el-input-number v-model="factorForm.violaFactor" :min="0" :precision="4" style="width: 100%" /> |
| | |
| | | /* ---------- 折算率 ---------- */ |
| | | const factorFormVisible = ref(false); |
| | | const factorForm = reactive({ |
| | | id: null, processId: null, staffId: null, staffName: "", violinFactor: 1, violaFactor: 1, bassFactor: 1, remark: "", |
| | | id: null, processId: null, staffId: null, staffName: "", violinFactor: 1, midViolinFactor: 1, violaFactor: 1, bassFactor: 1, remark: "", |
| | | }); |
| | | const openFactorForm = row => { |
| | | Object.assign(factorForm, { |
| | | id: null, processId: factorQuery.processId || null, staffId: null, staffName: "", |
| | | violinFactor: 1, violaFactor: 1, bassFactor: 1, remark: "", |
| | | violinFactor: 1, midViolinFactor: 1, violaFactor: 1, bassFactor: 1, remark: "", |
| | | }, row || {}); |
| | | factorFormVisible.value = true; |
| | | }; |
| | |
| | | { label: "生产人", prop: "staffName", minWidth: 90 }, |
| | | { label: "工序", prop: "processName", minWidth: 80 }, |
| | | { label: "小提琴数量", prop: "violinQty", minWidth: 90 }, |
| | | { label: "中提琴数量", prop: "violaQty", minWidth: 90 }, |
| | | { label: "大提琴数量", prop: "celloQty", minWidth: 90 }, |
| | | { label: "贝斯数量", prop: "bassQty", minWidth: 80 }, |
| | | { label: "中提折算率", prop: "violaFactor", minWidth: 90 }, |
| | | { label: "大提折算率", prop: "celloFactor", minWidth: 90 }, |
| | | { label: "贝斯折算率", prop: "bassFactor", minWidth: 90 }, |
| | | { label: "月产折合小提琴", prop: "foldedQuantity", minWidth: 120 }, |
| | |
| | | :step="0.001" |
| | | placeholder="请输入小提琴系数" /> |
| | | </el-form-item> |
| | | <el-form-item label="中提琴系数" |
| | | prop="midViolinFactor"> |
| | | <el-input v-model="processForm.midViolinFactor" |
| | | type="number" |
| | | :step="0.001" |
| | | placeholder="请输入中提琴系数" /> |
| | | </el-form-item> |
| | | <el-form-item label="大提琴系数" |
| | | prop="violaFactor"> |
| | | <el-input v-model="processForm.violaFactor" |
| | |
| | | name: "", |
| | | standardQuantity: null, |
| | | violinFactor: null, |
| | | midViolinFactor: null, |
| | | violaFactor: null, |
| | | bassFactor: null, |
| | | isQuality: false, |
| | |
| | | } |
| | | if (isNaN(value) || value < 0) { |
| | | callback(new Error("小提琴系数必须是非负数字")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | }, |
| | | ], |
| | | midViolinFactor: [ |
| | | { |
| | | required: false, |
| | | message: "请输入中提琴系数", |
| | | trigger: "blur", |
| | | validator: (rule, value, callback) => { |
| | | if (value == null || value === "") { |
| | | callback(); |
| | | return; |
| | | } |
| | | if (isNaN(value) || value < 0) { |
| | | callback(new Error("中提琴系数必须是非负数字")); |
| | | } else { |
| | | callback(); |
| | | } |
| | |
| | | processForm.name = ""; |
| | | processForm.standardQuantity = null; |
| | | processForm.violinFactor = null; |
| | | processForm.midViolinFactor = null; |
| | | processForm.violaFactor = null; |
| | | processForm.bassFactor = null; |
| | | processForm.isQuality = false; |
| | |
| | | processForm.name = process.name; |
| | | processForm.standardQuantity = process.standardQuantity; |
| | | processForm.violinFactor = process.violinFactor; |
| | | processForm.midViolinFactor = process.midViolinFactor; |
| | | processForm.violaFactor = process.violaFactor; |
| | | processForm.bassFactor = process.bassFactor; |
| | | processForm.isQuality = !!process.isQuality; |
| | |
| | | style="width: 200px;" |
| | | @change="handleQuery"> |
| | | <el-option label="小提琴" value="小提琴" /> |
| | | <el-option label="中提琴" value="中提琴" /> |
| | | <el-option label="大提琴" value="大提琴" /> |
| | | <el-option label="贝斯" value="贝斯" /> |
| | | </el-select> |
| | |
| | | placeholder="请选择" |
| | | @change="handleQuery"> |
| | | <el-option label="小提琴" value="小提琴" /> |
| | | <el-option label="中提琴" value="中提琴" /> |
| | | <el-option label="大提琴" value="大提琴" /> |
| | | <el-option label="贝斯" value="贝斯" /> |
| | | </el-select> |