| | |
| | | prop="specificationModel" /> |
| | | <el-table-column label="单位" |
| | | prop="unit" /> |
| | | <el-table-column label="料号" |
| | | prop="materialCode" /> |
| | | <el-table-column label="数量" |
| | | prop="quantity" /> |
| | | <el-table-column label="税率(%)" |
| | |
| | | prop="productCategory" /> |
| | | <el-table-column label="规格型号" |
| | | prop="specificationModel" /> |
| | | <el-table-column label="料号" |
| | | prop="materialCode" /> |
| | | <el-table-column label="单位" |
| | | prop="unit" |
| | | width="70" /> |
| | |
| | | prop="taxExclusiveTotalPrice" |
| | | :formatter="formattedNumber" |
| | | width="150" /> |
| | | <el-table-column label="是否质检" |
| | | prop="isChecked" |
| | | width="150"> |
| | | <template #default="scope"> |
| | | <el-tag :type="scope.row.isChecked ? 'success' : 'info'"> |
| | | {{ scope.row.isChecked ? '是' : '否' }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column label="是否质检"--> |
| | | <!-- prop="isChecked"--> |
| | | <!-- width="150">--> |
| | | <!-- <template #default="scope">--> |
| | | <!-- <el-tag :type="scope.row.isChecked ? 'success' : 'info'">--> |
| | | <!-- {{ scope.row.isChecked ? '是' : '否' }}--> |
| | | <!-- </el-tag>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <el-table-column fixed="right" |
| | | label="操作" |
| | | min-width="60" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | |
| | | <el-col :span="24"> |
| | | <el-form-item label="料号:" |
| | | prop="materialCode"> |
| | | <el-input v-model="productForm.materialCode" |
| | | placeholder="请输入" |
| | | disabled /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="批号:" |
| | | prop="batchNo"> |
| | | <el-input v-model="productForm.batchNo" |
| | | clearable |
| | | placeholder="选填,可输入批号;留空将自动生成" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="是否质检:" |
| | | prop="isChecked"> |
| | | <el-radio-group v-model="productForm.isChecked"> |
| | | <el-radio label="是" |
| | | :value="true" /> |
| | | <el-radio label="否" |
| | | :value="false" /> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row :gutter="30">--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="是否质检:"--> |
| | | <!-- prop="isChecked">--> |
| | | <!-- <el-radio-group v-model="productForm.isChecked">--> |
| | | <!-- <el-radio label="是"--> |
| | | <!-- :value="true" />--> |
| | | <!-- <el-radio label="否"--> |
| | | <!-- :value="false" />--> |
| | | <!-- </el-radio-group>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </el-form> |
| | | </FormDialog> |
| | | <FileListDialog |
| | |
| | | productCategory: "", |
| | | productModelId: "", |
| | | specificationModel: "", |
| | | materialCode: "", |
| | | batchNo: "", |
| | | unit: "", |
| | | quantity: "", |
| | | taxInclusiveUnitPrice: "", |
| | |
| | | if (index !== -1) { |
| | | productForm.value.specificationModel = modelOptions.value[index].model; |
| | | productForm.value.unit = modelOptions.value[index].unit; |
| | | productForm.value.materialCode = modelOptions.value[index].materialCode; |
| | | } else { |
| | | productForm.value.specificationModel = null; |
| | | productForm.value.unit = null; |
| | | productForm.value.materialCode = null; |
| | | } |
| | | }; |
| | | const findNodeById = (nodes, productId) => { |
| | |
| | | return newItem; |
| | | }); |
| | | } |
| | | |
| | | /** 与库存新增一致:未填批号时前端生成(PH + 时间戳 + 随机数) */ |
| | | const generateProductBatchNo = () => { |
| | | const d = new Date(); |
| | | const pad = (n) => String(n).padStart(2, "0"); |
| | | const ts = `${d.getFullYear()}${pad(d.getMonth() + 1)}${pad(d.getDate())}${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}`; |
| | | const r = Math.floor(Math.random() * 10000) |
| | | .toString() |
| | | .padStart(4, "0"); |
| | | return `PH${ts}${r}`; |
| | | }; |
| | | |
| | | const ensureProductBatchNo = () => { |
| | | const v = (productForm.value.batchNo ?? "").toString().trim(); |
| | | productForm.value.batchNo = v || generateProductBatchNo(); |
| | | }; |
| | | |
| | | // 提交产品表单 |
| | | const submitProduct = () => { |
| | | proxy.$refs["productFormRef"].validate(valid => { |
| | | if (valid) { |
| | | ensureProductBatchNo(); |
| | | if (operationType.value === "edit") { |
| | | submitProductEdit(); |
| | | } else { |