From a4a5b8dc84e9f9c2e1890f7d2c9e91f548840084 Mon Sep 17 00:00:00 2001 From: QYF-GitLab1 <1940665526@qq.com> Date: 星期四, 18 七月 2024 16:58:01 +0800 Subject: [PATCH] 1 --- src/pages/academicSchools/index.vue | 257 +++++++++++++++++++++++++++++++++------------------ 1 files changed, 166 insertions(+), 91 deletions(-) diff --git a/src/pages/academicSchools/index.vue b/src/pages/academicSchools/index.vue index 6c76c81..d544c1a 100644 --- a/src/pages/academicSchools/index.vue +++ b/src/pages/academicSchools/index.vue @@ -1,5 +1,7 @@ <template> - <view> + <view + style="width: 100%; height: 100%; display: flex; flex-direction: column" + > <headNav :idIndex="'6'" text="瀛︽湳娴佹淳" /> <!-- 楂樼骇鎼滅储 --> <view style="margin-top: 0.1rem"> @@ -26,7 +28,6 @@ </li> </ul> </view> - <view style="margin-left: 0.2rem">涔︿腑鏈�甯告彁鍒扮殑100浣嶄汉鐗�</view> <!-- 鍏崇郴琛ㄥ湴鍥� --> <div id="relation" @@ -241,6 +242,8 @@ categories: [], // 浜虹墿淇℃伅 infoOfPersons: [], + // 瀛︽湳娴佹淳 + infoOfSchools:[], // 褰撳墠浜虹墿淇℃伅 ownInfo: null, }; @@ -257,7 +260,8 @@ this.searchKey = options.keyword; }, methods: { - getPersonInfo(arr, str, newArr, order, type) { + // 鑾峰彇浜虹墿鍏崇郴 + getPersonInfo(arr, str, newArr, order, type, parent) { for (let i = 0; i < arr.length; i++) { const ele = arr[i]; const personInfo = this.infoOfPersons.find( @@ -265,19 +269,56 @@ ); const obj = { personId: ele.personId, - id1: this.ownInfo.id, + parentId: parent.id, id2: personInfo.id, relationTypeId: ele.relationTypeId, relationTypeName: ele.relationTypeName, - name1: this.ownInfo?.NAME[0]?.content1, + parentName: parent?.NAME[0]?.content1 ?? parent.parentName, name2: personInfo?.NAME[0]?.content1, category: type, }; + if (str == "literatureList") { + obj.relationTypeName = ele.literatureName; + } + if (str == "schoolList") { + const nameData = this.infoOfSchools?.find(i=>i.schoolId == ele.schoolId) + obj.relationTypeName = nameData?.name[0]; + } + if (str == "placeList") { + obj.relationTypeName = ele.ancientName ?? ele.currentName; + } newArr.push(obj); if (ele[str] && ele[str]?.length) { - this.getPersonInfo(ele[str], "kinList", newArr, 2, type); + order++; + this.getPersonInfo(ele[str], str, newArr, order, type, personInfo); } } + }, + + // 澶勭悊鏁版嵁 + changeLiterature(arr, str) { + for (let i = 0; i < arr.length; i++) { + const ele = arr[i]; + if (!ele.personId && ele.personList?.length) { + ele.literatureList = []; + ele.personId = this.ownInfo.id; + if (ele[str] && ele[str]?.length) { + for (let j = 0; j < ele.personList.length; j++) { + const item = ele.personList[j]; + const data = item[str]?.map((e) => { + return { + ...e, + personId: item.personId, + }; + }); + if (data?.length) { + ele[str].push(...data); + } + } + } + } + } + return arr; }, //鏁扮粍鍘婚噸 @@ -299,73 +340,148 @@ return deduplicatedArray; }, + + // 鏌ヨ璇︽儏 getData() { this.loading = true; getPersonData(this.currentId).then((res) => { this.nodes = []; this.relationships = []; - let kin = []; + let kinData = []; let teacher = []; + let literature = []; + let social = []; + let place = []; + let school = []; if (res && res.success && res.object) { console.log(res.object); this.infoOfPersons = res.object?.infoOfPersons; + this.infoOfSchools = res.object?.infoOfSchools; if (res.object?.personChain) { this.ownInfo = this.infoOfPersons.find( (item) => item.id == res.object?.personChain.personId ); const obj = res.object?.personChain; - console.log(obj.kinList, "kinList"); if (obj.kinList?.length) { let newArr = []; this.categories.push({ name: "浜插睘鍏崇郴" }); - this.getPersonInfo(obj.kinList, "kinList", newArr, 1, 0); - console.log(newArr, "list"); - newArr.forEach((item) => { - let exists1 = this.nodes.some( - (node) => node.id === item.id1 && node.name === item.name1 - ); - let exists2 = this.nodes.some( - (node) => node.id === item.id1 && node.name === item.name2 - ); - // 璇佹槑涓嶅瓨鍦� - if (item.name1 && exists1 !== true) { - this.nodes.push({ - name: item.name1, - id: item.id1, - ...item, - }); - } - if (item.name2 && exists2 !== true) { - this.nodes.push({ - name: item.name2, - id: item.id2, - ...item, - }); - } - let obj = { - source: item.name1, - target: item.name2, - relation: item.relationTypeName || "", // 濡傛灉瀛樺湪 relationName 瀛楁鍒欎娇鐢紝鍚﹀垯涓虹┖瀛楃涓� - }; - this.relationships.push(obj); - }); + this.getPersonInfo( + obj.kinList, + "kinList", + newArr, + 1, + 0, + this.ownInfo + ); + kinData = [...newArr]; } if (obj.teacherStudentList?.length) { this.categories.push({ name: "甯堟壙鍏崇郴" }); + let newArr = []; + this.getPersonInfo( + obj.teacherStudentList, + "teacherStudentList", + newArr, + 1, + 1, + this.ownInfo + ); + teacher = [...newArr]; } if (obj.literatureList?.length) { this.categories.push({ name: "鏂囩尞浣滃搧" }); + let newArr = []; + const data = this.changeLiterature( + obj.literatureList, + "literatureList" + ); + this.getPersonInfo( + data, + "literatureList", + newArr, + 1, + 2, + this.ownInfo + ); + literature = [...newArr]; } if (obj.socialList?.length) { + let newArr = []; this.categories.push({ name: "绀句細鍏崇郴" }); + const data = this.changeLiterature(obj.socialList, "socialList"); + this.getPersonInfo( + data, + "socialList", + newArr, + 1, + 3, + this.ownInfo + ); + social = [...newArr]; } if (obj.placeList?.length) { this.categories.push({ name: "娲诲姩鍦�" }); + let newArr = []; + const data = this.changeLiterature(obj.placeList, "placeList"); + this.getPersonInfo(data, "placeList", newArr, 1, 4, this.ownInfo); + place = [...newArr]; + // console.log(place, "placeList"); } if (obj.schoolList?.length) { this.categories.push({ name: "瀛︽湳娴佹淳" }); + let newArr = []; + const data = this.changeLiterature(obj.schoolList, "schoolList"); + this.getPersonInfo( + data, + "schoolList", + newArr, + 1, + 3, + this.ownInfo + ); + school = [...newArr]; + // console.log(school, "schoolList"); } } + const personData = [ + ...kinData, + ...teacher, + ...literature, + ...social, + ...place, + ...school, + ]; + // console.log(personData) + personData.forEach((item) => { + let exists1 = this.nodes.some( + (node) => + node.id === item.parentId && node.name === item.parentName + ); + let exists2 = this.nodes.some( + (node) => node.id === item.parentId && node.name === item.name2 + ); + // 璇佹槑涓嶅瓨鍦� + if (item.name1 && exists1 !== true) { + this.nodes.push({ + name: item.parentName, + id: item.parentId, + ...item, + }); + } + if (item.name2 && exists2 !== true) { + this.nodes.push({ + name: item.name2, + id: item.id2, + ...item, + }); + } + let obj = { + source: item.parentName, + target: item.name2, + relation: item.relationTypeName || "", // 濡傛灉瀛樺湪 relationName 瀛楁鍒欎娇鐢紝鍚﹀垯涓虹┖瀛楃涓� + }; + this.relationships.push(obj); + }); } this.loading = false; this.relation(); @@ -437,28 +553,17 @@ } }); // 鏍规嵁nodes鍔ㄦ�佺敓鎴愯妭鐐规暟鎹� - var nodeData = nodes.map(function (node, index) { - return { - name: node.name, - id: node.id, - itemStyle: { - color: "#eae0eb", // 鍙互鏍规嵁绱㈠紩璁剧疆涓嶅悓鐨勯鑹� - borderWidth: BorderWidth, - borderColor: "#996f9f", - }, - }; - }); - + var nodeData = nodes; var option; option = { title: { - // text: '涔︿腑鏈�甯告彁鍒扮殑100浣嶄汉鐗�', + text: "瀛︽湳娴佹淳", // subtext: '', left: "center", top: FontSize + 10, - // textStyle: { - // fontSize: FontSize // 璁剧疆鏍囬鏂囧瓧澶у皬涓� 18px - // }, + textStyle: { + fontSize: FontSize, // 璁剧疆鏍囬鏂囧瓧澶у皬涓� 18px + }, subtextStyle: { fontSize: FontSize, // 璁剧疆鍓爣棰樻枃瀛楀ぇ灏忎负 14px color: "#2C2C2C", @@ -483,44 +588,10 @@ animationDurationUpdate: 1500, animationEasingUpdate: "quinticInOut", series: [ - // { - // type: "graph", - // layout: "force", - // roam: true, - // symbolSize: SymbolSize, // 璋冩暣鑺傜偣澶у皬 - // label: { - // show: true, - // color: "black", // 璁剧疆鑺傜偣鏂囧瓧棰滆壊涓洪粦鑹� - // fontSize: FontSize, // 璁剧疆鏂囧瓧澶у皬 - // }, - // edgeSymbol: ["circle", "arrow"], - // edgeSymbolSize: [4, 10], - // data: nodeData, - // links, - // categories: this.categories, - // lineStyle: { - // opacity: 0.9, - // width: 2, - // curveness: 0.3, - // }, - // emphasis: { - // focus: "adjacency", - // lineStyle: { - // width: 10, - // }, - // }, - // force: { - // // layoutAnimation: false, - // // friction: 1, - // repulsion: 800, - // edgeLength: 400, - // }, - // }, { - name: "Les Miserables", type: "graph", legendHoverLink: false, - layout: "none", + layout: "force", data: nodeData, links: links, categories: this.categories, @@ -551,7 +622,7 @@ this.spaceTimeArr(params.data.id); } }); - console.log(option,'option') + console.log(option, "option"); myChart.setOption(option); }, // 鍩虹鎼滅储 @@ -643,6 +714,10 @@ </script> <style> +#relatio { + width: 100%; + height: 100%; +} @media screen and (min-width: 2560px) and (max-width: 3840px) { } -- Gitblit v1.9.1