| | |
| | | style="width: 210px" |
| | | placeholder="输入关键字进行搜索" |
| | | @change="searchFilter" |
| | | @clear="searchFilter" |
| | | @clear="searchFilter1" |
| | | clearable |
| | | prefix-icon="Search" /> |
| | | <el-button type="primary" |
| | |
| | | <div class="custom-tree-node"> |
| | | <span class="tree-node-content"> |
| | | <el-icon class="tree-icon"> |
| | | <component :is="data.children && data.children.length > 0 |
| | | ? node.expanded ? 'FolderOpened' : 'Folder' : 'Tickets'" /> |
| | | <component :is="node.expanded ? 'FolderOpened' : 'Folder'" /> |
| | | </el-icon> |
| | | <span class="tree-node-label">{{ data.label }}</span> |
| | | </span> |
| | |
| | | delProductModel, |
| | | modelListPage, |
| | | productTreeList, |
| | | productTreeListQuery, |
| | | addOrEditProductConfig, |
| | | updateOrEditProductConfig, |
| | | delProductConfig, |
| | |
| | | // 查询产品树 |
| | | const getProductTreeList = () => { |
| | | treeLoad.value = true; |
| | | productTreeList() |
| | | productTreeList({ type: 2 }) |
| | | .then(res => { |
| | | // 转换新的数据格式 |
| | | const newList = []; |
| | | expandedKeys.value = []; |
| | | for (const category of res.data) { |
| | | // 添加分类节点 |
| | | // 添加分类节点(只返回一层数据,不包含子节点) |
| | | const categoryNode = { |
| | | label: category.configName, |
| | | id: category.configId, |
| | | isLeaf: false, |
| | | children: category.materialList.map(item => ({ |
| | | id: item.id, |
| | | isLeaf: true, |
| | | label: item.materialName, |
| | | inventoryCategoryId: item.inventoryCategoryId, |
| | | materialTypeId: item.materialTypeId, |
| | | remark: item.remark, |
| | | baseUnit: item.baseUnit, |
| | | })), |
| | | children: [], // 初始化为空数组,点击时再加载 |
| | | }; |
| | | newList.push(categoryNode); |
| | | expandedKeys.value.push(category.configName); |
| | | } |
| | | list.value = newList; |
| | | treeLoad.value = false; |
| | |
| | | treeLoad.value = false; |
| | | }); |
| | | }; |
| | | const searchFilter1 = () => { |
| | | getProductTreeList(); |
| | | }; |
| | | // 过滤产品树 |
| | | const searchFilter = () => { |
| | | if (!search.value) { |
| | | // 如果搜索关键字为空,重新加载原始数据 |
| | | // getProductTreeList(); |
| | | return; |
| | | } |
| | | |
| | | treeLoad.value = true; |
| | | // 调用 productTreeListQuery 接口进行搜索 |
| | | productTreeListQuery({ materialName: search.value }) |
| | | .then(res => { |
| | | // 处理返回的数据 |
| | | const newList = []; |
| | | if (res.data && res.data.length > 0) { |
| | | for (const category of res.data) { |
| | | for (const item of list.value) { |
| | | if (item.id == category.configId) { |
| | | item.children = (category.materialList || []).map(item => ({ |
| | | id: item.id, |
| | | isLeaf: true, |
| | | label: item.materialName, |
| | | inventoryCategoryId: item.inventoryCategoryId, |
| | | materialTypeId: item.materialTypeId, |
| | | remark: item.remark, |
| | | baseUnit: item.baseUnit, |
| | | })); |
| | | break; |
| | | } |
| | | } |
| | | // 转换数据格式 |
| | | // const categoryNode = { |
| | | // label: category.configName, |
| | | // id: category.configId, |
| | | // isLeaf: false, |
| | | // children: (category.materialList || []).map(item => ({ |
| | | // id: item.id, |
| | | // isLeaf: true, |
| | | // label: item.materialName, |
| | | // inventoryCategoryId: item.inventoryCategoryId, |
| | | // materialTypeId: item.materialTypeId, |
| | | // remark: item.remark, |
| | | // baseUnit: item.baseUnit, |
| | | // })), |
| | | // }; |
| | | // newList.push(categoryNode); |
| | | } |
| | | } |
| | | // 使用 el-tree 的内置过滤功能搜索 |
| | | proxy.$refs.tree.filter(search.value); |
| | | treeLoad.value = false; |
| | | }) |
| | | .catch(err => { |
| | | treeLoad.value = false; |
| | | }); |
| | | }; |
| | | // 打开产品弹框 |
| | | const openProDia = (type, data) => { |
| | |
| | | }; |
| | | // 选择产品 |
| | | const handleNodeClick = (val, node, el) => { |
| | | // 点击非叶子节点时,不执行以下逻辑 |
| | | // 点击非叶子节点时,加载子节点数据 |
| | | if (!val.isLeaf) { |
| | | // 调用 productTreeListQuery 接口获取子节点数据 |
| | | // treeLoad.value = true; |
| | | productTreeListQuery({ materialTypeId: val.id }) |
| | | .then(res => { |
| | | // 处理返回的数据 |
| | | if (res.data && res.data.length > 0) { |
| | | const materialList = res.data[0].materialList || []; |
| | | // 转换子节点数据格式 |
| | | const children = materialList.map(item => ({ |
| | | id: item.id, |
| | | isLeaf: true, |
| | | label: item.materialName, |
| | | inventoryCategoryId: item.inventoryCategoryId, |
| | | materialTypeId: item.materialTypeId, |
| | | remark: item.remark, |
| | | baseUnit: item.baseUnit, |
| | | })); |
| | | // 更新节点的子节点 |
| | | val.children = children; |
| | | // 展开节点 |
| | | node.expanded = true; |
| | | } |
| | | // treeLoad.value = false; |
| | | }) |
| | | .catch(err => { |
| | | // treeLoad.value = false; |
| | | }); |
| | | return; |
| | | } |
| | | // 判断是否为叶子节点 |