| | |
| | | prop="productMaterialSkuId"> |
| | | <el-select v-model="form.productMaterialSkuId" |
| | | @change="handleChangeSpecification" |
| | | filterable |
| | | placeholder="请选择"> |
| | | <el-option v-for="item in specificationOptions" |
| | | :key="item.skuId" |
| | |
| | | </el-form-item> |
| | | <el-form-item label="强度" |
| | | prop="strength"> |
| | | <el-input v-model="form.strength" |
| | | placeholder="请输入强度" /> |
| | | <el-select v-model="form.strength" |
| | | placeholder="请选择强度" |
| | | style="width: 100%"> |
| | | <el-option label="A3.5" |
| | | value="A3.5" /> |
| | | <el-option label="A5.0" |
| | | value="A5.0" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="备注 1" |
| | | prop="remarkOne"> |
| | |
| | | productionPlanCombine, |
| | | } from "@/api/productionPlan/productionPlan.js"; |
| | | import PIMTable from "./components/PIMTable.vue"; |
| | | import { modelListPage, productTreeList } from "@/api/basicData/newProduct.js"; |
| | | import { |
| | | modelListPage, |
| | | productTreeList, |
| | | productTreeListQuery, |
| | | } from "@/api/basicData/newProduct.js"; |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | |
| | | label: "块数", |
| | | prop: "quantity", |
| | | className: "quantity-cell", |
| | | formatData: cell => (cell ? `${cell}块` : ""), |
| | | }, |
| | | { |
| | | label: "方数", |
| | | prop: "volume", |
| | | width: "150px", |
| | | className: "volume-cell", |
| | | formatData: cell => (cell ? `${cell}方` : ""), |
| | | }, |
| | | { |
| | | label: "已下发方数", |
| | | prop: "assignedQuantity", |
| | | width: "150px", |
| | | className: "spec-cell", |
| | | formatData: cell => (cell ? `${cell}方` : ""), |
| | | }, |
| | | { |
| | | label: "长", |
| | | prop: "length", |
| | | className: "dimension-cell", |
| | | formatData: cell => (cell ? `${cell}mm` : ""), |
| | | }, |
| | | { |
| | | label: "宽", |
| | | prop: "width", |
| | | className: "dimension-cell", |
| | | formatData: cell => (cell ? `${cell}mm` : ""), |
| | | }, |
| | | { |
| | | label: "高", |
| | | prop: "height", |
| | | className: "dimension-cell", |
| | | formatData: cell => (cell ? `${cell}mm` : ""), |
| | | }, |
| | | { |
| | | label: "流水号", |
| | | prop: "serialNo", |
| | | width: "150px", |
| | | className: "code-cell", |
| | | }, |
| | | // { |
| | | // label: "流水号", |
| | | // prop: "serialNo", |
| | | // width: "150px", |
| | | // className: "code-cell", |
| | | // }, |
| | | { |
| | | label: "计划开始日期", |
| | | prop: "startDate", |
| | |
| | | label: "强度", |
| | | prop: "strength", |
| | | }, |
| | | // { |
| | | // label: "数据来源", |
| | | // width: "100px", |
| | | // prop: "dataSourceType", |
| | | // formatData: cell => (cell == 1 ? "同步" : "手动"), |
| | | // }, |
| | | { |
| | | label: "数据来源", |
| | | width: "100px", |
| | | prop: "dataSourceType", |
| | | formatData: cell => (cell == 1 ? "同步" : "手动"), |
| | | }, |
| | | { |
| | | label: "备注 1", |
| | | prop: "remarkOne", |
| | |
| | | name: "编辑", |
| | | type: "primary", |
| | | link: true, |
| | | showHide: row => { |
| | | return row.status == 0; |
| | | }, |
| | | clickFun: row => { |
| | | handleEdit(row); |
| | | }, |
| | |
| | | name: "删除", |
| | | type: "danger", |
| | | link: true, |
| | | showHide: row => { |
| | | return row.status == 0; |
| | | }, |
| | | clickFun: row => { |
| | | handleDelete(row); |
| | | }, |
| | |
| | | { |
| | | name: "下发", |
| | | type: "text", |
| | | disabled: row => { |
| | | showHide: row => { |
| | | // 计算剩余方数 |
| | | const remainingVolume = |
| | | (row.volume || 0) - (row.assignedQuantity || 0); |
| | | // 如果剩余方数小于等于0,禁止选择 |
| | | return remainingVolume <= 0; |
| | | return remainingVolume > 0; |
| | | }, |
| | | clickFun: row => { |
| | | // 单独下发操作 |
| | |
| | | }; |
| | | |
| | | const fetchProductOptions = () => { |
| | | return productTreeList().then(res => { |
| | | return productTreeList({ type: 2 }).then(res => { |
| | | productOptions.value = convertIdToValue(res.data); |
| | | return res; |
| | | }); |
| | |
| | | const fetchSpecificationOptions = materialId => { |
| | | specificationOptions.value = []; |
| | | if (materialId) { |
| | | modelListPage({ materialId: materialId }).then(res => { |
| | | specificationOptions.value = res.data; |
| | | }); |
| | | modelListPage({ materialId: materialId, size: -1, current: -1 }).then( |
| | | res => { |
| | | specificationOptions.value = res.data.records; |
| | | } |
| | | ); |
| | | } |
| | | }; |
| | | |
| | | const handleChangeSpecification = value => { |
| | | form.materialCode = undefined; |
| | | const selectedModel = specificationOptions.value.find( |
| | | item => item.id === value |
| | | item => item.skuId === value |
| | | ); |
| | | if (selectedModel) { |
| | | form.materialCode = selectedModel.materialCode; |
| | | // 解析规格字符串获取长宽高 |
| | | const specification = selectedModel.specification; |
| | | if (specification) { |
| | | const dimensions = specification.match(/^(\d+)\*(\d+)\*(\d+)$/); |
| | | if (dimensions && dimensions.length === 4) { |
| | | form.length = parseInt(dimensions[1]); |
| | | form.width = parseInt(dimensions[2]); |
| | | form.height = parseInt(dimensions[3]); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | |
| | |
| | | // 拉取数据按钮操作 |
| | | const getLoadProdData = () => { |
| | | loadProdData() |
| | | .then(res => {}) |
| | | .then(res => { |
| | | getList(); |
| | | }) |
| | | .catch(() => {}); |
| | | }; |
| | | const sumAssignedQuantity = ref(0); |