Commit da39bb6a by heshihao

feat: 界面修改

parent 275af101
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<style lang="less"> <style lang="less">
#app { #app {
height: 100%; // height: 100%;
font-family: Avenir, Helvetica, Arial, sans-serif; font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
......
import axios from 'axios'; import axios from "axios";
import store from '../store/index' import store from "../store/index";
// 环境的切换 // 环境的切换
axios.defaults.baseURL = ''; axios.defaults.baseURL = "";
// 请求超时时间 // 请求超时时间
axios.defaults.timeout = 50000; axios.defaults.timeout = 50000;
// post请求头 // post请求头
...@@ -11,25 +11,26 @@ axios.defaults.timeout = 50000; ...@@ -11,25 +11,26 @@ axios.defaults.timeout = 50000;
// axios.defaults.headers.delete['Content-Type'] = 'application/json;charset=UTF-8'; // axios.defaults.headers.delete['Content-Type'] = 'application/json;charset=UTF-8';
axios.defaults.headers = { axios.defaults.headers = {
// 'Content-Type': 'application/json;charset=UTF-8' // 'Content-Type': 'application/json;charset=UTF-8'
} };
// 请求拦截器 // 请求拦截器
axios.interceptors.request.use( axios.interceptors.request.use(
config => { (config) => {
// 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了 // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了
// 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断 // 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断
const token = localStorage.getItem('token') || ''; const token = localStorage.getItem("token") || "";
if (token) { if (token) {
// config.params = { 'token': token } //如果要求携带在参数中 // config.params = { 'token': token } //如果要求携带在参数中
config.headers.Authorization = token; //如果要求携带在请求头中 config.headers.Authorization = token; //如果要求携带在请求头中
} }
return config; return config;
}, },
error => { (error) => {
return Promise.error(error); return Promise.error(error);
}) }
);
// 响应拦截器 // 响应拦截器
axios.interceptors.response.use( axios.interceptors.response.use(
response => { (response) => {
if (response.status === 200) { if (response.status === 200) {
return Promise.resolve(response); return Promise.resolve(response);
} else { } else {
...@@ -37,7 +38,7 @@ axios.interceptors.response.use( ...@@ -37,7 +38,7 @@ axios.interceptors.response.use(
} }
}, },
// 服务器状态码不是200的情况 // 服务器状态码不是200的情况
error => { (error) => {
if (error.response.status) { if (error.response.status) {
switch (error.response.status) { switch (error.response.status) {
// 401: 未登录 // 401: 未登录
...@@ -45,8 +46,8 @@ axios.interceptors.response.use( ...@@ -45,8 +46,8 @@ axios.interceptors.response.use(
// 在登录成功后返回当前页面,这一步需要在登录页操作。 // 在登录成功后返回当前页面,这一步需要在登录页操作。
case 401: case 401:
router.replace({ router.replace({
path: '/login', path: "/login",
query: { redirect: router.currentRoute.fullPath } query: { redirect: router.currentRoute.fullPath },
}); });
break; break;
// 403 token过期 // 403 token过期
...@@ -55,29 +56,29 @@ axios.interceptors.response.use( ...@@ -55,29 +56,29 @@ axios.interceptors.response.use(
// 跳转登录页面 // 跳转登录页面
case 403: case 403:
Toast({ Toast({
message: '登录过期,请重新登录', message: "登录过期,请重新登录",
duration: 1000, duration: 1000,
forbidClick: true forbidClick: true,
}); });
// 清除token // 清除token
localStorage.removeItem('token'); localStorage.removeItem("token");
store.commit('loginSuccess', null); store.commit("loginSuccess", null);
// 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面 // 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面
setTimeout(() => { setTimeout(() => {
router.replace({ router.replace({
path: '/login', path: "/login",
query: { query: {
redirect: router.currentRoute.fullPath redirect: router.currentRoute.fullPath,
} },
}); });
}, 1000); }, 1000);
break; break;
// 404请求不存在 // 404请求不存在
case 404: case 404:
Toast({ Toast({
message: '网络请求不存在', message: "网络请求不存在",
duration: 1500, duration: 1500,
forbidClick: true forbidClick: true,
}); });
break; break;
// 其他错误,直接抛出错误提示 // 其他错误,直接抛出错误提示
...@@ -85,57 +86,61 @@ axios.interceptors.response.use( ...@@ -85,57 +86,61 @@ axios.interceptors.response.use(
Toast({ Toast({
message: error.response.data.message, message: error.response.data.message,
duration: 1500, duration: 1500,
forbidClick: true forbidClick: true,
}); });
} }
return Promise.reject(error.response); return Promise.reject(error.response);
} }
}); }
);
/** /**
* get方法,对应get请求 * get方法,对应get请求
* @param {String} url [请求的url地址] * @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数] * @param {Object} params [请求时携带的参数]
*/export function get(url, params) { */ export function get(url, params) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios.get(url, { axios
params: params .get(url, {
params: params,
}) })
.then(res => { .then((res) => {
resolve(res.data); resolve(res.data);
}) })
.catch(err => { .catch((err) => {
reject(err.data) reject(err.data);
}) });
}); });
} }
/** /**
* post方法,对应post请求 * post方法,对应post请求
* @param {String} url [请求的url地址] * @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数] * @param {Object} params [请求时携带的参数]
*/export function post(url, params) { */ export function post(url, params) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios.post(url, params) axios
.then(res => { .post(url, params)
.then((res) => {
resolve(res.data); resolve(res.data);
}) })
.catch(err => { .catch((err) => {
reject(err.data) reject(err.data);
}) });
}); });
} }
/** /**
* put方法,对应put请求 * put方法,对应put请求
* @param {String} url [请求的url地址] * @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数] * @param {Object} params [请求时携带的参数]
*/export function put(url, params) { */ export function put(url, params) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios.put(url, params) axios
.then(res => { .put(url, params)
.then((res) => {
resolve(res.data); resolve(res.data);
}) })
.catch(err => { .catch((err) => {
reject(err.data) reject(err.data);
}) });
}); });
} }
...@@ -143,16 +148,17 @@ axios.interceptors.response.use( ...@@ -143,16 +148,17 @@ axios.interceptors.response.use(
* delete方法,对应delete请求 * delete方法,对应delete请求
* @param {String} url [请求的url地址] * @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数] * @param {Object} params [请求时携带的参数]
*/export function Delete(url, params) { */ export function Delete(url, params) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios.delete(url, { data: JSON.stringify(params), headers: { 'Content-Type': 'application/json' } }) axios
.then(res => { .delete(url, { data: JSON.stringify(params), headers: { "Content-Type": "application/json" } })
.then((res) => {
resolve(res.data); resolve(res.data);
// 处理响应 // 处理响应
}) })
.catch(err => { .catch((err) => {
// 处理错误 // 处理错误
reject(err.data) reject(err.data);
}); });
}); });
} }
...@@ -1230,7 +1230,7 @@ export default { ...@@ -1230,7 +1230,7 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
.details { .details {
padding: 0 30px; padding: 0 30px;
width: calc(100%); width: calc(100% - 80px);
background-color: #ebebeb; background-color: #ebebeb;
position: relative; position: relative;
......
...@@ -5,67 +5,31 @@ ...@@ -5,67 +5,31 @@
<!-- 工商信息 --> <!-- 工商信息 -->
<div class="company_con1" id="businessInfo"> <div class="company_con1" id="businessInfo">
<h2 class="title">工商信息</h2> <h2 class="title">工商信息</h2>
<a-descriptions <a-descriptions bordered :column="3" :labelStyle="{ background: '#F2F9FC' }">
bordered
:column="3"
:labelStyle="{ background: '#F2F9FC' }"
>
<a-descriptions-item style="width: 120px" label="法定代表人"> <a-descriptions-item style="width: 120px" label="法定代表人">
<div style="width: 170px"> <div style="width: 170px">
{{ baseinfo.legal }} {{ baseinfo.legal }}
</div></a-descriptions-item </div></a-descriptions-item
> >
<a-descriptions-item style="width: 120px" label="经营状态">{{ <a-descriptions-item style="width: 120px" label="经营状态">{{ baseinfo.status }}</a-descriptions-item>
baseinfo.status <a-descriptions-item style="width: 120px" label="成立日期">{{ baseinfo.build_date }}</a-descriptions-item>
}}</a-descriptions-item> <a-descriptions-item label="工商注册号">{{ baseinfo.register_code }}</a-descriptions-item>
<a-descriptions-item style="width: 120px" label="成立日期">{{ <a-descriptions-item label="注册资本">{{ baseinfo.capital }}</a-descriptions-item>
baseinfo.build_date <a-descriptions-item label="实缴资本">{{ baseinfo.actual_capital }}</a-descriptions-item>
}}</a-descriptions-item> <a-descriptions-item label="统一社会信用代码">{{ baseinfo.social_code }}</a-descriptions-item>
<a-descriptions-item label="工商注册号">{{ <a-descriptions-item label="纳税人识别号">{{ baseinfo.tax_code }}</a-descriptions-item>
baseinfo.register_code <a-descriptions-item label="组织机构代码">{{ baseinfo.company_code }}</a-descriptions-item>
}}</a-descriptions-item>
<a-descriptions-item label="注册资本">{{
baseinfo.capital
}}</a-descriptions-item>
<a-descriptions-item label="实缴资本">{{
baseinfo.actual_capital
}}</a-descriptions-item>
<a-descriptions-item label="统一社会信用代码">{{
baseinfo.social_code
}}</a-descriptions-item>
<a-descriptions-item label="纳税人识别号">{{
baseinfo.tax_code
}}</a-descriptions-item>
<a-descriptions-item label="组织机构代码">{{
baseinfo.company_code
}}</a-descriptions-item>
<a-descriptions-item label="营业期限" <a-descriptions-item label="营业期限"
>{{ baseinfo.from_time }}-{{ >{{ baseinfo.from_time }}-{{ baseinfo.to_time ? baseinfo.to_time : "无固定期限" }}</a-descriptions-item
baseinfo.to_time ? baseinfo.to_time : "无固定期限"
}}</a-descriptions-item
> >
<a-descriptions-item label="纳税人资质">{{ <a-descriptions-item label="纳税人资质">{{ baseinfo.tax_qualification }}</a-descriptions-item>
baseinfo.tax_qualification <a-descriptions-item label="核准日期">{{ baseinfo.approval_date }}</a-descriptions-item>
}}</a-descriptions-item> <a-descriptions-item label="企业类型">{{ baseinfo.entype }}</a-descriptions-item>
<a-descriptions-item label="核准日期">{{ <a-descriptions-item label="行业">{{ baseinfo.company_industry }}</a-descriptions-item>
baseinfo.approval_date
}}</a-descriptions-item>
<a-descriptions-item label="企业类型">{{
baseinfo.entype
}}</a-descriptions-item>
<a-descriptions-item label="行业">{{
baseinfo.company_industry
}}</a-descriptions-item>
<a-descriptions-item label="人员规模">{{ <a-descriptions-item label="人员规模">{{ baseinfo.staff_range }}</a-descriptions-item>
baseinfo.staff_range <a-descriptions-item label="参保人数" :span="1">{{ baseinfo.bao_num }}</a-descriptions-item>
}}</a-descriptions-item> <a-descriptions-item label="登记机关" :span="2">{{ baseinfo.register_org }}</a-descriptions-item>
<a-descriptions-item label="参保人数" :span="1">{{
baseinfo.bao_num
}}</a-descriptions-item>
<a-descriptions-item label="登记机关" :span="2">{{
baseinfo.register_org
}}</a-descriptions-item>
<a-descriptions-item label="曾用名" :span="1"> <a-descriptions-item label="曾用名" :span="1">
<!-- {{ <!-- {{
baseinfo.history_name ? baseinfo.history_name : "无" baseinfo.history_name ? baseinfo.history_name : "无"
...@@ -74,15 +38,9 @@ ...@@ -74,15 +38,9 @@
{{ item }} {{ item }}
</div> </div>
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item label="英文名" :span="2">{{ <a-descriptions-item label="英文名" :span="2">{{ baseinfo.en_name }}</a-descriptions-item>
baseinfo.en_name <a-descriptions-item label="注册地址" :span="3">{{ baseinfo.address }} </a-descriptions-item>
}}</a-descriptions-item> <a-descriptions-item label="经营范围" :span="3">{{ baseinfo.business_scope }}</a-descriptions-item>
<a-descriptions-item label="注册地址" :span="3"
>{{ baseinfo.address }}
</a-descriptions-item>
<a-descriptions-item label="经营范围" :span="3">{{
baseinfo.business_scope
}}</a-descriptions-item>
</a-descriptions> </a-descriptions>
</div> </div>
<!-- 股东信息 --> <!-- 股东信息 -->
...@@ -90,11 +48,7 @@ ...@@ -90,11 +48,7 @@
<h2 class="title">股东信息</h2> <h2 class="title">股东信息</h2>
<!-- 工商登记表格 --> <!-- 工商登记表格 -->
<a-table <a-table :columns="columns_shareholder" :data-source="baseinfo.share_holders" :pagination="pagination">
:columns="columns_shareholder"
:data-source="baseinfo.share_holders"
:pagination="pagination"
>
<template #bodyCell="{ column, text, record }"> <template #bodyCell="{ column, text, record }">
<template v-if="column.dataIndex == 'amount'"> <template v-if="column.dataIndex == 'amount'">
{{ Number(text) + "万元" }} {{ Number(text) + "万元" }}
...@@ -108,41 +62,26 @@ ...@@ -108,41 +62,26 @@
<!-- 主要人员 --> <!-- 主要人员 -->
<div class="company_con1" id="keyPerson"> <div class="company_con1" id="keyPerson">
<h2 class="title">主要人员</h2> <h2 class="title">主要人员</h2>
<a-table <a-table :columns="columns_keyperson" :data-source="baseinfo.company_marjor" :pagination="pagination">
:columns="columns_keyperson"
:data-source="baseinfo.company_marjor"
:pagination="pagination"
>
</a-table> </a-table>
</div> </div>
<!-- 对外投资 --> <!-- 对外投资 -->
<div class="company_con1" id="investment"> <div class="company_con1" id="investment">
<h2 class="title">对外投资</h2> <h2 class="title">对外投资</h2>
<a-table <a-table :columns="columns_investment" :data-source="baseinfo.company_invest" :pagination="pagination">
:columns="columns_investment"
:data-source="baseinfo.company_invest"
:pagination="pagination"
>
</a-table> </a-table>
</div> </div>
<!-- 融资经历 --> <!-- 融资经历 -->
<div class="company_con1" id="financing"> <div class="company_con1" id="financing">
<h2 class="title">融资经历</h2> <h2 class="title">融资经历</h2>
<a-table <a-table :columns="columns_financing" :data-source="baseinfo.company_finance" :pagination="pagination">
:columns="columns_financing"
:data-source="baseinfo.company_finance"
:pagination="pagination"
>
</a-table> </a-table>
</div> </div>
</div> </div>
<div class="company_con_anchor"> <div class="company_con_anchor">
<a-anchor @click="handleAnchorClick"> <a-anchor @click="handleAnchorClick">
<a-anchor-link <a-anchor-link style="font-size: 20px; color: #1c1c28; font-weight: bold" title="企业概况" />
style="font-size: 20px; color: #1c1c28; font-weight: bold"
title="企业概况"
/>
<a-anchor-link href="#businessInfo" title="工商信息" /> <a-anchor-link href="#businessInfo" title="工商信息" />
<a-anchor-link href="#shareholder" title="股东信息" /> <a-anchor-link href="#shareholder" title="股东信息" />
<!-- <a-anchor-link href="#appAera" title="应用领域" /> --> <!-- <a-anchor-link href="#appAera" title="应用领域" /> -->
...@@ -324,7 +263,7 @@ export default { ...@@ -324,7 +263,7 @@ export default {
background-color: #f3f3f6; background-color: #f3f3f6;
.company_con_left { .company_con_left {
.company_con1 { .company_con1 {
width: 1400px; // width: 1400px;
// height: 175px; // height: 175px;
background: #ffffff; background: #ffffff;
border-radius: 8px 8px 8px 8px; border-radius: 8px 8px 8px 8px;
...@@ -381,7 +320,8 @@ export default { ...@@ -381,7 +320,8 @@ export default {
} }
#components-back-top-demo-custom .ant-back-top { #components-back-top-demo-custom .ant-back-top {
bottom: 55%; bottom: 55%;
right: 19%; // right: 12%;
right: calc(100vw - 1250px);
// right: 380px; // right: 380px;
// top: 350px; // top: 350px;
} }
......
...@@ -14,27 +14,14 @@ ...@@ -14,27 +14,14 @@
<a-empty></a-empty> <a-empty></a-empty>
</template> </template>
<template v-else> <template v-else>
其中,与<span 其中,与<span class="color" v-for="(item, index) in joint.max_list" :key="item.max_name">{{
class="color" index == joint.max_list.length - 1 ? item.max_name : item.max_name + ","
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_list[0].max_value
}}</span }}</span
>最为密切,合作次数为<span class="color">{{ joint.max_list[0].max_value }}</span
>次,与该企业合作次数最多的申请人如下图所示。 >次,与该企业合作次数最多的申请人如下图所示。
</template> </template>
</p> </p>
<EchartsCon <EchartsCon :style="'height:300px;'" :option="option1" :id="'echarts1'" v-if="joint.all_nums"></EchartsCon>
:style="'height:300px;'"
:option="option1"
:id="'echarts1'"
v-if="joint.all_nums"
></EchartsCon>
</div> </div>
<!-- 专利购买 --> <!-- 专利购买 -->
<div class="company_con1" id="PatentPurchase"> <div class="company_con1" id="PatentPurchase">
...@@ -42,18 +29,10 @@ ...@@ -42,18 +29,10 @@
<p> <p>
分析该企业专利购买历史,了解该企业向哪些专利权人购买了专利,以及购买了哪些专利。如果该企业购买专利数量较多,需要关注这些外购专利是否为企业的核心专利,进而分析企业的研发能力。 分析该企业专利购买历史,了解该企业向哪些专利权人购买了专利,以及购买了哪些专利。如果该企业购买专利数量较多,需要关注这些外购专利是否为企业的核心专利,进而分析企业的研发能力。
<template v-if="patentPurchase.max_list.length > 0"> <template v-if="patentPurchase.max_list.length > 0">
该企业向<span 该企业向<span class="color" v-for="(item, index) in patentPurchase.max_list" :key="item.max_name">{{
class="color" index == patentPurchase.max_list.length - 1 ? item.max_name : item.max_name + ","
v-for="(item, index) in patentPurchase.max_list"
:key="item.max_name"
>{{
index == patentPurchase.max_list.length - 1
? item.max_name
: item.max_name + ","
}}</span
>购买专利最多,为<span class="color">{{
patentPurchase.max_list[0].max_value
}}</span }}</span
>购买专利最多,为<span class="color">{{ patentPurchase.max_list[0].max_value }}</span
>件。 >件。
</template> </template>
<template v-else> <template v-else>
...@@ -71,10 +50,7 @@ ...@@ -71,10 +50,7 @@
</div> </div>
<div class="company_con_anchor"> <div class="company_con_anchor">
<a-anchor @click="handleAnchorClick"> <a-anchor @click="handleAnchorClick">
<a-anchor-link <a-anchor-link style="font-size: 20px; color: #1c1c28; font-weight: bold" title="技术合作" />
style="font-size: 20px; color: #1c1c28; font-weight: bold"
title="技术合作"
/>
<a-anchor-link href="#jointApplication" title="联合申请" /> <a-anchor-link href="#jointApplication" title="联合申请" />
<a-anchor-link href="#PatentPurchase" title="专利购买" /> <a-anchor-link href="#PatentPurchase" title="专利购买" />
</a-anchor> </a-anchor>
...@@ -151,10 +127,7 @@ export default { ...@@ -151,10 +127,7 @@ export default {
symbolSize: 40, symbolSize: 40,
category: 1, category: 1,
value: item.value, value: item.value,
x: x: index % 2 == 1 ? 300 * Math.ceil(index / 2) : -300 * Math.ceil(index / 2),
index % 2 == 1
? 300 * Math.ceil(index / 2)
: -300 * Math.ceil(index / 2),
y: 80 * (10 - index), y: 80 * (10 - index),
}); });
links.push({ links.push({
...@@ -285,7 +258,7 @@ export default { ...@@ -285,7 +258,7 @@ export default {
} }
.company_con_left { .company_con_left {
.company_con1 { .company_con1 {
width: 1400px; // width: 1400px;
// height: 175px; // height: 175px;
background: #ffffff; background: #ffffff;
border-radius: 8px 8px 8px 8px; border-radius: 8px 8px 8px 8px;
...@@ -345,7 +318,7 @@ export default { ...@@ -345,7 +318,7 @@ export default {
// bottom: 50%; // bottom: 50%;
// right: 18.5%; // right: 18.5%;
bottom: 55%; bottom: 55%;
right: 19%; right: 150px;
} }
#components-back-top-demo-custom .ant-back-top-inner { #components-back-top-demo-custom .ant-back-top-inner {
margin-top: 20px; margin-top: 20px;
......
...@@ -5,20 +5,14 @@ ...@@ -5,20 +5,14 @@
<!-- 研发规模 --> <!-- 研发规模 -->
<div class="company_con1" id="researchDevelopment"> <div class="company_con1" id="researchDevelopment">
<h2 class="title">研发规模</h2> <h2 class="title">研发规模</h2>
<a-descriptions <a-descriptions bordered :column="2" :labelStyle="{ background: '#F2F9FC' }">
bordered
:column="2"
:labelStyle="{ background: '#F2F9FC' }"
>
<a-descriptions-item label="专利申请数量">{{ <a-descriptions-item label="专利申请数量">{{
developmentOverview.patent_application_num developmentOverview.patent_application_num
}}</a-descriptions-item> }}</a-descriptions-item>
<a-descriptions-item label="非外观专利申请数量">{{ <a-descriptions-item label="非外观专利申请数量">{{
developmentOverview.not_appearance_num developmentOverview.not_appearance_num
}}</a-descriptions-item> }}</a-descriptions-item>
<a-descriptions-item label="商标数量">{{ <a-descriptions-item label="商标数量">{{ developmentOverview.company_trademark_num }}</a-descriptions-item>
developmentOverview.company_trademark_num
}}</a-descriptions-item>
<a-descriptions-item label="作品著作权登记总数">{{ <a-descriptions-item label="作品著作权登记总数">{{
developmentOverview.company_work_copyright_num developmentOverview.company_work_copyright_num
}}</a-descriptions-item> }}</a-descriptions-item>
...@@ -31,33 +25,18 @@ ...@@ -31,33 +25,18 @@
<div class="company_con1" id="ResearchSustainable"> <div class="company_con1" id="ResearchSustainable">
<h2 class="title">研发可持续性</h2> <h2 class="title">研发可持续性</h2>
<p v-if="deveSustainData.patent_application_num"> <p v-if="deveSustainData.patent_application_num">
企业的总专利申请量为<span class="color">{{ 企业的总专利申请量为<span class="color">{{ deveSustainData.patent_application_num }}</span
deveSustainData.patent_application_num >件,最早专利申请是<span class="color"> {{ deveSustainData.earliest_patent_application_year }} </span
}}</span >年,企业在<span class="color">{{ deveSustainData.most_patent_application_year }}</span
>件,最早专利申请是<span class="color"> >年的专利申请量最多,为<span class="color">{{ deveSustainData.most_patent_application_num }}</span
{{ deveSustainData.earliest_patent_application_year }} </span >件且专利授权率为<span class="color">{{ deveSustainData.most_patent_authorization_rate }}</span
>年,企业在<span class="color">{{
deveSustainData.most_patent_application_year
}}</span
>年的专利申请量最多,为<span class="color">{{
deveSustainData.most_patent_application_num
}}</span
>件且专利授权率为<span class="color">{{
deveSustainData.most_patent_authorization_rate
}}</span
> >
</p> </p>
<p v-else> <p v-else>
企业的总专利申请量为<span class="color">{{ 企业的总专利申请量为<span class="color">{{ deveSustainData.patent_application_num }}</span
deveSustainData.patent_application_num
}}</span
> >
</p> </p>
<a-radio-group <a-radio-group v-model:value="tabchange" style="margin: 8px" v-if="deveSustainData.patent_application_num">
v-model:value="tabchange"
style="margin: 8px"
v-if="deveSustainData.patent_application_num"
>
<a-radio-button value="1">专利申请年份趋势</a-radio-button> <a-radio-button value="1">专利申请年份趋势</a-radio-button>
<a-radio-button value="2">历年专利申请及授权</a-radio-button> <a-radio-button value="2">历年专利申请及授权</a-radio-button>
</a-radio-group> </a-radio-group>
...@@ -81,18 +60,10 @@ ...@@ -81,18 +60,10 @@
专利结构可从专利类型以及专利基本法律状态两个方面进行分析。从专利类型来看,一般在评估专利技术质量时,普遍认为发明>实用新型>外观。因此,关注发明专利的占比高低,可以帮助了解企业历史研发的技术质量水平。从专利基本法律状态来看,关注失效专利的占比,可以帮助了解企业当前持有技术的质量水平。该企业的专利数量为<span 专利结构可从专利类型以及专利基本法律状态两个方面进行分析。从专利类型来看,一般在评估专利技术质量时,普遍认为发明>实用新型>外观。因此,关注发明专利的占比高低,可以帮助了解企业历史研发的技术质量水平。从专利基本法律状态来看,关注失效专利的占比,可以帮助了解企业当前持有技术的质量水平。该企业的专利数量为<span
class="color" class="color"
>{{ devstructureData.patent_application_num }}</span >{{ devstructureData.patent_application_num }}</span
>件,其中发明专利<span class="color">{{ >件,其中发明专利<span class="color">{{ devstructureData.invent_patent_num }}</span
devstructureData.invent_patent_num >件,占比<span class="color">{{ devstructureData.invent_patent_percent }}</span
}}</span >;有效专利<span class="color">{{ devstructureData.valid_patent_num }}</span
>件,占比<span class="color">{{ >件,占比<span class="color">{{ devstructureData.valid_patent_percent }}</span
devstructureData.invent_patent_percent
}}</span
>;有效专利<span class="color">{{
devstructureData.valid_patent_num
}}</span
>件,占比<span class="color">{{
devstructureData.valid_patent_percent
}}</span
> >
</p> </p>
<div class="ecahrsThree"> <div class="ecahrsThree">
...@@ -121,28 +92,16 @@ ...@@ -121,28 +92,16 @@
<h2 class="title">技术领域布局</h2> <h2 class="title">技术领域布局</h2>
<p> <p>
特定周期内,某个主题关键词出现的次数越多,则企业在该主题领域的技术布局越多。通过算法分析,该企业近期主要专注在 特定周期内,某个主题关键词出现的次数越多,则企业在该主题领域的技术布局越多。通过算法分析,该企业近期主要专注在
<span <span class="color" v-for="(item, index) in o_word_cloud" :key="item">
class="color"
v-for="(item, index) in o_word_cloud"
:key="item"
>
{{ index == o_word_cloud.length - 1 ? item : item + "、" }} </span {{ index == o_word_cloud.length - 1 ? item : item + "、" }} </span
>等技术领域 >等技术领域
</p> </p>
<EchartsCloud <EchartsCloud :id="'TechnicalField'" :dataArr="techArr" v-if="techArr.length > 0"></EchartsCloud>
:id="'TechnicalField'"
:dataArr="techArr"
v-if="techArr.length>0"
></EchartsCloud>
</div> </div>
</div> </div>
<div class="company_con_anchor"> <div class="company_con_anchor">
<a-anchor @click="handleAnchorClick"> <a-anchor @click="handleAnchorClick">
<a-anchor-link <a-anchor-link style="font-size: 20px; color: #1c1c28; font-weight: bold" title="研发概要" />
style="font-size: 20px; color: #1c1c28; font-weight: bold"
title="研发概要"
/>
<a-anchor-link href="#researchDevelopment" title="研发规模" /> <a-anchor-link href="#researchDevelopment" title="研发规模" />
<a-anchor-link href="#ResearchSustainable" title="研发可持续性" /> <a-anchor-link href="#ResearchSustainable" title="研发可持续性" />
<a-anchor-link href="#PatentAnalysis" title="专利结构分析" /> <a-anchor-link href="#PatentAnalysis" title="专利结构分析" />
...@@ -336,9 +295,7 @@ export default { ...@@ -336,9 +295,7 @@ export default {
this.deveSustainData.old_patent_application.forEach((item) => { this.deveSustainData.old_patent_application.forEach((item) => {
ydata2.push(item[1]); ydata2.push(item[1]);
}); });
ydata3 = ydata1.map((elem, index) => ydata3 = ydata1.map((elem, index) => ((elem / ydata2[index]) * 100).toFixed(2));
((elem / ydata2[index]) * 100).toFixed(2)
);
this.option2 = { this.option2 = {
//下面就是上图的配置项,关键部分有注释 //下面就是上图的配置项,关键部分有注释
...@@ -351,21 +308,10 @@ export default { ...@@ -351,21 +308,10 @@ export default {
var html = params[0].name + "<br>"; var html = params[0].name + "<br>";
// params[i].marker:对应数据的圆点样式 // params[i].marker:对应数据的圆点样式
for (var i = 0; i < params.length - 1; i++) { for (var i = 0; i < params.length - 1; i++) {
html += html += params[i].marker + params[i].seriesName + ":" + params[i].value + "<br>";
params[i].marker +
params[i].seriesName +
":" +
params[i].value +
"<br>";
} }
//最后一个学生占比数据 添加% //最后一个学生占比数据 添加%
html += html += params[i].marker + params[i].seriesName + ":" + params[i].value + "%" + "<br>";
params[i].marker +
params[i].seriesName +
":" +
params[i].value +
"%" +
"<br>";
return html; return html;
}, },
}, },
...@@ -607,7 +553,7 @@ export default { ...@@ -607,7 +553,7 @@ export default {
background-color: #f3f3f6; background-color: #f3f3f6;
.company_con_left { .company_con_left {
.company_con1 { .company_con1 {
width: 1400px; // width: 1400px;
// height: 175px; // height: 175px;
background: #ffffff; background: #ffffff;
border-radius: 8px 8px 8px 8px; border-radius: 8px 8px 8px 8px;
...@@ -671,7 +617,7 @@ export default { ...@@ -671,7 +617,7 @@ export default {
// bottom: 50%; // bottom: 50%;
// right: 18.5%; // right: 18.5%;
bottom: 55%; bottom: 55%;
right: 19%; right: 150px;
} }
#components-back-top-demo-custom .ant-back-top-inner { #components-back-top-demo-custom .ant-back-top-inner {
margin-top: 20px; margin-top: 20px;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<div style="display: flex; position: relative"> <div style="display: flex; position: relative">
<div style="width: 50%;"> <div style="width: 50%;">
<EchartsCon <EchartsCon
:style="'height:300px;'" :style="'height:300px;width:400px'"
:option="option1" :option="option1"
:id="'echartsraodar'" :id="'echartsraodar'"
class="echarts" class="echarts"
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</div> </div>
<div style="width: 50%; position: relative"> <div style="width: 50%; position: relative">
<EchartsCon :option="option2" :id="'echartsscatter'" :style="'height:300px;'"></EchartsCon> <EchartsCon :option="option2" :id="'echartsscatter'" :style="'height:300px;width:400px'"></EchartsCon>
<a-popover title="科创能力分析指标"> <a-popover title="科创能力分析指标">
<template #content> <template #content>
<p> <p>
...@@ -224,7 +224,7 @@ export default { ...@@ -224,7 +224,7 @@ export default {
background-color: #f3f3f6; background-color: #f3f3f6;
.company_con_left { .company_con_left {
.company_con1 { .company_con1 {
width: 1400px; // width: 1400px;
// height: 175px; // height: 175px;
background: #ffffff; background: #ffffff;
border-radius: 8px 8px 8px 8px; border-radius: 8px 8px 8px 8px;
...@@ -279,7 +279,7 @@ export default { ...@@ -279,7 +279,7 @@ export default {
// bottom: 50%; // bottom: 50%;
// right: 18.5%; // right: 18.5%;
bottom: 55%; bottom: 55%;
right: 19%; right: 12%;
} }
#components-back-top-demo-custom .ant-back-top-inner { #components-back-top-demo-custom .ant-back-top-inner {
margin-top: 20px; margin-top: 20px;
......
<template> <template>
<div class="history"> <div class="history">
<a-breadcrumb class="nav_bread"> <a-breadcrumb class="nav_bread">
<a-breadcrumb-item <a-breadcrumb-item><router-link :to="'/home'">首页</router-link></a-breadcrumb-item>
><router-link :to="'/home'">首页</router-link></a-breadcrumb-item
>
<!-- <a-breadcrumb-item>历史记录</a-breadcrumb-item> --> <!-- <a-breadcrumb-item>历史记录</a-breadcrumb-item> -->
<a-breadcrumb-item v-if="activeKey == 1">浏览记录</a-breadcrumb-item> <a-breadcrumb-item v-if="activeKey == 1">浏览记录</a-breadcrumb-item>
<a-breadcrumb-item v-else>导出记录</a-breadcrumb-item> <a-breadcrumb-item v-else>导出记录</a-breadcrumb-item>
...@@ -13,12 +11,7 @@ ...@@ -13,12 +11,7 @@
<a-tabs v-model:activeKey="activeKey"> <a-tabs v-model:activeKey="activeKey">
<a-tab-pane key="1" tab="浏览记录"> <a-tab-pane key="1" tab="浏览记录">
<p style="text-align: left">系统会为您保留 30 天的浏览记录</p> <p style="text-align: left">系统会为您保留 30 天的浏览记录</p>
<a-table <a-table :columns="columnshistory" :data-source="dataHistory" :pagination="false" :style="'width:90%;'">
:columns="columnshistory"
:data-source="dataHistory"
:pagination="false"
:style="'width:90%;'"
>
<template #bodyCell="{ column, text, record }"> <template #bodyCell="{ column, text, record }">
<template v-if="column.dataIndex == 'f_type'"> <template v-if="column.dataIndex == 'f_type'">
{{ text == "patent" ? "专利" : "公司" }} {{ text == "patent" ? "专利" : "公司" }}
...@@ -33,31 +26,18 @@ ...@@ -33,31 +26,18 @@
@change="onChange" @change="onChange"
:total="total0" :total="total0"
:showSizeChanger="false" :showSizeChanger="false"
class="h-pagination"
/> />
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="2" tab="导出记录"> <a-tab-pane key="2" tab="导出记录">
<p style="text-align: left">系统会为您保留 30 天的导出记录</p> <p style="text-align: left">系统会为您保留 30 天的导出记录</p>
<a-table <a-table :columns="columnout" :data-source="dataExport" :pagination="false" :style="'width:90%'">
:columns="columnout"
:data-source="dataExport"
:pagination="false"
:style="'width:90%'"
>
<template #bodyCell="{ column, text, record }"> <template #bodyCell="{ column, text, record }">
<template v-if="column.dataIndex == 'action'"> <template v-if="column.dataIndex == 'action'">
<a-button <a-button @click="exportPDF(record)" style="background-color: #fa7f03; color: #fff; margin-right: 10%">
@click="exportPDF(record)"
style="
background-color: #fa7f03;
color: #fff;
margin-right: 10%;
"
>
导出 导出
</a-button> </a-button>
<a-button type="primary" @click="sendMail(record)" <a-button type="primary" @click="sendMail(record)">发送到邮箱</a-button>
>发送到邮箱</a-button
>
</template> </template>
<template v-if="column.dataIndex == 'f_type'"> <template v-if="column.dataIndex == 'f_type'">
{{ text == "patent" ? "专利" : "公司" }} {{ text == "patent" ? "专利" : "公司" }}
...@@ -68,6 +48,7 @@ ...@@ -68,6 +48,7 @@
</template> </template>
</a-table> </a-table>
<a-pagination <a-pagination
class="h-pagination"
@change="onChange" @change="onChange"
:total="total1" :total="total1"
v-model:current="currentPage" v-model:current="currentPage"
...@@ -293,6 +274,9 @@ export default { ...@@ -293,6 +274,9 @@ export default {
height: 92%; height: 92%;
text-align: center; text-align: center;
// height: 600px; // height: 600px;
.h-pagination {
margin-top: 20px;
}
} }
:deep(.ant-table-tbody) { :deep(.ant-table-tbody) {
cursor: pointer; cursor: pointer;
......
...@@ -461,7 +461,8 @@ export default { ...@@ -461,7 +461,8 @@ export default {
height: 308px; height: 308px;
position: relative; position: relative;
background: url("~@/static/home/index/img-index01.png") no-repeat; background: url("~@/static/home/index/img-index01.png") no-repeat;
background-size: 100%; background-size: 100% 100%;
background-attachment: local;
.search_tab { .search_tab {
position: absolute; position: absolute;
top: 50px; top: 50px;
......
<template> <template>
<div class="home" :style="[(current=='专利'||current=='企业')?'height:auto':'height:100%']"> <div class="home" :style="[current == '专利' || current == '企业' ? 'height:auto' : 'height:100%']">
<!-- 标题栏 --> <!-- 标题栏 -->
<HeaderCon></HeaderCon> <HeaderCon></HeaderCon>
...@@ -11,18 +11,8 @@ ...@@ -11,18 +11,8 @@
:key="item.name" :key="item.name"
@click="changepage(item.name)" @click="changepage(item.name)"
> >
<img <img :src="current == item.name ? item.img_select : item.img" alt="" class="sider_item_img" />
:src="current == item.name ? item.img_select : item.img" <div :class="[current == item.name ? 'sider_item_name active ' : 'sider_item_name']">
alt=""
class="sider_item_img"
/>
<div
:class="[
current == item.name
? 'sider_item_name active '
: 'sider_item_name',
]"
>
{{ item.name }} {{ item.name }}
</div> </div>
</div> </div>
...@@ -75,8 +65,7 @@ export default { ...@@ -75,8 +65,7 @@ export default {
}, },
], ],
followList: [], followList: [],
innovateList: [ innovateList: [],
],
}; };
}, },
components: { components: {
...@@ -185,7 +174,7 @@ export default { ...@@ -185,7 +174,7 @@ export default {
.home_con { .home_con {
background-color: #ebebeb; background-color: #ebebeb;
padding-left: 30px; padding-left: 30px;
width: calc(100% -80px); width: calc(100% - 80px);
flex: 1; flex: 1;
.nav_bread { .nav_bread {
height: 50px; height: 50px;
......
...@@ -212,8 +212,8 @@ export default { ...@@ -212,8 +212,8 @@ export default {
justify-content: space-evenly; justify-content: space-evenly;
margin: 100px auto 40px; margin: 100px auto 40px;
.con_left { .con_left {
width: 40%; // width: 40%;
margin-right: -20%; // margin-right: -20%;
.title1 { .title1 {
color: #4079ff; color: #4079ff;
font-family: "jiangcheng"; font-family: "jiangcheng";
......
...@@ -642,7 +642,7 @@ export default { ...@@ -642,7 +642,7 @@ export default {
} }
.details { .details {
padding: 0 30px; padding: 0 30px;
width: calc(100%); width: calc(100% - 80px);
background-color: #ebebeb; background-color: #ebebeb;
position: relative; position: relative;
...@@ -767,8 +767,8 @@ export default { ...@@ -767,8 +767,8 @@ export default {
} }
#components-back-top-demo-custom .ant-back-top { #components-back-top-demo-custom .ant-back-top {
bottom: 50%; bottom: 50%;
right: 18.5%; right: calc(100vw - 1150px);
right: 780px; // right: 780px;
top: 350px; top: 350px;
} }
#components-back-top-demo-custom .ant-back-top-inner { #components-back-top-demo-custom .ant-back-top-inner {
......
...@@ -18,7 +18,7 @@ module.exports = { ...@@ -18,7 +18,7 @@ module.exports = {
// 配置不同的后台API地址 // 配置不同的后台API地址
proxy: { proxy: {
"/api": { "/api": {
target: "http://39.98.37.63:5089/api", target: "https://zlcgzyzhzntjxt.industrychain.online/api",
ws: false, ws: false,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
...@@ -41,14 +41,14 @@ module.exports = { ...@@ -41,14 +41,14 @@ module.exports = {
return args; return args;
}); });
}, },
css: { // css: {
loaderOptions: { // loaderOptions: {
postcss: { // postcss: {
plugins: [ // plugins: [
// postcss // // postcss
], // ],
}, // },
}, // },
}, // },
lintOnSave: true, lintOnSave: true,
}; };
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