Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
d4b65227
提交
d4b65227
authored
3月 09, 2026
作者:
hsx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:企业经营情况详情页
上级
000d30fd
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
234 行增加
和
13 行删除
+234
-13
index.js
src/api/companyPages/index.js
+40
-0
PersonAvatar.vue
src/components/base/people/PersonAvatar.vue
+0
-0
radio.scss
src/styles/radio.scss
+20
-0
CapitalScale.vue
src/views/companyPages2/component/CapitalScale.vue
+0
-0
BaseInfo.vue
src/views/companyPages2/component/DetailsPages/BaseInfo.vue
+1
-1
NewsPane.vue
src/views/companyPages2/component/DetailsPages/NewsPane.vue
+0
-0
EnterpriseScale.vue
...ompanyPages2/component/OperatingPages/EnterpriseScale.vue
+52
-0
MarketShare.vue
...ws/companyPages2/component/OperatingPages/MarketShare.vue
+33
-0
MarketValue.vue
...ws/companyPages2/component/OperatingPages/MarketValue.vue
+34
-0
ResearchAndDevelopment.vue
...ages2/component/OperatingPages/ResearchAndDevelopment.vue
+34
-0
SanctionsSituation.vue
...anyPages2/component/OperatingPages/SanctionsSituation.vue
+0
-0
index.vue
src/views/companyPages2/component/OperatingPages/index.vue
+15
-7
TitlePane.vue
src/views/companyPages2/component/TitlePane.vue
+1
-1
index.vue
src/views/companyPages2/index.vue
+4
-4
没有找到文件。
src/api/companyPages/index.js
浏览文件 @
d4b65227
...
@@ -129,3 +129,42 @@ export function getSupplyList(params) {
...
@@ -129,3 +129,42 @@ export function getSupplyList(params) {
params
,
params
,
})
})
}
}
// 企业市值:市值变化
export
function
getMarketCapList
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/enterprisePage/marketCap/
${
params
}
`
,
})
}
// 企业发展:营收折线图
export
function
getRevenueList
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/enterprisePage/revenue/
${
params
}
`
,
})
}
// 企业发展:净利润折线图
export
function
getNetProfitList
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/enterprisePage/netProfit/
${
params
}
`
,
})
}
// 企业发展:人员情况折线图
export
function
getPersonnelList
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/enterprisePage/personnel/
${
params
}
`
,
})
}
// 企业发展: 市场占比折线图
export
function
getMarketShareList
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/enterprisePage/marketShare/
${
params
}
`
,
})
}
\ No newline at end of file
src/components/base/people/
p
ersonAvatar.vue
→
src/components/base/people/
P
ersonAvatar.vue
浏览文件 @
d4b65227
File moved
src/styles/radio.scss
0 → 100644
浏览文件 @
d4b65227
@use
'@/styles/common.scss'
;
.radio-group-as-gap-btn
{
@extend
.text-tip-1
;
.el-radio-button
{
--el-radio-button-checked-bg-color
:
var
(
--
bg-white-100
);
--el-radio-button-checked-border-color
:
var
(
--
bg-black-10
);
border-radius
:
4px
;
}
.el-radio-button.is-active
{
--el-radio-button-checked-text-color
:
var
(
--
color-primary-100
);
--el-radio-button-checked-bg-color
:
var
(
--
color-primary-10
);
--el-radio-button-checked-border-color
:
var
(
--
color-primary-5
);
border-radius
:
4px
;
}
}
\ No newline at end of file
src/views/companyPages2/component/
c
apitalScale.vue
→
src/views/companyPages2/component/
C
apitalScale.vue
浏览文件 @
d4b65227
File moved
src/views/companyPages2/component/
detailsPages/b
aseInfo.vue
→
src/views/companyPages2/component/
DetailsPages/B
aseInfo.vue
浏览文件 @
d4b65227
...
@@ -38,7 +38,7 @@
...
@@ -38,7 +38,7 @@
import
AnalysisBox
from
'@/components/base/boxBackground/analysisBox.vue'
;
import
AnalysisBox
from
'@/components/base/boxBackground/analysisBox.vue'
;
import
{
ref
,
watch
}
from
'vue'
;
import
{
ref
,
watch
}
from
'vue'
;
import
{
getEnterpriseBranch
,
getEnterpriseKeyPerson
}
from
'@/api/companyPages'
;
import
{
getEnterpriseBranch
,
getEnterpriseKeyPerson
}
from
'@/api/companyPages'
;
import
PersonAvatar
from
'@/components/base/people/
p
ersonAvatar.vue'
;
import
PersonAvatar
from
'@/components/base/people/
P
ersonAvatar.vue'
;
import
{
ElDescriptions
,
ElDescriptionsItem
,
ElDivider
,
ElImage
,
ElSpace
}
from
'element-plus'
;
import
{
ElDescriptions
,
ElDescriptionsItem
,
ElDivider
,
ElImage
,
ElSpace
}
from
'element-plus'
;
import
'@/styles/descriptions.scss'
import
'@/styles/descriptions.scss'
...
...
src/views/companyPages2/component/
detailsPages/n
ewsPane.vue
→
src/views/companyPages2/component/
DetailsPages/N
ewsPane.vue
浏览文件 @
d4b65227
File moved
src/views/companyPages2/component/OperatingPages/EnterpriseScale.vue
0 → 100644
浏览文件 @
d4b65227
<
template
>
<sanctions-situation
:enterprise-info=
"enterpriseInfo"
:line-data=
"lineData"
></sanctions-situation>
</
template
>
<
script
setup
lang=
"ts"
>
import
{
ref
,
onMounted
}
from
'vue'
;
import
{
getNetProfitList
,
getPersonnelList
,
getRevenueList
}
from
'@/api/companyPages'
;
import
SanctionsSituation
,
{
LineDataItem
}
from
'./SanctionsSituation.vue'
;
import
{
l
}
from
'vite/dist/node/types.d-aGj9QkWt'
;
// 定义组件属性
const
props
=
defineProps
({
enterpriseInfo
:
{
type
:
Object
,
default
:
{}
}
});
const
lineData
=
ref
<
LineDataItem
[]
>
([])
onMounted
(
async
()
=>
{
await
intData
()
})
async
function
intData
()
{
let
{
data
:
revenue
}
=
await
getRevenueList
(
props
.
enterpriseInfo
.
id
)
revenue
=
revenue
?.
map
(
item
=>
({
time
:
new
Date
(
item
.
year
,
1
,
1
),
value
:
item
.
value
,
type
:
'营收'
,
unit
:
item
.
unit
??
'亿元'
}))
??
[]
let
{
data
:
netProfit
}
=
await
getNetProfitList
(
props
.
enterpriseInfo
.
id
)
netProfit
=
netProfit
?.
map
(
item
=>
({
time
:
new
Date
(
item
.
year
,
1
,
1
),
value
:
item
.
value
,
type
:
'净利润'
,
unit
:
item
.
unit
??
'亿元'
}))
??
[]
let
{
data
:
personnel
}
=
await
getPersonnelList
(
props
.
enterpriseInfo
.
id
)
personnel
=
personnel
?.
map
(
item
=>
({
time
:
new
Date
(
item
.
year
,
1
,
1
),
value
:
item
.
value
,
type
:
'人员'
,
unit
:
item
.
unit
??
'亿元'
}))
??
[]
lineData
.
value
=
[...
revenue
,
...
netProfit
,
...
personnel
]
}
</
script
>
\ No newline at end of file
src/views/companyPages2/component/OperatingPages/MarketShare.vue
0 → 100644
浏览文件 @
d4b65227
<
template
>
<sanctions-situation
:enterprise-info=
"enterpriseInfo"
:line-data=
"lineData"
></sanctions-situation>
</
template
>
<
script
setup
lang=
"ts"
>
import
{
ref
,
onMounted
}
from
'vue'
;
import
{
getMarketShareList
}
from
'@/api/companyPages'
;
import
SanctionsSituation
,
{
LineDataItem
}
from
'./SanctionsSituation.vue'
;
// 定义组件属性
const
props
=
defineProps
({
enterpriseInfo
:
{
type
:
Object
,
default
:
{}
}
});
const
lineData
=
ref
<
LineDataItem
[]
>
([])
onMounted
(
async
()
=>
{
await
intData
()
})
async
function
intData
()
{
const
{
data
}
=
await
getMarketShareList
(
props
.
enterpriseInfo
.
id
)
lineData
.
value
=
data
?.
map
(
item
=>
({
time
:
new
Date
(
item
.
year
,
1
,
1
),
value
:
item
.
value
,
unit
:
item
.
unit
??
'亿元'
}))
??
[]
}
</
script
>
\ No newline at end of file
src/views/companyPages2/component/OperatingPages/MarketValue.vue
0 → 100644
浏览文件 @
d4b65227
<
template
>
<sanctions-situation
:enterprise-info=
"enterpriseInfo"
:line-data=
"lineData"
></sanctions-situation>
</
template
>
<
script
setup
lang=
"ts"
>
import
{
ref
,
onMounted
}
from
'vue'
;
import
{
getMarketCapList
}
from
'@/api/companyPages'
;
import
SanctionsSituation
,
{
LineDataItem
}
from
'./SanctionsSituation.vue'
;
// 定义组件属性
const
props
=
defineProps
({
enterpriseInfo
:
{
type
:
Object
,
default
:
{}
}
});
const
lineData
=
ref
<
LineDataItem
[]
>
([])
onMounted
(
async
()
=>
{
await
intData
()
})
async
function
intData
()
{
const
{
data
}
=
await
getMarketCapList
(
props
.
enterpriseInfo
.
id
)
lineData
.
value
=
data
?.
map
(
item
=>
({
time
:
new
Date
(
item
.
year
,
1
,
1
),
value
:
item
.
value
,
type
:
'市值变化'
,
unit
:
item
.
unit
??
'亿元'
}))
??
[]
}
</
script
>
\ No newline at end of file
src/views/companyPages2/component/OperatingPages/ResearchAndDevelopment.vue
0 → 100644
浏览文件 @
d4b65227
<
template
>
<sanctions-situation
:enterprise-info=
"enterpriseInfo"
:line-data=
"lineData"
></sanctions-situation>
</
template
>
<
script
setup
lang=
"ts"
>
import
{
ref
,
onMounted
}
from
'vue'
;
import
{
getMarketCapList
,
getStudyList
}
from
'@/api/companyPages'
;
import
SanctionsSituation
,
{
LineDataItem
}
from
'./SanctionsSituation.vue'
;
// 定义组件属性
const
props
=
defineProps
({
enterpriseInfo
:
{
type
:
Object
,
default
:
{}
}
});
const
lineData
=
ref
<
LineDataItem
[]
>
([])
onMounted
(
async
()
=>
{
await
intData
()
})
async
function
intData
()
{
const
{
data
}
=
await
getStudyList
(
props
.
enterpriseInfo
.
id
)
lineData
.
value
=
data
?.
map
(
item
=>
({
time
:
new
Date
(
item
.
year
,
1
,
1
),
value
:
item
.
currentValue
,
type
:
item
.
type
,
unit
:
item
.
unit
??
'亿元'
}))
??
[]
}
</
script
>
\ No newline at end of file
src/views/companyPages2/component/
o
peratingPages/SanctionsSituation.vue
→
src/views/companyPages2/component/
O
peratingPages/SanctionsSituation.vue
浏览文件 @
d4b65227
差异被折叠。
点击展开。
src/views/companyPages2/component/
o
peratingPages/index.vue
→
src/views/companyPages2/component/
O
peratingPages/index.vue
浏览文件 @
d4b65227
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
'@/styles/tabs.scss'
import
'@/styles/tabs.scss'
import
{
ElTabPane
,
ElTabs
}
from
'element-plus'
;
import
{
ElTabPane
,
ElTabs
}
from
'element-plus'
;
import
SanctionsSituation
from
'./SanctionsSituation.vue'
;
import
EnterpriseScale
from
'./EnterpriseScale.vue'
;
import
MarketShare
from
'./MarketShare.vue'
;
import
MarketValue
from
'./MarketValue.vue'
;
import
ResearchAndDevelopment
from
'./ResearchAndDevelopment.vue'
;
// 定义组件属性
// 定义组件属性
const
props
=
defineProps
({
const
props
=
defineProps
({
...
@@ -15,12 +18,18 @@ const props = defineProps({
...
@@ -15,12 +18,18 @@ const props = defineProps({
<
template
>
<
template
>
<div
style=
"overflow: visible;"
>
<div
style=
"overflow: visible;"
>
<el-tabs
tabPosition=
"left"
class=
"disinheritance tabs-nav-no-wrap left-float-nav-tabs"
>
<el-tabs
tabPosition=
"left"
class=
"disinheritance tabs-nav-no-wrap left-float-nav-tabs"
>
<el-tab-pane
label=
"企业规模"
>
<el-tab-pane
label=
"企业规模"
lazy
>
<sanctions-situation
:enterprise-info=
"enterpriseInfo"
></sanctions-situation>
<enterprise-scale
:enterprise-info=
"enterpriseInfo"
></enterprise-scale>
</el-tab-pane>
<el-tab-pane
label=
"市值变化"
lazy
>
<market-value
:enterprise-info=
"enterpriseInfo"
></market-value>
</el-tab-pane>
<el-tab-pane
label=
"研发投入"
lazy
>
<research-and-development
:enterprise-info=
"enterpriseInfo"
></research-and-development>
</el-tab-pane>
<el-tab-pane
label=
"市场占比"
lazy
>
<market-share
:enterprise-info=
"enterpriseInfo"
></market-share>
</el-tab-pane>
</el-tab-pane>
<!--
<el-tab-pane
label=
"市值变化"
></el-tab-pane>
<el-tab-pane
label=
"研发投入"
></el-tab-pane>
<el-tab-pane
label=
"市场占比"
></el-tab-pane>
-->
</el-tabs>
</el-tabs>
</div>
</div>
</
template
>
</
template
>
\ No newline at end of file
src/views/companyPages2/component/
t
itlePane.vue
→
src/views/companyPages2/component/
T
itlePane.vue
浏览文件 @
d4b65227
...
@@ -30,7 +30,7 @@ import { getSupplyAreaList } from '@/api/companyPages';
...
@@ -30,7 +30,7 @@ import { getSupplyAreaList } from '@/api/companyPages';
import
{
ref
,
watch
}
from
'vue'
;
import
{
ref
,
watch
}
from
'vue'
;
import
{
ElSpace
}
from
'element-plus'
;
import
{
ElSpace
}
from
'element-plus'
;
// 导入自定义组件
// 导入自定义组件
import
CapitalScale
from
'./
c
apitalScale.vue'
import
CapitalScale
from
'./
C
apitalScale.vue'
// 响应式数据
// 响应式数据
const
areas
=
ref
([])
// 供应区域列表
const
areas
=
ref
([])
// 供应区域列表
...
...
src/views/companyPages2/index.vue
浏览文件 @
d4b65227
...
@@ -29,10 +29,10 @@
...
@@ -29,10 +29,10 @@
import
{
ref
,
onMounted
}
from
'vue'
;
import
{
ref
,
onMounted
}
from
'vue'
;
import
{
useRoute
}
from
'vue-router'
;
import
{
useRoute
}
from
'vue-router'
;
import
{
getEnterprisePageInfo
}
from
'@/api/companyPages'
;
import
{
getEnterprisePageInfo
}
from
'@/api/companyPages'
;
import
TitlePane
from
'./component/
t
itlePane.vue'
;
import
TitlePane
from
'./component/
T
itlePane.vue'
;
import
NewsPane
from
'./component/
detailsPages/n
ewsPane.vue'
;
import
NewsPane
from
'./component/
DetailsPages/N
ewsPane.vue'
;
import
BaseInfo
from
'./component/
detailsPages/b
aseInfo.vue'
;
import
BaseInfo
from
'./component/
DetailsPages/B
aseInfo.vue'
;
import
OperatingPages
from
'./component/
o
peratingPages/index.vue'
;
import
OperatingPages
from
'./component/
O
peratingPages/index.vue'
;
import
'@/styles/tabs.scss'
import
'@/styles/tabs.scss'
import
'@/styles/container.scss'
import
'@/styles/container.scss'
import
{
ElScrollbar
,
ElSpace
,
ElTabs
,
ElTabPane
}
from
'element-plus'
;
import
{
ElScrollbar
,
ElSpace
,
ElTabs
,
ElTabPane
}
from
'element-plus'
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论