up1
This commit is contained in:
59
src/api/search.js
Normal file
59
src/api/search.js
Normal file
@ -0,0 +1,59 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 一站搜
|
||||
export function search(params) {
|
||||
return request({
|
||||
url: '/mobile/search',
|
||||
method: 'post',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 添加收藏
|
||||
export function add(params) {
|
||||
return request({
|
||||
url: '/mobile/add',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 取消收藏
|
||||
export function cancel(params) {
|
||||
return request({
|
||||
url: '/mobile/delete',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 编辑政策的数据回显
|
||||
export function getPolicyInfo(params) {
|
||||
return request({
|
||||
url: '/policy/getPolicyInfo',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 编辑政策解读的数据回显
|
||||
export function getPolicyReadInfo(params) {
|
||||
return request({
|
||||
url: '/policy/getPolicyReadInfo',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 获取资讯数据回显
|
||||
export function getInfo(params) {
|
||||
return request({
|
||||
url: '/information/getInfo',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 获取企业需求数据回显
|
||||
export function getInfo2(params) {
|
||||
return request({
|
||||
url: '/enterprise/getInfo',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 获取科技成果数据回显
|
||||
export function getInfo3(params) {
|
||||
return request({
|
||||
url: '/science/getInfo',
|
||||
params
|
||||
});
|
||||
}
|
@ -25,6 +25,7 @@ import {
|
||||
download,
|
||||
handleTree
|
||||
} from '@/utils/ruoyi';
|
||||
import { formatRichText } from '@/utils/editor';
|
||||
import Pagination from '@/components/Pagination';
|
||||
//自定义表格工具扩展
|
||||
import RightToolbar from '@/components/RightToolbar';
|
||||
@ -37,6 +38,7 @@ Vue.prototype.selectDictLabel = selectDictLabel;
|
||||
Vue.prototype.selectDictLabels = selectDictLabels;
|
||||
Vue.prototype.download = download;
|
||||
Vue.prototype.handleTree = handleTree;
|
||||
Vue.prototype.formatRichText = formatRichText;
|
||||
|
||||
Vue.prototype.msgSuccess = function(msg) {
|
||||
this.$message({ showClose: true, message: msg, type: 'success' });
|
||||
|
@ -78,6 +78,11 @@ export const constantRoutes = [
|
||||
component: resolve => require(['@/views/login'], resolve),
|
||||
name: 'login'
|
||||
},
|
||||
{
|
||||
path: '/search',
|
||||
component: resolve => require(['@/views/search'], resolve),
|
||||
name: 'search'
|
||||
},
|
||||
{
|
||||
path: '/404',
|
||||
component: resolve => require(['@/views/error/404'], resolve),
|
||||
|
52
src/utils/editor.js
Normal file
52
src/utils/editor.js
Normal file
@ -0,0 +1,52 @@
|
||||
export function formatRichText(url) {
|
||||
let src = document.querySelectorAll('#text .ql-editor img');
|
||||
console.log(src);
|
||||
for (let i = 0; i < src.length; i++) {
|
||||
const string = src[i].getAttribute('src');
|
||||
const flag = string.includes('http://');
|
||||
if (!flag) src[i].setAttribute('src', url + string);
|
||||
}
|
||||
let src2 = document.querySelectorAll('#text .ql-editor a');
|
||||
for (let i = 0; i < src2.length; i++) {
|
||||
const string = src2[i].getAttribute('href');
|
||||
const flag = string.includes('http://');
|
||||
if (!flag) src2[i].setAttribute('href', url + string);
|
||||
}
|
||||
// var imgReg = /<img.*?(?:>|\/>)/gi;
|
||||
// var srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;
|
||||
// var arr = html.match(imgReg);
|
||||
// // console.log(arr);
|
||||
// for (let i = 0; i < arr.length; i++) {
|
||||
// let src = arr[i].match(srcReg);
|
||||
// //获取图片地址
|
||||
// console.log(html);
|
||||
// console.log(src[1]);
|
||||
// if (src[1]) {
|
||||
// var newContent = html.replace(
|
||||
// /\<img/gi,
|
||||
// `<img src="${url}${src[1]}"`
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
// return this.aaa(url, newContent);
|
||||
}
|
||||
// function aaa(url, html) {
|
||||
// console.log(url);
|
||||
// console.log(html);
|
||||
// var aReg = /<a.*?(?:>|\/>)/gi;
|
||||
// var hrefReg = /href=[\'\"]?([^\'\"]*)[\'\"]?/i;
|
||||
// var arr2 = html.match(aReg);
|
||||
// for (let i = 0; i < arr2.length; i++) {
|
||||
// let src = arr2[i].match(hrefReg);
|
||||
// //获取图片地址
|
||||
// if (src[1]) {
|
||||
// var newContent = html.replace(/\<a/gi, `<a href="${url}${src[1]}"`);
|
||||
// }
|
||||
// // 替换src
|
||||
// // if (src[0]) {
|
||||
// // var t = src[0].replace(/src/i, 'href');
|
||||
// // console.log(t);
|
||||
// // }
|
||||
// }
|
||||
// return newContent;
|
||||
// }
|
0
src/views/components/dialog/index.vue
Normal file
0
src/views/components/dialog/index.vue
Normal file
@ -66,11 +66,11 @@
|
||||
></el-tab-pane>
|
||||
<el-tab-pane label="公告" name="1415157026115424256"></el-tab-pane>
|
||||
<el-tab-pane label="其他" name="1415157049267982336"></el-tab-pane>
|
||||
<div class="banner_r_list" v-for="item in 5" :key="item">
|
||||
<div class="text_18_333 pointer">
|
||||
政策法规合肥市推动经济高速发展的情况,合肥市就是垃圾了时间伏拉夫刚打色无法沙发上
|
||||
<div style="min-height:290px">
|
||||
<div class="banner_r_list" v-for="item in list" :key="item.id">
|
||||
<div class="text_18_333 pointer">{{ item.title }}</div>
|
||||
<span>{{ parseTime(item.listDate, '{m}-{d}') }}</span>
|
||||
</div>
|
||||
<span>07-09</span>
|
||||
</div>
|
||||
</el-tabs>
|
||||
<!-- 资讯快报 -->
|
||||
|
@ -41,7 +41,7 @@
|
||||
<el-radio-group v-model="queryParams.radio1_1" size="medium">
|
||||
<el-radio-button
|
||||
:label="item.id"
|
||||
v-for="item in levelList2"
|
||||
v-for="item in levelList_2"
|
||||
:key="item.id"
|
||||
>
|
||||
{{ item.name }}
|
||||
@ -52,8 +52,12 @@
|
||||
<span class="text_col">归口:</span>
|
||||
<el-radio-group v-model="queryParams.radio2" size="medium">
|
||||
<el-radio-button label="">不限</el-radio-button>
|
||||
<el-radio-button :label="item" v-for="item in 10" :key="item">
|
||||
{{ item }}
|
||||
<el-radio-button
|
||||
:label="item.value"
|
||||
v-for="item in attributeOptions"
|
||||
:key="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
@ -145,7 +149,26 @@ export default {
|
||||
name: '合肥区县'
|
||||
}
|
||||
],
|
||||
levelList2: []
|
||||
levelList_2: [],
|
||||
// 归口选项
|
||||
attributeOptions: [
|
||||
{
|
||||
value: 'KJJ',
|
||||
label: '科技'
|
||||
},
|
||||
{
|
||||
value: 'JXJ',
|
||||
label: '经信'
|
||||
},
|
||||
{
|
||||
value: 'FGW',
|
||||
label: '发改'
|
||||
},
|
||||
{
|
||||
value: 'OTHER',
|
||||
label: '其他'
|
||||
}
|
||||
]
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -156,12 +179,12 @@ export default {
|
||||
console.log(a, b);
|
||||
if (a == 2) {
|
||||
getDictListByStatus({ type: 5 }).then(({ data }) => {
|
||||
this.levelList2 = data;
|
||||
this.levelList_2 = data;
|
||||
this.queryParams.radio1_1 = '1417717740679987200';
|
||||
});
|
||||
} else if (a == 3) {
|
||||
getDictListByStatus({ type: 6 }).then(({ data }) => {
|
||||
this.levelList2 = data;
|
||||
this.levelList_2 = data;
|
||||
this.queryParams.radio1_1 = '1417719159088742400';
|
||||
});
|
||||
}
|
||||
|
@ -47,8 +47,17 @@
|
||||
<div class="img2_box">
|
||||
<img src="@/assets/image/02.png" alt="" />
|
||||
<div class="search">
|
||||
<el-input v-model="input" placeholder="请输入搜索关键字"></el-input>
|
||||
<el-button type="warning">一站搜</el-button>
|
||||
<el-input
|
||||
v-model.trim="input"
|
||||
placeholder="请输入搜索关键字"
|
||||
></el-input>
|
||||
<el-button type="warning" @click="toSearch">一站搜</el-button>
|
||||
<!-- <router-link
|
||||
target="_blank"
|
||||
:to="{ path: '/search', query: { val: input } }"
|
||||
>
|
||||
<el-button type="warning">一站搜</el-button>
|
||||
</router-link> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -176,6 +185,15 @@ export default {
|
||||
...mapGetters(['avatar'])
|
||||
},
|
||||
methods: {
|
||||
toSearch() {
|
||||
if (!this.input.length) return this.msgError('请输入搜索关键字');
|
||||
this.$router.push({ path: '/search', query: { val: this.input } });
|
||||
// let routerJump = this.$router.resolve({
|
||||
// path: '/search',
|
||||
// query: { val: this.input }
|
||||
// });
|
||||
// window.open(routerJump.href, '_blank');
|
||||
},
|
||||
handlePage() {
|
||||
this.$router.push({ path: '/login' });
|
||||
},
|
||||
|
205
src/views/search.vue
Normal file
205
src/views/search.vue
Normal file
@ -0,0 +1,205 @@
|
||||
<template>
|
||||
<div class="search_page">
|
||||
<div class="content">
|
||||
<div class="item" v-for="(value, key, index) in list" :key="index">
|
||||
<!-- 政策 -->
|
||||
<div>
|
||||
<!-- <el-tag effect="dark" v-if="key == 'policy'">政策</el-tag> -->
|
||||
<span class="tag" v-if="key == 'policy'">政策</span>
|
||||
<span class="tag" v-else-if="key == 'policyRead'">政策解读</span>
|
||||
<span class="tag" v-else-if="key == 'information'">资讯快报</span>
|
||||
<span class="tag" v-else-if="key == 'companyNeed'">企业需求</span>
|
||||
<span class="tag" v-else-if="key == 'scienceResult'">科学成功</span>
|
||||
<el-divider></el-divider>
|
||||
<div class="item_i" v-for="(item, index2) in value" :key="index2">
|
||||
<div>
|
||||
<h4 class="pointer" @click="handleItem(key, item.id)">
|
||||
{{ item.title }}
|
||||
</h4>
|
||||
<div class="info" v-if="key == 'policy' || key == 'policyRead'">
|
||||
<div>来源:{{ item.source }}</div>
|
||||
<div>发布:{{ item.listDate }}</div>
|
||||
</div>
|
||||
<div
|
||||
class="info"
|
||||
v-else-if="key == 'companyNeed' || key == 'scienceResult'"
|
||||
>
|
||||
<div>
|
||||
<el-tag type="warning" size="mini" effect="dark">
|
||||
{{ item.fieldName }}
|
||||
</el-tag>
|
||||
<el-tag type="warning" size="mini" effect="dark">
|
||||
{{ item.typeName || item.labelName }}
|
||||
</el-tag>
|
||||
</div>
|
||||
<div>发布:{{ parseTime(item.createTime, '{y}-{m}-{d}') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-divider></el-divider>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog title="" :visible.sync="dialogVisible" width="70%">
|
||||
<h2>{{ formData.title }}</h2>
|
||||
<div class="info" v-if="type != 'information'">
|
||||
<span v-if="type != 'companyNeed' && type != 'scienceResult'"
|
||||
>来源:{{ formData.source }}</span
|
||||
>
|
||||
<span v-if="type == 'companyNeed'">价格:{{ formData.price }}</span>
|
||||
<el-image
|
||||
v-if="type == 'scienceResult'"
|
||||
style="width: 100px; height: 100px"
|
||||
:src="formData.picList ? formData.picList[0] : ''"
|
||||
fit="cover"
|
||||
:preview-src-list="formData.picList"
|
||||
></el-image>
|
||||
<span
|
||||
>发布:{{
|
||||
formData.listDate || parseTime(formData.createTime, '{y}-{m}-{d}')
|
||||
}}</span
|
||||
>
|
||||
<span v-if="token && type == 'policy'">
|
||||
<el-button type="primary" size="mini">
|
||||
<i class="el-icon-star-on"></i><span>收藏</span>
|
||||
</el-button>
|
||||
<el-button type="info" size="mini">
|
||||
<i class="el-icon-star-on"></i><span>取消收藏</span>
|
||||
</el-button>
|
||||
</span>
|
||||
</div>
|
||||
<!-- <div v-html="formData.text"></div> -->
|
||||
<div id="text">
|
||||
<editor v-model="formData.text" :min-height="192" />
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import Editor from '@/components/Editor';
|
||||
import {
|
||||
search,
|
||||
getPolicyInfo,
|
||||
getPolicyReadInfo,
|
||||
getInfo,
|
||||
getInfo2,
|
||||
getInfo3,
|
||||
add,
|
||||
cancel
|
||||
} from '@/api/search';
|
||||
export default {
|
||||
components: {
|
||||
Editor
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
list: {},
|
||||
dialogVisible: false,
|
||||
formData: {},
|
||||
type: ''
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['token'])
|
||||
},
|
||||
watch: {
|
||||
dialogVisible(a, b) {
|
||||
if (!a) this.formData = {};
|
||||
},
|
||||
formData: {
|
||||
handler: function() {
|
||||
this.$nextTick(() => {
|
||||
this.formatRichText(this.formData.downloadUrl);
|
||||
});
|
||||
}
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
methods: {
|
||||
handleItem(key, id) {
|
||||
this.type = key;
|
||||
this.dialogVisible = true;
|
||||
if (key == 'policy') {
|
||||
// 政策
|
||||
getPolicyInfo({ policyId: id }).then(({ data }) => {
|
||||
this.formData = data;
|
||||
});
|
||||
} else if (key == 'policyRead') {
|
||||
// 政策解读
|
||||
getPolicyReadInfo({ readId: id }).then(({ data }) => {
|
||||
this.formData = data;
|
||||
});
|
||||
} else if (key == 'information') {
|
||||
// 资讯快报
|
||||
getInfo({ id }).then(({ data }) => {
|
||||
this.formData = data;
|
||||
});
|
||||
} else if (key == 'companyNeed') {
|
||||
// 企业需求
|
||||
getInfo2({ id }).then(({ data }) => {
|
||||
this.formData = data;
|
||||
});
|
||||
} else if (key == 'scienceResult') {
|
||||
// 科学成功
|
||||
getInfo3({ id }).then(({ data }) => {
|
||||
this.formData = data;
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
let { val: param } = this.$route.query;
|
||||
search({ param }).then(({ data }) => {
|
||||
this.list = data;
|
||||
});
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.search_page {
|
||||
/deep/.el-dialog__body {
|
||||
padding-top: 0;
|
||||
}
|
||||
.el-dialog {
|
||||
.info {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
#text {
|
||||
margin-top: 30px;
|
||||
/deep/.ql-toolbar {
|
||||
display: none;
|
||||
}
|
||||
/deep/.editor {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 20px 30px;
|
||||
.item {
|
||||
margin-bottom: 40px;
|
||||
.tag {
|
||||
background-color: #1890ff;
|
||||
color: #fff;
|
||||
font-size: 18px;
|
||||
padding: 10px 25px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
.item_i {
|
||||
.info {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
.el-tag {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
Reference in New Issue
Block a user