Commit 81ed31db by liudx

联调科创能力、首页科创榜单、专利联想、企业联想

parent 0926c470
No preview for this file type
No preview for this file type
......@@ -29,6 +29,17 @@ export const jointApplication = p=>get('/api/enterprise/jointApplication/'+p.id)
export const patentPurchase = p=>get('/api/enterprise/patentPurchase/'+p.id)
//首页-企业技术合作榜单
export const technicalCooperation = p =>get('/api/enterprise/technicalCooperation',{})
//首页-企业科创能力榜单
export const scientificEvaluationTop = p =>get('/api/enterprise/scientificEvaluationTop',{})
//企业详情 科创能力评价
export const scientificEvaluation = p =>get('/api/enterprise/scientificEvaluation/'+p.id)
//企业搜索联想
export const enterpriseLenovo = p=>get('/api/enterprise/enterpriseLenovo?keyword='+p.keyword)
//专利搜索联想
export const patentLenovo = p=>get('/api/patent/patentLenovo?keyword='+p.keyword)
......
......@@ -14,9 +14,17 @@
<a-empty></a-empty>
</template>
<template v-else>
其中,与<span class="color">{{ joint.max_name_apply }}</span
其中,与<span
class="color"
v-for="(item, index) in joint.max_list"
:key="item.max_name"
>{{
index == joint.max_list.length - 1
? item.max_name
: item.max_name + ","
}}</span
>最为密切,合作次数为<span class="color">{{
joint.max_value_apply
joint.max_list[0].max_value
}}</span
>次,与该企业合作次数最多的申请人如下图所示。
</template>
......
<template>
<!-- 头部搜索关键词字段 -->
<div class="header_con">
<a-input v-model:value="keyword" :bordered="false">
<a-input
v-model:value="keyword"
:bordered="false"
allowClear
@input="onInput"
>
<template #addonBefore>
<a-select v-model:value="type" class="type">
<a-select-option value="企业">查企业</a-select-option>
......@@ -18,13 +23,31 @@
</div>
</template>
</a-input>
<!-- 联想搜索 -->
<div class="search_result" v-show="search_result_show">
<div
class="search_result_item"
v-for="(item, index) in search_result"
:key="item"
>
<div v-html="item" @click="openDetails"></div>
<div style="position: relative">
<div
v-if="company_cate == 'company_name'"
style="cursor: pointer"
v-html="item.company_name"
@click="lenovnoCompanyDetails(item)"
></div>
<div
v-else
style="cursor: pointer"
v-html="item.company_name"
@click="lenovnoCompanyDetails(item)"
></div>
<a-tag class="cate" color="blue" v-if="company_cate == 'company_name'"
>公司名称</a-tag
>
<a-tag class="cate" color="blue" v-else>法人信息匹配</a-tag>
</div>
</div>
</div>
</div>
......@@ -225,6 +248,7 @@ import {
enterpriseList,
industryType,
enterpriseSelect,
enterpriseLenovo,
} from "../../utils/indexApi.js";
import "dayjs/locale/zh-cn";
import zh_CN from "ant-design-vue/lib/locale-provider/zh_CN";
......@@ -234,8 +258,9 @@ export default {
name: "company",
data() {
return {
search_result_show:false,
search_result_show: false,
zh_CN,
search_result:[],
total: 0,
currentPage: 1,
keyword: "",
......@@ -544,30 +569,35 @@ export default {
});
},
onsearch() {
this.keyword ? (this.filter = [this.keyword]) : (this.filter = []);
this.getCompanyList(this.keyword);
},
//联想搜索
onInput() {
if (this.keyword == "") {
enterpriseLenovo({ keyword: this.keyword }).then((res) => {
if (res.code == 0) {
this.search_result = [];
this.search_result_show = true;
this.company_cate = res.data.name_or_legal;
this.search_result = JSON.parse(JSON.stringify(res.data.list));
// this.search_result = res.data.list;
console.log(this.search_result)
if (this.search_result.length == 0) {
this.search_result_show = false;
}
} else {
this.search_result_show = true;
this.search_result = [
"山煤国际能源集团股份有限公司1",
"山煤国际能源集团股份有限公司2",
"山煤国际能源集团股份有限公司3",
];
this.search_result.map((item, index) => {
if (this.keyword) {
const reg = new RegExp(this.keyword, "g"); // 动态正则表达式
this.search_result[index] = this.search_result[index].replace(
reg,
`<span style="color: #ed4014">${this.keyword}</span>`
);
console.log(this.search_result[index]);
this.search_result_show = false;
}
});
}
},
//从联想结果打开公司页面
lenovnoCompanyDetails(item) {
this.$router.push({
path: "/companyDetails",
query: {
id: item.mysql_id,
},
});
},
},
created() {
......@@ -639,7 +669,7 @@ export default {
}
:deep(.ant-input) {
border-color: transparent;
padding-top: 10px;
padding-top: 4px;
}
:deep(.ant-input-group-addon:first-child) {
border-color: transparent;
......@@ -783,4 +813,12 @@ export default {
}
}
}
.cate {
right: 2%;
position: absolute;
top: 10%;
}
:deep(b) {
color: rgba(191, 36, 40, 1);
}
</style>
......@@ -6,11 +6,14 @@
<div class="company_con1" id="Ability">
<h2 class="title">科创能力分析</h2>
<div style="display: flex; position: relative">
<div style="width: 50%;">
<EchartsCon
:option="option1"
:id="'echartsraodar'"
class="echarts"
></EchartsCon>
</div>
<div style="width: 50%; position: relative">
<EchartsCon :option="option2" :id="'echartsscatter'"></EchartsCon>
<a-popover title="科创能力分析指标">
......@@ -68,29 +71,39 @@ export default {
},
data() {
return {
option1: null,
option2: null,
hover: false,
con: "",
};
},
mounted() {
this.getOption1();
props: {
technologyData: Object,
},
beforeMount() {
this.init()
},
created() {
this.getOption2();
this.technology = this.$props.technologyData;
console.log()
},
methods: {
init(){
this.getOption1();
this.getOption2();
},
handleAnchorClick(e,link){
e.preventDefault();
},
getOption1() {
let chart = echarts.init(document.getElementById("echartsraodar"));
let option1 = {
this.option1 = {
tooltip: {
trigger: "item",
// formatter: function (params) {
// console.log(params);
// },
},
legend:{
show:true,
bottom:10
},
radar: [
{
......@@ -122,7 +135,8 @@ export default {
symbol: 'none',
data: [
{
value: [20, 10, 25],
// value: [20, 10, 25],
value:[this.technology.company_competitiveness_avg,this.technology.technical_quality_avg,this.technology.technical_volume_avg],
name: "均值",
areaStyle: {
......@@ -143,7 +157,8 @@ export default {
symbol: 'none',
data: [
{
value: [10, 20, 10],
// value: [10, 15, 15],
value:[this.technology.company_competitiveness,this.technology.technical_quality,this.technology.technical_volume],
name: "科创能力分值",
areaStyle: {
......@@ -160,33 +175,8 @@ export default {
},
],
};
chart.setOption(option1);
},
getOption2() {
var data = [
{
name: "技术体量",
value: 30,
},
{
name: "技术质量",
value: 30,
},
{
name: "公司竞争力",
value: 30,
},
]; //已排序好的数组
var ydata = [];
for (var i = 0; i < data.length; i++) {
ydata.push(data[i].name);
}
var datalength = [];
for (var i = 0; i < data.length; i++) {
datalength.push(0);
}
this.option2 = {
tooltip: {
formatter: "{a} <br/>{b} : {c}",
......@@ -210,7 +200,8 @@ export default {
},
data: [
{
value: 50,
// value:50,
value: this.technology.total_score,
name: "科创能力总分值",
},
],
......
......@@ -19,13 +19,13 @@
>查企业</span
>
</div>
<div class="search">
<div class="search" v-if="tab_id == 1">
<a-input-search
v-model:value="searchValue"
placeholder="请输入关键词"
@search="onSearch"
@input="onInput(tab_id)"
>
<!-- @input="onInput" -->
<template #enterButton>
<img
style="padding-right: 5px"
......@@ -40,7 +40,70 @@
v-for="(item, index) in search_result"
:key="item"
>
<div v-html="item" @click="openDetails"></div>
<div style="position: relative">
<div
v-if="patent_cate == 'title'"
style="cursor: pointer"
v-html="item.title"
@click="lenovnoPatentDetails(item)"
></div>
<div
v-else
style="cursor: pointer"
v-html="item.gkh"
@click="lenovnoPatentDetails(item)"
></div>
<a-tag class="cate" color="blue" v-if="patent_cate == 'title'"
>专利名称</a-tag
>
<a-tag class="cate" color="blue" v-else>专利号</a-tag>
</div>
</div>
</div>
</div>
<div class="search" v-else>
<a-input-search
v-model:value="searchValue"
placeholder="请输入关键词"
@search="onSearch"
@input="onInput(tab_id)"
>
<template #enterButton>
<img
style="padding-right: 5px"
src="@/static/home/index/icon-search.png"
alt=""
/>搜索
</template>
</a-input-search>
<!-- 联想搜索 -->
<div class="search_result" v-show="search_result_show">
<div
class="search_result_item"
v-for="(item, index) in search_result"
:key="item"
>
<div style="position: relative">
<div
v-if="company_cate == 'company_name'"
style="cursor: pointer"
v-html="item.company_name"
@click="lenovnoCompanyDetails(item)"
></div>
<div
v-else
style="cursor: pointer"
v-html="item.company_name"
@click="lenovnoCompanyDetails(item)"
></div>
<a-tag
class="cate"
color="blue"
v-if="company_cate == 'company_name'"
>公司名称</a-tag
>
<a-tag class="cate" color="blue" v-else>法人信息匹配</a-tag>
</div>
</div>
</div>
</div>
......@@ -160,24 +223,27 @@
</template>
<script>
import { followList, userBrowse } from "../../utils/userAPI";
import { technicalCooperation } from "../../utils/indexApi";
import {
technicalCooperation,
scientificEvaluationTop,
enterpriseLenovo,
patentLenovo,
} from "../../utils/indexApi";
export default {
name: "home",
data() {
return {
tab_id: "1",
patent_cate: "",
company_cate: "",
search_result_show: false,
searchValue: "",
followList: [],
historyList: [],
innovateList: [],
scientificInnovation:[],
search_result: [
"山煤国际能源集团股份有限公司1",
"山煤国际能源集团股份有限公司2",
"山煤国际能源集团股份有限公司3",
],
scientificInnovation: [],
search_result: [],
};
},
components: {},
......@@ -187,6 +253,7 @@ export default {
this.getFollow();
this.getHistory();
this.getTechnicalCooperation();
this.getScientificEvaluationTop();
},
getFollow() {
followList({
......@@ -220,6 +287,14 @@ export default {
}
});
},
//获取科创能能力榜单
getScientificEvaluationTop() {
scientificEvaluationTop().then((res) => {
if (res.code == 0) {
this.scientificInnovation = res.data;
}
});
},
//打开历史记录
openHistory() {
this.$router.push({
......@@ -253,8 +328,26 @@ export default {
});
}
},
//从联想结果打开专利页面
lenovnoPatentDetails(item) {
this.$router.push({
path: "/patentDetails",
query: {
id: item.mysql_id,
},
});
},
//从联想结果打开公司页面
lenovnoCompanyDetails(item) {
this.$router.push({
path: "/companyDetails",
query: {
id: item.mysql_id,
},
});
},
//打开企业技术/科创详情页面
openCompany(item){
openCompany(item) {
this.$router.push({
path: "/companyDetails",
query: {
......@@ -303,25 +396,34 @@ export default {
}
},
//联想搜索
onInput() {
if (this.searchValue == "") {
onInput(tab_id) {
//专利联想搜索
if (tab_id == 1) {
patentLenovo({ keyword: this.searchValue }).then((res) => {
if (res.code == 0) {
this.search_result_show = true;
this.patent_cate = res.data.title_or_gkh;
this.search_result = res.data.list;
if (this.search_result.length == 0) {
this.search_result_show = false;
}
} else {
this.search_result_show = false;
}
});
// }
} else {
this.search_result_show = true;
this.search_result = [
"山煤国际能源集团股份有限公司1",
"山煤国际能源集团股份有限公司2",
"山煤国际能源集团股份有限公司3",
];
this.search_result.map((item, index) => {
if (this.searchValue) {
console.log(this.searchValue);
const reg = new RegExp(this.searchValue, "g"); // 动态正则表达式
this.search_result[index] = this.search_result[index].replace(
reg,
`<span style="color: #ed4014">${this.searchValue}</span>`
);
console.log(this.search_result[index]);
enterpriseLenovo({ keyword: this.searchValue }).then((res) => {
if (res.code == 0) {
this.search_result_show = true;
this.company_cate = res.data.name_or_legal;
this.search_result = res.data.list;
if (this.search_result.length == 0) {
this.search_result_show = false;
}
} else {
this.search_result_show = false;
}
});
}
......@@ -526,4 +628,12 @@ export default {
}
}
}
:deep(b) {
color: rgba(191, 36, 40, 1);
}
.cate {
right: 2%;
position: absolute;
top: 10%;
}
</style>
<template>
<!-- 头部搜索关键词字段 -->
<div class="header_con">
<a-input v-model:value="keyword" :bordered="false" >
<a-input
v-model:value="keyword"
:bordered="false"
allowClear
@input="onInput"
>
<template #addonBefore>
<a-select v-model:value="type" class="type">
<a-select-option value="企业">查企业</a-select-option>
......@@ -18,13 +23,31 @@
</div>
</template>
</a-input>
<!-- 联想搜索 -->
<div class="search_result" v-show="search_result_show">
<div
class="search_result_item"
v-for="(item, index) in search_result"
:key="item"
>
<div v-html="item" @click="openDetails"></div>
<div style="position: relative">
<div
v-if="patent_cate == 'title'"
style="cursor: pointer"
v-html="item.title"
@click="lenovnoPatentDetails(item)"
></div>
<div
v-else
style="cursor: pointer"
v-html="item.gkh"
@click="lenovnoPatentDetails(item)"
></div>
<a-tag class="cate" color="blue" v-if="patent_cate == 'title'"
>专利名称</a-tag
>
<a-tag class="cate" color="blue" v-else>专利号</a-tag>
</div>
</div>
</div>
</div>
......@@ -126,7 +149,11 @@
<router-view></router-view>
</template>
<script>
import { patents, patentselect } from "../../utils/indexApi";
import {
patents,
patentselect,
patentLenovo,
} from "../../utils/indexApi";
import dayjs from "dayjs";
import "dayjs/locale/zh-cn";
import zh_CN from "ant-design-vue/lib/locale-provider/zh_CN";
......@@ -139,11 +166,7 @@ export default {
return {
zh_CN,
search_result_show: false,
search_result: [
"山煤国际能源集团股份有限公司1",
"山煤国际能源集团股份有限公司2",
"山煤国际能源集团股份有限公司3",
],
search_result: [],
type: "",
currentPage: 1,
value1: [],
......@@ -171,21 +194,21 @@ export default {
title: "专利号",
dataIndex: "gkh",
key: "gkh",
width:180
width: 180,
},
{
title: "专利标题",
dataIndex: "title",
key: "title",
ellipsis: true,
width:240
width: 240,
},
{
title: "申请人",
dataIndex: "zlr",
key: "zlr",
ellipsis: true,
width:180
width: 180,
},
{
title: "公开日",
......@@ -226,6 +249,7 @@ export default {
});
},
onsearch() {
this.keyword ? (this.filter = [this.keyword]) : (this.filter = []);
this.getList(this.keyword);
},
//改变页码
......@@ -348,27 +372,29 @@ export default {
},
//联想搜索
onInput() {
if (this.keyword == "") {
patentLenovo({ keyword: this.keyword }).then((res) => {
if (res.code == 0) {
this.search_result_show = true;
this.patent_cate = res.data.title_or_gkh;
this.search_result = res.data.list;
if (this.search_result.length == 0) {
this.search_result_show = false;
}
} else {
this.search_result_show = true;
this.search_result = [
"山煤国际能源集团股份有限公司1",
"山煤国际能源集团股份有限公司2",
"山煤国际能源集团股份有限公司3",
];
this.search_result.map((item, index) => {
if (this.keyword) {
const reg = new RegExp(this.keyword, "g"); // 动态正则表达式
this.search_result[index] = this.search_result[index].replace(
reg,
`<span style="color: #ed4014">${this.keyword}</span>`
);
console.log(this.search_result[index]);
this.search_result_show = false;
}
});
}
},
//从联想结果打开专利页面
lenovnoPatentDetails(item) {
this.$router.push({
path: "/patentDetails",
query: {
id: item.mysql_id,
},
});
},
},
watch: {
type: function (newV, oldV) {
......@@ -381,12 +407,13 @@ export default {
},
},
created() {
this.type = "专利";
this.keyword = this.$route.query.keyword;
if (!this.keyword && sessionStorage.getItem("searchzl") == "") {
this.getList(this.keyword);
this.type = "专利";
},
beforeMount() {
}
//历史记录
this.currentPage = sessionStorage.getItem("currentpagezl");
if (sessionStorage.getItem("searchzl")) {
let searchValue = JSON.parse(sessionStorage.getItem("searchzl"));
......@@ -398,6 +425,7 @@ export default {
this.Filter();
}
},
beforeMount() {},
computed: {},
};
</script>
......@@ -429,7 +457,7 @@ export default {
}
:deep(.ant-input) {
border-color: transparent;
padding-top: 10px;
padding-top: 5px;
}
:deep(.ant-input-group-addon:first-child) {
border-color: transparent;
......@@ -520,4 +548,12 @@ export default {
:deep(.ant-table-tbody) {
cursor: pointer;
}
.cate {
right: 2%;
position: absolute;
top: 10%;
}
:deep(b) {
color: rgba(191, 36, 40, 1);
}
</style>
......@@ -252,7 +252,7 @@
class="card_title"
@click="openCompany(item.id, item.company_name)"
>
{{ item.company_name }}
<div v-html="item.company_name"></div>
</div>
<a-tag class="tags" color="#56CA95">{{ item.status }}</a-tag>
<a-tag
......@@ -297,9 +297,9 @@
label="专利信息"
v-if="item.patents.length > 3"
>
{{ item.patents[0] }}<br />
{{ item.patents[1] }}<br />
{{ item.patents[2] }}
<div v-html="item.patents[0]"></div>
<div v-html="item.patents[1]"></div>
<div v-html="item.patents[2]"></div>
</a-descriptions-item>
<a-descriptions-item
:span="3"
......@@ -310,7 +310,7 @@
</a-descriptions-item>
<a-descriptions-item :span="3" label="专利信息" v-else>
<template v-for="patent in item.patents">
{{ patent }}<br />
<div v-html="patent"></div>
</template>
</a-descriptions-item>
<a-descriptions-item :span="3" label="经营范围">
......@@ -661,6 +661,15 @@ export default {
""
);
});
item.patents_clone = [...item.patents];
item.patents_clone.forEach((it, index) => {
item.patents_clone[index] = it.replace(/<[^<>]+>/g, "");
});
item.company_name_clone = item.company_name;
item.company_name_clone = item.company_name_clone.replace(
/<[^<>]+>/g,
""
);
});
// 设置模板变量的值
......@@ -944,10 +953,10 @@ export default {
.tags {
margin: 5px;
}
.card_desc {
:deep(b) {
color: rgba(191, 36, 40, 1);
}
.card_desc {
:deep(.ant-descriptions-item-label) {
color: #666;
font-family: Microsoft YaHei UI-Regular, Microsoft YaHei UI;
......@@ -973,4 +982,7 @@ export default {
:deep(.ant-pagination) {
text-align: center;
}
:deep(.ant-descriptions-item-container .ant-descriptions-item-content) {
display: block;
}
</style>
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