Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
ty_patentSys
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hanxiao
ty_patentSys
Commits
da39bb6a
Commit
da39bb6a
authored
Dec 15, 2023
by
heshihao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 界面修改
parent
275af101
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
181 additions
and
343 deletions
+181
-343
src/App.vue
+1
-1
src/utils/request.js
+82
-77
src/views/company/companyDetails.vue
+1
-1
src/views/company/companyProfile.vue
+28
-88
src/views/company/cooperation.vue
+12
-39
src/views/company/overview.vue
+21
-75
src/views/company/technology.vue
+4
-4
src/views/history/index.vue
+10
-26
src/views/home/home.vue
+2
-1
src/views/home/index.vue
+5
-16
src/views/login/index.vue
+2
-2
src/views/patent/patentDetails.vue
+3
-3
vue.config.js
+10
-10
No files found.
src/App.vue
View file @
da39bb6a
...
...
@@ -12,7 +12,7 @@
<
style
lang=
"less"
>
#app
{
height
:
100%
;
//
height
:
100%
;
font-family
:
Avenir
,
Helvetica
,
Arial
,
sans-serif
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
...
...
src/utils/request.js
View file @
da39bb6a
import
axios
from
'axios'
;
import
store
from
'../store/index'
import
axios
from
"axios"
;
import
store
from
"../store/index"
;
// 环境的切换
axios
.
defaults
.
baseURL
=
''
;
axios
.
defaults
.
baseURL
=
""
;
// 请求超时时间
axios
.
defaults
.
timeout
=
50000
;
// post请求头
...
...
@@ -11,148 +11,154 @@ axios.defaults.timeout = 50000;
// axios.defaults.headers.delete['Content-Type'] = 'application/json;charset=UTF-8';
axios
.
defaults
.
headers
=
{
// 'Content-Type': 'application/json;charset=UTF-8'
}
}
;
// 请求拦截器
axios
.
interceptors
.
request
.
use
(
config
=>
{
(
config
)
=>
{
// 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了
// 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断
const
token
=
localStorage
.
getItem
(
'token'
)
||
''
;
const
token
=
localStorage
.
getItem
(
"token"
)
||
""
;
if
(
token
)
{
// config.params = { 'token': token } //如果要求携带在参数中
config
.
headers
.
Authorization
=
token
;
//如果要求携带在请求头中
}
return
config
;
},
error
=>
{
(
error
)
=>
{
return
Promise
.
error
(
error
);
})
}
);
// 响应拦截器
axios
.
interceptors
.
response
.
use
(
response
=>
{
(
response
)
=>
{
if
(
response
.
status
===
200
)
{
return
Promise
.
resolve
(
response
);
}
else
{
return
Promise
.
reject
(
response
);
}
},
// 服务器状态码不是200的情况
error
=>
{
// 服务器状态码不是200的情况
(
error
)
=>
{
if
(
error
.
response
.
status
)
{
switch
(
error
.
response
.
status
)
{
// 401: 未登录
// 未登录则跳转登录页面,并携带当前页面的路径
// 在登录成功后返回当前页面,这一步需要在登录页操作。
// 401: 未登录
// 未登录则跳转登录页面,并携带当前页面的路径
// 在登录成功后返回当前页面,这一步需要在登录页操作。
case
401
:
router
.
replace
({
path
:
'/login'
,
query
:
{
redirect
:
router
.
currentRoute
.
fullPath
}
path
:
"/login"
,
query
:
{
redirect
:
router
.
currentRoute
.
fullPath
}
,
});
break
;
// 403 token过期
// 登录过期对用户进行提示
// 清除本地token和清空vuex中token对象
// 跳转登录页面
// 403 token过期
// 登录过期对用户进行提示
// 清除本地token和清空vuex中token对象
// 跳转登录页面
case
403
:
Toast
({
message
:
'登录过期,请重新登录'
,
message
:
"登录过期,请重新登录"
,
duration
:
1000
,
forbidClick
:
true
forbidClick
:
true
,
});
// 清除token
localStorage
.
removeItem
(
'token'
);
store
.
commit
(
'loginSuccess'
,
null
);
// 清除token
localStorage
.
removeItem
(
"token"
);
store
.
commit
(
"loginSuccess"
,
null
);
// 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面
setTimeout
(()
=>
{
router
.
replace
({
path
:
'/login'
,
path
:
"/login"
,
query
:
{
redirect
:
router
.
currentRoute
.
fullPath
}
redirect
:
router
.
currentRoute
.
fullPath
,
}
,
});
},
1000
);
break
;
// 404请求不存在
// 404请求不存在
case
404
:
Toast
({
message
:
'网络请求不存在'
,
message
:
"网络请求不存在"
,
duration
:
1500
,
forbidClick
:
true
forbidClick
:
true
,
});
break
;
// 其他错误,直接抛出错误提示
// 其他错误,直接抛出错误提示
default
:
Toast
({
message
:
error
.
response
.
data
.
message
,
duration
:
1500
,
forbidClick
:
true
forbidClick
:
true
,
});
}
return
Promise
.
reject
(
error
.
response
);
}
});
/**
* get方法,对应get请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export
function
get
(
url
,
params
)
{
}
);
/**
* get方法,对应get请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export
function
get
(
url
,
params
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
axios
.
get
(
url
,
{
params
:
params
})
.
then
(
res
=>
{
resolve
(
res
.
data
);
axios
.
get
(
url
,
{
params
:
params
,
})
.
catch
(
err
=>
{
re
ject
(
err
.
data
)
.
then
((
res
)
=>
{
re
solve
(
res
.
data
);
})
.
catch
((
err
)
=>
{
reject
(
err
.
data
);
});
});
}
/**
* post方法,对应post请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export
function
post
(
url
,
params
)
{
/**
* post方法,对应post请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export
function
post
(
url
,
params
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
axios
.
post
(
url
,
params
)
.
then
(
res
=>
{
axios
.
post
(
url
,
params
)
.
then
((
res
)
=>
{
resolve
(
res
.
data
);
})
.
catch
(
err
=>
{
reject
(
err
.
data
)
})
.
catch
(
(
err
)
=>
{
reject
(
err
.
data
)
;
})
;
});
}
/**
* put方法,对应put请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export
function
put
(
url
,
params
)
{
/**
* put方法,对应put请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export
function
put
(
url
,
params
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
axios
.
put
(
url
,
params
)
.
then
(
res
=>
{
axios
.
put
(
url
,
params
)
.
then
((
res
)
=>
{
resolve
(
res
.
data
);
})
.
catch
(
err
=>
{
reject
(
err
.
data
)
})
.
catch
(
(
err
)
=>
{
reject
(
err
.
data
)
;
})
;
});
}
/**
* delete方法,对应delete请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export
function
Delete
(
url
,
params
)
{
/**
* delete方法,对应delete请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export
function
Delete
(
url
,
params
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
axios
.
delete
(
url
,
{
data
:
JSON
.
stringify
(
params
),
headers
:
{
'Content-Type'
:
'application/json'
}
})
.
then
(
res
=>
{
axios
.
delete
(
url
,
{
data
:
JSON
.
stringify
(
params
),
headers
:
{
"Content-Type"
:
"application/json"
}
})
.
then
((
res
)
=>
{
resolve
(
res
.
data
);
// 处理响应
})
.
catch
(
err
=>
{
.
catch
(
(
err
)
=>
{
// 处理错误
reject
(
err
.
data
)
reject
(
err
.
data
)
;
});
});
}
\ No newline at end of file
}
src/views/company/companyDetails.vue
View file @
da39bb6a
...
...
@@ -1230,7 +1230,7 @@ export default {
<
style
lang=
"less"
scoped
>
.details
{
padding
:
0
30px
;
width
:
calc
(
100%
);
width
:
calc
(
100%
-
80px
);
background-color
:
#ebebeb
;
position
:
relative
;
...
...
src/views/company/companyProfile.vue
View file @
da39bb6a
...
...
@@ -5,67 +5,31 @@
<!-- 工商信息 -->
<div
class=
"company_con1"
id=
"businessInfo"
>
<h2
class=
"title"
>
工商信息
</h2>
<a-descriptions
bordered
:column=
"3"
:labelStyle=
"
{ background: '#F2F9FC' }"
>
<a-descriptions
bordered
:column=
"3"
:labelStyle=
"
{ background: '#F2F9FC' }">
<a-descriptions-item
style=
"width: 120px"
label=
"法定代表人"
>
<div
style=
"width: 170px"
>
{{
baseinfo
.
legal
}}
</div></a-descriptions-item
>
<a-descriptions-item
style=
"width: 120px"
label=
"经营状态"
>
{{
baseinfo
.
status
}}
</a-descriptions-item>
<a-descriptions-item
style=
"width: 120px"
label=
"成立日期"
>
{{
baseinfo
.
build_date
}}
</a-descriptions-item>
<a-descriptions-item
label=
"工商注册号"
>
{{
baseinfo
.
register_code
}}
</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
style=
"width: 120px"
label=
"经营状态"
>
{{
baseinfo
.
status
}}
</a-descriptions-item>
<a-descriptions-item
style=
"width: 120px"
label=
"成立日期"
>
{{
baseinfo
.
build_date
}}
</a-descriptions-item>
<a-descriptions-item
label=
"工商注册号"
>
{{
baseinfo
.
register_code
}}
</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=
"营业期限"
>
{{
baseinfo
.
from_time
}}
-
{{
baseinfo
.
to_time
?
baseinfo
.
to_time
:
"无固定期限"
}}
</a-descriptions-item
>
{{
baseinfo
.
from_time
}}
-
{{
baseinfo
.
to_time
?
baseinfo
.
to_time
:
"无固定期限"
}}
</a-descriptions-item
>
<a-descriptions-item
label=
"纳税人资质"
>
{{
baseinfo
.
tax_qualification
}}
</a-descriptions-item>
<a-descriptions-item
label=
"核准日期"
>
{{
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=
"纳税人资质"
>
{{
baseinfo
.
tax_qualification
}}
</a-descriptions-item>
<a-descriptions-item
label=
"核准日期"
>
{{
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=
"人员规模"
>
{{
baseinfo
.
staff_range
}}
</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=
"人员规模"
>
{{
baseinfo
.
staff_range
}}
</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"
>
<!--
{{
baseinfo
.
history_name
?
baseinfo
.
history_name
:
"无"
...
...
@@ -74,15 +38,9 @@
{{
item
}}
</div>
</a-descriptions-item>
<a-descriptions-item
label=
"英文名"
:span=
"2"
>
{{
baseinfo
.
en_name
}}
</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-item
label=
"英文名"
:span=
"2"
>
{{
baseinfo
.
en_name
}}
</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>
</div>
<!-- 股东信息 -->
...
...
@@ -90,11 +48,7 @@
<h2
class=
"title"
>
股东信息
</h2>
<!-- 工商登记表格 -->
<a-table
:columns=
"columns_shareholder"
:data-source=
"baseinfo.share_holders"
:pagination=
"pagination"
>
<a-table
:columns=
"columns_shareholder"
:data-source=
"baseinfo.share_holders"
:pagination=
"pagination"
>
<template
#
bodyCell=
"
{ column, text, record }">
<template
v-if=
"column.dataIndex == 'amount'"
>
{{
Number
(
text
)
+
"万元"
}}
...
...
@@ -108,41 +62,26 @@
<!-- 主要人员 -->
<div
class=
"company_con1"
id=
"keyPerson"
>
<h2
class=
"title"
>
主要人员
</h2>
<a-table
:columns=
"columns_keyperson"
:data-source=
"baseinfo.company_marjor"
:pagination=
"pagination"
>
<a-table
:columns=
"columns_keyperson"
:data-source=
"baseinfo.company_marjor"
:pagination=
"pagination"
>
</a-table>
</div>
<!-- 对外投资 -->
<div
class=
"company_con1"
id=
"investment"
>
<h2
class=
"title"
>
对外投资
</h2>
<a-table
:columns=
"columns_investment"
:data-source=
"baseinfo.company_invest"
:pagination=
"pagination"
>
<a-table
:columns=
"columns_investment"
:data-source=
"baseinfo.company_invest"
:pagination=
"pagination"
>
</a-table>
</div>
<!-- 融资经历 -->
<div
class=
"company_con1"
id=
"financing"
>
<h2
class=
"title"
>
融资经历
</h2>
<a-table
:columns=
"columns_financing"
:data-source=
"baseinfo.company_finance"
:pagination=
"pagination"
>
<a-table
:columns=
"columns_financing"
:data-source=
"baseinfo.company_finance"
:pagination=
"pagination"
>
</a-table>
</div>
</div>
<div
class=
"company_con_anchor"
>
<a-anchor
@
click=
"handleAnchorClick"
>
<a-anchor-link
style=
"font-size: 20px; color: #1c1c28; font-weight: bold"
title=
"企业概况"
/>
<a-anchor-link
style=
"font-size: 20px; color: #1c1c28; font-weight: bold"
title=
"企业概况"
/>
<a-anchor-link
href=
"#businessInfo"
title=
"工商信息"
/>
<a-anchor-link
href=
"#shareholder"
title=
"股东信息"
/>
<!-- <a-anchor-link href="#appAera" title="应用领域" /> -->
...
...
@@ -324,7 +263,7 @@ export default {
background-color
:
#f3f3f6
;
.company_con_left
{
.company_con1
{
width
:
1400px
;
//
width
:
1400px
;
//
height
:
175px
;
background
:
#ffffff
;
border-radius
:
8px
8px
8px
8px
;
...
...
@@ -381,7 +320,8 @@ export default {
}
#components-back-top-demo-custom
.ant-back-top
{
bottom
:
55%
;
right
:
19%
;
//
right
:
12%
;
right
:
calc
(
100vw
-
1250px
);
//
right
:
380px
;
//
top
:
350px
;
}
...
...
src/views/company/cooperation.vue
View file @
da39bb6a
...
...
@@ -14,27 +14,14 @@
<a-empty></a-empty>
</
template
>
<
template
v-else
>
其中,与
<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_list
[
0
].
max_value
其中,与
<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_list
[
0
].
max_value
}}
</span
>
次,与该企业合作次数最多的申请人如下图所示。
</
template
>
</p>
<EchartsCon
:style=
"'height:300px;'"
:option=
"option1"
:id=
"'echarts1'"
v-if=
"joint.all_nums"
></EchartsCon>
<EchartsCon
:style=
"'height:300px;'"
:option=
"option1"
:id=
"'echarts1'"
v-if=
"joint.all_nums"
></EchartsCon>
</div>
<!-- 专利购买 -->
<div
class=
"company_con1"
id=
"PatentPurchase"
>
...
...
@@ -42,18 +29,10 @@
<p>
分析该企业专利购买历史,了解该企业向哪些专利权人购买了专利,以及购买了哪些专利。如果该企业购买专利数量较多,需要关注这些外购专利是否为企业的核心专利,进而分析企业的研发能力。
<
template
v-if=
"patentPurchase.max_list.length > 0"
>
该企业向
<span
class=
"color"
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
class=
"color"
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
>
件。
</
template
>
<
template
v-else
>
...
...
@@ -62,7 +41,7 @@
</
template
>
</p>
<EchartsCon
:style=
"'height:300px;'"
:style=
"'height:300px;'"
:option=
"option2"
:id=
"'echarts2'"
v-if=
"patentPurchase.max_list.length != 0"
...
...
@@ -71,10 +50,7 @@
</div>
<div
class=
"company_con_anchor"
>
<a-anchor
@
click=
"handleAnchorClick"
>
<a-anchor-link
style=
"font-size: 20px; color: #1c1c28; font-weight: bold"
title=
"技术合作"
/>
<a-anchor-link
style=
"font-size: 20px; color: #1c1c28; font-weight: bold"
title=
"技术合作"
/>
<a-anchor-link
href=
"#jointApplication"
title=
"联合申请"
/>
<a-anchor-link
href=
"#PatentPurchase"
title=
"专利购买"
/>
</a-anchor>
...
...
@@ -151,10 +127,7 @@ export default {
symbolSize
:
40
,
category
:
1
,
value
:
item
.
value
,
x
:
index
%
2
==
1
?
300
*
Math
.
ceil
(
index
/
2
)
:
-
300
*
Math
.
ceil
(
index
/
2
),
x
:
index
%
2
==
1
?
300
*
Math
.
ceil
(
index
/
2
)
:
-
300
*
Math
.
ceil
(
index
/
2
),
y
:
80
*
(
10
-
index
),
});
links
.
push
({
...
...
@@ -285,7 +258,7 @@ export default {
}
.company_con_left
{
.company_con1
{
width
:
1400px
;
//
width
:
1400px
;
//
height
:
175px
;
background
:
#ffffff
;
border-radius
:
8px
8px
8px
8px
;
...
...
@@ -345,7 +318,7 @@ export default {
//
bottom
:
50%
;
//
right
:
18.5%
;
bottom
:
55%
;
right
:
1
9%
;
right
:
1
50px
;
}
#components-back-top-demo-custom
.ant-back-top-inner
{
margin-top
:
20px
;
...
...
src/views/company/overview.vue
View file @
da39bb6a
...
...
@@ -5,20 +5,14 @@
<!-- 研发规模 -->
<div
class=
"company_con1"
id=
"researchDevelopment"
>
<h2
class=
"title"
>
研发规模
</h2>
<a-descriptions
bordered
:column=
"2"
:labelStyle=
"
{ background: '#F2F9FC' }"
>
<a-descriptions
bordered
:column=
"2"
:labelStyle=
"
{ background: '#F2F9FC' }">
<a-descriptions-item
label=
"专利申请数量"
>
{{
developmentOverview
.
patent_application_num
}}
</a-descriptions-item>
<a-descriptions-item
label=
"非外观专利申请数量"
>
{{
developmentOverview
.
not_appearance_num
}}
</a-descriptions-item>
<a-descriptions-item
label=
"商标数量"
>
{{
developmentOverview
.
company_trademark_num
}}
</a-descriptions-item>
<a-descriptions-item
label=
"商标数量"
>
{{
developmentOverview
.
company_trademark_num
}}
</a-descriptions-item>
<a-descriptions-item
label=
"作品著作权登记总数"
>
{{
developmentOverview
.
company_work_copyright_num
}}
</a-descriptions-item>
...
...
@@ -31,33 +25,18 @@
<div
class=
"company_con1"
id=
"ResearchSustainable"
>
<h2
class=
"title"
>
研发可持续性
</h2>
<p
v-if=
"deveSustainData.patent_application_num"
>
企业的总专利申请量为
<span
class=
"color"
>
{{
deveSustainData
.
patent_application_num
}}
</span
>
件,最早专利申请是
<span
class=
"color"
>
{{
deveSustainData
.
earliest_patent_application_year
}}
</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
企业的总专利申请量为
<span
class=
"color"
>
{{
deveSustainData
.
patent_application_num
}}
</span
>
件,最早专利申请是
<span
class=
"color"
>
{{
deveSustainData
.
earliest_patent_application_year
}}
</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
v-else
>
企业的总专利申请量为
<span
class=
"color"
>
{{
deveSustainData
.
patent_application_num
}}
</span
企业的总专利申请量为
<span
class=
"color"
>
{{
deveSustainData
.
patent_application_num
}}
</span
>
件
</p>
<a-radio-group
v-model:value=
"tabchange"
style=
"margin: 8px"
v-if=
"deveSustainData.patent_application_num"
>
<a-radio-group
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=
"2"
>
历年专利申请及授权
</a-radio-button>
</a-radio-group>
...
...
@@ -81,18 +60,10 @@
专利结构可从专利类型以及专利基本法律状态两个方面进行分析。从专利类型来看,一般在评估专利技术质量时,普遍认为发明>实用新型>外观。因此,关注发明专利的占比高低,可以帮助了解企业历史研发的技术质量水平。从专利基本法律状态来看,关注失效专利的占比,可以帮助了解企业当前持有技术的质量水平。该企业的专利数量为
<span
class=
"color"
>
{{
devstructureData
.
patent_application_num
}}
</span
>
件,其中发明专利
<span
class=
"color"
>
{{
devstructureData
.
invent_patent_num
}}
</span
>
件,占比
<span
class=
"color"
>
{{
devstructureData
.
invent_patent_percent
}}
</span
>
;有效专利
<span
class=
"color"
>
{{
devstructureData
.
valid_patent_num
}}
</span
>
件,占比
<span
class=
"color"
>
{{
devstructureData
.
valid_patent_percent
}}
</span
>
件,其中发明专利
<span
class=
"color"
>
{{
devstructureData
.
invent_patent_num
}}
</span
>
件,占比
<span
class=
"color"
>
{{
devstructureData
.
invent_patent_percent
}}
</span
>
;有效专利
<span
class=
"color"
>
{{
devstructureData
.
valid_patent_num
}}
</span
>
件,占比
<span
class=
"color"
>
{{
devstructureData
.
valid_patent_percent
}}
</span
>
。
</p>
<div
class=
"ecahrsThree"
>
...
...
@@ -121,28 +92,16 @@
<h2
class=
"title"
>
技术领域布局
</h2>
<p>
特定周期内,某个主题关键词出现的次数越多,则企业在该主题领域的技术布局越多。通过算法分析,该企业近期主要专注在
<span
class=
"color"
v-for=
"(item, index) in o_word_cloud"
:key=
"item"
>
<span
class=
"color"
v-for=
"(item, index) in o_word_cloud"
:key=
"item"
>
{{
index
==
o_word_cloud
.
length
-
1
?
item
:
item
+
"、"
}}
</span
>
等技术领域
</p>
<EchartsCloud
:id=
"'TechnicalField'"
:dataArr=
"techArr"
v-if=
"techArr.length>0"
></EchartsCloud>
<EchartsCloud
:id=
"'TechnicalField'"
:dataArr=
"techArr"
v-if=
"techArr.length > 0"
></EchartsCloud>
</div>
</div>
<div
class=
"company_con_anchor"
>
<a-anchor
@
click=
"handleAnchorClick"
>
<a-anchor-link
style=
"font-size: 20px; color: #1c1c28; font-weight: bold"
title=
"研发概要"
/>
<a-anchor-link
style=
"font-size: 20px; color: #1c1c28; font-weight: bold"
title=
"研发概要"
/>
<a-anchor-link
href=
"#researchDevelopment"
title=
"研发规模"
/>
<a-anchor-link
href=
"#ResearchSustainable"
title=
"研发可持续性"
/>
<a-anchor-link
href=
"#PatentAnalysis"
title=
"专利结构分析"
/>
...
...
@@ -336,9 +295,7 @@ export default {
this
.
deveSustainData
.
old_patent_application
.
forEach
((
item
)
=>
{
ydata2
.
push
(
item
[
1
]);
});
ydata3
=
ydata1
.
map
((
elem
,
index
)
=>
((
elem
/
ydata2
[
index
])
*
100
).
toFixed
(
2
)
);
ydata3
=
ydata1
.
map
((
elem
,
index
)
=>
((
elem
/
ydata2
[
index
])
*
100
).
toFixed
(
2
));
this
.
option2
=
{
//下面就是上图的配置项,关键部分有注释
...
...
@@ -351,21 +308,10 @@ export default {
var
html
=
params
[
0
].
name
+
"<br>"
;
// params[i].marker:对应数据的圆点样式
for
(
var
i
=
0
;
i
<
params
.
length
-
1
;
i
++
)
{
html
+=
params
[
i
].
marker
+
params
[
i
].
seriesName
+
":"
+
params
[
i
].
value
+
"<br>"
;
html
+=
params
[
i
].
marker
+
params
[
i
].
seriesName
+
":"
+
params
[
i
].
value
+
"<br>"
;
}
//最后一个学生占比数据 添加%
html
+=
params
[
i
].
marker
+
params
[
i
].
seriesName
+
":"
+
params
[
i
].
value
+
"%"
+
"<br>"
;
html
+=
params
[
i
].
marker
+
params
[
i
].
seriesName
+
":"
+
params
[
i
].
value
+
"%"
+
"<br>"
;
return
html
;
},
},
...
...
@@ -607,7 +553,7 @@ export default {
background-color
:
#f3f3f6
;
.company_con_left
{
.company_con1
{
width
:
1400px
;
//
width
:
1400px
;
//
height
:
175px
;
background
:
#ffffff
;
border-radius
:
8px
8px
8px
8px
;
...
...
@@ -671,7 +617,7 @@ export default {
//
bottom
:
50%
;
//
right
:
18.5%
;
bottom
:
55%
;
right
:
1
9%
;
right
:
1
50px
;
}
#components-back-top-demo-custom
.ant-back-top-inner
{
margin-top
:
20px
;
...
...
src/views/company/technology.vue
View file @
da39bb6a
...
...
@@ -8,7 +8,7 @@
<div
style=
"display: flex; position: relative"
>
<div
style=
"width: 50%;"
>
<EchartsCon
:style=
"'height:300px;'"
:style=
"'height:300px;
width:400px
'"
:option=
"option1"
:id=
"'echartsraodar'"
class=
"echarts"
...
...
@@ -16,7 +16,7 @@
</div>
<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=
"科创能力分析指标"
>
<template
#
content
>
<p>
...
...
@@ -224,7 +224,7 @@ export default {
background-color
:
#f3f3f6
;
.company_con_left
{
.company_con1
{
width
:
1400px
;
//
width
:
1400px
;
//
height
:
175px
;
background
:
#ffffff
;
border-radius
:
8px
8px
8px
8px
;
...
...
@@ -279,7 +279,7 @@ export default {
//
bottom
:
50%
;
//
right
:
18.5%
;
bottom
:
55%
;
right
:
1
9
%
;
right
:
1
2
%
;
}
#components-back-top-demo-custom
.ant-back-top-inner
{
margin-top
:
20px
;
...
...
src/views/history/index.vue
View file @
da39bb6a
<
template
>
<div
class=
"history"
>
<a-breadcrumb
class=
"nav_bread"
>
<a-breadcrumb-item
><router-link
:to=
"'/home'"
>
首页
</router-link></a-breadcrumb-item
>
<a-breadcrumb-item><router-link
:to=
"'/home'"
>
首页
</router-link></a-breadcrumb-item>
<!--
<a-breadcrumb-item>
历史记录
</a-breadcrumb-item>
-->
<a-breadcrumb-item
v-if=
"activeKey == 1"
>
浏览记录
</a-breadcrumb-item>
<a-breadcrumb-item
v-else
>
导出记录
</a-breadcrumb-item>
...
...
@@ -13,12 +11,7 @@
<a-tabs
v-model:activeKey=
"activeKey"
>
<a-tab-pane
key=
"1"
tab=
"浏览记录"
>
<p
style=
"text-align: left"
>
系统会为您保留 30 天的浏览记录
</p>
<a-table
:columns=
"columnshistory"
:data-source=
"dataHistory"
:pagination=
"false"
:style=
"'width:90%;'"
>
<a-table
:columns=
"columnshistory"
:data-source=
"dataHistory"
:pagination=
"false"
:style=
"'width:90%;'"
>
<template
#
bodyCell=
"
{ column, text, record }">
<template
v-if=
"column.dataIndex == 'f_type'"
>
{{
text
==
"patent"
?
"专利"
:
"公司"
}}
...
...
@@ -33,31 +26,18 @@
@
change=
"onChange"
:total=
"total0"
:showSizeChanger=
"false"
class=
"h-pagination"
/>
</a-tab-pane>
<a-tab-pane
key=
"2"
tab=
"导出记录"
>
<p
style=
"text-align: left"
>
系统会为您保留 30 天的导出记录
</p>
<a-table
:columns=
"columnout"
:data-source=
"dataExport"
:pagination=
"false"
:style=
"'width:90%'"
>
<a-table
:columns=
"columnout"
:data-source=
"dataExport"
:pagination=
"false"
:style=
"'width:90%'"
>
<
template
#
bodyCell=
"{ column, text, record }"
>
<template
v-if=
"column.dataIndex == 'action'"
>
<a-button
@
click=
"exportPDF(record)"
style=
"
background-color: #fa7f03;
color: #fff;
margin-right: 10%;
"
>
<a-button
@
click=
"exportPDF(record)"
style=
"background-color: #fa7f03; color: #fff; margin-right: 10%"
>
导出
</a-button>
<a-button
type=
"primary"
@
click=
"sendMail(record)"
>
发送到邮箱
</a-button
>
<a-button
type=
"primary"
@
click=
"sendMail(record)"
>
发送到邮箱
</a-button>
</
template
>
<
template
v-if=
"column.dataIndex == 'f_type'"
>
{{
text
==
"patent"
?
"专利"
:
"公司"
}}
...
...
@@ -68,6 +48,7 @@
</template>
</a-table>
<a-pagination
class=
"h-pagination"
@
change=
"onChange"
:total=
"total1"
v-model:current=
"currentPage"
...
...
@@ -293,6 +274,9 @@ export default {
height
:
92%
;
text-align
:
center
;
//
height
:
600px
;
.h-pagination
{
margin-top
:
20px
;
}
}
:deep
(
.ant-table-tbody
)
{
cursor
:
pointer
;
...
...
src/views/home/home.vue
View file @
da39bb6a
...
...
@@ -461,7 +461,8 @@ export default {
height
:
308px
;
position
:
relative
;
background
:
url("~@/static/home/index/img-index01.png")
no-repeat
;
background-size
:
100%
;
background-size
:
100%
100%
;
background-attachment
:
local
;
.search_tab
{
position
:
absolute
;
top
:
50px
;
...
...
src/views/home/index.vue
View file @
da39bb6a
<
template
>
<div
class=
"home"
:style=
"[
(current=='专利'||current=='企业')?'height:auto':
'height:100%']"
>
<div
class=
"home"
:style=
"[
current == '专利' || current == '企业' ? 'height:auto' :
'height:100%']"
>
<!-- 标题栏 -->
<HeaderCon></HeaderCon>
...
...
@@ -11,18 +11,8 @@
:key=
"item.name"
@
click=
"changepage(item.name)"
>
<img
:src=
"current == item.name ? item.img_select : item.img"
alt=
""
class=
"sider_item_img"
/>
<div
:class=
"[
current == item.name
? 'sider_item_name active '
: 'sider_item_name',
]"
>
<img
:src=
"current == item.name ? item.img_select : item.img"
alt=
""
class=
"sider_item_img"
/>
<div
:class=
"[current == item.name ? 'sider_item_name active ' : 'sider_item_name']"
>
{{
item
.
name
}}
</div>
</div>
...
...
@@ -75,8 +65,7 @@ export default {
},
],
followList
:
[],
innovateList
:
[
],
innovateList
:
[],
};
},
components
:
{
...
...
@@ -185,7 +174,7 @@ export default {
.home_con
{
background-color
:
#ebebeb
;
padding-left
:
30px
;
width
:
calc
(
100%
-80px
);
width
:
calc
(
100%
-
80px
);
flex
:
1
;
.nav_bread
{
height
:
50px
;
...
...
src/views/login/index.vue
View file @
da39bb6a
...
...
@@ -212,8 +212,8 @@ export default {
justify-content
:
space-evenly
;
margin
:
100px
auto
40px
;
.con_left
{
width
:
40%
;
margin-right
:
-20%
;
//
width
:
40%
;
//
margin-right
:
-20%
;
.title1
{
color
:
#4079ff
;
font-family
:
"jiangcheng"
;
...
...
src/views/patent/patentDetails.vue
View file @
da39bb6a
...
...
@@ -642,7 +642,7 @@ export default {
}
.details
{
padding
:
0
30px
;
width
:
calc
(
100%
);
width
:
calc
(
100%
-
80px
);
background-color
:
#ebebeb
;
position
:
relative
;
...
...
@@ -767,8 +767,8 @@ export default {
}
#components-back-top-demo-custom
.ant-back-top
{
bottom
:
50%
;
right
:
18.5%
;
right
:
780px
;
right
:
calc
(
100vw
-
1150px
)
;
//
right
:
780px
;
top
:
350px
;
}
#components-back-top-demo-custom
.ant-back-top-inner
{
...
...
vue.config.js
View file @
da39bb6a
...
...
@@ -18,7 +18,7 @@ module.exports = {
// 配置不同的后台API地址
proxy
:
{
"/api"
:
{
target
:
"http
://39.98.37.63:5089
/api"
,
target
:
"http
s://zlcgzyzhzntjxt.industrychain.online
/api"
,
ws
:
false
,
changeOrigin
:
true
,
pathRewrite
:
{
...
...
@@ -41,14 +41,14 @@ module.exports = {
return
args
;
});
},
css
:
{
loaderOptions
:
{
postcss
:
{
plugins
:
[
// postcss
],
},
},
},
//
css: {
//
loaderOptions: {
//
postcss: {
//
plugins: [
//
// postcss
//
],
//
},
//
},
//
},
lintOnSave
:
true
,
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment