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 | 366 +++++++++++++++++++++++++++++++--------------------- src/api/index.js | 8 + 2 files changed, 227 insertions(+), 147 deletions(-) diff --git a/src/api/index.js b/src/api/index.js index 5f87363..102254c 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -302,6 +302,14 @@ }); }; +// 鏌ヨ浜虹墿瀛︽湳娴佹淳 +export const getSchoolInfo = (id) => { + return req1({ + url: "/person/chain/search/school?schoolId=" + id + "&maxStep=3", + method: "post", + }); +}; + export const searchSchoolPerson = (data) => { return req1({ url: "/person/searchSchoolPerson", diff --git a/src/pages/academicSchools/index.vue b/src/pages/academicSchools/index.vue index a37812d..d544c1a 100644 --- a/src/pages/academicSchools/index.vue +++ b/src/pages/academicSchools/index.vue @@ -1,5 +1,7 @@ <template> - <view style="width: 100%; height: 100%; display: flex; flex-direction: column;"> + <view + style="width: 100%; height: 100%; display: flex; flex-direction: column" + > <headNav :idIndex="'6'" text="瀛︽湳娴佹淳" /> <!-- 楂樼骇鎼滅储 --> <view style="margin-top: 0.1rem"> @@ -53,7 +55,7 @@ import { getPersonData, getHotSearch, - getPDataStatistics + getPDataStatistics, } from "@/api/index.js"; import * as echarts from "echarts"; export default { @@ -73,19 +75,19 @@ type: "input", label: "濮撳悕", name: "name", - value: "" + value: "", }, { type: "input", label: "鍒悕", name: "alias", - value: "" + value: "", }, { type: "input", label: "绫嶈疮", name: "location", - value: "" + value: "", }, { type: "select", @@ -95,15 +97,15 @@ options: [ { label: "鏈寚鏄�", - value: "UNKNOWN" - } - ] + value: "UNKNOWN", + }, + ], }, { type: "input", label: "瀹樿亴", name: "office", - value: "" + value: "", }, { type: "select", @@ -113,43 +115,43 @@ options: [ { label: "鏈寚鏄�", - value: "UNKNOWN" + value: "UNKNOWN", }, { label: "鐢�", - value: "MALE" + value: "MALE", }, { label: "濂�", - value: "WOMAN" - } - ] + value: "WOMAN", + }, + ], }, { type: "input", label: "鏃舵湡", name: "period", - value: "" + value: "", }, { type: "input", label: "鏈烘瀯", name: "inst", - value: "" + value: "", }, { type: "number", label: "椤电爜", name: "page", - value: "" + value: "", }, { type: "number", label: "椤靛ぇ灏�", name: "pageSize", - value: "" - } - ] + value: "", + }, + ], }, // 涓嬮潰鐨勬湞浠�1 dynastyColor: 1, @@ -158,79 +160,79 @@ { name: "澶忔湞", coord: "2070BC", - id: 1 + id: 1, }, { name: "鍟嗘湞", id: 2, - coord: "1600BC" + coord: "1600BC", }, { name: "瑗垮懆", id: 3, - coord: "1600BC" + coord: "1600BC", }, { name: "鏄ョ鎴樺浗", id: 4, - coord: "770BC" + coord: "770BC", }, { name: "绉︽湞", id: 5, - coord: "221BC" + coord: "221BC", }, { name: "姹夋湞", id: 6, - coord: "202BC" + coord: "202BC", }, { name: "涓夊浗涓ゆ檵鍗楀寳鏈�", id: 7, - coord: "184" + coord: "184", }, { name: "闅嬫湞", id: 8, - coord: "581" + coord: "581", }, { name: "鍞愭湞", id: 9, - coord: "618" + coord: "618", }, { name: "浜斾唬鍗佸浗", id: 10, - coord: "907" + coord: "907", }, { name: "杈藉閲�", id: 11, - coord: "907" + coord: "907", }, { name: "瀹嬫湞", id: 12, - coord: "960" + coord: "960", }, { name: "鍏冩湞", id: 13, - coord: "1271" + coord: "1271", }, { name: "鏄庢湞", id: 14, - coord: "1368" + coord: "1368", }, { name: "娓呮湞", id: 15, - coord: "1636" - } + coord: "1636", + }, ], // 鐑棬鎼滅储 hotKeyList: [], @@ -240,8 +242,10 @@ categories: [], // 浜虹墿淇℃伅 infoOfPersons: [], + // 瀛︽湳娴佹淳 + infoOfSchools:[], // 褰撳墠浜虹墿淇℃伅 - ownInfo: null + ownInfo: null, }; }, mounted() { @@ -256,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( @@ -264,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 + 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; }, //鏁扮粍鍘婚噸 @@ -298,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(); @@ -429,46 +546,35 @@ borderRadius: 30, position: "middle", // 璁剧疆鏍囩鏂囨湰鍦ㄧ嚎鐨勪腑闂翠綅缃笂灞呬腑鏄剧ず // z: -1, // 璁剧疆鏍囩鐨剒杞撮珮搴︼紝浣垮叾姣旇繛鎺ョ嚎鏇撮珮 - distance: -10 // 灏嗘爣绛炬斁缃湪杩炴帴绾夸笂 - } + distance: -10, // 灏嗘爣绛炬斁缃湪杩炴帴绾夸笂 + }, }); } } }); // 鏍规嵁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" - } + color: "#2C2C2C", + }, }, backgroundColor: { type: "image", image: "/static/image/characterRelationBg.png", // repeat: 'repeat-x', // 鏄惁骞抽摵锛屽彲浠ユ槸 'repeat-x', 'repeat-y', 'no-repeat' size: "100% 100%", // 鑳屾櫙鍥剧墖鐨勫昂瀵革紝鍙互鏄櫨鍒嗘瘮鎴栬�呭儚绱� - position: "center center" // 鑳屾櫙鍥剧墖鐨勪綅缃紝鍙互鏄� top, bottom, middle 鎴栬�呯櫨鍒嗘瘮 + position: "center center", // 鑳屾櫙鍥剧墖鐨勪綅缃紝鍙互鏄� top, bottom, middle 鎴栬�呯櫨鍒嗘瘮 }, tooltip: {}, legend: [ @@ -476,70 +582,36 @@ // selectedMode: 'single', data: this.categories.map(function (a) { return a.name; - }) - } + }), + }, ], 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: 'force', + layout: "force", data: nodeData, links: links, categories: this.categories, roam: true, label: { position: "right", - formatter: "{b}" + formatter: "{b}", }, lineStyle: { color: "source", - curveness: 0.3 + curveness: 0.3, }, emphasis: { focus: "adjacency", lineStyle: { - width: 10 - } - } - } - ] + width: 10, + }, + }, + }, + ], }; // 灏嗙敓鎴愮殑杩炴帴绾挎坊鍔犲埌echarts鍥捐〃鐨刼ption涓� // option.series[0].links = links; @@ -569,28 +641,28 @@ getAdvanceSearch({ ...val, page: 1, - pageSize: 100 + pageSize: 100, }).then((res) => { console.log(res, "res"); }); }, advancedSearchBack() { uni.navigateTo({ - url: "/pages/knowledgeBase/knowledgeBase" + url: "/pages/knowledgeBase/knowledgeBase", }); }, // 鐐瑰嚮涓嬮潰鐨勬湞浠f寜閽� dynastyBottomClick(item) { this.dynastyColor = item.id; this.onSearch({ - text: item.name + text: item.name, }); }, // 鍏崇郴鍥� 鐐瑰嚮閲岄潰鐨勫厓绱� spaceTimeArr(id) { // 鍏崇郴鍥剧殑鏁版嵁 uni.navigateTo({ - url: "/pages/character/detail?id=" + id + url: "/pages/character/detail?id=" + id, }); }, // 鑾峰彇鏈濅唬echarts鐨勬暟鎹� @@ -629,15 +701,15 @@ const options = res.object.occupationStatistic.details.map( (item) => ({ label: item.tagName, - value: item.tagId.toString() // 灏� id 杞崲涓哄瓧绗︿覆锛岀‘淇濅笌 value 绫诲瀷涓�鑷� + value: item.tagId.toString(), // 灏� id 杞崲涓哄瓧绗︿覆锛岀‘淇濅笌 value 绫诲瀷涓�鑷� }) ); // 鏇存柊鑱屼笟瀛楁鐨� options 灞炴�� this.$set(this.From.from[professionIndex], "options", options); } }); - } - } + }, + }, }; </script> -- Gitblit v1.9.1