From 67835991537910fd76839b90c38b0b223325a650 Mon Sep 17 00:00:00 2001 From: YM <479443481@qq.com> Date: 星期三, 24 七月 2024 18:34:34 +0800 Subject: [PATCH] 1 --- src/pages/academicSchools/index.vue | 426 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 377 insertions(+), 49 deletions(-) diff --git a/src/pages/academicSchools/index.vue b/src/pages/academicSchools/index.vue index ad31b50..d8603ac 100644 --- a/src/pages/academicSchools/index.vue +++ b/src/pages/academicSchools/index.vue @@ -62,10 +62,11 @@ <div class="selectActivelyBox" @click="selectActively"> <p v-if="formData.actively.length == 0">璇烽�夋嫨娲诲姩鍦�</p> <el-tag + style="margin-right: 5px" v-for="item in formData.actively" - :key="item.id" + :key="item.index" size="small" - closable + type="info" >{{ item.name }}</el-tag > </div> @@ -131,12 +132,69 @@ </el-col> </el-row> <div style="text-align: right"> - <el-button type="primary" size="mini" @click="searchFun" + <el-button + size="mini" + style="background-color: #244a7b; color: #fff" + @click="searchFun" >鎼滅储</el-button > <el-button size="mini" @click="resetForm">閲嶇疆</el-button> </div> </el-form> + <div class="fromTable"> + <el-table + :data="tableData" + class="lightBo" + style="width: 100%" + empty-text="鏆傛棤鎼滅储淇℃伅" + size="small" + :border="true" + > + <el-table-column + prop="id" + label="搴忓彿" + width="70" + ></el-table-column> + <el-table-column prop="personName" width="120" label="濮撳悕"> + <template slot-scope="scope"> + <a + style="cursor: pointer; color: #027edc" + @click="gotoDetail(scope.row.id)" + >{{ scope.row.personName }}</a + > + </template> + </el-table-column> + <el-table-column prop="personAlias" label="鍒悕"></el-table-column> + <el-table-column prop="palce" label="娲诲姩鍦�"></el-table-column> + <el-table-column + prop="birthYear" + label="鍖诲鍒嗙" + width="120" + ></el-table-column> + <el-table-column prop="deathYear" label="浣滃搧"></el-table-column> + <el-table-column + prop="nativePlace" + width="120" + label="浜虹墿鏍囩" + ></el-table-column> + <el-table-column + prop="socialDistinction" + label="绀句細韬唤" + width="120" + ></el-table-column> + <el-table-column + prop="official" + width="120" + label="鏃舵湡" + ></el-table-column> + </el-table> + <div style="text-align: right; padding-top: 20px"> + <el-button + style="width: 120px; background-color: #244a7b; color: #fff" + >纭</el-button + > + </div> + </div> </view> <div v-if="showPerson" class="personDialog"> <i @@ -185,6 +243,7 @@ text-align: center; font-size: 0.2rem; color: #666; + z-index: 99; " > 鏆傛棤鐩稿叧鏁版嵁 @@ -200,6 +259,7 @@ text-align: center; font-size: 0.2rem; color: #666; + z-index: 99; " ></div> </div> @@ -223,22 +283,94 @@ <span @click="closeDom">鍏抽棴</span> </div> <div class="content"> - <p>濮撳悕锛歿{ detailData.name }}</p> - <p>鍒悕锛歿{ detailData.alias }}</p> - <p>绫嶈疮锛歿{ detailData.nativePlace }}</p> - <p>鍖诲鍒嗙锛� {{ detailData.medicalBranch }}</p> - <p>灏忎紶锛歿{ detailData.biography }}</p> + <p>浠h〃浜虹墿锛歿{ detailData.character }}</p> + <p>閲嶈鍖诲锛歿{ detailData.skilledDoctor }}</p> + <p>浠h〃鎬ц憲浣滐細{{ detailData.works }}</p> + <p>瀛︽淳鎬濇兂锛� {{ detailData.thought }}</p> </div> <div class="btn" @click="spaceTimeArr(detailData.id)">鏌ョ湅鏇村>>></div> </div> - <el-drawer title="鍦板潃鍒楄〃" :visible.sync="drawer" direction="rtl" :before-close="handleClose" + class="customDrawer" > - <span>鎴戞潵鍟�!</span> + <div class="drawerContent"> + <div class="drawerTips">閬镐腑鐨勫湴鍧�锛�</div> + <div class="drawerTable"> + <div class="tableTabs"> + <div class="inputItem"> + <el-input + placeholder="璜嬭几鍏ュ湴鍚嶆悳绱�" + v-model="tableKey" + class="input-with-select" + @keyup.enter="searchAddress" + > + <el-button + @click="searchAddress" + type="primary" + slot="append" + icon="el-icon-search" + ></el-button> + </el-input> + </div> + <div class="selectItem"> + <el-select v-model="dynastyId" placeholder="璜嬮伕鎿囨檪鏈�"> + <el-option + v-for="item in dynastyData" + :key="item.dynastyId + '0'" + :label="item.name" + :value="item.dynastyId" + ></el-option> + </el-select> + </div> + </div> + <el-table + ref="multipleTable" + :data="gridData" + style="width: 100%" + height="530" + @selection-change="handleSelectionChange" + row-key="index" + > + <el-table-column type="selection" width="55"> </el-table-column> + <el-table-column prop="currentName" label="鍦板悕"> </el-table-column> + <el-table-column width="250" label="骞翠唬鍗�闁�"> + <template slot-scope="scope">{{ + scope.row.start + "-" + scope.row.end + }}</template> + </el-table-column> + <el-table-column + prop="dynastyName" + label="鏅傛湡" + width="250" + show-overflow-tooltip + > + </el-table-column> + </el-table> + </div> + <div class="drawerPage"> + <el-pagination + class="paging flex" + background + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="currentPage" + :page-sizes="[10, 20, 60, 100]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total" + > + </el-pagination> + </div> + <div class="drawerBtn"> + <el-button @click="setCurrent">鍏ㄩ伕鐣跺墠闋�</el-button> + <el-button @click="setCurrent('cancle')">鍙栨秷鍏ㄩ伕</el-button> + <el-button @click="drawer = false" type="primary">纰哄畾</el-button> + </div> + </div> </el-drawer> </view> </template> @@ -247,16 +379,18 @@ import { getPersonData, getHotSearch, - getPDataStatistics, academicSearch, getPersonTag, getSocialDistinction, - getDynastyAll + getDynastyAll, + getPlaceInfo } from "@/api/index.js"; import * as echarts from "echarts"; export default { data() { return { + // 楂樼礆鎼滅储琛ㄦ牸 + tableData: [], loading: true, hotAciveIndex: "", currentId: 21682, @@ -312,7 +446,17 @@ personTag: [], socialDistinction: [], dynastyData: [], + // 鎶藉眽 + gridData: [], + page: 1, + currentPage: 1, + pageSize: 10, + total: 0, drawer: false, + dynastyId: "", + tableKey: "", + multipleTableSelection: [], + // echarts infoOfPersons: [], infoOfSchools: [], nodeDatas: [], @@ -324,6 +468,8 @@ this.hotSearch(); // 鑾峰彇浜虹墿鏍囩銆佺ぞ浼氳韩浠� this.getOptionInfo(); + // 鐛插彇鍦板潃鍒楄〃 + this.getAddressList(); // 鐩戝惉绐楀彛澶у皬鍙樺寲 window.addEventListener("resize", this.relation); }, @@ -331,6 +477,89 @@ this.searchKey = options.keyword; }, methods: { + // 鎼滅储鍦板潃 + searchAddress() { + this.gridData = []; + this.getAddressList(); + }, + // 鍒嗛〉 + handleSizeChange(val) { + this.pageSize = val; + this.getAddressList(); + }, + handleCurrentChange(val) { + this.page = val; + this.getAddressList(); + }, + // 琛ㄦ牸閫夋嫨 + handleSelectionChange(val) { + const data = val.map((item) => { + return { + ...item, + name: item.currentName, + id: item.dynastyId + }; + }); + this.formData.actively = data; + this.multipleTableSelection = this.formData.actively; + }, + // 鍏ㄩ伕 + setCurrent(str) { + if (str == "cancle") { + this.$refs.multipleTable.clearSelection(); + return false; + } + if (this.gridData.length) { + this.$refs.multipleTable.clearSelection(); + this.gridData.forEach((row) => { + this.$refs.multipleTable.toggleRowSelection(row); + }); + const data = this.gridData.map((item) => { + return { + ...item, + name: item.currentName, + id: item.dynastyId + }; + }); + this.formData.actively = data; + this.multipleTableSelection = this.formData.actively; + } + }, + // 鐛插彇鍦板潃鍒楄〃 + getAddressList() { + const data = { + page: this.page, + pageSize: this.pageSize + }; + if (this.dynastyId != "") { + data["dynastyId"] = this.dynastyId; + } + if (this.tableKey != "") { + data["keyword"] = this.tableKey; + } + getPlaceInfo(data).then((res) => { + if (res?.success && res?.npage) { + this.total = res.npage.totalCount; + } + if (res?.success && res?.list.length) { + this.gridData = res?.list?.map((item, i) => { + return { + ...item, + index: i + }; + }); + setTimeout(() => { + this.multipleTableSelection.forEach((row) => { + this.$refs.multipleTable.toggleRowSelection(row); + }); + this.formData.actively = this.multipleTableSelection; + }, 2000); + } else { + this.gridData = []; + } + }); + }, + getOptionInfo() { getDynastyAll().then((res) => { this.dynastyData = res.list; @@ -342,6 +571,7 @@ this.socialDistinction = res.list; }); }, + resetForm(formName) { this.formData = { name: "", @@ -352,15 +582,19 @@ period: "" }; }, + searchFun() { console.log(this.formData); }, + selectActively() { this.drawer = true; }, + handleClose(done) { done(); }, + // 鑾峰彇浜虹墿鍏崇郴 getPersonInfo(arr, str, newArr, order, type, parent) { for (let i = 0; i < arr.length; i++) { @@ -514,16 +748,19 @@ getData() { this.loading = true; getPersonData(this.currentId).then((res) => { - console.log("1111111111111", res); - this.infoOfPersons = res.object.infoOfPersons; - this.infoOfSchools = res.object.infoOfSchools; - this.nodeDatas = []; - this.links = []; - this.handleData([res.object.personChain], null); - console.log("this.nodeDatas", this.nodeDatas); - console.log("this.links", this.links); - this.loading = false; - this.relation(); + if (res && res.object) { + this.infoOfPersons = res?.object?.infoOfPersons; + this.infoOfSchools = res?.object?.infoOfSchools; + this.nodeDatas = []; + this.links = []; + this.handleData([res.object.personChain], null); + this.loading = false; + this.relation(); + } else { + this.loading = false; + this.nodeDatas = []; + this.links = []; + } // this.nodes = []; // this.relationships = []; // let kinData = []; @@ -647,6 +884,7 @@ // } }); }, + // 閫掑綊澶勭悊鎵�鏈夊眰绾ф暟鎹� handleData(data, parent) { for (let i = 0; i < data.length; i++) { @@ -960,6 +1198,7 @@ }); myChart.setOption(option); }, + creatDom(params) { const id = params.data.id.split("_")[0]; const type = params.data.id.split("_")[1]; @@ -970,9 +1209,7 @@ div.style.display = "block"; div.style.left = e.offsetX + 50 + "px"; div.style.top = e.offsetY - 50 + "px"; - const data = this.infoOfPersons?.find( - (i) => i.id == id - ); + const data = this.infoOfPersons?.find((i) => i.id == id); const obj = { id: id, name: @@ -1006,36 +1243,29 @@ div.style.display = "block"; div.style.left = e.offsetX + 50 + "px"; div.style.top = e.offsetY - 50 + "px"; - const data = this.infoOfPersons?.find( - (i) => i.id == id - ); + const data = this.infoOfSchools?.find((i) => i.schoolId == id); + console.log(data); + debugger const obj = { id: params.data.id, - name: - data?.NAME?.map((e, i) => { - i += 1; - return e["content" + i]; - }).join("銆�") ?? "", - alias: - data?.ALIAS?.map((e, i) => { - i += 1; - return e["content" + i]; - }).join("銆�") ?? "", - nativePlace: - data?.NATIVE_PLACE?.map((e, i) => { - i += 1; - return e["content" + i]; - }).join("銆�") ?? "", - medicalBranch: - data?.MEDICAL_BRANCH?.map((e, i) => { - i += 1; - return e["content" + i]; - }).join("銆�") ?? "", - biography: data?.BIOGRAPHY ?? "" + name: data.name[0], + character: data.important_PEOPLE + ? data.important_PEOPLE.map((item) => item.content2).join("銆�") + : "", + skilledDoctor: data.important_PHYSICIAN + ? data.important_PHYSICIAN.map((item) => item.content2).join("銆�") + : "", + works: data.important_WORK + ? data.important_WORK.map((item) => item.content).join("銆�") + : "", + thought: data.school_THOUGHT + ? data.school_THOUGHT.map((item) => item.content).join("銆�") + : "" }; this.detailData = obj; } }, + closeDom() { const div = document.getElementById("customDialog"); div.style.display = "none"; @@ -1137,6 +1367,104 @@ </script> <style> +.fromTable { + width: 100%; + padding: 40px 0; + box-sizing: border-box; +} + +.fromTable >>> .el-table thead th.el-table__cell { + background-color: rgb(194 208 217) !important; + color: #333; + font-weight: normal; + font-size: 14px; +} + +.customDrawer >>> .el-drawer__header { + margin-bottom: 20px; + border-bottom: 1px solid #eee; + padding: 20px; + box-sizing: border-box; +} + +.headerClassBg { + background-color: rgb(95, 127, 168); +} + +.drawerTips { + margin-bottom: 20px; + color: #666; +} + +.drawerTable { + width: 100%; +} + +.drawerTable >>> .el-table thead th.el-table__cell { + background-color: rgb(231, 236, 239) !important; + color: #333; + font-weight: normal; +} + +.tableTabs { + width: 100%; + display: flex; + margin-bottom: 20px; +} + +.inputItem { + width: 80%; +} + +.drawerPage { + display: flex; + justify-content: flex-end; + padding: 20px 0; + box-sizing: border-box; +} + +.drawerBtn { + display: flex; + justify-content: flex-end; +} + +.drawerContent { + width: 100%; + height: 100%; + padding: 0 20px; + box-sizing: border-box; +} + +/* 鍒嗛〉 */ +.paging ::v-deep .btn-prev, +.paging ::v-deep .btn-next { + border: 0; + height: 30px; +} + +.paging ::v-deep .btn-prev span, +.paging ::v-deep .btn-next span { + font-size: 0.12rem; + height: 0.3rem; + line-height: 0.3rem; + background-color: #fff; + color: #9e9e9e; + text-align: center; + border: 1px solid #9e9e9e; + padding: 0 0.1rem; +} + +.paging ::v-deep .el-pager li { + font-size: 0.1rem; + width: 0.28rem; + height: 0.3rem; + line-height: 0.3rem; + background-color: #fff; + color: #9e9e9e; + text-align: center; + border: 1px solid #9e9e9e; +} + #relation { width: 100%; height: 100%; -- Gitblit v1.9.1