fix(搜索中心): 带入首页填写的搜索条件

This commit is contained in:
zyn
2023-12-18 16:31:54 +08:00
parent 04877e3299
commit d2dad52ffe
@@ -1,55 +1,65 @@
<template>
<div class="standard-search">
<personal-center></personal-center>
<personal-center />
<div class="search" style="margin: 20px 20px 0;">
<div class="search-content"
@mouseenter="setShowAllSearch(true)"
@mouseleave="setShowAllSearch(false)">
<div
class="search-content"
@mouseenter="setShowAllSearch(true)"
@mouseleave="setShowAllSearch(false)"
>
<div class="search-item">
<div class="condition-item-title">检索方式</div>
<div class="search-item-content">
<div
:class="searchForm.selectType === 'allTextSearch' ? 'selected' : ''"
@click="searchFormChange('selectType', 'allTextSearch')"
>全文检索</div>
:class="searchForm.selectType === 'allTextSearch' ? 'selected' : ''"
@click="searchFormChange('selectType', 'allTextSearch')"
>
全文检索
</div>
<div
:class="searchForm.selectType === 'titleSearch' ? 'selected' : ''"
@click="searchFormChange('selectType', 'titleSearch')"
>标题检索</div>
:class="searchForm.selectType === 'titleSearch' ? 'selected' : ''"
@click="searchFormChange('selectType', 'titleSearch')"
>
标题检索
</div>
</div>
</div>
<i class="icon el-icon-arrow-down" :class="{ 'icon-arrow': showAllSearch}"></i>
<div style="height: 5px;width: 100%;background-color: transparent;position: absolute;bottom: -5px;left: 0"></div>
<i class="icon el-icon-arrow-down" :class="{ 'icon-arrow': showAllSearch}" />
<div style="height: 5px;width: 100%;background-color: transparent;position: absolute;bottom: -5px;left: 0" />
<transition name="fade">
<el-card class="box-card" v-show="showAllSearch">
<el-card v-show="showAllSearch" class="box-card">
<template v-for="(item,key) in searchOptions">
<!-- 标准类别 -->
<template v-if="key === 'standSort'">
<!-- 资源类型非全部时 根据标准类别显示对应标准类别 -->
<!-- 资源类型全部时隐藏标准类别 -->
<div v-if="searchForm.standType !== ''" class="search-item card-search-item" :key="key">
<div v-if="searchForm.standType !== ''" :key="key" class="search-item card-search-item">
<div class="condition-item-title">{{ item.title }}</div>
<div class="search-item-content">
<div v-for="(option, index) in item.options.filter(i => i.type === searchForm.standType || i.type === 'all')"
:key="option.value"
:class="searchForm[key].split(',').indexOf(option.value) !== -1 ? 'selected' : ''"
@click="searchFormChange(key, option.value)"
>{{ option.label }}</div>
<div
v-for="option in item.options.filter(i => i.type === searchForm.standType || i.type === 'all')"
:key="option.value"
:class="searchForm[key].split(',').indexOf(option.value) !== -1 ? 'selected' : ''"
@click="searchFormChange(key, option.value)"
>
{{ option.label }}
</div>
</div>
</div>
</template>
<div v-else class="search-item card-search-item" :key="key">
<div v-else :key="key" class="search-item card-search-item">
<div class="condition-item-title">{{ item.title }}</div>
<div class="search-item-content">
<div v-for="(option, index) in item.options"
:key="option.value"
:class="searchForm[key].split(',').indexOf(option.value) !== -1 ? 'selected' : ''"
@click="searchFormChange(key, option.value)"
>{{ option.label }}</div>
<div
v-for="option in item.options"
:key="option.value"
:class="searchForm[key].split(',').indexOf(option.value) !== -1 ? 'selected' : ''"
@click="searchFormChange(key, option.value)"
>
{{ option.label }}
</div>
</div>
</div>
</template>
@@ -58,8 +68,8 @@
</div>
<div class="search-input">
<el-input placeholder="请输入查询条件" v-model="searchForm.selectValue" @keyup.enter.native="onSearch" clearable>
<el-button slot="append" icon="el-icon-search" @click="onSearch"></el-button>
<el-input v-model="searchForm.selectValue" placeholder="请输入查询条件" clearable @keyup.enter.native="onSearch">
<el-button slot="append" icon="el-icon-search" @click="onSearch" />
</el-input>
</div>
@@ -71,49 +81,50 @@
<div>首页</div>
</router-link>
</div>
</div>
<div class="main">
<loading :loading="loading">数据获取中</loading>
<has-no-data tips="暂无查询结果" p-class="no-data-class" v-if="list.length === 0" />
<has-no-data v-if="list.length === 0" tips="暂无查询结果" p-class="no-data-class" />
<template v-else>
<div style="height: calc(100% - 56px + 20px);overflow-y: auto;">
<div v-for="(item,key) in list" :key="key" class="main-box">
<div class="main-box-title">
<div class="left">
<span v-html="item.indexType === 'stand' ? '国内标准法规' : (item.indexType === 'FOREIGN' ? '国外标准法规' : (item.indexType === 'laws' ? '国内外政策' : (item.indexType === 'bussstand' ? '企业标准' : (item.indexType === 'items' ? '数据化条目' : '动态&资料'))))" class="type-tip"></span>
<span style="cursor:pointer;" class="main-title" v-html="item.title" @click="jumpDetails(item)"></span>
<span class="type-tip" v-html="item.indexType === 'stand' ? '国内标准法规' : (item.indexType === 'FOREIGN' ? '国外标准法规' : (item.indexType === 'laws' ? '国内外政策' : (item.indexType === 'bussstand' ? '企业标准' : (item.indexType === 'items' ? '数据化条目' : '动态&资料'))))" />
<span style="cursor:pointer;" class="main-title" @click="jumpDetails(item)" v-html="item.title" />
</div>
<span class="more" @click="checkDetail(item)">详情</span>
</div>
<div class="main-content" v-html="item.textContent"></div>
<div class="main-content" v-html="item.textContent" />
<div v-if="item.indexType !== 'items' && item.indexType !== 'msgdyinfo'" class="time">
<div style="margin-right: 15px;">发布日期: {{ item.issue_time !== null && item.issue_time !== '' ? $moment(item.issue_time).format('YYYY-MM-DD') : '--' }} </div>
<div style="margin-right: 15px;">发布日期: {{ item.issue_time !== null && item.issue_time !== '' ? $moment(item.issue_time).format('YYYY-MM-DD') : '--' }} </div>
</div>
</div>
</div>
<pagination
:page="searchForm.page"
:total="total"
@pageChange="pageChange"
@pageSizeChange="pageSizeChange"
style="border-radius: 24px;"></pagination>
:page="searchForm.page"
:total="total"
style="border-radius: 24px;"
@pageChange="pageChange"
@pageSizeChange="pageSizeChange"
/>
</template>
</div>
<el-dialog
title="查看详情"
:visible.sync="isShowDetail"
size="800px">
title="查看详情"
:visible.sync="isShowDetail"
size="800px"
>
<loading :loading="detailLoading">数据获取中</loading>
<div style="height: 500px;overflow: auto;" >
<div v-html="detail.textContent" style="line-height: 20px;"></div>
<div style="height: 500px;overflow: auto;">
<div style="line-height: 20px;" v-html="detail.textContent" />
<br>
<br>
<div v-html="detail.textItems" style="line-height: 20px;"></div>
<div style="line-height: 20px;" v-html="detail.textItems" />
</div>
<div slot="footer">
<el-button class="common-button-default" size="mini" icon="el-icon-close" @click="() => {this.isShowDetail = false}">关闭</el-button>
<el-button class="common-button-default" size="mini" icon="el-icon-close" @click="() => { this.isShowDetail = false }">关闭</el-button>
</div>
</el-dialog>
</div>
@@ -122,11 +133,11 @@
<script>
import PersonalCenter from '@/components/personalCenter/index.vue'
export default {
name: "index",
name: 'Index',
components: {
PersonalCenter
},
data() {
data () {
const searchOptions = {
// selectType: {
// title: '检索方式',
@@ -207,7 +218,7 @@ export default {
CLLX: '',
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
selectValue: ''
selectValue: this.$route.params.searchValue || ''
},
total: 0,
list: [],
@@ -220,7 +231,7 @@ export default {
detailLoading: false
};
},
created() {
created () {
this.getDicTypeListCode()
this.getData()
},
@@ -246,8 +257,8 @@ export default {
this.searchForm[key] = value
} else if (key === 'standType') {
this.searchForm[key] = value;
['standSort', 'NYLXCLASS', 'CLLX'].forEach(item => {
this.searchForm[item] = ''
[ 'standSort', 'NYLXCLASS', 'CLLX' ].forEach(item => {
this.searchForm[item] = ''
})
} else {
if (value === '') {
@@ -296,23 +307,23 @@ export default {
})
},
jumpDetails (item) {
let name = '',pageType = ''
let name = '', pageType = ''
switch (item.indexType) {
case 'stand':
name = 'OtherStandardDetails'
pageType = 'INLAND_STAND'
break
// 企标
case 'bussstand':
name = 'OtherBussStandardDetails'
pageType = 'BUSINESS_STAND'
break
case 'FOREIGN':
name = 'OtherStandardDetails'
pageType = 'FOREIGN_STAND'
break
case 'stand':
name = 'OtherStandardDetails'
pageType = 'INLAND_STAND'
break
// 企标
case 'bussstand':
name = 'OtherBussStandardDetails'
pageType = 'BUSINESS_STAND'
break
case 'FOREIGN':
name = 'OtherStandardDetails'
pageType = 'FOREIGN_STAND'
break
}
let routeUrl = this.$router.resolve({
const routeUrl = this.$router.resolve({
name,
params: {
id: item.id,
@@ -325,18 +336,18 @@ export default {
this.$http._getData('sys/dictype/getDicTypeListCode', {}, {}).then(res => {
if (res.ok) {
// 能源类型
this.searchOptions.NYLXCLASS.options = [...this.searchOptions.NYLXCLASS.options, ...res.data.NYLXCLASS]
this.searchOptions.NYLXCLASS.options = [ ...this.searchOptions.NYLXCLASS.options, ...res.data.NYLXCLASS ]
// 适用车辆类型
this.searchOptions.CLLX.options = [...this.searchOptions.CLLX.options, ...res.data.ENERGYTYPES]
this.searchOptions.CLLX.options = [ ...this.searchOptions.CLLX.options, ...res.data.ENERGYTYPES ]
// 标准类别
if (res.data.STANDCLASSIFY) {
const data = res.data.STANDCLASSIFY
const standVerify = ["GB","GB/T","QC/T","JT","JB","GA","GJB","HJ"];
const bussstandVerify = ["ECE","EU","EC","EEC","ISO","IEC","GTR","CFR",
"JASO","JIS","GSO","GOST","ΓOCT","TP","SASO","UAE","CONTRAN","DENATRAN",
"ABNT NBR","NBR","INMETRO","CONAMA","Normative Instruction","ADR"];
const enterpriseVerify = ["Q/FT A","Q/FT B","Q/FT E","Q/FT F","Q/FT G","Q/FT M",
"Q/FT Q","Q/FT R","Q/FT S","Q/FT T","Q/FT V","Q/FT X","Q/FT Y","Q/FT Z","Q/QCBFC"];
const standVerify = [ 'GB', 'GB/T', 'QC/T', 'JT', 'JB', 'GA', 'GJB', 'HJ' ];
const bussstandVerify = [ 'ECE', 'EU', 'EC', 'EEC', 'ISO', 'IEC', 'GTR', 'CFR',
'JASO', 'JIS', 'GSO', 'GOST', 'ΓOCT', 'TP', 'SASO', 'UAE', 'CONTRAN', 'DENATRAN',
'ABNT NBR', 'NBR', 'INMETRO', 'CONAMA', 'Normative Instruction', 'ADR' ];
const enterpriseVerify = [ 'Q/FT A', 'Q/FT B', 'Q/FT E', 'Q/FT F', 'Q/FT G', 'Q/FT M',
'Q/FT Q', 'Q/FT R', 'Q/FT S', 'Q/FT T', 'Q/FT V', 'Q/FT X', 'Q/FT Y', 'Q/FT Z', 'Q/QCBFC' ];
// 国内
const standList = data.filter(item => standVerify.includes(item.label))
standList.forEach(item => item.type = 'stand')
@@ -347,7 +358,7 @@ export default {
const enterpriseList = data.filter(item => enterpriseVerify.includes(item.label))
enterpriseList.forEach(item => item.type = 'bussstand')
this.searchOptions.standSort.options = [...this.searchOptions.standSort.options, ...standList, ...bussstandList, ...enterpriseList]
this.searchOptions.standSort.options = [ ...this.searchOptions.standSort.options, ...standList, ...bussstandList, ...enterpriseList ]
}
}
})