Commit b6325792 authored by 范加坤's avatar 范加坤

feat: 图表过滤

parent 2f638850
...@@ -196,7 +196,7 @@ ...@@ -196,7 +196,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="data-info right-info"> <!-- <div class="data-info right-info">
<div class="info-item invade-info"> <div class="info-item invade-info">
<div class="info-title"> <div class="info-title">
<img src="@/assets/img/title.png" alt=""> <img src="@/assets/img/title.png" alt="">
...@@ -232,7 +232,7 @@ ...@@ -232,7 +232,7 @@
</div> </div>
</div> </div>
</div> </div> -->
</div> </div>
</template> </template>
...@@ -488,7 +488,7 @@ export default { ...@@ -488,7 +488,7 @@ export default {
} }
// 左侧信息卡片 // 左侧信息卡片
.left-info{ .left-info{
width: 25%; width: 30%;
margin-bottom: 15px; margin-bottom: 15px;
// height: 100%; // height: 100%;
overflow-y: auto; overflow-y: auto;
...@@ -518,7 +518,7 @@ export default { ...@@ -518,7 +518,7 @@ export default {
} }
// 中部信息卡片 // 中部信息卡片
.main-info{ .main-info{
width: 55%; width: 70%;
margin: 0 15px; margin: 0 15px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
</div> </div>
</div> </div>
<div class="after-search" slot="addonAfter"> <div class="after-search" slot="addonAfter">
<a-icon type="scan" style="margin-right: 20px" @click="judge" /> <!-- <a-icon type="scan" style="margin-right: 20px" @click="judge" /> -->
<a-icon type="search" @click="onSearchChange" /> <a-icon type="search" @click="onSearchChange" />
</div> </div>
</a-input> </a-input>
......
...@@ -8,24 +8,35 @@ ...@@ -8,24 +8,35 @@
placeholder="物种名称" placeholder="物种名称"
> >
<div slot="addonBefore" class="search-before"> <div slot="addonBefore" class="search-before">
<div class="selected-item" @click="selectListShow = !selectListShow"> <div
{{speciesTypeList[speciesType]}} class="selected-item"
<a-icon class="select-icon" @click="selectListShow = !selectListShow"
:type="selectListShow?'up':'down'" /> >
{{ speciesTypeList[speciesType] }}
<a-icon
class="select-icon"
:type="selectListShow ? 'up' : 'down'"
/>
</div> </div>
<div class="select-list" v-show="selectListShow"> <div class="select-list" v-show="selectListShow">
<div class="select-item" <div
v-for="(value, key) in speciesTypeList" class="select-item"
:key="key" v-for="(value, key) in speciesTypeList"
@click="checkSpeciesType(key)"> :key="key"
{{value}} @click="checkSpeciesType(key)"
>
{{ value }}
</div> </div>
</div> </div>
</div> </div>
<div class="after-search" slot="addonAfter"> <div class="after-search" slot="addonAfter">
<a-icon type="scan" style="margin-right:20px;" <!-- <a-icon type="scan" style="margin-right:20px;"
@click="judge"/> @click="judge"/> -->
<a-icon type="search" @click="onSearchChange"/> <a-icon
type="search"
@click="onSearchChange"
style="margin-right: 20px"
/>
</div> </div>
</a-input> </a-input>
</div> </div>
...@@ -34,182 +45,183 @@ ...@@ -34,182 +45,183 @@
</div> --> </div> -->
</div> </div>
<div class="data-main"> <div class="data-main">
<water-full-data :name="fullName" :type="speciesType" ref="data"></water-full-data> <water-full-data
:name="fullName"
:type="speciesType"
ref="data"
></water-full-data>
</div> </div>
<camera-ai ref="ai"></camera-ai> <camera-ai ref="ai"></camera-ai>
</div> </div>
</template> </template>
<script> <script>
import { TYPE_KEY } from '@/views/config/foreign.config.js' import { TYPE_KEY } from "@/views/config/foreign.config.js";
import WaterFullData from '../data/WaterFullData' import WaterFullData from "../data/WaterFullData";
import CameraAi from '../list/cameraAI' import CameraAi from "../list/cameraAI";
// import FilterWidget from '@/components/FilterWidget/FilterWidget' // import FilterWidget from '@/components/FilterWidget/FilterWidget'
export default { export default {
name: '', name: "",
components: { components: {
WaterFullData, WaterFullData,
CameraAi CameraAi,
// FilterWidget // FilterWidget
}, },
data () { data() {
return { return {
speciesTypeList: { speciesTypeList: {
[TYPE_KEY.ALL]: '所有', [TYPE_KEY.ALL]: "所有",
[TYPE_KEY.PLANT]: '植物', [TYPE_KEY.PLANT]: "植物",
[TYPE_KEY.ANIMAL]: '动物', [TYPE_KEY.ANIMAL]: "动物",
[TYPE_KEY.DISEASE]: '微生物' [TYPE_KEY.DISEASE]: "微生物",
}, },
selectListShow: false, selectListShow: false,
// 搜索项 // 搜索项
name: '', name: "",
// 传入搜索项 // 传入搜索项
fullName: this.$route.query.name, fullName: this.$route.query.name,
speciesType: TYPE_KEY.ALL, speciesType: TYPE_KEY.ALL,
filterList: [ filterList: [
{ {
code: 'breedType', code: "breedType",
value: '繁殖方式', value: "繁殖方式",
children: [ children: [
{ {
code: '1', code: "1",
value: '有性繁殖' value: "有性繁殖",
}, },
{ {
code: '2', code: "2",
value: '无性繁殖' value: "无性繁殖",
} },
] ],
}, },
{ {
code: 'spreadType', code: "spreadType",
value: '传播方式', value: "传播方式",
children: [ children: [
{ {
code: '1', code: "1",
value: '根茎' value: "根茎",
}, },
{ {
code: '2', code: "2",
value: '种子' value: "种子",
} },
] ],
}, },
{ {
code: 'economyDanger', code: "economyDanger",
value: '经济危害', value: "经济危害",
children: [ children: [
{ {
code: '1', code: "1",
value: '农业' value: "农业",
}, },
{ {
code: '2', code: "2",
value: '林业' value: "林业",
}, },
{ {
code: '3', code: "3",
value: '牧业' value: "牧业",
}, },
{ {
code: '4', code: "4",
value: '渔业' value: "渔业",
}, },
{ {
code: '5', code: "5",
value: '其他' value: "其他",
} },
] ],
}, },
{ {
code: 'ecologyDanger', code: "ecologyDanger",
value: '生态危害', value: "生态危害",
children: [ children: [
{ {
code: '1', code: "1",
value: '植物' value: "植物",
}, },
{ {
code: '2', code: "2",
value: '动物' value: "动物",
}, },
{ {
code: '3', code: "3",
value: '人体' value: "人体",
}, },
{ {
code: '4', code: "4",
value: '人类活动' value: "人类活动",
}, },
{ {
code: '5', code: "5",
value: '生态危害' value: "生态危害",
}, },
{ {
code: '6', code: "6",
value: '环境危害' value: "环境危害",
} },
] ],
} },
], ],
data: [] data: [],
} };
},
props: {
},
mounted () {
},
computed: {
}, },
props: {},
mounted() {},
computed: {},
methods: { methods: {
change () { change() {
this.$refs.data.refresh() this.$refs.data.refresh();
}, },
checkSpeciesType (key) { checkSpeciesType(key) {
this.speciesType = key this.speciesType = key;
this.selectListShow = false this.selectListShow = false;
}, },
judge () { judge() {
this.$refs.ai.open() this.$refs.ai.open();
},
onSearchChange() {
this.fullName = this.name;
}, },
onSearchChange () {
this.fullName = this.name
}
}, },
watch: { watch: {
$route: { $route: {
handler (to) { handler(to) {
if (to.query.name) { if (to.query.name) {
this.name = to.query.name this.name = to.query.name;
} }
}, },
immediate: true immediate: true,
} },
} },
} };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.species-data{ .species-data {
width: 60%; width: 60%;
height: 100%; height: 100%;
margin: 20px auto; margin: 20px auto;
.data-filter{ .data-filter {
width: 100%; width: 100%;
.filter-name{ .filter-name {
height: 46px; height: 46px;
margin-bottom: 10px; margin-bottom: 10px;
i{ i {
font-size: 20px; font-size: 20px;
} }
} }
.selected-item{ .selected-item {
i{ i {
font-size: 16px; font-size: 16px;
} }
} }
} }
.data-main{ .data-main {
width: 98%; width: 98%;
margin: 0 auto; margin: 0 auto;
} }
......
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
</div> </div>
</div> </div>
<div class="after-search" slot="addonAfter"> <div class="after-search" slot="addonAfter">
<a-icon type="scan" style="margin-right:20px;" <!-- <a-icon type="scan" style="margin-right:20px;"
@click="judge"/> @click="judge"/> -->
<a-icon type="search" @click="onSearchChange" /> <a-icon type="search" @click="onSearchChange" />
</div> </div>
</a-input> </a-input>
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<div style="margin-right: 1vh"> <div style="margin-right: 1vh">
<div class="info-title">舆情监测点数量</div> <div class="info-title">舆情监测点数量</div>
<div class="info-value"> <div class="info-value">
{{ yuqingNum }} <!-- {{ yuqingNum }} -->
</div> </div>
</div> </div>
<a-switch v-model="otherLayerStatus1" /> <a-switch v-model="otherLayerStatus1" />
...@@ -116,19 +116,9 @@ export default { ...@@ -116,19 +116,9 @@ export default {
this.getList(); this.getList();
this.getIntrusionMsg(); this.getIntrusionMsg();
this.getSpeciesInvadeWaihaidiam();
// 同步入侵触发机制 // 同步入侵触发机制
let data = null;
switch (this.type) { this.$emit("onChange", { species: this.species, areaCode: "-1" });
case "invade":
data = { provinceCode: "-1" };
break;
case "spreadZh":
case "spreadGlobal":
data = "-1";
break;
}
this.$emit("onChange", { species: this.species, areaCode: data });
}, },
computed: { computed: {
// getSpeciesList() { // getSpeciesList() {
...@@ -225,10 +215,14 @@ export default { ...@@ -225,10 +215,14 @@ export default {
let arr = []; let arr = [];
let add = []; let add = [];
res.data.forEach((item) => { res.data.forEach((item) => {
add.push(JSON.stringify({ pcode: item.pcode, pname: item.pname })); if (item.pcode && item.pname) {
item.物种序号.split("、").forEach((i) => { add.push(JSON.stringify({ pcode: item.pcode, pname: item.pname }));
arr.push(i); }
}); if (item.物种序号) {
item.物种序号.split("、").forEach((i) => {
arr.push(i);
});
}
}); });
let arr1 = []; let arr1 = [];
r.data.forEach((i) => { r.data.forEach((i) => {
...@@ -254,62 +248,16 @@ export default { ...@@ -254,62 +248,16 @@ export default {
}); });
} }
this.list = arr1; this.list = arr1;
this.addList = [...new Set(add)].map((item) => { this.addList = [...new Set(add)]
return JSON.parse(item); .map((item) => {
}); return JSON.parse(item);
}, })
// 获取物种入侵详情 .sort((a, b) => {
async getIntrusionMsg() { return a.pcode - b.pcode;
const params = {}; });
if (this.species !== "-1") {
params.filter = ["=", "id", this.species];
}
const res = await this.$api.layer.query("species_invade_yuqing", params);
if (res) {
console.log(res, "resresresres");
this.addrDetail = res.data;
}
}, },
async getSpeciesInvadeWaihaidiam() {
const param = {
groupFields: ["pxzqmc", "pxzqdm"],
aggregates: [["pxzqdm", "count"]],
};
if (this.species !== "-1") {
param.filter = ["=", "id", this.species];
}
const res = await this.$api.layer.aggregation(
"species_invade_waihaidian",
param
);
if (res) {
this.waihaidianList = res.data;
}
},
onSpeciesChange() { onSpeciesChange() {
// this.addr = "-1";
// this.getIntrusionMsg();
// const { query, path } = this.$route;
// this.$router.push({
// path,
// query: Object.assign({}, query, { id: this.species }),
// });
// let data = null;
// switch (this.type) {
// case "invade":
// data = { provinceCode: "-1" };
// break;
// case "spreadZh":
// data = "-1";
// this.getSpeciesInvadeWaihaidiam();
// break;
// case "spreadGlobal":
// data = "-1";
// break;
// }
this.$emit("onChange", { species: this.species, areaCode: this.addr }); this.$emit("onChange", { species: this.species, areaCode: this.addr });
}, },
onAreaChange(e) { onAreaChange(e) {
...@@ -351,7 +299,6 @@ export default { ...@@ -351,7 +299,6 @@ export default {
const obj = val.find((item) => item.id === this.species); const obj = val.find((item) => item.id === this.species);
if (!obj) { if (!obj) {
this.species = "-1"; this.species = "-1";
this.getIntrusionMsg();
} }
}, },
addrVal(val) { addrVal(val) {
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment