| | |
| | | </span> |
| | | <div> |
| | | <el-button |
| | | v-if="node.level > 1" |
| | | type="success" |
| | | link |
| | | @click.stop="handleDownCopy(node, data)" |
| | | > |
| | | 向下复制 |
| | | </el-button> |
| | | <el-button |
| | | type="primary" |
| | | link |
| | | @click="openProDia('edit', data)" |
| | |
| | | > |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="料号:" prop="materialCode"> |
| | | <el-input |
| | | v-model="modelForm.materialCode" |
| | | placeholder="请输入料号" |
| | | clearable |
| | | @keydown.enter.prevent |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="规格型号:" prop="model"> |
| | | <el-input |
| | | v-model="modelForm.model" |
| | |
| | | delProductModel, |
| | | modelListPage, |
| | | productTreeList, |
| | | downCopyProductModel, |
| | | } from "@/api/basicData/product.js"; |
| | | import ImportExcel from "./ImportExcel/index.vue"; |
| | | |
| | |
| | | const list = ref([]); |
| | | const expandedKeys = ref([]); |
| | | const tableColumn = ref([ |
| | | { |
| | | label: "料号", |
| | | prop: "materialCode", |
| | | }, |
| | | { |
| | | label: "规格型号", |
| | | prop: "model", |
| | |
| | | ], |
| | | }, |
| | | modelForm: { |
| | | materialCode: "", |
| | | model: "", |
| | | unit: "", |
| | | }, |
| | | modelRules: { |
| | | materialCode: [{ required: true, message: "请输入", trigger: "blur" }, { max: 200, message: "物料编号不能超过200个字符", trigger: "blur" }], |
| | | model: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | unit: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | }, |
| | |
| | | proxy.$modal.msg("已取消"); |
| | | }); |
| | | }; |
| | | |
| | | // 向下复制 |
| | | const handleDownCopy = (node, data) => { |
| | | if (currentId.value !== data.id) { |
| | | proxy.$modal.msgWarning("请先选中当前产品并勾选需要复制的型号"); |
| | | return; |
| | | } |
| | | |
| | | // 获取同层级节点 |
| | | const parent = node.parent; |
| | | const siblings = parent.childNodes || []; |
| | | // 找到当前节点在同层级中的索引 |
| | | const currentIndex = siblings.findIndex(item => item.data.id === data.id); |
| | | // 获取下一行节点 |
| | | const nextNode = siblings[currentIndex + 1]; |
| | | |
| | | if (!nextNode) { |
| | | proxy.$modal.msgWarning("当前节点是同层级最后一个,没有下一行数据可复制"); |
| | | return; |
| | | } |
| | | |
| | | const modelListId = selectedRows.value.map((item) => item.id); |
| | | if (!modelListId.length) { |
| | | proxy.$modal.msgWarning("没有选择要复制的型号"); |
| | | return; |
| | | } |
| | | |
| | | ElMessageBox.confirm("确认将当前节点的规格型号复制到下一行节点?", "向下复制", { |
| | | confirmButtonText: "确认", |
| | | cancelButtonText: "取消", |
| | | type: "info", |
| | | }) |
| | | .then(() => { |
| | | downCopyProductModel({ |
| | | productId: data.id, |
| | | targetProductId: nextNode.data.id, |
| | | modelListId, |
| | | }).then(() => { |
| | | proxy.$modal.msgSuccess("复制成功"); |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | }; |
| | | // 选择产品 |
| | | const handleNodeClick = (val, node, el) => { |
| | | // 判断是否为叶子节点 |
| | |
| | | // 只有叶子节点才执行以下逻辑 |
| | | currentId.value = val.id; |
| | | currentParentId.value = val.parentId; |
| | | selectedRows.value = []; |
| | | getModelList(); |
| | | }; |
| | | |
| | |
| | | }; |
| | | const getModelList = () => { |
| | | tableLoading.value = true; |
| | | selectedRows.value = []; |
| | | modelListPage({ |
| | | id: currentId.value, |
| | | current: page.current, |