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

This commit is contained in:
zyn
2023-12-18 16:31:54 +08:00
parent 04877e3299
commit d2dad52ffe
@@ -1,55 +1,65 @@
<template> <template>
<div class="standard-search"> <div class="standard-search">
<personal-center></personal-center> <personal-center />
<div class="search" style="margin: 20px 20px 0;"> <div class="search" style="margin: 20px 20px 0;">
<div
<div class="search-content" class="search-content"
@mouseenter="setShowAllSearch(true)" @mouseenter="setShowAllSearch(true)"
@mouseleave="setShowAllSearch(false)"> @mouseleave="setShowAllSearch(false)"
>
<div class="search-item"> <div class="search-item">
<div class="condition-item-title">检索方式</div> <div class="condition-item-title">检索方式</div>
<div class="search-item-content"> <div class="search-item-content">
<div <div
:class="searchForm.selectType === 'allTextSearch' ? 'selected' : ''" :class="searchForm.selectType === 'allTextSearch' ? 'selected' : ''"
@click="searchFormChange('selectType', 'allTextSearch')" @click="searchFormChange('selectType', 'allTextSearch')"
>全文检索</div> >
全文检索
</div>
<div <div
:class="searchForm.selectType === 'titleSearch' ? 'selected' : ''" :class="searchForm.selectType === 'titleSearch' ? 'selected' : ''"
@click="searchFormChange('selectType', 'titleSearch')" @click="searchFormChange('selectType', 'titleSearch')"
>标题检索</div> >
标题检索
</div> </div>
</div> </div>
<i class="icon el-icon-arrow-down" :class="{ 'icon-arrow': showAllSearch}"></i> </div>
<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"> <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-for="(item,key) in searchOptions">
<!-- 标准类别 --> <!-- 标准类别 -->
<template v-if="key === 'standSort'"> <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="condition-item-title">{{ item.title }}</div>
<div class="search-item-content"> <div class="search-item-content">
<div v-for="(option, index) in item.options.filter(i => i.type === searchForm.standType || i.type === 'all')" <div
v-for="option in item.options.filter(i => i.type === searchForm.standType || i.type === 'all')"
:key="option.value" :key="option.value"
:class="searchForm[key].split(',').indexOf(option.value) !== -1 ? 'selected' : ''" :class="searchForm[key].split(',').indexOf(option.value) !== -1 ? 'selected' : ''"
@click="searchFormChange(key, option.value)" @click="searchFormChange(key, option.value)"
>{{ option.label }}</div> >
{{ option.label }}
</div>
</div> </div>
</div> </div>
</template> </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="condition-item-title">{{ item.title }}</div>
<div class="search-item-content"> <div class="search-item-content">
<div v-for="(option, index) in item.options" <div
v-for="option in item.options"
:key="option.value" :key="option.value"
:class="searchForm[key].split(',').indexOf(option.value) !== -1 ? 'selected' : ''" :class="searchForm[key].split(',').indexOf(option.value) !== -1 ? 'selected' : ''"
@click="searchFormChange(key, option.value)" @click="searchFormChange(key, option.value)"
>{{ option.label }}</div> >
{{ option.label }}
</div>
</div> </div>
</div> </div>
</template> </template>
@@ -58,8 +68,8 @@
</div> </div>
<div class="search-input"> <div class="search-input">
<el-input placeholder="请输入查询条件" v-model="searchForm.selectValue" @keyup.enter.native="onSearch" clearable> <el-input v-model="searchForm.selectValue" placeholder="请输入查询条件" clearable @keyup.enter.native="onSearch">
<el-button slot="append" icon="el-icon-search" @click="onSearch"></el-button> <el-button slot="append" icon="el-icon-search" @click="onSearch" />
</el-input> </el-input>
</div> </div>
@@ -71,22 +81,21 @@
<div>首页</div> <div>首页</div>
</router-link> </router-link>
</div> </div>
</div> </div>
<div class="main"> <div class="main">
<loading :loading="loading">数据获取中</loading> <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> <template v-else>
<div style="height: calc(100% - 56px + 20px);overflow-y: auto;"> <div style="height: calc(100% - 56px + 20px);overflow-y: auto;">
<div v-for="(item,key) in list" :key="key" class="main-box"> <div v-for="(item,key) in list" :key="key" class="main-box">
<div class="main-box-title"> <div class="main-box-title">
<div class="left"> <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 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" v-html="item.title" @click="jumpDetails(item)"></span> <span style="cursor:pointer;" class="main-title" @click="jumpDetails(item)" v-html="item.title" />
</div> </div>
<span class="more" @click="checkDetail(item)">详情</span> <span class="more" @click="checkDetail(item)">详情</span>
</div> </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 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>
@@ -95,22 +104,24 @@
<pagination <pagination
:page="searchForm.page" :page="searchForm.page"
:total="total" :total="total"
style="border-radius: 24px;"
@pageChange="pageChange" @pageChange="pageChange"
@pageSizeChange="pageSizeChange" @pageSizeChange="pageSizeChange"
style="border-radius: 24px;"></pagination> />
</template> </template>
</div> </div>
<el-dialog <el-dialog
title="查看详情" title="查看详情"
:visible.sync="isShowDetail" :visible.sync="isShowDetail"
size="800px"> size="800px"
>
<loading :loading="detailLoading">数据获取中</loading> <loading :loading="detailLoading">数据获取中</loading>
<div style="height: 500px;overflow: auto;"> <div style="height: 500px;overflow: auto;">
<div v-html="detail.textContent" style="line-height: 20px;"></div> <div style="line-height: 20px;" v-html="detail.textContent" />
<br> <br>
<br> <br>
<div v-html="detail.textItems" style="line-height: 20px;"></div> <div style="line-height: 20px;" v-html="detail.textItems" />
</div> </div>
<div slot="footer"> <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>
@@ -122,7 +133,7 @@
<script> <script>
import PersonalCenter from '@/components/personalCenter/index.vue' import PersonalCenter from '@/components/personalCenter/index.vue'
export default { export default {
name: "index", name: 'Index',
components: { components: {
PersonalCenter PersonalCenter
}, },
@@ -207,7 +218,7 @@ export default {
CLLX: '', CLLX: '',
page: 1, page: 1,
pageSize: this.$store.getters.userInfo.configContent, pageSize: this.$store.getters.userInfo.configContent,
selectValue: '' selectValue: this.$route.params.searchValue || ''
}, },
total: 0, total: 0,
list: [], list: [],
@@ -312,7 +323,7 @@ export default {
pageType = 'FOREIGN_STAND' pageType = 'FOREIGN_STAND'
break break
} }
let routeUrl = this.$router.resolve({ const routeUrl = this.$router.resolve({
name, name,
params: { params: {
id: item.id, id: item.id,
@@ -331,12 +342,12 @@ export default {
// 标准类别 // 标准类别
if (res.data.STANDCLASSIFY) { if (res.data.STANDCLASSIFY) {
const data = res.data.STANDCLASSIFY const data = res.data.STANDCLASSIFY
const standVerify = ["GB","GB/T","QC/T","JT","JB","GA","GJB","HJ"]; const standVerify = [ 'GB', 'GB/T', 'QC/T', 'JT', 'JB', 'GA', 'GJB', 'HJ' ];
const bussstandVerify = ["ECE","EU","EC","EEC","ISO","IEC","GTR","CFR", const bussstandVerify = [ 'ECE', 'EU', 'EC', 'EEC', 'ISO', 'IEC', 'GTR', 'CFR',
"JASO","JIS","GSO","GOST","ΓOCT","TP","SASO","UAE","CONTRAN","DENATRAN", 'JASO', 'JIS', 'GSO', 'GOST', 'ΓOCT', 'TP', 'SASO', 'UAE', 'CONTRAN', 'DENATRAN',
"ABNT NBR","NBR","INMETRO","CONAMA","Normative Instruction","ADR"]; '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", 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"]; '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)) const standList = data.filter(item => standVerify.includes(item.label))
standList.forEach(item => item.type = 'stand') standList.forEach(item => item.type = 'stand')