第一版绿谷官网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

231 lines
6.2 KiB

<template>
<div>
<sen-nav />
<div class="inner">
<bread-crumb :arr="arr" />
</div>
<div>
<div class="search-background">
<div class="d-flex">
<div class="flex-3 flex-wrap">
<span class="ins-title">研究开发实验室</span>
<span
v-for="(item, index) in laboratory"
:key="index"
:class="item.isActive ? 'act-color' : ''"
class="ins-name"
@click="choose(index, 0)"
>
{{ item.name }}
</span>
</div>
<div class="flex-1 align-center">
<a-input-search class="item-search" v-model="LabIpt" placeholder="搜索实验室" enter-button="搜索" @search="searchLab" />
</div>
</div>
<div style="border-top: 1px solid rgba(0, 0, 0, 0.06)" class="flex-3 flex-wrap">
<div class="flex-3 flex-wrap">
<span class="ins-title">大型科研设施与仪器:</span>
<span
v-for="(item, index) in instrument"
:key="index"
:class="item.isActive ? 'act-color' : ''"
class="ins-name"
@click="choose(index, 1)"
>
{{ item.name }}
</span>
</div>
<div class="flex-1 align-center">
<a-input-search class="item-search" v-model="InsIpt" placeholder="搜索仪器" enter-button="搜索" @search="searchIns" />
</div>
</div>
</div>
</div>
<platform-list />
</div>
</template>
<script>
import { selModel } from 'config/api';
import PlatformList from 'components/PlatformList/PlatformList.vue';
import SenNav from './components/SenNav.vue';
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue';
import { mapMutations } from 'vuex';
export default {
name: 'Share',
components: { SenNav, PlatformList, BreadCrumb },
data() {
return {
str: '这是科技资源开放共享服务平台',
title: '科技资源开放共享服务平台',
typeOfPlatform: '创新平台',
arr: [
{ name: '创新平台', url: '/NewPlatform/NewCore' },
{ name: '创新资源平台', url: '/NewPlatform/News' },
{ name: '科技资源开放共享服务平台', url: '' },
],
LabIpt: '', // 实验室搜索框内容
laboratory: [], // 实验室
labList: [], // 实验室类型选择列表
InsIpt: '', // 仪器搜索框内容
instrument: [], // 仪器
insList: [], // 仪器类型选择列表
};
},
watch: {
LabIpt(val) {
const obj = {
content: this.LabIpt,
isBtn: 0,
};
this.setLabIpt(obj);
},
InsIpt(val) {
const obj = {
content: this.InsIpt,
isBtn: 0,
};
this.setInsIpt(obj);
},
},
created() {
const obj = {
content: '',
isBtn: 0,
};
this.setLabList([]);
this.setInsList([]);
this.setLabIpt(obj);
this.setInsIpt(obj);
this.getType(1);
this.getType(2);
},
methods: {
...mapMutations('home', ['setLabList', 'setInsList', 'setLabIpt', 'setInsIpt', 'setListState']),
async getType(num) {
try {
const params = { param: { model: num } };
const res = await selModel(params);
const { code, mst, data } = res.data;
if (code === 200) {
if (num === 1) {
this.instrument = data;
for (let i = 0; i < this.instrument.length; i++) {
this.instrument[i].isActive = false;
}
} else if (num === 2) {
this.laboratory = data;
for (let i = 0; i < this.laboratory.length; i++) {
this.laboratory[i].isActive = false;
}
}
}
} catch (error) {
console.log(error);
}
},
// 选中类型时触发
choose(index, num) {
const that = this;
if (num === 0) {
this.labList = [];
const { laboratory, instrument } = this;
for (let i = 0; i < instrument.length; i++) {
instrument[i].isActive = false;
}
this.setListState(0);
laboratory[index].isActive = !laboratory[index].isActive;
this.laboratory = [...laboratory];
for (let i = 0; i < laboratory.length; i++) {
if (laboratory[i].isActive) {
this.labList.push(laboratory[i].id);
}
}
this.setLabList(this.labList);
} else if (num === 1) {
this.insList = [];
const { laboratory, instrument } = this;
for (let i = 0; i < laboratory.length; i++) {
laboratory[i].isActive = false;
}
this.setListState(1);
instrument[index].isActive = !instrument[index].isActive;
this.instrument = [...instrument];
for (let i = 0; i < instrument.length; i++) {
if (instrument[i].isActive) {
this.insList.push(instrument[i].id);
}
}
this.setInsList(this.insList);
}
},
searchLab() {
const { instrument } = this;
for (let i = 0; i < instrument.length; i++) {
instrument[i].isActive = false;
}
this.instrument = [...instrument];
this.setListState(0);
this.InsIpt = '';
const obj = {
content: this.LabIpt,
isBtn: 1,
};
this.setLabIpt(obj);
},
searchIns() {
const { laboratory } = this;
for (let i = 0; i < laboratory.length; i++) {
laboratory[i].isActive = false;
}
this.laboratory = [...laboratory];
this.setListState(1);
this.LabIpt = '';
const obj = {
content: this.InsIpt,
isBtn: 1,
};
this.setInsIpt(obj);
},
},
};
</script>
<style lang="stylus" scoped>
.inner {
margin: 10px auto 15px;
}
.search-background {
background: rgba(0, 0, 0, 0.02);
border: 1px solid rgba(0, 0, 0, 0.06);
height: auto;
padding: 0 20px;
width: 82%;
margin: 40px auto;
line-height: 44px;
}
.item-search {
width: 100%;
height: 32px;
}
.ins-title {
font-size: 16px;
font-weight: bold;
color: rgba(0, 0, 0, 0.65);
}
.ins-name {
font-size: 16px;
color: rgba(0, 0, 0, 0.65);
padding: 0 10px;
cursor: pointer;
}
.act-color {
color: #13ACC4 !important;
}
</style>