|
@@ -185,12 +185,27 @@ export default {
|
|
|
filterText(val) {
|
|
|
this.$refs.tree.filter(val);
|
|
|
},
|
|
|
+ // 监听树数据加载完成后,展开指定节点
|
|
|
+ data: {
|
|
|
+ handler(newData) {
|
|
|
+ if (newData.length > 0 && this.$route.query.batchCode) {
|
|
|
+ this.initBatchCode = this.$route.query.batchCode;
|
|
|
+ this.setExpandedNode(this.initBatchCode);
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.scrollToSelectedNode();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ immediate: true,
|
|
|
+ },
|
|
|
// 监听 initBatchCode 的变化,确保树节点正确选中
|
|
|
+ // 监听选中节点的变化,确保树节点正确选中
|
|
|
initBatchCode(newVal) {
|
|
|
this.$nextTick(() => {
|
|
|
const tree = this.$refs.tree;
|
|
|
if (tree) {
|
|
|
tree.setCurrentKey(newVal); // 设置当前选中的节点
|
|
|
+ this.scrollToSelectedNode(); // 滚动到选中的节点
|
|
|
}
|
|
|
});
|
|
|
},
|
|
@@ -199,12 +214,15 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
async created() {
|
|
|
- if (this.$route.query.batchCode) {
|
|
|
- this.initBatchCode = this.$route.query.batchCode;
|
|
|
- }
|
|
|
await Promise.all([this.getTreeData(), this.queryAllAnalysisType()]);
|
|
|
// 初始化逻辑
|
|
|
},
|
|
|
+ // mounted() {
|
|
|
+ // if (this.$route.query.batchCode) {
|
|
|
+ // this.initBatchCode = this.$route.query.batchCode;
|
|
|
+ // // this.expandedKeys.push(formattedData[0]?.children[0]?.codeNumber);
|
|
|
+ // }
|
|
|
+ // },
|
|
|
|
|
|
methods: {
|
|
|
setIsShow() {
|
|
@@ -229,30 +247,21 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- // 获取树形结构数据
|
|
|
- getTreeData() {
|
|
|
+ // 获取树形数据
|
|
|
+ async getTreeData() {
|
|
|
this.loading = true;
|
|
|
- getAnalysisCodeInfo()
|
|
|
- .then((res) => {
|
|
|
- if (res.code === 200) {
|
|
|
- this.loading = false;
|
|
|
- this.batchCodeList = [];
|
|
|
- const formattedData = this.formatData(res.data);
|
|
|
- this.data = formattedData;
|
|
|
- console.log(formattedData[0], "formattedData[0]");
|
|
|
- this.expandedKeys.push(formattedData[0]?.children[0]?.codeNumber);
|
|
|
- // =
|
|
|
- // [
|
|
|
- // formattedData[0]?.codeNumber,
|
|
|
- // formattedData[0]?.children[0]?.codeNumber,
|
|
|
- // ] || [];
|
|
|
- // 确保数据加载完成后才查询其他分析模型
|
|
|
- // this.queryAllAnalysisType();
|
|
|
- }
|
|
|
- })
|
|
|
- .catch((err) => {});
|
|
|
+ try {
|
|
|
+ const res = await getAnalysisCodeInfo(); // API 请求
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.loading = false;
|
|
|
+ this.data = this.formatData(res.data); // 赋值树数据
|
|
|
+ }
|
|
|
+ } catch (err) {
|
|
|
+ console.error("获取数据失败", err);
|
|
|
+ }
|
|
|
},
|
|
|
- //数据格式化树形结构
|
|
|
+
|
|
|
+ // 递归格式化树数据
|
|
|
formatData(data) {
|
|
|
return (
|
|
|
data &&
|
|
@@ -260,27 +269,15 @@ export default {
|
|
|
item.levelstate = "1";
|
|
|
if (item.children && item.children.length > 0) {
|
|
|
item.children = item.children.map((child) => ({
|
|
|
- //二级
|
|
|
fieldOrCompanyName: child.fieldOrCompanyName,
|
|
|
codeNumber: child.codeNumber,
|
|
|
levelstate: "2",
|
|
|
children: child.batchCodes
|
|
|
- ? child.batchCodes.map((bc) => {
|
|
|
- if (this.initBatchCode === "") {
|
|
|
- this.initBatchCode = bc.batchCode; // 初始化选中的节点
|
|
|
- }
|
|
|
- this.batchCodeList.push(bc.batchCode);
|
|
|
- this.batchList.push({
|
|
|
- batchCode: bc.batchCode,
|
|
|
- batchName: bc.analysisName,
|
|
|
- });
|
|
|
- return {
|
|
|
- //三级
|
|
|
- fieldOrCompanyName: bc.analysisName,
|
|
|
- codeNumber: bc.batchCode,
|
|
|
- levelstate: "3",
|
|
|
- };
|
|
|
- })
|
|
|
+ ? child.batchCodes.map((bc) => ({
|
|
|
+ fieldOrCompanyName: bc.analysisName,
|
|
|
+ codeNumber: bc.batchCode,
|
|
|
+ levelstate: "3",
|
|
|
+ }))
|
|
|
: [],
|
|
|
}));
|
|
|
}
|
|
@@ -288,19 +285,50 @@ export default {
|
|
|
})
|
|
|
);
|
|
|
},
|
|
|
- // 点击树形节点时
|
|
|
+ // 滚动到选中的节点
|
|
|
+ scrollToSelectedNode() {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ const tree = this.$refs.tree;
|
|
|
+ if (!tree) return;
|
|
|
+
|
|
|
+ const selectedNode = tree.$el.querySelector(".is-current");
|
|
|
+ if (selectedNode) {
|
|
|
+ selectedNode.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 处理展开逻辑
|
|
|
+ setExpandedNode(batchCode) {
|
|
|
+ // 递归查找 batchCode 对应的父级节点
|
|
|
+ const findParentNode = (nodes, targetCode) => {
|
|
|
+ for (const node of nodes) {
|
|
|
+ if (
|
|
|
+ node.children &&
|
|
|
+ node.children.some((child) => child.codeNumber === targetCode)
|
|
|
+ ) {
|
|
|
+ return node.codeNumber; // 返回父级节点编号
|
|
|
+ }
|
|
|
+ if (node.children) {
|
|
|
+ const parentCode = findParentNode(node.children, targetCode);
|
|
|
+ if (parentCode) return parentCode;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ };
|
|
|
+
|
|
|
+ // 获取目标节点的父级
|
|
|
+ const parentCode = findParentNode(this.data, batchCode);
|
|
|
+ if (parentCode) {
|
|
|
+ this.expandedKeys = [parentCode]; // 只展开找到的父级节点
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 处理树节点点击
|
|
|
handleNodeClick(data) {
|
|
|
- if (
|
|
|
- (data.children &&
|
|
|
- data.children.length <= 0 &&
|
|
|
- data.levelstate === "1") ||
|
|
|
- (data.children && data.children.length <= 0 && data.levelstate === "2")
|
|
|
- ) {
|
|
|
- this.$message.warning("当前选中风场未进行任何分析,请重新选择");
|
|
|
+ if (!data.children || data.children.length === 0) {
|
|
|
+ this.initBatchCode = data.codeNumber; // 更新选中的节点
|
|
|
} else {
|
|
|
- if (!data.children) {
|
|
|
- this.initBatchCode = data.codeNumber; // 更新选中的节点
|
|
|
- }
|
|
|
+ this.$message.warning("当前选中风场未进行任何分析,请重新选择");
|
|
|
}
|
|
|
},
|
|
|
//获取
|